# HG changeset patch # User prr # Date 1421095959 28800 # Node ID d7609b65606baa76a896c26e1da4b7c48968fa0d # Parent 8c912c147654b19aad8d602e128ccc80713d34ff# Parent 722378bc599e38d9a1dd484de30f10dfd7b21438 Merge diff -r 8c912c147654 -r d7609b65606b .hgtags --- a/.hgtags Mon Jan 12 11:46:43 2015 -0800 +++ b/.hgtags Mon Jan 12 12:52:39 2015 -0800 @@ -287,3 +287,4 @@ 3107be2ba9c6e208a0b86bc7100a141abbc5b5fb jdk9-b42 6494b13f88a867026ee316b444d9a4fa589dd6bd jdk9-b43 abbfccd659b91a7bb815d5e36fed635dcdd40f31 jdk9-b44 +bfc24ae2b900187585079bb11e66e459d1e525fe jdk9-b45 diff -r 8c912c147654 -r d7609b65606b .hgtags-top-repo --- a/.hgtags-top-repo Mon Jan 12 11:46:43 2015 -0800 +++ b/.hgtags-top-repo Mon Jan 12 12:52:39 2015 -0800 @@ -287,3 +287,4 @@ f7c11da0b0481d49cc7a65a453336c108191e821 jdk9-b42 02ee8c65622e8bd97496d584e22fc7dcf0edc4ae jdk9-b43 8994f5d87b3bb5e8d317d4e8ccb326da1a73684a jdk9-b44 +3dd628fde2086218d548841022ee8436b6b88185 jdk9-b45 diff -r 8c912c147654 -r d7609b65606b Makefile --- a/Makefile Mon Jan 12 11:46:43 2015 -0800 +++ b/Makefile Mon Jan 12 12:52:39 2015 -0800 @@ -54,8 +54,11 @@ # Duplication of global targets, needed before ParseConfAndSpec in case we have # no configurations. help: - # If CONF is not set, look for all available configurations - CONF?= + # If both CONF and SPEC are unset, look for all available configurations by + # setting CONF to the empty string. + ifeq ($(SPEC), ) + CONF?= + endif endif # ... and then we can include our helper functions diff -r 8c912c147654 -r d7609b65606b common/autoconf/generated-configure.sh --- a/common/autoconf/generated-configure.sh Mon Jan 12 11:46:43 2015 -0800 +++ b/common/autoconf/generated-configure.sh Mon Jan 12 12:52:39 2015 -0800 @@ -4329,7 +4329,7 @@ #CUSTOM_AUTOCONF_INCLUDE # Do not change or remove the following line, it is needed for consistency checks: -DATE_WHEN_GENERATED=1418395009 +DATE_WHEN_GENERATED=1420811523 ############################################################################### # @@ -27408,8 +27408,8 @@ # The trailing space for everyone except PATH is no typo, but is needed due # to trailing \ in the Windows paths. These will be stripped later. $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE - $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE - $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE + $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE + $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE $ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE $ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE $ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE diff -r 8c912c147654 -r d7609b65606b common/autoconf/spec.gmk.in --- a/common/autoconf/spec.gmk.in Mon Jan 12 11:46:43 2015 -0800 +++ b/common/autoconf/spec.gmk.in Mon Jan 12 12:52:39 2015 -0800 @@ -690,10 +690,15 @@ # Images directory definitions JDK_IMAGE_SUBDIR:=jdk JRE_IMAGE_SUBDIR:=jre + # Colon left out to be able to override output dir for bootcycle-images JDK_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JDK_IMAGE_SUBDIR) JRE_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(JRE_IMAGE_SUBDIR) +# Test image, as above +TEST_IMAGE_SUBDIR:=test +TEST_IMAGE_DIR=$(IMAGES_OUTPUTDIR)/$(TEST_IMAGE_SUBDIR) + # Macosx bundles directory definitions JDK_BUNDLE_SUBDIR=jdk-bundle/jdk$(JDK_VERSION).jdk/Contents JRE_BUNDLE_SUBDIR=jre-bundle/jre$(JDK_VERSION).jre/Contents diff -r 8c912c147654 -r d7609b65606b common/autoconf/toolchain_windows.m4 --- a/common/autoconf/toolchain_windows.m4 Mon Jan 12 11:46:43 2015 -0800 +++ b/common/autoconf/toolchain_windows.m4 Mon Jan 12 12:52:39 2015 -0800 @@ -173,8 +173,8 @@ # The trailing space for everyone except PATH is no typo, but is needed due # to trailing \ in the Windows paths. These will be stripped later. $ECHO "$WINPATH_BASH -c 'echo VS_PATH="'\"$PATH\" > set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE - $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE - $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE + $ECHO "$WINPATH_BASH -c 'echo VS_INCLUDE="'\"$INCLUDE\;$include \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE + $ECHO "$WINPATH_BASH -c 'echo VS_LIB="'\"$LIB\;$lib \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE $ECHO "$WINPATH_BASH -c 'echo VCINSTALLDIR="'\"$VCINSTALLDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE $ECHO "$WINPATH_BASH -c 'echo WindowsSdkDir="'\"$WindowsSdkDir \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE $ECHO "$WINPATH_BASH -c 'echo WINDOWSSDKDIR="'\"$WINDOWSSDKDIR \" >> set-vs-env.sh' >> $EXTRACT_VC_ENV_BAT_FILE diff -r 8c912c147654 -r d7609b65606b common/bin/unshuffle_list.txt --- a/common/bin/unshuffle_list.txt Mon Jan 12 11:46:43 2015 -0800 +++ b/common/bin/unshuffle_list.txt Mon Jan 12 12:52:39 2015 -0800 @@ -26,10 +26,8 @@ corba/src/java.corba/share/classes/com/sun/tools/corba/se/idl : corba/src/share/classes/com/sun/tools/corba/se/idl corba/src/java.corba/share/classes/javax/activity : corba/src/share/classes/javax/activity corba/src/java.corba/share/classes/javax/rmi : corba/src/share/classes/javax/rmi -corba/src/java.corba/share/classes/javax/transaction : corba/src/share/classes/javax/transaction corba/src/java.corba/share/classes/org/omg : corba/src/share/classes/org/omg corba/src/java.corba/share/classes/sun/corba : corba/src/share/classes/sun/corba -corba/src/java.sql/share/classes/javax/transaction/xa : corba/src/share/classes/javax/transaction/xa corba/src/jdk.rmic/share/classes/sun/rmi/rmic/iiop : corba/src/share/classes/sun/rmi/rmic/iiop jaxp/src/java.xml/share/classes/com/sun/java_cup/internal/runtime : jaxp/src/com/sun/java_cup/internal/runtime jaxp/src/java.xml/share/classes/com/sun/org/apache/bcel/internal : jaxp/src/com/sun/org/apache/bcel/internal @@ -66,8 +64,8 @@ jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/org : jaxws/src/share/jaxws_classes/com/sun/xml/internal/org jaxws/src/java.xml.bind/share/classes/com/sun/xml/internal/txw2 : jaxws/src/share/jaxws_classes/com/sun/xml/internal/txw2 jaxws/src/java.xml.bind/share/classes/javax/xml/bind : jaxws/src/share/jaxws_classes/javax/xml/bind -jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging : jaxws/src/share/jaxws_classes/com/sun/xml/internal/messaging -jaxws/src/java.xml.soap/share/classes/javax/xml/soap : jaxws/src/share/jaxws_classes/javax/xml/soap +jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging : jaxws/src/share/jaxws_classes/com/sun/xml/internal/messaging +jaxws/src/java.xml.ws/share/classes/javax/xml/soap : jaxws/src/share/jaxws_classes/javax/xml/soap jaxws/src/java.xml.ws/share/classes/com/oracle/webservices/internal : jaxws/src/share/jaxws_classes/com/oracle/webservices/internal jaxws/src/java.xml.ws/share/classes/com/oracle/xmlns/internal : jaxws/src/share/jaxws_classes/com/oracle/xmlns/internal jaxws/src/java.xml.ws/share/classes/com/sun/org/glassfish : jaxws/src/share/jaxws_classes/com/sun/org/glassfish @@ -1245,6 +1243,8 @@ jdk/src/java.sql.rowset/share/classes/javax/sql/rowset : jdk/src/share/classes/javax/sql/rowset jdk/src/java.sql/share/classes/java/sql : jdk/src/share/classes/java/sql jdk/src/java.sql/share/classes/javax/sql : jdk/src/share/classes/javax/sql +jdk/src/java.sql/share/classes/javax/transaction/xa : corba/src/share/classes/javax/transaction/xa +jdk/src/java.transaction/share/classes/javax/transaction : corba/src/share/classes/javax/transaction jdk/src/java.xml.crypto/share/classes/com/sun/org/apache/xml/internal/security : jdk/src/share/classes/com/sun/org/apache/xml/internal/security jdk/src/java.xml.crypto/share/classes/javax/xml/crypto : jdk/src/share/classes/javax/xml/crypto jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal : jdk/src/share/classes/org/jcp/xml/dsig/internal diff -r 8c912c147654 -r d7609b65606b corba/.hgtags --- a/corba/.hgtags Mon Jan 12 11:46:43 2015 -0800 +++ b/corba/.hgtags Mon Jan 12 12:52:39 2015 -0800 @@ -287,3 +287,4 @@ 078bb11af876fe528d4b516f33ad4dd9bb60549e jdk9-b42 9645e35616b60c5c07b4fdf11a132afc8081dfa8 jdk9-b43 1f57bd728c9e6865ccb9d43ccd80a1c11230a32f jdk9-b44 +9e3f2bed80c0e5a84a256ce41f1d10c5ade48466 jdk9-b45 diff -r 8c912c147654 -r d7609b65606b corba/src/java.corba/share/classes/javax/transaction/InvalidTransactionException.java --- a/corba/src/java.corba/share/classes/javax/transaction/InvalidTransactionException.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* - * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -/* - * Licensed Materials - Property of IBM - * RMI-IIOP v1.0 - * Copyright IBM Corp. 1998 1999 All Rights Reserved - * - */ - -package javax.transaction; - -/** - * This exception indicates that the request carried an invalid transaction - * context. For example, this exception could be raised if an error - * occured when trying to register a resource. - */ -public class InvalidTransactionException extends java.rmi.RemoteException -{ - public InvalidTransactionException() - { - super(); - } - - public InvalidTransactionException(String msg) - { - super(msg); - } -} diff -r 8c912c147654 -r d7609b65606b corba/src/java.corba/share/classes/javax/transaction/TransactionRequiredException.java --- a/corba/src/java.corba/share/classes/javax/transaction/TransactionRequiredException.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,49 +0,0 @@ -/* - * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -/* - * Licensed Materials - Property of IBM - * RMI-IIOP v1.0 - * Copyright IBM Corp. 1998 1999 All Rights Reserved - * - */ - -package javax.transaction; - -/** - * This exception indicates that a request carried a null transaction context, - * but the target object requires an activate transaction. - */ -public class TransactionRequiredException extends java.rmi.RemoteException -{ - public TransactionRequiredException() - { - super(); - } - - public TransactionRequiredException(String msg) - { - super(msg); - } -} diff -r 8c912c147654 -r d7609b65606b corba/src/java.corba/share/classes/javax/transaction/TransactionRolledbackException.java --- a/corba/src/java.corba/share/classes/javax/transaction/TransactionRolledbackException.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,52 +0,0 @@ -/* - * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ -/* - * Licensed Materials - Property of IBM - * RMI-IIOP v1.0 - * Copyright IBM Corp. 1998 1999 All Rights Reserved - * - */ - -package javax.transaction; - -/** - * This exception indicates that the transaction associated with processing - * of the request has been rolled back, or marked to roll back. Thus the - * requested operation either could not be performed or was not performed - * because further computation on behalf of the transaction would be - * fruitless - */ -public class TransactionRolledbackException extends java.rmi.RemoteException -{ - public TransactionRolledbackException() - { - super(); - } - - public TransactionRolledbackException(String msg) - { - super(msg); - } -} diff -r 8c912c147654 -r d7609b65606b corba/src/java.corba/share/classes/javax/transaction/package.html --- a/corba/src/java.corba/share/classes/javax/transaction/package.html Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ - - - - - - - - -Contains three exceptions thrown by the ORB machinery during unmarshalling. -

-@since 1.3 - - diff -r 8c912c147654 -r d7609b65606b corba/src/java.sql/share/classes/javax/transaction/xa/XAException.java --- a/corba/src/java.sql/share/classes/javax/transaction/xa/XAException.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,201 +0,0 @@ -/* - * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.transaction.xa; - -/** - * The XAException is thrown by the Resource Manager (RM) to inform the - * Transaction Manager of an error encountered by the involved transaction. - * - */ -public class XAException extends java.lang.Exception { - - /** - * The error code with which to create the SystemException. - * - * @serial The error code for the exception - */ - - public int errorCode; - - /** - * Create an XAException. - */ - public XAException() - { - super(); - } - - /** - * Create an XAException with a given string. - * - * @param s The String object containing the exception - * message. - */ - public XAException(String s) - { - super(s); - } - - /** - * Create an XAException with a given error code. - * - * @param errcode The error code identifying the exception. - */ - public XAException(int errcode) - { - super(); - errorCode = errcode; - } - - /** - * The inclusive lower bound of the rollback codes. - */ - public final static int XA_RBBASE = 100; - - /** - * Indicates that the rollback was caused by an unspecified reason. - */ - public final static int XA_RBROLLBACK = XA_RBBASE; - - /** - * Indicates that the rollback was caused by a communication failure. - */ - public final static int XA_RBCOMMFAIL = XA_RBBASE + 1; - - /** - * A deadlock was detected. - */ - public final static int XA_RBDEADLOCK = XA_RBBASE + 2; - - /** - * A condition that violates the integrity of the resource was detected. - */ - public final static int XA_RBINTEGRITY = XA_RBBASE + 3; - - /** - * The resource manager rolled back the transaction branch for a reason - * not on this list. - */ - public final static int XA_RBOTHER = XA_RBBASE + 4; - - /** - * A protocol error occurred in the resource manager. - */ - public final static int XA_RBPROTO = XA_RBBASE + 5; - - /** - * A transaction branch took too long. - */ - public final static int XA_RBTIMEOUT = XA_RBBASE + 6; - - /** - * May retry the transaction branch. - */ - public final static int XA_RBTRANSIENT = XA_RBBASE + 7; - - /** - * The inclusive upper bound of the rollback error code. - */ - public final static int XA_RBEND = XA_RBTRANSIENT; - - /** - * Resumption must occur where the suspension occurred. - */ - public final static int XA_NOMIGRATE = 9; - - /** - * The transaction branch may have been heuristically completed. - */ - public final static int XA_HEURHAZ = 8; - - /** - * The transaction branch has been heuristically committed. - */ - public final static int XA_HEURCOM = 7; - - /** - * The transaction branch has been heuristically rolled back. - */ - public final static int XA_HEURRB = 6; - - /** - * The transaction branch has been heuristically committed and - * rolled back. - */ - public final static int XA_HEURMIX = 5; - - /** - * Routine returned with no effect and may be reissued. - */ - public final static int XA_RETRY = 4; - - /** - * The transaction branch was read-only and has been committed. - */ - public final static int XA_RDONLY = 3; - - /** - * There is an asynchronous operation already outstanding. - */ - public final static int XAER_ASYNC = -2; - - /** - * A resource manager error has occurred in the transaction branch. - */ - public final static int XAER_RMERR = -3; - - /** - * The XID is not valid. - */ - public final static int XAER_NOTA = -4; - - /** - * Invalid arguments were given. - */ - public final static int XAER_INVAL = -5; - - /** - * Routine was invoked in an inproper context. - */ - public final static int XAER_PROTO = -6; - - /** - * Resource manager is unavailable. - */ - public final static int XAER_RMFAIL = -7; - - /** - * The XID already exists. - */ - public final static int XAER_DUPID = -8; - - /** - * The resource manager is doing work outside a global transaction. - */ - public final static int XAER_OUTSIDE = -9; - - -} diff -r 8c912c147654 -r d7609b65606b corba/src/java.sql/share/classes/javax/transaction/xa/XAResource.java --- a/corba/src/java.sql/share/classes/javax/transaction/xa/XAResource.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,314 +0,0 @@ -/* - * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.transaction.xa; - -/**

The XAResource interface is a Java mapping of the industry standard - * XA interface based on the X/Open CAE Specification (Distributed - * Transaction Processing: The XA Specification). - * - *

The XA interface defines the contract between a Resource Manager - * and a Transaction Manager in a distributed transaction processing - * (DTP) environment. A JDBC driver or a JMS provider implements - * this interface to support the association between a global transaction - * and a database or message service connection. - * - *

The XAResource interface can be supported by any transactional - * resource that is intended to be used by application programs in an - * environment where transactions are controlled by an external - * transaction manager. An example of such a resource is a database - * management system. An application may access data through multiple - * database connections. Each database connection is enlisted with - * the transaction manager as a transactional resource. The transaction - * manager obtains an XAResource for each connection participating - * in a global transaction. The transaction manager uses the - * start method - * to associate the global transaction with the resource, and it uses the - * end method to disassociate the transaction from - * the resource. The resource - * manager is responsible for associating the global transaction to all - * work performed on its data between the start and end method invocations. - * - *

At transaction commit time, the resource managers are informed by - * the transaction manager to prepare, commit, or rollback a transaction - * according to the two-phase commit protocol.

- * - */ - -public interface XAResource -{ - /** Commits the global transaction specified by xid. - * - * @param xid A global transaction identifier - * - * @param onePhase If true, the resource manager should use a one-phase - * commit protocol to commit the work done on behalf of xid. - * - * @exception XAException An error has occurred. Possible XAExceptions - * are XA_HEURHAZ, XA_HEURCOM, XA_HEURRB, XA_HEURMIX, XAER_RMERR, - * XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO. - * - *

If the resource manager did not commit the transaction and the - * paramether onePhase is set to true, the resource manager may throw - * one of the XA_RB* exceptions. Upon return, the resource manager has - * rolled back the branch's work and has released all held resources. - */ - - void commit(Xid xid, boolean onePhase) throws XAException; - - - /** Ends the work performed on behalf of a transaction branch. - * The resource manager disassociates the XA resource from the - * transaction branch specified and lets the transaction - * complete. - * - *

If TMSUSPEND is specified in the flags, the transaction branch - * is temporarily suspended in an incomplete state. The transaction - * context is in a suspended state and must be resumed via the - * start method with TMRESUME specified.

- * - *

If TMFAIL is specified, the portion of work has failed. - * The resource manager may mark the transaction as rollback-only

- * - *

If TMSUCCESS is specified, the portion of work has completed - * successfully.

- * - * @param xid A global transaction identifier that is the same as - * the identifier used previously in the start method. - * - * @param flags One of TMSUCCESS, TMFAIL, or TMSUSPEND. - * - * @exception XAException An error has occurred. Possible XAException - * values are XAER_RMERR, XAER_RMFAILED, XAER_NOTA, XAER_INVAL, - * XAER_PROTO, or XA_RB*. - */ - - void end(Xid xid, int flags) throws XAException; - - - /** Tells the resource manager to forget about a heuristically - * completed transaction branch. - * - * @param xid A global transaction identifier. - * - * @exception XAException An error has occurred. Possible exception - * values are XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or - * XAER_PROTO. - */ - - void forget(Xid xid) throws XAException; - - /** Obtains the current transaction timeout value set for this - * XAResource instance. If XAResource.setTransactionTimeout - * was not used prior to invoking this method, the return value - * is the default timeout set for the resource manager; otherwise, - * the value used in the previous setTransactionTimeout - * call is returned. - * - * @return the transaction timeout value in seconds. - * - * @exception XAException An error has occurred. Possible exception - * values are XAER_RMERR and XAER_RMFAIL. - */ - int getTransactionTimeout() throws XAException; - - /** This method is called to determine if the resource manager - * instance represented by the target object is the same as the - * resouce manager instance represented by the parameter xares. - * - * @param xares An XAResource object whose resource manager instance - * is to be compared with the resource manager instance of the - * target object. - * - * @return true if it's the same RM instance; otherwise - * false. - * - * @exception XAException An error has occurred. Possible exception - * values are XAER_RMERR and XAER_RMFAIL. - * - */ - boolean isSameRM(XAResource xares) throws XAException; - - /** Ask the resource manager to prepare for a transaction commit - * of the transaction specified in xid. - * - * @param xid A global transaction identifier. - * - * @exception XAException An error has occurred. Possible exception - * values are: XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, - * or XAER_PROTO. - * - * @return A value indicating the resource manager's vote on the - * outcome of the transaction. The possible values are: XA_RDONLY - * or XA_OK. If the resource manager wants to roll back the - * transaction, it should do so by raising an appropriate XAException - * in the prepare method. - */ - - int prepare(Xid xid) throws XAException; - - - /** Obtains a list of prepared transaction branches from a resource - * manager. The transaction manager calls this method during recovery - * to obtain the list of transaction branches that are currently in - * prepared or heuristically completed states. - * - * @param flag One of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS. TMNOFLAGS - * must be used when no other flags are set in the parameter. - * - * @exception XAException An error has occurred. Possible values are - * XAER_RMERR, XAER_RMFAIL, XAER_INVAL, and XAER_PROTO. - * - * @return The resource manager returns zero or more XIDs of the - * transaction branches that are currently in a prepared or - * heuristically completed state. If an error occurs during the - * operation, the resource manager should throw the appropriate - * XAException. - * - */ - - Xid[] recover(int flag) throws XAException; - - - /** Informs the resource manager to roll back work done on behalf - * of a transaction branch. - * - * @param xid A global transaction identifier. - * - * @exception XAException An error has occurred. - */ - - void rollback(Xid xid) throws XAException; - - - /**

Sets the current transaction timeout value for this XAResource - * instance. Once set, this timeout value is effective until - * setTransactionTimeout is invoked again with a different - * value. To reset the timeout value to the default value used by the resource - * manager, set the value to zero. - * - * If the timeout operation is performed successfully, the method returns - * true; otherwise false. If a resource manager does not - * support explicitly setting the transaction timeout value, this method - * returns false. - * - * @param seconds The transaction timeout value in seconds. - * - * @return true if the transaction timeout value is set successfully; - * otherwise false. - * - * @exception XAException An error has occurred. Possible exception values - * are XAER_RMERR, XAER_RMFAIL, or XAER_INVAL. - */ - boolean setTransactionTimeout(int seconds) throws XAException; - - - /** Starts work on behalf of a transaction branch specified in - * xid. - * - * If TMJOIN is specified, the start applies to joining a transaction - * previously seen by the resource manager. If TMRESUME is specified, - * the start applies to resuming a suspended transaction specified in the - * parameter xid. - * - * If neither TMJOIN nor TMRESUME is specified and the transaction - * specified by xid has previously been seen by the resource - * manager, the resource manager throws the XAException exception with - * XAER_DUPID error code. - * - * @param xid A global transaction identifier to be associated - * with the resource. - * - * @param flags One of TMNOFLAGS, TMJOIN, or TMRESUME. - * - * @exception XAException An error has occurred. Possible exceptions - * are XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_DUPID, XAER_OUTSIDE, - * XAER_NOTA, XAER_INVAL, or XAER_PROTO. - * - */ - void start(Xid xid, int flags) throws XAException; - - - /** - * Ends a recovery scan. - */ - public final static int TMENDRSCAN = 0x00800000; - - /** - * Disassociates the caller and marks the transaction branch - * rollback-only. - */ - public final static int TMFAIL = 0x20000000; - - /** - * Caller is joining existing transaction branch. - */ - public final static int TMJOIN = 0x00200000; - - /** - * Use TMNOFLAGS to indicate no flags value is selected. - */ - public final static int TMNOFLAGS = 0x00000000; - - /** - * Caller is using one-phase optimization. - */ - public final static int TMONEPHASE = 0x40000000; - - /** - * Caller is resuming association with a suspended - * transaction branch. - */ - public final static int TMRESUME = 0x08000000; - - /** - * Starts a recovery scan. - */ - public final static int TMSTARTRSCAN = 0x01000000; - - - /** - * Disassociates caller from a transaction branch. - */ - public final static int TMSUCCESS = 0x04000000; - - - /** - * Caller is suspending (not ending) its association with - * a transaction branch. - */ - public final static int TMSUSPEND = 0x02000000; - - /** - * The transaction branch has been read-only and has been committed. - */ - public final static int XA_RDONLY = 0x00000003; - - /** - * The transaction work has been prepared normally. - */ - public final static int XA_OK = 0; - -} diff -r 8c912c147654 -r d7609b65606b corba/src/java.sql/share/classes/javax/transaction/xa/Xid.java --- a/corba/src/java.sql/share/classes/javax/transaction/xa/Xid.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* - * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.transaction.xa; - -/** - * The Xid interface is a Java mapping of the X/Open transaction identifier - * XID structure. This interface specifies three accessor methods to - * retrieve a global transaction format ID, global transaction ID, - * and branch qualifier. The Xid interface is used by the transaction - * manager and the resource managers. This interface is not visible to - * the application programs. - */ -public interface Xid { - - /** - * Maximum number of bytes returned by getGtrid. - */ - final static int MAXGTRIDSIZE = 64; - - /** - * Maximum number of bytes returned by getBqual. - */ - final static int MAXBQUALSIZE = 64; - - /** - * Obtain the format identifier part of the XID. - * - * @return Format identifier. O means the OSI CCR format. - */ - int getFormatId(); - - /** - * Obtain the global transaction identifier part of XID as an array - * of bytes. - * - * @return Global transaction identifier. - */ - byte[] getGlobalTransactionId(); - - /** - * Obtain the transaction branch identifier part of XID as an array - * of bytes. - * - * @return Global transaction identifier. - */ - byte[] getBranchQualifier(); -} diff -r 8c912c147654 -r d7609b65606b corba/src/java.sql/share/classes/javax/transaction/xa/package.html --- a/corba/src/java.sql/share/classes/javax/transaction/xa/package.html Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,41 +0,0 @@ - - - - - - - - -Provides the API that defines the contract between the transaction -manager and the resource manager, which allows the transaction -manager to enlist and delist resource objects (supplied by the -resource manager driver) in JTA transactions. The driver vendor -for a specific resource manager provides the implementation of -this API. -

-@since 1.4 - - diff -r 8c912c147654 -r d7609b65606b hotspot/.hgtags --- a/hotspot/.hgtags Mon Jan 12 11:46:43 2015 -0800 +++ b/hotspot/.hgtags Mon Jan 12 12:52:39 2015 -0800 @@ -447,3 +447,4 @@ 38cb4fbd47e3472bd1b5ebac83bda96fe4869c4f jdk9-b42 65a9747147b8090037541040ba67156ec914db6a jdk9-b43 43a44b56dca61a4d766a20f0528fdd8b5ceff873 jdk9-b44 +5dc8184af1e2bb30b0103113d1f1a58a21a80c37 jdk9-b45 diff -r 8c912c147654 -r d7609b65606b jaxp/.hgtags --- a/jaxp/.hgtags Mon Jan 12 11:46:43 2015 -0800 +++ b/jaxp/.hgtags Mon Jan 12 12:52:39 2015 -0800 @@ -287,3 +287,4 @@ 47b0d3fa4118b9d56870cf4004987438c501f5c0 jdk9-b42 40b242363040229a05224fbc5dc203a3f46a8f8f jdk9-b43 0cb0844b58924d6086d2850c22087d06679d5eef jdk9-b44 +0dab3e848229127c7aca4c58b98e2d90ba70372f jdk9-b45 diff -r 8c912c147654 -r d7609b65606b jaxws/.hgtags --- a/jaxws/.hgtags Mon Jan 12 11:46:43 2015 -0800 +++ b/jaxws/.hgtags Mon Jan 12 12:52:39 2015 -0800 @@ -290,3 +290,4 @@ 301ddb4478fb36d1f025d14e7e48c2a434e9e6ff jdk9-b42 edc13d27dc871be57d7ca77eef77e6d04972fee2 jdk9-b43 2a03baa4d849818ff6d635f110c2813b12fc2326 jdk9-b44 +e529374fbe526dbd668e5e98fc047b42b3bc6d33 jdk9-b45 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/LazyEnvelopeSource.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/LazyEnvelopeSource.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj; - -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -/** - * LazyEnvelopeSource provides the source to create lazy Envelope - * - * @author shih-chang.chen@oracle.com - */ -public interface LazyEnvelopeSource extends javax.xml.transform.Source { - /** - * Retrieve payload qname without materializing its contents - * @return - * @throws SOAPException - */ - public QName getPayloadQName(); - public XMLStreamReader readToBodyStarTag() throws XMLStreamException; - public XMLStreamReader readPayload(); - public void writePayloadTo(XMLStreamWriter writer)throws XMLStreamException; - public boolean isPayloadStreamReader(); -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/SOAPExceptionImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/SOAPExceptionImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,196 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj; - -import java.io.PrintStream; -import java.io.PrintWriter; - -import javax.xml.soap.SOAPException; - -/** - * An exception that signals that a SOAP exception has occurred. A - * SOAPExceptionImpl object may contain a String - * that gives the reason for the exception, an embedded - * Throwable object, or both. This class provides methods - * for retrieving reason messages and for retrieving the embedded - * Throwable object. - * - *

Typical reasons for throwing a SOAPExceptionImpl - * object are problems such as difficulty setting a header, not being - * able to send a message, and not being able to get a connection with - * the provider. Reasons for embedding a Throwable - * object include problems such as input/output errors or a parsing - * problem, such as an error in parsing a header. - */ -public class SOAPExceptionImpl extends SOAPException { - private Throwable cause; - - /** - * Constructs a SOAPExceptionImpl object with no - * reason or embedded Throwable object. - */ - public SOAPExceptionImpl() { - super(); - this.cause = null; - } - - /** - * Constructs a SOAPExceptionImpl object with the given - * String as the reason for the exception being thrown. - * - * @param reason a description of what caused the exception - */ - public SOAPExceptionImpl(String reason) { - super(reason); - this.cause = null; - } - - /** - * Constructs a SOAPExceptionImpl object with the given - * String as the reason for the exception being thrown - * and the given Throwable object as an embedded - * exception. - * - * @param reason a description of what caused the exception - * @param cause a Throwable object that is to - * be embedded in this SOAPExceptionImpl object - */ - public SOAPExceptionImpl(String reason, Throwable cause) { - super (reason); - initCause(cause); - } - - /** - * Constructs a SOAPExceptionImpl object initialized - * with the given Throwable object. - */ - public SOAPExceptionImpl(Throwable cause) { - super (cause.toString()); - initCause(cause); - } - - /** - * Returns the detail message for this SOAPExceptionImpl - * object. - *

- * If there is an embedded Throwable object, and if the - * SOAPExceptionImpl object has no detail message of its - * own, this method will return the detail message from the embedded - * Throwable object. - * - * @return the error or warning message for this - * SOAPExceptionImpl or, if it has none, the - * message of the embedded Throwable object, - * if there is one - */ - public String getMessage() { - String message = super.getMessage (); - if (message == null && cause != null) { - return cause.getMessage(); - } else { - return message; - } - } - - /** - * Returns the Throwable object embedded in this - * SOAPExceptionImpl if there is one. Otherwise, this method - * returns null. - * - * @return the embedded Throwable object or null - * if there is none - */ - - public Throwable getCause() { - return cause; - } - - /** - * Initializes the cause field of this SOAPExceptionImpl - * object with the given Throwable object. - *

- * This method can be called at most once. It is generally called from - * within the constructor or immediately after the constructor has - * returned a new SOAPExceptionImpl object. - * If this SOAPExceptionImpl object was created with the - * constructor {@link #SOAPExceptionImpl(Throwable)} or - * {@link #SOAPExceptionImpl(String,Throwable)}, meaning that its - * cause field already has a value, this method cannot be - * called even once. - * - * @param cause the Throwable object that caused this - * SOAPExceptionImpl object to be thrown. The value of this - * parameter is saved for later retrieval by the - * {@link #getCause()} method. A null value is - * permitted and indicates that the cause is nonexistent or - * unknown. - * @return a reference to this SOAPExceptionImpl instance - * @throws IllegalArgumentException if cause is this - * Throwable object. (A Throwable object - * cannot be its own cause.) - * @throws IllegalStateException if this SOAPExceptionImpl object - * was created with {@link #SOAPExceptionImpl(Throwable)} or - * {@link #SOAPExceptionImpl(String,Throwable)}, or this - * method has already been called on this SOAPExceptionImpl - * object - */ - public synchronized Throwable initCause(Throwable cause) - { - if(this.cause != null) { - throw new IllegalStateException("Can't override cause"); - } - if(cause == this) { - throw new IllegalArgumentException("Self-causation not permitted"); - } - this.cause = cause; - - return this; - } - - public void printStackTrace() { - super.printStackTrace(); - if (cause != null) { - System.err.println("\nCAUSE:\n"); - cause.printStackTrace(); - } - } - - public void printStackTrace(PrintStream s) { - super.printStackTrace(s); - if (cause != null) { - s.println("\nCAUSE:\n"); - cause.printStackTrace(s); - } - } - - public void printStackTrace(PrintWriter s) { - super.printStackTrace(s); - if (cause != null) { - s.println("\nCAUSE:\n"); - cause.printStackTrace(s); - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnection.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnection.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,657 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.client.p2p; - -import java.io.*; -import java.lang.reflect.Method; -import java.net.*; -import java.security.*; -import java.util.Iterator; -import java.util.StringTokenizer; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.util.*; - -/** - * This represents a "connection" to the simple HTTP-based provider. - * - * @author Anil Vijendran (akv@eng.sun.com) - * @author Rajiv Mordani (rajiv.mordani@sun.com) - * @author Manveen Kaur (manveen.kaur@sun.com) - * - */ -class HttpSOAPConnection extends SOAPConnection { - - public static final String vmVendor = SAAJUtil.getSystemProperty("java.vendor.url"); - private static final String sunVmVendor = "http://java.sun.com/"; - private static final String ibmVmVendor = "http://www.ibm.com/"; - private static final boolean isSunVM = sunVmVendor.equals(vmVendor) ? true: false; - private static final boolean isIBMVM = ibmVmVendor.equals(vmVendor) ? true : false; - private static final String JAXM_URLENDPOINT="javax.xml.messaging.URLEndpoint"; - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.HTTP_CONN_DOMAIN, - "com.sun.xml.internal.messaging.saaj.client.p2p.LocalStrings"); - - - MessageFactory messageFactory = null; - - boolean closed = false; - - public HttpSOAPConnection() throws SOAPException { - - try { - messageFactory = MessageFactory.newInstance(SOAPConstants.DYNAMIC_SOAP_PROTOCOL); - } catch (NoSuchMethodError ex) { - //fallback to default SOAP 1.1 in this case for backward compatibility - messageFactory = MessageFactory.newInstance(); - } catch (Exception ex) { - log.log(Level.SEVERE, "SAAJ0001.p2p.cannot.create.msg.factory", ex); - throw new SOAPExceptionImpl("Unable to create message factory", ex); - } - } - - public void close() throws SOAPException { - if (closed) { - log.severe("SAAJ0002.p2p.close.already.closed.conn"); - throw new SOAPExceptionImpl("Connection already closed"); - } - - messageFactory = null; - closed = true; - } - - public SOAPMessage call(SOAPMessage message, Object endPoint) - throws SOAPException { - if (closed) { - log.severe("SAAJ0003.p2p.call.already.closed.conn"); - throw new SOAPExceptionImpl("Connection is closed"); - } - - Class urlEndpointClass = null; - ClassLoader loader = Thread.currentThread().getContextClassLoader(); - try { - if (loader != null) { - urlEndpointClass = loader.loadClass(JAXM_URLENDPOINT); - } else { - urlEndpointClass = Class.forName(JAXM_URLENDPOINT); - } - } catch (ClassNotFoundException ex) { - //Do nothing. URLEndpoint is available only when JAXM is there. - if (log.isLoggable(Level.FINEST)) - log.finest("SAAJ0090.p2p.endpoint.available.only.for.JAXM"); - } - - if (urlEndpointClass != null) { - if (urlEndpointClass.isInstance(endPoint)) { - String url = null; - - try { - Method m = urlEndpointClass.getMethod("getURL", (Class[])null); - url = (String) m.invoke(endPoint, (Object[])null); - } catch (Exception ex) { - // TBD -- exception chaining - log.log(Level.SEVERE,"SAAJ0004.p2p.internal.err",ex); - throw new SOAPExceptionImpl( - "Internal error: " + ex.getMessage()); - } - try { - endPoint = new URL(url); - } catch (MalformedURLException mex) { - log.log(Level.SEVERE,"SAAJ0005.p2p.", mex); - throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); - } - } - } - - if (endPoint instanceof java.lang.String) { - try { - endPoint = new URL((String) endPoint); - } catch (MalformedURLException mex) { - log.log(Level.SEVERE, "SAAJ0006.p2p.bad.URL", mex); - throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); - } - } - - if (endPoint instanceof URL) - try { - SOAPMessage response = post(message, (URL)endPoint); - return response; - } catch (Exception ex) { - // TBD -- chaining? - throw new SOAPExceptionImpl(ex); - } else { - log.severe("SAAJ0007.p2p.bad.endPoint.type"); - throw new SOAPExceptionImpl("Bad endPoint type " + endPoint); - } - } - - SOAPMessage post(SOAPMessage message, URL endPoint) throws SOAPException, IOException { - boolean isFailure = false; - - URL url = null; - HttpURLConnection httpConnection = null; - - int responseCode = 0; - try { - if (endPoint.getProtocol().equals("https")) - //if(!setHttps) - initHttps(); - // Process the URL - URI uri = new URI(endPoint.toString()); - String userInfo = uri.getRawUserInfo(); - - url = endPoint; - - if (dL > 0) - d("uri: " + userInfo + " " + url + " " + uri); - - // TBD - // Will deal with https later. - if (!url.getProtocol().equalsIgnoreCase("http") - && !url.getProtocol().equalsIgnoreCase("https")) { - log.severe("SAAJ0052.p2p.protocol.mustbe.http.or.https"); - throw new IllegalArgumentException( - "Protocol " - + url.getProtocol() - + " not supported in URL " - + url); - } - httpConnection = (HttpURLConnection) createConnection(url); - - httpConnection.setRequestMethod("POST"); - - httpConnection.setDoOutput(true); - httpConnection.setDoInput(true); - httpConnection.setUseCaches(false); - httpConnection.setInstanceFollowRedirects(true); - - if (message.saveRequired()) - message.saveChanges(); - - MimeHeaders headers = message.getMimeHeaders(); - - Iterator it = headers.getAllHeaders(); - boolean hasAuth = false; // true if we find explicit Auth header - while (it.hasNext()) { - MimeHeader header = (MimeHeader) it.next(); - - String[] values = headers.getHeader(header.getName()); - if (values.length == 1) - httpConnection.setRequestProperty( - header.getName(), - header.getValue()); - else { - StringBuffer concat = new StringBuffer(); - int i = 0; - while (i < values.length) { - if (i != 0) - concat.append(','); - concat.append(values[i]); - i++; - } - - httpConnection.setRequestProperty( - header.getName(), - concat.toString()); - } - - if ("Authorization".equals(header.getName())) { - hasAuth = true; - if (log.isLoggable(Level.FINE)) - log.fine("SAAJ0091.p2p.https.auth.in.POST.true"); - } - } - - if (!hasAuth && userInfo != null) { - initAuthUserInfo(httpConnection, userInfo); - } - - OutputStream out = httpConnection.getOutputStream(); - try { - message.writeTo(out); - out.flush(); - } finally { - out.close(); - } - - httpConnection.connect(); - - try { - - responseCode = httpConnection.getResponseCode(); - - // let HTTP_INTERNAL_ERROR (500) through because it is used for SOAP faults - if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { - isFailure = true; - } - //else if (responseCode != HttpURLConnection.HTTP_OK) - //else if (!(responseCode >= HttpURLConnection.HTTP_OK && responseCode < 207)) - else if ((responseCode / 100) != 2) { - log.log(Level.SEVERE, - "SAAJ0008.p2p.bad.response", - new String[] {httpConnection.getResponseMessage()}); - throw new SOAPExceptionImpl( - "Bad response: (" - + responseCode - + httpConnection.getResponseMessage()); - - } - } catch (IOException e) { - // on JDK1.3.1_01, we end up here, but then getResponseCode() succeeds! - responseCode = httpConnection.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { - isFailure = true; - } else { - throw e; - } - - } - - } catch (SOAPException ex) { - throw ex; - } catch (Exception ex) { - log.severe("SAAJ0009.p2p.msg.send.failed"); - throw new SOAPExceptionImpl("Message send failed", ex); - } - - SOAPMessage response = null; - InputStream httpIn = null; - if (responseCode == HttpURLConnection.HTTP_OK || isFailure) { - try { - MimeHeaders headers = new MimeHeaders(); - - String key, value; - - // Header field 0 is the status line so we skip it. - - int i = 1; - - while (true) { - key = httpConnection.getHeaderFieldKey(i); - value = httpConnection.getHeaderField(i); - - if (key == null && value == null) - break; - - if (key != null) { - StringTokenizer values = - new StringTokenizer(value, ","); - while (values.hasMoreTokens()) - headers.addHeader(key, values.nextToken().trim()); - } - i++; - } - - httpIn = - (isFailure - ? httpConnection.getErrorStream() - : httpConnection.getInputStream()); - - byte[] bytes = readFully(httpIn); - - int length = - httpConnection.getContentLength() == -1 - ? bytes.length - : httpConnection.getContentLength(); - - // If no reply message is returned, - // content-Length header field value is expected to be zero. - if (length == 0) { - response = null; - log.warning("SAAJ0014.p2p.content.zero"); - } else { - ByteInputStream in = new ByteInputStream(bytes, length); - response = messageFactory.createMessage(headers, in); - } - - } catch (SOAPException ex) { - throw ex; - } catch (Exception ex) { - log.log(Level.SEVERE,"SAAJ0010.p2p.cannot.read.resp", ex); - throw new SOAPExceptionImpl( - "Unable to read response: " + ex.getMessage()); - } finally { - if (httpIn != null) - httpIn.close(); - httpConnection.disconnect(); - } - } - return response; - } - - // Object identifies where the request should be sent. - // It is required to support objects of type String and java.net.URL. - - public SOAPMessage get(Object endPoint) throws SOAPException { - if (closed) { - log.severe("SAAJ0011.p2p.get.already.closed.conn"); - throw new SOAPExceptionImpl("Connection is closed"); - } - Class urlEndpointClass = null; - - try { - urlEndpointClass = Class.forName("javax.xml.messaging.URLEndpoint"); - } catch (Exception ex) { - //Do nothing. URLEndpoint is available only when JAXM is there. - } - - if (urlEndpointClass != null) { - if (urlEndpointClass.isInstance(endPoint)) { - String url = null; - - try { - Method m = urlEndpointClass.getMethod("getURL", (Class[])null); - url = (String) m.invoke(endPoint, (Object[])null); - } catch (Exception ex) { - log.severe("SAAJ0004.p2p.internal.err"); - throw new SOAPExceptionImpl( - "Internal error: " + ex.getMessage()); - } - try { - endPoint = new URL(url); - } catch (MalformedURLException mex) { - log.severe("SAAJ0005.p2p."); - throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); - } - } - } - - if (endPoint instanceof java.lang.String) { - try { - endPoint = new URL((String) endPoint); - } catch (MalformedURLException mex) { - log.severe("SAAJ0006.p2p.bad.URL"); - throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); - } - } - - if (endPoint instanceof URL) - try { - SOAPMessage response = doGet((URL)endPoint); - return response; - } catch (Exception ex) { - throw new SOAPExceptionImpl(ex); - } else - throw new SOAPExceptionImpl("Bad endPoint type " + endPoint); - } - - SOAPMessage doGet(URL endPoint) throws SOAPException, IOException { - boolean isFailure = false; - - URL url = null; - HttpURLConnection httpConnection = null; - - int responseCode = 0; - try { - /// Is https GET allowed?? - if (endPoint.getProtocol().equals("https")) - initHttps(); - // Process the URL - URI uri = new URI(endPoint.toString()); - String userInfo = uri.getRawUserInfo(); - - url = endPoint; - - if (dL > 0) - d("uri: " + userInfo + " " + url + " " + uri); - - // TBD - // Will deal with https later. - if (!url.getProtocol().equalsIgnoreCase("http") - && !url.getProtocol().equalsIgnoreCase("https")) { - log.severe("SAAJ0052.p2p.protocol.mustbe.http.or.https"); - throw new IllegalArgumentException( - "Protocol " - + url.getProtocol() - + " not supported in URL " - + url); - } - httpConnection = (HttpURLConnection) createConnection(url); - - httpConnection.setRequestMethod("GET"); - - httpConnection.setDoOutput(true); - httpConnection.setDoInput(true); - httpConnection.setUseCaches(false); - httpConnection.setFollowRedirects(true); - - httpConnection.connect(); - - try { - - responseCode = httpConnection.getResponseCode(); - - // let HTTP_INTERNAL_ERROR (500) through because it is used for SOAP faults - if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { - isFailure = true; - } else if ((responseCode / 100) != 2) { - log.log(Level.SEVERE, - "SAAJ0008.p2p.bad.response", - new String[] { httpConnection.getResponseMessage()}); - throw new SOAPExceptionImpl( - "Bad response: (" - + responseCode - + httpConnection.getResponseMessage()); - - } - } catch (IOException e) { - // on JDK1.3.1_01, we end up here, but then getResponseCode() succeeds! - responseCode = httpConnection.getResponseCode(); - if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { - isFailure = true; - } else { - throw e; - } - - } - - } catch (SOAPException ex) { - throw ex; - } catch (Exception ex) { - log.severe("SAAJ0012.p2p.get.failed"); - throw new SOAPExceptionImpl("Get failed", ex); - } - - SOAPMessage response = null; - InputStream httpIn = null; - if (responseCode == HttpURLConnection.HTTP_OK || isFailure) { - try { - MimeHeaders headers = new MimeHeaders(); - - String key, value; - - // Header field 0 is the status line so we skip it. - - int i = 1; - - while (true) { - key = httpConnection.getHeaderFieldKey(i); - value = httpConnection.getHeaderField(i); - - if (key == null && value == null) - break; - - if (key != null) { - StringTokenizer values = - new StringTokenizer(value, ","); - while (values.hasMoreTokens()) - headers.addHeader(key, values.nextToken().trim()); - } - i++; - } - - httpIn = - (isFailure - ? httpConnection.getErrorStream() - : httpConnection.getInputStream()); - // If no reply message is returned, - // content-Length header field value is expected to be zero. - // java SE 6 documentation says : - // available() : an estimate of the number of bytes that can be read - //(or skipped over) from this input stream without blocking - //or 0 when it reaches the end of the input stream. - if ((httpIn == null ) - || (httpConnection.getContentLength() == 0) - || (httpIn.available() == 0)) { - response = null; - log.warning("SAAJ0014.p2p.content.zero"); - } else { - response = messageFactory.createMessage(headers, httpIn); - } - - } catch (SOAPException ex) { - throw ex; - } catch (Exception ex) { - log.log(Level.SEVERE, - "SAAJ0010.p2p.cannot.read.resp", - ex); - throw new SOAPExceptionImpl( - "Unable to read response: " + ex.getMessage()); - } finally { - if (httpIn != null) - httpIn.close(); - httpConnection.disconnect(); - } - } - return response; - } - - private byte[] readFully(InputStream istream) throws IOException { - ByteArrayOutputStream bout = new ByteArrayOutputStream(); - byte[] buf = new byte[1024]; - int num = 0; - - while ((num = istream.read(buf)) != -1) { - bout.write(buf, 0, num); - } - - byte[] ret = bout.toByteArray(); - - return ret; - } - - //private static String SSL_PKG = "com.sun.net.ssl.internal.www.protocol"; - //private static String SSL_PROVIDER = - // "com.sun.net.ssl.internal.ssl.Provider"; - private static final String SSL_PKG; - private static final String SSL_PROVIDER; - - static { - if (isIBMVM) { - SSL_PKG ="com.ibm.net.ssl.internal.www.protocol"; - SSL_PROVIDER ="com.ibm.net.ssl.internal.ssl.Provider"; - } else { - //if not IBM VM default to Sun. - SSL_PKG = "com.sun.net.ssl.internal.www.protocol"; - SSL_PROVIDER ="com.sun.net.ssl.internal.ssl.Provider"; - } - } - - private void initHttps() { - //if(!setHttps) { - String pkgs = SAAJUtil.getSystemProperty("java.protocol.handler.pkgs"); - if (log.isLoggable(Level.FINE)) - log.log(Level.FINE, "SAAJ0053.p2p.providers", new String[] { pkgs }); - - if (pkgs == null || pkgs.indexOf(SSL_PKG) < 0) { - if (pkgs == null) - pkgs = SSL_PKG; - else - pkgs = pkgs + "|" + SSL_PKG; - System.setProperty("java.protocol.handler.pkgs", pkgs); - if (log.isLoggable(Level.FINE)) - log.log(Level.FINE, "SAAJ0054.p2p.set.providers", - new String[] { pkgs }); - try { - Class c = Class.forName(SSL_PROVIDER); - Provider p = (Provider) c.newInstance(); - Security.addProvider(p); - if (log.isLoggable(Level.FINE)) - log.log(Level.FINE, "SAAJ0055.p2p.added.ssl.provider", - new String[] { SSL_PROVIDER }); - //System.out.println("Added SSL_PROVIDER " + SSL_PROVIDER); - //setHttps = true; - } catch (Exception ex) { - } - } - //} - } - - private void initAuthUserInfo(HttpURLConnection conn, String userInfo) { - String user; - String password; - if (userInfo != null) { // get the user and password - //System.out.println("UserInfo= " + userInfo ); - int delimiter = userInfo.indexOf(':'); - if (delimiter == -1) { - user = ParseUtil.decode(userInfo); - password = null; - } else { - user = ParseUtil.decode(userInfo.substring(0, delimiter++)); - password = ParseUtil.decode(userInfo.substring(delimiter)); - } - - String plain = user + ":"; - byte[] nameBytes = plain.getBytes(); - byte[] passwdBytes = (password == null ? new byte[0] : password - .getBytes()); - - // concatenate user name and password bytes and encode them - byte[] concat = new byte[nameBytes.length + passwdBytes.length]; - - System.arraycopy(nameBytes, 0, concat, 0, nameBytes.length); - System.arraycopy( - passwdBytes, - 0, - concat, - nameBytes.length, - passwdBytes.length); - String auth = "Basic " + new String(Base64.encode(concat)); - conn.setRequestProperty("Authorization", auth); - if (dL > 0) - d("Adding auth " + auth); - } - } - - private static final int dL = 0; - private void d(String s) { - log.log(Level.SEVERE, - "SAAJ0013.p2p.HttpSOAPConnection", - new String[] { s }); - System.err.println("HttpSOAPConnection: " + s); - } - - private java.net.HttpURLConnection createConnection(URL endpoint) - throws IOException { - return (HttpURLConnection) endpoint.openConnection(); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnectionFactory.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnectionFactory.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,42 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.client.p2p; - -import javax.xml.soap.*; - -/** - * Implementation of the SOAPConnectionFactory - * - * @author Anil Vijendran (anil@sun.com) - */ -public class HttpSOAPConnectionFactory extends SOAPConnectionFactory { - - public SOAPConnection createConnection() - throws SOAPException - { - return new HttpSOAPConnection(); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages -# Error messages -SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Unable to create Message Factory -SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Connection already closed (from close method) -SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Connection already closed (from call) -SAAJ0004.p2p.internal.err=SAAJ0004: Internal error -SAAJ0005.p2p.=SAAJ0005: Bad URL (endPoint instance of javax.xml.messaging.URLEndpoint) -# 0005 : getURL failed on javax.xml.messaging.URLEndpoint -SAAJ0006.p2p.bad.URL=SAAJ0006: Bad URL (endPoint instance of String) -SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Bad endPoint type (endPoint instance of URL) -SAAJ0008.p2p.bad.response=SAAJ0008: Bad Response; {0} -SAAJ0009.p2p.msg.send.failed=SAAJ0009: Message send failed -SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Unable to read response -SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Connection already closed (from get) -SAAJ0012.p2p.get.failed=SAAJ0012: Get failed -SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} -SAAJ0014.p2p.content.zero=SAAJ0014: Invalid reply message. Content length of reply was zero. - -# Debug messages -SAAJ0050.p2p.proxy.host=SAAJ0050: Proxy host: {0} -SAAJ0051.p2p.proxy.port=SAAJ0051: Proxy Port: {0} -SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protocol not supported in URL, must be http or https -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0053.p2p.providers=SAAJ0053: Providers {0} -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0054.p2p.set.providers=SAAJ0054: Setting Providers {0} -# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" -SAAJ0055.p2p.added.ssl.provider=SAAJ0055: Added SSL_PROVIDER {0} - -# Trace messages -SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint is available only when JAXM is there -SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: HTTPS Authorization in POST set to true diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_de.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_de.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages -# Error messages -SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Nachrichten-Factory kann nicht erstellt werden -SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Verbindung ist bereits beendet (mit close-Methode) -SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Verbindung ist bereits beendet (mit call) -SAAJ0004.p2p.internal.err=SAAJ0004: Interner Fehler -SAAJ0005.p2p.=SAAJ0005: Ung\u00FCltige URL (endPoint-Instanz von javax.xml.messaging.URLEndpoint) -# 0005 : getURL failed on javax.xml.messaging.URLEndpoint -SAAJ0006.p2p.bad.URL=SAAJ0006: Ung\u00FCltige URL (endPoint-Instanz von Zeichenfolge) -SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Ung\u00FCltiger endPoint-Typ (endPoint-Instanz von URL) -SAAJ0008.p2p.bad.response=SAAJ0008: Ung\u00FCltige Antwort; {0} -SAAJ0009.p2p.msg.send.failed=SAAJ0009: Nachricht konnte nicht gesendet werden -SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Antwort konnte nicht gelesen werden -SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Verbindung ist bereits beendet (mit get) -SAAJ0012.p2p.get.failed=SAAJ0012: Get-Vorgang nicht erfolgreich -SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} -SAAJ0014.p2p.content.zero=SAAJ0014: Ung\u00FCltige Antwortnachricht. Contentl\u00E4nge von Antwort war null. - -# Debug messages -SAAJ0050.p2p.proxy.host=SAAJ0050: Proxyhost: {0} -SAAJ0051.p2p.proxy.port=SAAJ0051: Proxyport: {0} -SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protokoll in URL nicht unterst\u00FCtzt, muss http oder https sein -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0053.p2p.providers=SAAJ0053: Provider {0} -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0054.p2p.set.providers=SAAJ0054: Provider {0} werden festgelegt -# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" -SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} hinzugef\u00FCgt - -# Trace messages -SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint ist nur verf\u00FCgbar, wenn JAXM vorhanden ist -SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: HTTPS-Autorisierung in POST auf "True" festgelegt diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_es.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_es.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages -# Error messages -SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: no se ha podido crear la f\u00E1brica de mensajes -SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: la conexi\u00F3n ya est\u00E1 cerrada (desde el m\u00E9todo de cierre) -SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: la conexi\u00F3n ya est\u00E1 cerrada (desde la llamada) -SAAJ0004.p2p.internal.err=SAAJ0004: error interno -SAAJ0005.p2p.=SAAJ0005: URL err\u00F3nea (instancia endPoint de javax.xml.messaging.URLEndpoint) -# 0005 : getURL failed on javax.xml.messaging.URLEndpoint -SAAJ0006.p2p.bad.URL=SAAJ0006: URL err\u00F3nea (instancia endPoint de String) -SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: tipo endPoint err\u00F3neo (instancia endPoint de URL) -SAAJ0008.p2p.bad.response=SAAJ0008: respuesta err\u00F3nea; {0} -SAAJ0009.p2p.msg.send.failed=SAAJ0009: fallo de env\u00EDo de mensaje -SAAJ0010.p2p.cannot.read.resp=SAAJ0010: no se ha podido leer la respuesta -SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: la conexi\u00F3n ya est\u00E1 cerrada (desde la obtenci\u00F3n) -SAAJ0012.p2p.get.failed=SAAJ0012: fallo de obtenci\u00F3n -SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} -SAAJ0014.p2p.content.zero=SAAJ0014: mensaje de respuesta no v\u00E1lido. La longitud del contenido de respuesta es cero. - -# Debug messages -SAAJ0050.p2p.proxy.host=SAAJ0050: Host de proxy: {0} -SAAJ0051.p2p.proxy.port=SAAJ0051: Puerto de proxy: {0} -SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: el protocolo no est\u00E1 soportado en la URL. Debe ser http o https -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0053.p2p.providers=SAAJ0053: proveedores {0} -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0054.p2p.set.providers=SAAJ0054: definici\u00F3n de Proveedores {0} -# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" -SAAJ0055.p2p.added.ssl.provider=SAAJ0055: se ha agregado SSL_PROVIDER {0} - -# Trace messages -SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint s\u00F3lo est\u00E1 disponible cuando JAXM est\u00E1 all\u00ED -SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: la autorizaci\u00F3n de HTTPS en POST se ha definido en true diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_fr.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_fr.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages -# Error messages -SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001 : impossible de cr\u00E9er une fabrique de messages -SAAJ0002.p2p.close.already.closed.conn=SAAJ0002 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de la m\u00E9thode de fermeture) -SAAJ0003.p2p.call.already.closed.conn=SAAJ0003 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de l'appel) -SAAJ0004.p2p.internal.err=SAAJ0004 : erreur interne -SAAJ0005.p2p.=SAAJ0005 : URL incorrecte (instance d'adresse de javax.xml.messaging.URLEndpoint) -# 0005 : getURL failed on javax.xml.messaging.URLEndpoint -SAAJ0006.p2p.bad.URL=SAAJ0006 : URL incorrecte (instance d'adresse de la cha\u00EEne) -SAAJ0007.p2p.bad.endPoint.type=SAAJ0007 : type d'adresse incorrect (instance d'adresse de l'URL) -SAAJ0008.p2p.bad.response=SAAJ0008 : r\u00E9ponse incorrecte ; {0} -SAAJ0009.p2p.msg.send.failed=SAAJ0009 : \u00E9chec de l'envoi du message -SAAJ0010.p2p.cannot.read.resp=SAAJ0010 : impossible de lire la r\u00E9ponse -SAAJ0011.p2p.get.already.closed.conn=SAAJ0011 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de la m\u00E9thode get) -SAAJ0012.p2p.get.failed=SAAJ0012 : \u00E9chec de la m\u00E9thode get -SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013 : HttpSOAPConnection : {0} -SAAJ0014.p2p.content.zero=SAAJ0014 : message de r\u00E9ponse non valide. La longueur du contenu de la r\u00E9ponse \u00E9tait de z\u00E9ro. - -# Debug messages -SAAJ0050.p2p.proxy.host=SAAJ0050 : h\u00F4te proxy : {0} -SAAJ0051.p2p.proxy.port=SAAJ0051 : port proxy : {0} -SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052 : protocole non pris en charge dans l'URL, il doit s'agir de http ou https -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0053.p2p.providers=SAAJ0053 : fournisseurs {0} -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0054.p2p.set.providers=SAAJ0054 : d\u00E9finition des fournisseurs {0} -# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" -SAAJ0055.p2p.added.ssl.provider=SAAJ0055 : SSL_PROVIDER {0} ajout\u00E9 - -# Trace messages -SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090 : URLEndpoint est disponible uniquement lorsque JAXM est pr\u00E9sent -SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091 : autorisation HTTPS dans POST d\u00E9finie sur True diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_it.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_it.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages -# Error messages -SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Impossibile creare il message factory -SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Connessione gi\u00E0 chiusa (dal metodo close) -SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Connessione gi\u00E0 chiusa (dal metodo call) -SAAJ0004.p2p.internal.err=SAAJ0004: Errore interno -SAAJ0005.p2p.=SAAJ0005: URL non valido (istanza endPoint di javax.xml.messaging.URLEndpoint) -# 0005 : getURL failed on javax.xml.messaging.URLEndpoint -SAAJ0006.p2p.bad.URL=SAAJ0006: URL non valido (istanza endPoint di String) -SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Tipo endPoint non valido (istanza endPoint dell'URL) -SAAJ0008.p2p.bad.response=SAAJ0008: Risposta non valida; {0} -SAAJ0009.p2p.msg.send.failed=SAAJ0009: Invio del messaggio non riuscito -SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Impossibile leggere la risposta -SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Connessione gi\u00E0 chiusa (dal metodo get) -SAAJ0012.p2p.get.failed=SAAJ0012: Metodo get non riuscito -SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} -SAAJ0014.p2p.content.zero=SAAJ0014: Messaggio di risposta non valido. La lunghezza del contenuto della risposta era pari a zero. - -# Debug messages -SAAJ0050.p2p.proxy.host=SAAJ0050: Host proxy: {0} -SAAJ0051.p2p.proxy.port=SAAJ0051: Porta proxy: {0} -SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protocollo non supportato nell'URL, deve essere http o https -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0053.p2p.providers=SAAJ0053: Provider {0} -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0054.p2p.set.providers=SAAJ0054: Impostazione dei provider {0} -# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" -SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} aggiunto - -# Trace messages -SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: L'endpoint dell'URL \u00E8 disponibile solo quando \u00E8 presente JAXM -SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: Autorizzazione HTTPS in POST impostata su true diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ja.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ja.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages -# Error messages -SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u30E1\u30C3\u30BB\u30FC\u30B8\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 -SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: (close\u30E1\u30BD\u30C3\u30C9\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059 -SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: (call\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059 -SAAJ0004.p2p.internal.err=SAAJ0004: \u5185\u90E8\u30A8\u30E9\u30FC -SAAJ0005.p2p.=SAAJ0005: \u7121\u52B9\u306AURL (javax.xml.messaging.URLEndpoint\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9) -# 0005 : getURL failed on javax.xml.messaging.URLEndpoint -SAAJ0006.p2p.bad.URL=SAAJ0006: \u7121\u52B9\u306AURL (\u6587\u5B57\u5217\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9) -SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \u7121\u52B9\u306AendPoint\u30BF\u30A4\u30D7(URL\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9) -SAAJ0008.p2p.bad.response=SAAJ0008: \u4E0D\u6B63\u306A\u30EC\u30B9\u30DD\u30F3\u30B9; {0} -SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u30E1\u30C3\u30BB\u30FC\u30B8\u9001\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F -SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u30EC\u30B9\u30DD\u30F3\u30B9\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093 -SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: (get\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059 -SAAJ0012.p2p.get.failed=SAAJ0012: \u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F -SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} -SAAJ0014.p2p.content.zero=SAAJ0014: \u5FDC\u7B54\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u7121\u52B9\u3067\u3059\u3002\u5FDC\u7B54\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u9577\u304C\u30BC\u30ED\u3067\u3057\u305F\u3002 - -# Debug messages -SAAJ0050.p2p.proxy.host=SAAJ0050: \u30D7\u30ED\u30AD\u30B7\u30FB\u30DB\u30B9\u30C8: {0} -SAAJ0051.p2p.proxy.port=SAAJ0051: \u30D7\u30ED\u30AD\u30B7\u30FB\u30DD\u30FC\u30C8: {0} -SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30D7\u30ED\u30C8\u30B3\u30EB\u3067\u3059\u3002http\u307E\u305F\u306Fhttps\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0053.p2p.providers=SAAJ0053: \u30D7\u30ED\u30D0\u30A4\u30C0{0} -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0054.p2p.set.providers=SAAJ0054: \u30D7\u30ED\u30D0\u30A4\u30C0{0}\u3092\u8A2D\u5B9A\u3057\u3066\u3044\u307E\u3059 -# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" -SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0}\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F - -# Trace messages -SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint\u3092\u4F7F\u7528\u3067\u304D\u308B\u306E\u306FJAXM\u304C\u5B58\u5728\u3059\u308B\u5834\u5408\u306E\u307F\u3067\u3059 -SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST\u306EHTTPS\u8A8D\u8A3C\u304Ctrue\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ko.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ko.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages -# Error messages -SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \uBA54\uC2DC\uC9C0 \uD329\uD1A0\uB9AC\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: close \uBA54\uC18C\uB4DC\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \uD638\uCD9C\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0004.p2p.internal.err=SAAJ0004: \uB0B4\uBD80 \uC624\uB958 -SAAJ0005.p2p.=SAAJ0005: URL(javax.xml.messaging.URLEndpoint\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -# 0005 : getURL failed on javax.xml.messaging.URLEndpoint -SAAJ0006.p2p.bad.URL=SAAJ0006: URL(\uBB38\uC790\uC5F4\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \uB05D\uC810 \uC720\uD615(URL\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0008.p2p.bad.response=SAAJ0008: \uC798\uBABB\uB41C \uC751\uB2F5: {0} -SAAJ0009.p2p.msg.send.failed=SAAJ0009: \uBA54\uC2DC\uC9C0 \uC804\uC1A1\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \uC751\uB2F5\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \uAC00\uC838\uC624\uAE30\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0012.p2p.get.failed=SAAJ0012: \uAC00\uC838\uC624\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} -SAAJ0014.p2p.content.zero=SAAJ0014: \uD68C\uC2E0 \uBA54\uC2DC\uC9C0\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. \uD68C\uC2E0\uC758 \uCF58\uD150\uCE20 \uAE38\uC774\uAC00 0\uC785\uB2C8\uB2E4. - -# Debug messages -SAAJ0050.p2p.proxy.host=SAAJ0050: \uD504\uB85D\uC2DC \uD638\uC2A4\uD2B8: {0} -SAAJ0051.p2p.proxy.port=SAAJ0051: \uD504\uB85D\uC2DC \uD3EC\uD2B8: {0} -SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL\uC5D0\uC11C \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uD504\uB85C\uD1A0\uCF5C\uC785\uB2C8\uB2E4. http \uB610\uB294 https\uC5EC\uC57C \uD569\uB2C8\uB2E4. -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0053.p2p.providers=SAAJ0053: {0} \uC81C\uACF5\uC790 -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0054.p2p.set.providers=SAAJ0054: {0} \uC81C\uACF5\uC790\uB97C \uC124\uC815\uD558\uB294 \uC911 -# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" -SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0}\uC744(\uB97C) \uCD94\uAC00\uD588\uC2B5\uB2C8\uB2E4. - -# Trace messages -SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: JAXM\uC774 \uC788\uB294 \uACBD\uC6B0\uC5D0\uB9CC URLEndpoint\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. -SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST\uC758 HTTPS \uAD8C\uD55C \uBD80\uC5EC\uAC00 true\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_pt_BR.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_pt_BR.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages -# Error messages -SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: n\u00E3o \u00E9 poss\u00EDvel criar a factory da mensagem -SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: a conex\u00E3o j\u00E1 foi fechada (do m\u00E9todo de fechamento) -SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: conex\u00E3o j\u00E1 fechada (da chamada) -SAAJ0004.p2p.internal.err=SAAJ0004: erro interno -SAAJ0005.p2p.=SAAJ0005: URL incorreto (a inst\u00E2ncia do endPoint de javax.xml.messaging.URLEndpoint) -# 0005 : getURL failed on javax.xml.messaging.URLEndpoint -SAAJ0006.p2p.bad.URL=SAAJ0006: URL incorreto (inst\u00E2ncia de endPoint da String) -SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: tipo de endPoint incorreto (inst\u00E2ncia de endPoint do URL) -SAAJ0008.p2p.bad.response=SAAJ0008: Resposta Incorreta; {0} -SAAJ0009.p2p.msg.send.failed=SAAJ0009: falha no envio da mensagem -SAAJ0010.p2p.cannot.read.resp=SAAJ0010: n\u00E3o \u00E9 poss\u00EDvel ler a resposta -SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: conex\u00E3o j\u00E1 fechada (de get) -SAAJ0012.p2p.get.failed=SAAJ0012: falha de get -SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} -SAAJ0014.p2p.content.zero=SAAJ0014: mensagem de resposta inv\u00E1lida. O tamanho do conte\u00FAdo da resposta era zero. - -# Debug messages -SAAJ0050.p2p.proxy.host=SAAJ0050: host proxy: {0} -SAAJ0051.p2p.proxy.port=SAAJ0051: porta proxy: {0} -SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: protocolo n\u00E3o suportado no URL, deve ser http ou https -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0053.p2p.providers=SAAJ0053: provedores {0} -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0054.p2p.set.providers=SAAJ0054: definindo provedores {0} -# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" -SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} adicionado - -# Trace messages -SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint est\u00E1 dispon\u00EDvel s\u00F3 quando JAXM est\u00E1 presente -SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: autoriza\u00E7\u00E3o de HTTPS no POST definida como verdadeira diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_CN.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_CN.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages -# Error messages -SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F\u5DE5\u5382 -SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE close \u65B9\u6CD5) -SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE\u8C03\u7528) -SAAJ0004.p2p.internal.err=SAAJ0004: \u5185\u90E8\u9519\u8BEF -SAAJ0005.p2p.=SAAJ0005: URL \u9519\u8BEF (javax.xml.messaging.URLEndpoint \u7684 endPoint \u5B9E\u4F8B) -# 0005 : getURL failed on javax.xml.messaging.URLEndpoint -SAAJ0006.p2p.bad.URL=SAAJ0006: URL \u9519\u8BEF (\u5B57\u7B26\u4E32\u7684 endPoint \u5B9E\u4F8B) -SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: endPoint \u7C7B\u578B\u9519\u8BEF (URL \u7684 endPoint \u5B9E\u4F8B) -SAAJ0008.p2p.bad.response=SAAJ0008: \u54CD\u5E94\u9519\u8BEF; {0} -SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u672A\u80FD\u53D1\u9001\u6D88\u606F -SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u65E0\u6CD5\u8BFB\u53D6\u54CD\u5E94 -SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE get \u65B9\u6CD5) -SAAJ0012.p2p.get.failed=SAAJ0012: Get \u5931\u8D25 -SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} -SAAJ0014.p2p.content.zero=SAAJ0014: \u56DE\u590D\u6D88\u606F\u65E0\u6548\u3002\u56DE\u590D\u7684\u5185\u5BB9\u957F\u5EA6\u4E3A\u96F6\u3002 - -# Debug messages -SAAJ0050.p2p.proxy.host=SAAJ0050: \u4EE3\u7406\u4E3B\u673A: {0} -SAAJ0051.p2p.proxy.port=SAAJ0051: \u4EE3\u7406\u7AEF\u53E3: {0} -SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL \u4E2D\u4E0D\u652F\u6301\u534F\u8BAE, \u5FC5\u987B\u662F http \u6216 https -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0053.p2p.providers=SAAJ0053: \u63D0\u4F9B\u65B9{0} -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0054.p2p.set.providers=SAAJ0054: \u8BBE\u7F6E\u63D0\u4F9B\u65B9{0} -# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" -SAAJ0055.p2p.added.ssl.provider=SAAJ0055: \u5DF2\u6DFB\u52A0 SSL_PROVIDER {0} - -# Trace messages -SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: \u53EA\u6709\u5728\u4F7F\u7528 JAXM \u65F6, URLEndpoint \u624D\u53EF\u7528 -SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST \u4E2D\u7684 HTTPS \u6388\u6743\u8BBE\u7F6E\u4E3A\u201C\u771F\u201D diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_TW.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_TW.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,58 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages -# Error messages -SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F\u8655\u7406\u7AD9 -SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u95DC\u9589\u65B9\u6CD5) -SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u547C\u53EB) -SAAJ0004.p2p.internal.err=SAAJ0004: \u5167\u90E8\u932F\u8AA4 -SAAJ0005.p2p.=SAAJ0005: \u932F\u8AA4\u7684 URL (javax.xml.messaging.URLEndpoint \u7684 endPoint \u57F7\u884C\u8655\u7406) -# 0005 : getURL failed on javax.xml.messaging.URLEndpoint -SAAJ0006.p2p.bad.URL=SAAJ0006: \u932F\u8AA4\u7684 URL (\u5B57\u4E32\u7684 endPoint \u57F7\u884C\u8655\u7406) -SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \u932F\u8AA4\u7684 endPoint \u985E\u578B (URL \u7684 endPoint \u57F7\u884C\u8655\u7406) -SAAJ0008.p2p.bad.response=SAAJ0008: \u932F\u8AA4\u7684\u56DE\u61C9; {0} -SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u8A0A\u606F\u50B3\u9001\u5931\u6557 -SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u7121\u6CD5\u8B80\u53D6\u56DE\u61C9 -SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u53D6\u5F97) -SAAJ0012.p2p.get.failed=SAAJ0012: \u53D6\u5F97\u5931\u6557 -SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} -SAAJ0014.p2p.content.zero=SAAJ0014: \u7121\u6548\u7684\u56DE\u8986\u8A0A\u606F. \u56DE\u8986\u7684\u5167\u5BB9\u9577\u5EA6\u70BA\u96F6. - -# Debug messages -SAAJ0050.p2p.proxy.host=SAAJ0050: \u4EE3\u7406\u4E3B\u6A5F: {0} -SAAJ0051.p2p.proxy.port=SAAJ0051: \u4EE3\u7406\u4E3B\u6A5F\u9023\u63A5\u57E0: {0} -SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: \u4E0D\u652F\u63F4 URL \u4E2D\u7684\u5354\u5B9A, \u5FC5\u9808\u662F http \u6216 https -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0053.p2p.providers=SAAJ0053: \u63D0\u4F9B\u8005 {0} -# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") -SAAJ0054.p2p.set.providers=SAAJ0054: \u8A2D\u5B9A\u63D0\u4F9B\u8005 {0} -# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" -SAAJ0055.p2p.added.ssl.provider=SAAJ0055: \u5DF2\u65B0\u589E SSL_PROVIDER {0} - -# Trace messages -SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: \u53EA\u6709\u5728\u6709 JAXM \u6642\u624D\u80FD\u4F7F\u7528 URLEndpoint -SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST \u4E2D\u7684 HTTPS \u6388\u6B0A\u8A2D\u70BA true diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/Header.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/Header.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)Header.java 1.3 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime; - - -/** - * The Header class stores a name/value pair to represent headers. - * - * @author John Mani - */ - -public interface Header { - - /** - * Returns the name of this header. - * - * @return name of the header - */ - String getName(); - - /** - * Returns the value of this header. - * - * @return value of the header - */ - String getValue(); -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MessagingException.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MessagingException.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)MessagingException.java 1.10 02/06/13 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime; - - -/** - * The base class for all exceptions thrown by the Messaging classes - * - * @author John Mani - * @author Bill Shannon - */ - -public class MessagingException extends Exception { - - /** - * The next exception in the chain. - * - * @serial - */ - private Exception next; - - /** - * Constructs a MessagingException with no detail message. - */ - public MessagingException() { - super(); - } - - /** - * Constructs a MessagingException with the specified detail message. - * @param s the detail message - */ - public MessagingException(String s) { - super(s); - } - - /** - * Constructs a MessagingException with the specified - * Exception and detail message. The specified exception is chained - * to this exception. - * @param s the detail message - * @param e the embedded exception - * @see #getNextException - * @see #setNextException - */ - public MessagingException(String s, Exception e) { - super(s); - next = e; - } - - /** - * Get the next exception chained to this one. If the - * next exception is a MessagingException, the chain - * may extend further. - * - * @return next Exception, null if none. - */ - public synchronized Exception getNextException() { - return next; - } - - /** - * Add an exception to the end of the chain. If the end - * is not a MessagingException, this - * exception cannot be added to the end. - * - * @param ex the new end of the Exception chain - * @return true if the this Exception - * was added, false otherwise. - */ - public synchronized boolean setNextException(Exception ex) { - Exception theEnd = this; - while (theEnd instanceof MessagingException && - ((MessagingException)theEnd).next != null) { - theEnd = ((MessagingException)theEnd).next; - } - // If the end is a MessagingException, we can add this - // exception to the chain. - if (theEnd instanceof MessagingException) { - ((MessagingException)theEnd).next = ex; - return true; - } else - return false; - } - - /** - * Produce the message, include the message from the nested - * exception if there is one. - */ - public String getMessage() { - if (next == null) - return super.getMessage(); - Exception n = next; - String s = super.getMessage(); - StringBuffer sb = new StringBuffer(s == null ? "" : s); - while (n != null) { - sb.append(";\n nested exception is:\n\t"); - if (n instanceof MessagingException) { - MessagingException mex = (MessagingException)n; - sb.append(n.getClass().toString()); - String msg = mex.getSuperMessage(); - if (msg != null) { - sb.append(": "); - sb.append(msg); - } - n = mex.next; - } else { - sb.append(n.toString()); - n = null; - } - } - return sb.toString(); - } - - private String getSuperMessage() { - return super.getMessage(); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MultipartDataSource.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MultipartDataSource.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,76 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)MultipartDataSource.java 1.6 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart; - -import javax.activation.DataSource; - -/** - * MultipartDataSource is a DataSource that contains body - * parts. This allows "mail aware" DataContentHandlers to - * be implemented more efficiently by being aware of such - * DataSources and using the appropriate methods to access - * BodyParts.

- * - * Note that the data of a MultipartDataSource is also available as - * an input stream.

- * - * This interface will typically be implemented by providers that - * preparse multipart bodies, for example an IMAP provider. - * - * @version 1.6, 02/03/27 - * @author John Mani - * @see javax.activation.DataSource - */ - -public interface MultipartDataSource extends DataSource { - - /** - * Return the number of enclosed MimeBodyPart objects. - * - * @return number of parts - */ - public int getCount(); - - /** - * Get the specified MimeBodyPart. Parts are numbered starting at 0. - * - * @param index the index of the desired MimeBodyPart - * @return the MimeBodyPart - * @exception IndexOutOfBoundsException if the given index - * is out of range. - * @exception MessagingException - */ - public MimeBodyPart getBodyPart(int index) throws MessagingException; - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/BMMimeMultipart.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/BMMimeMultipart.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,765 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)MimeMultipart.java 1.31 03/01/29 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - -import java.io.*; -import java.util.BitSet; - -import javax.activation.DataSource; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.*; -import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*; - -import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; - -/** - * The MimeMultipart class is an implementation of the abstract Multipart - * class that uses MIME conventions for the multipart data.

- * - * A MimeMultipart is obtained from a MimePart whose primary type - * is "multipart" (by invoking the part's getContent() method) - * or it can be created by a client as part of creating a new MimeMessage.

- * - * The default multipart subtype is "mixed". The other multipart - * subtypes, such as "alternative", "related", and so on, can be - * implemented as subclasses of MimeMultipart with additional methods - * to implement the additional semantics of that type of multipart - * content. The intent is that service providers, mail JavaBean writers - * and mail clients will write many such subclasses and their Command - * Beans, and will install them into the JavaBeans Activation - * Framework, so that any JavaMail implementation and its clients can - * transparently find and use these classes. Thus, a MIME multipart - * handler is treated just like any other type handler, thereby - * decoupling the process of providing multipart handlers from the - * JavaMail API. Lacking these additional MimeMultipart subclasses, - * all subtypes of MIME multipart data appear as MimeMultipart objects.

- * - * An application can directly construct a MIME multipart object of any - * subtype by using the MimeMultipart(String subtype) - * constructor. For example, to create a "multipart/alternative" object, - * use new MimeMultipart("alternative"). - * - */ - -//TODO: cleanup the SharedInputStream handling -public class BMMimeMultipart extends MimeMultipart { - - /* - * When true it indicates parsing hasnt been done at all - */ - private boolean begining = true; - - int[] bcs = new int[256]; - int[] gss = null; - private static final int BUFFER_SIZE = 4096; - private byte[] buffer = new byte[BUFFER_SIZE]; - private byte[] prevBuffer = new byte[BUFFER_SIZE]; - private BitSet lastPartFound = new BitSet(1); - - // cached inputstream which is possibly partially consumed - private InputStream in = null; - private String boundary = null; - // current stream position, set to -1 on EOF - int b = 0; - - // property to indicate if lazyAttachments is ON - private boolean lazyAttachments = false; - - /** - * Default constructor. An empty MimeMultipart object - * is created. Its content type is set to "multipart/mixed". - * A unique boundary string is generated and this string is - * setup as the "boundary" parameter for the - * contentType field.

- * - * MimeBodyParts may be added later. - */ - public BMMimeMultipart() { - super(); - //this("mixed"); - } - - /** - * Construct a MimeMultipart object of the given subtype. - * A unique boundary string is generated and this string is - * setup as the "boundary" parameter for the - * contentType field.

- * - * MimeBodyParts may be added later. - */ - public BMMimeMultipart(String subtype) { - super(subtype); - /* - * Compute a boundary string. - String boundary = UniqueValue.getUniqueBoundaryValue(); - ContentType cType = new ContentType("multipart", subtype, null); - contentType.setParameter("boundary", boundary); - */ - } - - /** - * Constructs a MimeMultipart object and its bodyparts from the - * given DataSource.

- * - * This constructor handles as a special case the situation where the - * given DataSource is a MultipartDataSource object. In this case, this - * method just invokes the superclass (i.e., Multipart) constructor - * that takes a MultipartDataSource object.

- * - * Otherwise, the DataSource is assumed to provide a MIME multipart - * byte stream. The parsed flag is set to false. When - * the data for the body parts are needed, the parser extracts the - * "boundary" parameter from the content type of this DataSource, - * skips the 'preamble' and reads bytes till the terminating - * boundary and creates MimeBodyParts for each part of the stream. - * - * @param ds DataSource, can be a MultipartDataSource - */ - public BMMimeMultipart(DataSource ds, ContentType ct) - throws MessagingException { - super(ds,ct); - boundary = ct.getParameter("boundary"); - /* - if (ds instanceof MultipartDataSource) { - // ask super to do this for us. - setMultipartDataSource((MultipartDataSource)ds); - return; - } - - // 'ds' was not a MultipartDataSource, we have - // to parse this ourself. - parsed = false; - this.ds = ds; - if (ct==null) - contentType = new ContentType(ds.getContentType()); - else - contentType = ct; - */ - - } - - public InputStream initStream() throws MessagingException { - - if (in == null) { - try { - in = ds.getInputStream(); - if (!(in instanceof ByteArrayInputStream) && - !(in instanceof BufferedInputStream) && - !(in instanceof SharedInputStream)) - in = new BufferedInputStream(in); - } catch (Exception ex) { - throw new MessagingException("No inputstream from datasource"); - } - - if (!in.markSupported()) { - throw new MessagingException( - "InputStream does not support Marking"); - } - } - return in; - } - - /** - * Parse the InputStream from our DataSource, constructing the - * appropriate MimeBodyParts. The parsed flag is - * set to true, and if true on entry nothing is done. This - * method is called by all other methods that need data for - * the body parts, to make sure the data has been parsed. - * - * @since JavaMail 1.2 - */ - protected void parse() throws MessagingException { - if (parsed) - return; - - initStream(); - - SharedInputStream sin = null; - if (in instanceof SharedInputStream) { - sin = (SharedInputStream)in; - } - - String bnd = "--" + boundary; - byte[] bndbytes = ASCIIUtility.getBytes(bnd); - try { - parse(in, bndbytes, sin); - } catch (IOException ioex) { - throw new MessagingException("IO Error", ioex); - } catch (Exception ex) { - throw new MessagingException("Error", ex); - } - - parsed = true; - } - - public boolean lastBodyPartFound() { - return lastPartFound.get(0); - } - - public MimeBodyPart getNextPart( - InputStream stream, byte[] pattern, SharedInputStream sin) - throws Exception { - - if (!stream.markSupported()) { - throw new Exception("InputStream does not support Marking"); - } - - if (begining) { - compile(pattern); - if (!skipPreamble(stream, pattern, sin)) { - throw new Exception( - "Missing Start Boundary, or boundary does not start on a new line"); - } - begining = false; - } - - if (lastBodyPartFound()) { - throw new Exception("No parts found in Multipart InputStream"); - } - - if (sin != null) { - long start = sin.getPosition(); - b = readHeaders(stream); - if (b == -1) { - throw new Exception( - "End of Stream encountered while reading part headers"); - } - long[] v = new long[1]; - v[0] = -1; // just to ensure the code later sets it correctly - b = readBody(stream, pattern, v, null, sin); - // looks like this check has to be disabled - // it is allowed to have Mime Package without closing boundary - if (!ignoreMissingEndBoundary) { - if ((b == -1) && !lastBodyPartFound()) { - throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers"); - } - } - long end = v[0]; - MimeBodyPart mbp = createMimeBodyPart(sin.newStream(start, end)); - addBodyPart(mbp); - return mbp; - - } else { - InternetHeaders headers = createInternetHeaders(stream); - ByteOutputStream baos = new ByteOutputStream(); - b = readBody(stream, pattern, null,baos, null); - // looks like this check has to be disabled - // in the old impl it is allowed to have Mime Package - // without closing boundary - if (!ignoreMissingEndBoundary) { - if ((b == -1) && !lastBodyPartFound()) { - throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers"); - } - } - MimeBodyPart mbp = createMimeBodyPart( - headers, baos.getBytes(), baos.getCount()); - addBodyPart(mbp); - return mbp; - } - - } - - public boolean parse( - InputStream stream, byte[] pattern, SharedInputStream sin) - throws Exception { - - while (!lastPartFound.get(0) && (b != -1)) { - getNextPart(stream, pattern, sin); - } - return true; - } - - private int readHeaders(InputStream is) throws Exception { - // if the headers are to end properly then there has to be CRLF - // actually we just need to mark the start and end positions - int b = is.read(); - while(b != -1) { - // when it is a shared input stream no need to copy - if (b == '\r') { - b = is.read(); - if (b == '\n') { - b = is.read(); - if (b == '\r') { - b = is.read(); - if (b == '\n') { - return b; - } else { - continue; - } - } else { - continue; - } - } else { - continue; - } - } - b = is.read(); - } - if (b == -1) { - throw new Exception( - "End of inputstream while reading Mime-Part Headers"); - } - return b; - } - - private int readBody( - InputStream is, byte[] pattern, long[] posVector, - ByteOutputStream baos, SharedInputStream sin) - throws Exception { - if (!find(is, pattern, posVector, baos, sin)) { - throw new Exception( - "Missing boundary delimitier while reading Body Part"); - } - return b; - } - - private boolean skipPreamble( - InputStream is, byte[] pattern, SharedInputStream sin) - throws Exception { - if (!find(is, pattern, sin)) { - return false; - } - if (lastPartFound.get(0)) { - throw new Exception( - "Found closing boundary delimiter while trying to skip preamble"); - } - return true; - } - - - public int readNext(InputStream is, byte[] buff, int patternLength, - BitSet eof, long[] posVector, SharedInputStream sin) - throws Exception { - - int bufferLength = is.read(buffer, 0, patternLength); - if (bufferLength == -1) { - eof.flip(0); - } else if (bufferLength < patternLength) { - //repeatedly read patternLength - bufferLength - int temp = 0; - long pos = 0; - int i = bufferLength; - for (; i < patternLength; i++) { - if (sin != null) { - pos = sin.getPosition(); - } - temp = is.read(); - if (temp == -1) { - eof.flip(0); - if (sin != null) { - posVector[0] = pos; - } - break; - } - buffer[i] = (byte)temp; - } - bufferLength=i; - } - return bufferLength; - } - - public boolean find(InputStream is, byte[] pattern, SharedInputStream sin) - throws Exception { - int i; - int l = pattern.length; - int lx = l -1; - BitSet eof = new BitSet(1); - long[] posVector = new long[1]; - - while (true) { - is.mark(l); - readNext(is, buffer, l, eof, posVector, sin); - if (eof.get(0)) { - // End of stream - return false; - } - - /* - if (bufferLength < l) { - //is.reset(); - return false; - }*/ - - for(i = lx; i >= 0; i--) { - if (buffer[i] != pattern[i]) { - break; - } - } - - if (i < 0) { - // found the boundary, skip *LWSP-char and CRLF - if (!skipLWSPAndCRLF(is)) { - throw new Exception("Boundary does not terminate with CRLF"); - } - return true; - } - - int s = Math.max(i + 1 - bcs[buffer[i] & 0x7f], gss[i]); - is.reset(); - is.skip(s); - } - } - - public boolean find( - InputStream is, byte[] pattern, long[] posVector, - ByteOutputStream out, SharedInputStream sin) throws Exception { - int i; - int l = pattern.length; - int lx = l -1; - int bufferLength = 0; - int s = 0; - long endPos = -1; - byte[] tmp = null; - - boolean first = true; - BitSet eof = new BitSet(1); - - while (true) { - is.mark(l); - if (!first) { - tmp = prevBuffer; - prevBuffer = buffer; - buffer = tmp; - } - if (sin != null) { - endPos = sin.getPosition(); - } - - bufferLength = readNext(is, buffer, l, eof, posVector, sin); - - if (bufferLength == -1) { - // End of stream - // looks like it is allowed to not have a closing boundary - //return false; - //if (sin != null) { - // posVector[0] = endPos; - //} - b = -1; - if ((s == l) && (sin == null)) { - out.write(prevBuffer, 0, s); - } - return true; - } - - if (bufferLength < l) { - if (sin != null) { - //endPos = sin.getPosition(); - //posVector[0] = endPos; - } else { - // looks like it is allowed to not have a closing boundary - // in the old implementation - out.write(buffer, 0, bufferLength); - } - // looks like it is allowed to not have a closing boundary - // in the old implementation - //return false; - b = -1; - return true; - } - - for(i = lx; i >= 0; i--) { - if (buffer[i] != pattern[i]) { - break; - } - } - - if (i < 0) { - if (s > 0) { - //looks like the earlier impl allowed just an LF - // so if s == 1 : it must be an LF - // if s == 2 : it must be a CR LF - if (s <= 2) { - //it could be "some-char\n" so write some-char - if (s == 2) { - if (prevBuffer[1] == '\n') { - if (prevBuffer[0] != '\r' && prevBuffer[0] != '\n') { - out.write(prevBuffer,0,1); - } - if (sin != null) { - posVector[0] = endPos; - } - - } else { - throw new Exception( - "Boundary characters encountered in part Body " + - "without a preceeding CRLF"); - } - - } else if (s==1) { - if (prevBuffer[0] != '\n') { - throw new Exception( - "Boundary characters encountered in part Body " + - "without a preceeding CRLF"); - }else { - if (sin != null) { - posVector[0] = endPos; - } - } - } - - } else if (s > 2) { - if ((prevBuffer[s-2] == '\r') && (prevBuffer[s-1] == '\n')) { - if (sin != null) { - posVector[0] = endPos - 2; - } else { - out.write(prevBuffer, 0, s - 2); - } - } else if (prevBuffer[s-1] == '\n') { - //old impl allowed just a \n - if (sin != null) { - posVector[0] = endPos - 1; - } else { - out.write(prevBuffer, 0, s - 1); - } - } else { - throw new Exception( - "Boundary characters encountered in part Body " + - "without a preceeding CRLF"); - } - } - } - // found the boundary, skip *LWSP-char and CRLF - if (!skipLWSPAndCRLF(is)) { - //throw new Exception( - // "Boundary does not terminate with CRLF"); - } - return true; - } - - if ((s > 0) && (sin == null)) { - if (prevBuffer[s-1] == (byte)13) { - // if buffer[0] == (byte)10 - if (buffer[0] == (byte)10) { - int j; - for(j = lx-1; j > 0; j--) { - if (buffer[j+1] != pattern[j]) { - break; - } - } - if (j == 0) { - // matched the pattern excluding the last char of the pattern - // so dont write the CR into stream - out.write(prevBuffer,0,s-1); - } else { - out.write(prevBuffer,0,s); - } - } else { - out.write(prevBuffer, 0, s); - } - } else { - out.write(prevBuffer, 0, s); - } - } - - s = Math.max(i + 1 - bcs[buffer[i] & 0x7f], gss[i]); - is.reset(); - is.skip(s); - if (first) { - first = false; - } - } - } - - private boolean skipLWSPAndCRLF(InputStream is) throws Exception { - - b = is.read(); - //looks like old impl allowed just a \n as well - if (b == '\n') { - return true; - } - - if (b == '\r') { - b = is.read(); - //skip any multiple '\r' "\r\n" --> "\r\r\n" on Win2k - if (b == '\r') { - b = is.read(); - } - if (b == '\n') { - return true; - } else { - throw new Exception( - "transport padding after a Mime Boundary should end in a CRLF, found CR only"); - } - } - - if (b == '-') { - b = is.read(); - if (b != '-') { - throw new Exception( - "Unexpected singular '-' character after Mime Boundary"); - } else { - //System.out.println("Last Part Found"); - lastPartFound.flip(0); - // read the next char - b = is.read(); - } - } - - while ((b != -1) && ((b == ' ') || (b == '\t'))) { - b = is.read(); - if (b == '\n') { - return true; - } - if (b == '\r') { - b = is.read(); - //skip any multiple '\r': "\r\n" --> "\r\r\n" on Win2k - if (b == '\r') { - b = is.read(); - } - if (b == '\n') { - return true; - } - } - } - - if (b == -1) { - // the last boundary need not have CRLF - if (!lastPartFound.get(0)) { - throw new Exception( - "End of Multipart Stream before encountering closing boundary delimiter"); - } - return true; - } - return false; - } - - private void compile(byte[] pattern) { - int l = pattern.length; - - int i; - int j; - - // Copied from J2SE 1.4 regex code - // java.util.regex.Pattern.java - - // Initialise Bad Character Shift table - for (i = 0; i < l; i++) { - bcs[pattern[i]] = i + 1; - } - - // Initialise Good Suffix Shift table - gss = new int[l]; - NEXT: for (i = l; i > 0; i--) { - // j is the beginning index of suffix being considered - for (j = l - 1; j >= i; j--) { - // Testing for good suffix - if (pattern[j] == pattern[j - i]) { - // pattern[j..len] is a good suffix - gss[j - 1] = i; - } else { - // No match. The array has already been - // filled up with correct values before. - continue NEXT; - } - } - while (j > 0) { - gss[--j] = i; - } - } - gss[l - 1] = 1; - } - - - /** - * Iterates through all the parts and outputs each Mime part - * separated by a boundary. - */ - - public void writeTo(OutputStream os) - throws IOException, MessagingException { - - // inputStream was not null - if (in != null) { - contentType.setParameter("boundary", this.boundary); - } - - String bnd = "--" + contentType.getParameter("boundary"); - for (int i = 0; i < parts.size(); i++) { - OutputUtil.writeln(bnd, os); // put out boundary - ((MimeBodyPart)parts.get(i)).writeTo(os); - OutputUtil.writeln(os); // put out empty line - } - - if (in != null) { - OutputUtil.writeln(bnd, os); // put out boundary - if ((os instanceof ByteOutputStream) && lazyAttachments) { - ((ByteOutputStream) os).write(in); - } else { - ByteOutputStream baos = null; - try { - baos = new ByteOutputStream(in.available()); - baos.write(in); - baos.writeTo(os); - // reset the inputstream so that we can support a - // getAttachment later - in = baos.newInputStream(); - } finally { - if (baos != null) - baos.close(); - } - } - - // this will endup writing the end boundary - } else { - // put out last boundary - OutputUtil.writeAsAscii(bnd, os); - OutputUtil.writeAsAscii("--", os); - } - } - - public void setInputStream(InputStream is) { - this.in = is; - } - - public InputStream getInputStream() { - return this.in; - } - - public void setBoundary(String bnd) { - this.boundary = bnd; - if (this.contentType != null) { - this.contentType.setParameter("boundary", bnd); - } - } - public String getBoundary() { - return this.boundary; - } - - public boolean isEndOfStream() { - return (b == -1); - } - - public void setLazyAttachments(boolean flag) { - lazyAttachments = flag; - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentDisposition.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentDisposition.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,180 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)ContentDisposition.java 1.6 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - - -/** - * This class represents a MIME ContentDisposition value. It provides - * methods to parse a ContentDisposition string into individual components - * and to generate a MIME style ContentDisposition string. - * - * @version 1.6, 02/03/27 - * @author John Mani - */ - -public class ContentDisposition { - - private String disposition; // disposition - private ParameterList list; // parameter list - - /** - * No-arg Constructor. - */ - public ContentDisposition() { } - - /** - * Constructor. - * - * @param disposition disposition - * @param list ParameterList - * @since JavaMail 1.2 - */ - public ContentDisposition(String disposition, ParameterList list) { - this.disposition = disposition; - this.list = list; - } - - /** - * Constructor that takes a ContentDisposition string. The String - * is parsed into its constituents: dispostion and parameters. - * A ParseException is thrown if the parse fails. - * - * @param s the ContentDisposition string. - * @exception ParseException if the parse fails. - * @since JavaMail 1.2 - */ - public ContentDisposition(String s) throws ParseException { - HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME); - HeaderTokenizer.Token tk; - - // First "disposition" .. - tk = h.next(); - if (tk.getType() != HeaderTokenizer.Token.ATOM) - throw new ParseException(); - disposition = tk.getValue(); - - // Then parameters .. - String rem = h.getRemainder(); - if (rem != null) - list = new ParameterList(rem); - } - - /** - * Return the disposition value. - * @return the disposition - * @since JavaMail 1.2 - */ - public String getDisposition() { - return disposition; - } - - /** - * Return the specified parameter value. Returns null - * if this parameter is absent. - * @return parameter value - * @since JavaMail 1.2 - */ - public String getParameter(String name) { - if (list == null) - return null; - - return list.get(name); - } - - /** - * Return a ParameterList object that holds all the available - * parameters. Returns null if no parameters are available. - * - * @return ParameterList - * @since JavaMail 1.2 - */ - public ParameterList getParameterList() { - return list; - } - - /** - * Set the primary type. Overrides existing primary type. - * @param primaryType primary type - * @since JavaMail 1.2 - */ - public void setDisposition(String disposition) { - this.disposition = disposition; - } - - /** - * Set the specified parameter. If this parameter already exists, - * it is replaced by this new value. - * - * @param name parameter name - * @param value parameter value - * @since JavaMail 1.2 - */ - public void setParameter(String name, String value) { - if (list == null) - list = new ParameterList(); - - list.set(name, value); - } - - /** - * Set a new ParameterList. - * @param list ParameterList - * @since JavaMail 1.2 - */ - public void setParameterList(ParameterList list) { - this.list = list; - } - - /** - * Retrieve a RFC2045 style string representation of - * this ContentDisposition. Returns null if - * the conversion failed. - * - * @return RFC2045 style string - * @since JavaMail 1.2 - */ - public String toString() { - if (disposition == null) - return null; - - if (list == null) - return disposition; - - StringBuffer sb = new StringBuffer(disposition); - - // append the parameter list - // use the length of the string buffer + the length of - // the header name formatted as follows "Content-Disposition: " - sb.append(list.toString(sb.length() + 21)); - return sb.toString(); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentType.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentType.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,277 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)ContentType.java 1.7 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - - -/** - * This class represents a MIME ContentType value. It provides - * methods to parse a ContentType string into individual components - * and to generate a MIME style ContentType string. - * - * @version 1.7, 02/03/27 - * @author John Mani - */ -public final class ContentType { - - private String primaryType; // primary type - private String subType; // subtype - private ParameterList list; // parameter list - - /** - * No-arg Constructor. - */ - public ContentType() { } - - /** - * Constructor. - * - * @param primaryType primary type - * @param subType subType - * @param list ParameterList - */ - public ContentType(String primaryType, String subType, - ParameterList list) { - this.primaryType = primaryType; - this.subType = subType; - if (list == null) - list = new ParameterList(); - this.list = list; - } - - /** - * Constructor that takes a Content-Type string. The String - * is parsed into its constituents: primaryType, subType - * and parameters. A ParseException is thrown if the parse fails. - * - * @param s the Content-Type string. - * @exception ParseException if the parse fails. - */ - public ContentType(String s) throws ParseException { - HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME); - HeaderTokenizer.Token tk; - - // First "type" .. - tk = h.next(); - if (tk.getType() != HeaderTokenizer.Token.ATOM) - throw new ParseException(); - primaryType = tk.getValue(); - - // The '/' separator .. - tk = h.next(); - if ((char)tk.getType() != '/') - throw new ParseException(); - - // Then "subType" .. - tk = h.next(); - if (tk.getType() != HeaderTokenizer.Token.ATOM) - throw new ParseException(); - subType = tk.getValue(); - - // Finally parameters .. - String rem = h.getRemainder(); - if (rem != null) - list = new ParameterList(rem); - } - - public ContentType copy() { - return new ContentType(primaryType,subType,list.copy()); - } - - /** - * Return the primary type. - * @return the primary type - */ - public String getPrimaryType() { - return primaryType; - } - - /** - * Return the subType. - * @return the subType - */ - public String getSubType() { - return subType; - } - - /** - * Return the MIME type string, without the parameters. - * The returned value is basically the concatenation of - * the primaryType, the '/' character and the secondaryType. - * - * @return the type - */ - public String getBaseType() { - return primaryType + '/' + subType; - } - - /** - * Return the specified parameter value. Returns null - * if this parameter is absent. - * @return parameter value - */ - public String getParameter(String name) { - if (list == null) - return null; - - return list.get(name); - } - - /** - * Return a ParameterList object that holds all the available - * parameters. Returns null if no parameters are available. - * - * @return ParameterList - */ - public ParameterList getParameterList() { - return list; - } - - /** - * Set the primary type. Overrides existing primary type. - * @param primaryType primary type - */ - public void setPrimaryType(String primaryType) { - this.primaryType = primaryType; - } - - /** - * Set the subType. Overrides existing subType - * @param subType subType - */ - public void setSubType(String subType) { - this.subType = subType; - } - - /** - * Set the specified parameter. If this parameter already exists, - * it is replaced by this new value. - * - * @param name parameter name - * @param value parameter value - */ - public void setParameter(String name, String value) { - if (list == null) - list = new ParameterList(); - - list.set(name, value); - } - - /** - * Set a new ParameterList. - * @param list ParameterList - */ - public void setParameterList(ParameterList list) { - this.list = list; - } - - /** - * Retrieve a RFC2045 style string representation of - * this Content-Type. Returns null if - * the conversion failed. - * - * @return RFC2045 style string - */ - public String toString() { - if (primaryType == null || subType == null) // need both - return null; - - StringBuffer sb = new StringBuffer(); - sb.append(primaryType).append('/').append(subType); - if (list != null) - // Http Binding section of the "SOAP with attachments" specification says, - // "SOAP message senders should send Content-Type headers on a single long line." - // (http://www.w3.org/TR/SOAP-attachments#HTTPBinding) - sb.append(list.toString()); - - return sb.toString(); - } - - /** - * Match with the specified ContentType object. This method - * compares only the primaryType and - * subType . The parameters of both operands - * are ignored.

- * - * For example, this method will return true when - * comparing the ContentTypes for "text/plain" - * and "text/plain; charset=foobar". - * - * If the subType of either operand is the special - * character '*', then the subtype is ignored during the match. - * For example, this method will return true when - * comparing the ContentTypes for "text/plain" - * and "text/*" - * - * @param cType to compare this against - */ - public boolean match(ContentType cType) { - // Match primaryType - if (!primaryType.equalsIgnoreCase(cType.getPrimaryType())) - return false; - - String sType = cType.getSubType(); - - // If either one of the subTypes is wildcarded, return true - if ((subType.charAt(0) == '*') || (sType.charAt(0) == '*')) - return true; - - // Match subType - if (!subType.equalsIgnoreCase(sType)) - return false; - - return true; - } - - /** - * Match with the specified content-type string. This method - * compares only the primaryType and - * subType . - * The parameters of both operands are ignored.

- * - * For example, this method will return true when - * comparing the ContentType for "text/plain" - * with "text/plain; charset=foobar". - * - * If the subType of either operand is the special - * character '*', then the subtype is ignored during the match. - * For example, this method will return true when - * comparing the ContentType for "text/plain" - * with "text/*" - */ - public boolean match(String s) { - try { - return match(new ContentType(s)); - } catch (ParseException pex) { - return false; - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/HeaderTokenizer.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/HeaderTokenizer.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,382 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)HeaderTokenizer.java 1.9 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - - -/** - * This class tokenizes RFC822 and MIME headers into the basic - * symbols specified by RFC822 and MIME.

- * - * This class handles folded headers (ie headers with embedded - * CRLF SPACE sequences). The folds are removed in the returned - * tokens. - * - * @version 1.9, 02/03/27 - * @author John Mani - */ - -public class HeaderTokenizer { - - /** - * The Token class represents tokens returned by the - * HeaderTokenizer. - */ - public static class Token { - - private int type; - private String value; - - /** - * Token type indicating an ATOM. - */ - public static final int ATOM = -1; - - /** - * Token type indicating a quoted string. The value - * field contains the string without the quotes. - */ - public static final int QUOTEDSTRING = -2; - - /** - * Token type indicating a comment. The value field - * contains the comment string without the comment - * start and end symbols. - */ - public static final int COMMENT = -3; - - /** - * Token type indicating end of input. - */ - public static final int EOF = -4; - - /** - * Constructor. - * @param type Token type - * @param value Token value - */ - public Token(int type, String value) { - this.type = type; - this.value = value; - } - - /** - * Return the type of the token. If the token represents a - * delimiter or a control character, the type is that character - * itself, converted to an integer. Otherwise, it's value is - * one of the following: - *

- */ - public int getType() { - return type; - } - - /** - * Returns the value of the token just read. When the current - * token is a quoted string, this field contains the body of the - * string, without the quotes. When the current token is a comment, - * this field contains the body of the comment. - * - * @return token value - */ - public String getValue() { - return value; - } - } - - private String string; // the string to be tokenized - private boolean skipComments; // should comments be skipped ? - private String delimiters; // delimiter string - private int currentPos; // current parse position - private int maxPos; // string length - private int nextPos; // track start of next Token for next() - private int peekPos; // track start of next Token for peek() - - /** - * RFC822 specials - */ - public final static String RFC822 = "()<>@,;:\\\"\t .[]"; - - /** - * MIME specials - */ - public final static String MIME = "()<>@,;:\\\"\t []/?="; - - // The EOF Token - private final static Token EOFToken = new Token(Token.EOF, null); - - /** - * Constructor that takes a rfc822 style header. - * - * @param header The rfc822 header to be tokenized - * @param delimiters Set of delimiter characters - * to be used to delimit ATOMS. These - * are usually RFC822 or - * MIME - * @param skipComments If true, comments are skipped and - * not returned as tokens - */ - public HeaderTokenizer(String header, String delimiters, - boolean skipComments) { - string = (header == null) ? "" : header; // paranoia ?! - this.skipComments = skipComments; - this.delimiters = delimiters; - currentPos = nextPos = peekPos = 0; - maxPos = string.length(); - } - - /** - * Constructor. Comments are ignored and not returned as tokens - * - * @param header The header that is tokenized - * @param delimiters The delimiters to be used - */ - public HeaderTokenizer(String header, String delimiters) { - this(header, delimiters, true); - } - - /** - * Constructor. The RFC822 defined delimiters - RFC822 - are - * used to delimit ATOMS. Also comments are skipped and not - * returned as tokens - */ - public HeaderTokenizer(String header) { - this(header, RFC822); - } - - /** - * Parses the next token from this String.

- * - * Clients sit in a loop calling next() to parse successive - * tokens until an EOF Token is returned. - * - * @return the next Token - * @exception ParseException if the parse fails - */ - public Token next() throws ParseException { - Token tk; - - currentPos = nextPos; // setup currentPos - tk = getNext(); - nextPos = peekPos = currentPos; // update currentPos and peekPos - return tk; - } - - /** - * Peek at the next token, without actually removing the token - * from the parse stream. Invoking this method multiple times - * will return successive tokens, until next() is - * called.

- * - * @return the next Token - * @exception ParseException if the parse fails - */ - public Token peek() throws ParseException { - Token tk; - - currentPos = peekPos; // setup currentPos - tk = getNext(); - peekPos = currentPos; // update peekPos - return tk; - } - - /** - * Return the rest of the Header. - * - * @return String rest of header. null is returned if we are - * already at end of header - */ - public String getRemainder() { - return string.substring(nextPos); - } - - /* - * Return the next token starting from 'currentPos'. After the - * parse, 'currentPos' is updated to point to the start of the - * next token. - */ - private Token getNext() throws ParseException { - // If we're already at end of string, return EOF - if (currentPos >= maxPos) - return EOFToken; - - // Skip white-space, position currentPos beyond the space - if (skipWhiteSpace() == Token.EOF) - return EOFToken; - - char c; - int start; - boolean filter = false; - - c = string.charAt(currentPos); - - // Check or Skip comments and position currentPos - // beyond the comment - while (c == '(') { - // Parsing comment .. - int nesting; - for (start = ++currentPos, nesting = 1; - nesting > 0 && currentPos < maxPos; - currentPos++) { - c = string.charAt(currentPos); - if (c == '\\') { // Escape sequence - currentPos++; // skip the escaped character - filter = true; - } else if (c == '\r') - filter = true; - else if (c == '(') - nesting++; - else if (c == ')') - nesting--; - } - if (nesting != 0) - throw new ParseException("Unbalanced comments"); - - if (!skipComments) { - // Return the comment, if we are asked to. - // Note that the comment start & end markers are ignored. - String s; - if (filter) // need to go thru the token again. - s = filterToken(string, start, currentPos-1); - else - s = string.substring(start,currentPos-1); - - return new Token(Token.COMMENT, s); - } - - // Skip any whitespace after the comment. - if (skipWhiteSpace() == Token.EOF) - return EOFToken; - c = string.charAt(currentPos); - } - - // Check for quoted-string and position currentPos - // beyond the terminating quote - if (c == '"') { - for (start = ++currentPos; currentPos < maxPos; currentPos++) { - c = string.charAt(currentPos); - if (c == '\\') { // Escape sequence - currentPos++; - filter = true; - } else if (c == '\r') - filter = true; - else if (c == '"') { - currentPos++; - String s; - - if (filter) - s = filterToken(string, start, currentPos-1); - else - s = string.substring(start,currentPos-1); - - return new Token(Token.QUOTEDSTRING, s); - } - } - throw new ParseException("Unbalanced quoted string"); - } - - // Check for SPECIAL or CTL - if (c < 040 || c >= 0177 || delimiters.indexOf(c) >= 0) { - currentPos++; // re-position currentPos - char ch[] = new char[1]; - ch[0] = c; - return new Token((int)c, new String(ch)); - } - - // Check for ATOM - for (start = currentPos; currentPos < maxPos; currentPos++) { - c = string.charAt(currentPos); - // ATOM is delimited by either SPACE, CTL, "(", <"> - // or the specified SPECIALS - if (c < 040 || c >= 0177 || c == '(' || c == ' ' || - c == '"' || delimiters.indexOf(c) >= 0) - break; - } - return new Token(Token.ATOM, string.substring(start, currentPos)); - } - - // Skip SPACE, HT, CR and NL - private int skipWhiteSpace() { - char c; - for (; currentPos < maxPos; currentPos++) - if (((c = string.charAt(currentPos)) != ' ') && - (c != '\t') && (c != '\r') && (c != '\n')) - return currentPos; - return Token.EOF; - } - - /* Process escape sequences and embedded LWSPs from a comment or - * quoted string. - */ - private static String filterToken(String s, int start, int end) { - StringBuffer sb = new StringBuffer(); - char c; - boolean gotEscape = false; - boolean gotCR = false; - - for (int i = start; i < end; i++) { - c = s.charAt(i); - if (c == '\n' && gotCR) { - // This LF is part of an unescaped - // CRLF sequence (i.e, LWSP). Skip it. - gotCR = false; - continue; - } - - gotCR = false; - if (!gotEscape) { - // Previous character was NOT '\' - if (c == '\\') // skip this character - gotEscape = true; - else if (c == '\r') // skip this character - gotCR = true; - else // append this character - sb.append(c); - } else { - // Previous character was '\'. So no need to - // bother with any special processing, just - // append this character - sb.append(c); - gotEscape = false; - } - } - return sb.toString(); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/InternetHeaders.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/InternetHeaders.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,402 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)InternetHeaders.java 1.16 02/08/08 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.Header; -import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; -import com.sun.xml.internal.messaging.saaj.packaging.mime.util.LineInputStream; -import com.sun.xml.internal.messaging.saaj.util.FinalArrayList; - -import java.io.IOException; -import java.io.InputStream; -import java.util.AbstractList; -import java.util.List; -import java.util.NoSuchElementException; - -/** - * InternetHeaders is a utility class that manages RFC822 style - * headers. Given an RFC822 format message stream, it reads lines - * until the blank line that indicates end of header. The input stream - * is positioned at the start of the body. The lines are stored - * within the object and can be extracted as either Strings or - * {@link Header} objects.

- *

- * This class is mostly intended for service providers. MimeMessage - * and MimeBody use this class for holding their headers.

- *

- *


A note on RFC822 and MIME headers

- *

- * RFC822 and MIME header fields must contain only - * US-ASCII characters. If a header contains non US-ASCII characters, - * it must be encoded as per the rules in RFC 2047. The MimeUtility - * class provided in this package can be used to to achieve this. - * Callers of the setHeader, addHeader, and - * addHeaderLine methods are responsible for enforcing - * the MIME requirements for the specified headers. In addition, these - * header fields must be folded (wrapped) before being sent if they - * exceed the line length limitation for the transport (1000 bytes for - * SMTP). Received headers may have been folded. The application is - * responsible for folding and unfolding headers as appropriate.

- * - * @author John Mani - * @author Bill Shannon - * @see MimeUtility - */ -public final class InternetHeaders { - - private final FinalArrayList headers = new FinalArrayList(); - - /** - * Lazily cerated view of header lines (Strings). - */ - private List headerValueView; - - /** - * Create an empty InternetHeaders object. - */ - public InternetHeaders() { - } - - /** - * Read and parse the given RFC822 message stream till the - * blank line separating the header from the body. The input - * stream is left positioned at the start of the body. The - * header lines are stored internally.

- *

- * For efficiency, wrap a BufferedInputStream around the actual - * input stream and pass it as the parameter. - * - * @param is RFC822 input stream - */ - public InternetHeaders(InputStream is) throws MessagingException { - load(is); - } - - /** - * Read and parse the given RFC822 message stream till the - * blank line separating the header from the body. Store the - * header lines inside this InternetHeaders object.

- *

- * Note that the header lines are added into this InternetHeaders - * object, so any existing headers in this object will not be - * affected. - * - * @param is RFC822 input stream - */ - public void load(InputStream is) throws MessagingException { - // Read header lines until a blank line. It is valid - // to have BodyParts with no header lines. - String line; - LineInputStream lis = new LineInputStream(is); - String prevline = null; // the previous header line, as a string - // a buffer to accumulate the header in, when we know it's needed - StringBuffer lineBuffer = new StringBuffer(); - - try { - //while ((line = lis.readLine()) != null) { - do { - line = lis.readLine(); - if (line != null && - (line.startsWith(" ") || line.startsWith("\t"))) { - // continuation of header - if (prevline != null) { - lineBuffer.append(prevline); - prevline = null; - } - lineBuffer.append("\r\n"); - lineBuffer.append(line); - } else { - // new header - if (prevline != null) - addHeaderLine(prevline); - else if (lineBuffer.length() > 0) { - // store previous header first - addHeaderLine(lineBuffer.toString()); - lineBuffer.setLength(0); - } - prevline = line; - } - } while (line != null && line.length() > 0); - } catch (IOException ioex) { - throw new MessagingException("Error in input stream", ioex); - } - } - - /** - * Return all the values for the specified header. The - * values are String objects. Returns null - * if no headers with the specified name exist. - * - * @param name header name - * @return array of header values, or null if none - */ - public String[] getHeader(String name) { - // XXX - should we just step through in index order? - FinalArrayList v = new FinalArrayList(); // accumulate return values - - int len = headers.size(); - for( int i=0; inull, only the first header is - * returned. Returns null - * if no headers with the specified name exist. - * - * @param delimiter delimiter - * @return the value fields for all headers with - * this name, or null if none - * @param name header name - */ - public String getHeader(String name, String delimiter) { - String[] s = getHeader(name); - - if (s == null) - return null; - - if ((s.length == 1) || delimiter == null) - return s[0]; - - StringBuffer r = new StringBuffer(s[0]); - for (int i = 1; i < s.length; i++) { - r.append(delimiter); - r.append(s[i]); - } - return r.toString(); - } - - /** - * Change the first header line that matches name - * to have value, adding a new header if no existing header - * matches. Remove all matching headers but the first.

- *

- * Note that RFC822 headers can only contain US-ASCII characters - * - * @param name header name - * @param value header value - */ - public void setHeader(String name, String value) { - boolean found = false; - - for (int i = 0; i < headers.size(); i++) { - hdr h = (hdr) headers.get(i); - if (name.equalsIgnoreCase(h.name)) { - if (!found) { - int j; - if (h.line != null && (j = h.line.indexOf(':')) >= 0) { - h.line = h.line.substring(0, j + 1) + " " + value; - } else { - h.line = name + ": " + value; - } - found = true; - } else { - headers.remove(i); - i--; // have to look at i again - } - } - } - - if (!found) { - addHeader(name, value); - } - } - - /** - * Add a header with the specified name and value to the header list.

- *

- * Note that RFC822 headers can only contain US-ASCII characters. - * - * @param name header name - * @param value header value - */ - public void addHeader(String name, String value) { - int pos = headers.size(); - for (int i = headers.size() - 1; i >= 0; i--) { - hdr h = (hdr) headers.get(i); - if (name.equalsIgnoreCase(h.name)) { - headers.add(i + 1, new hdr(name, value)); - return; - } - // marker for default place to add new headers - if (h.name.equals(":")) - pos = i; - } - headers.add(pos, new hdr(name, value)); - } - - /** - * Remove all header entries that match the given name - * - * @param name header name - */ - public void removeHeader(String name) { - for (int i = 0; i < headers.size(); i++) { - hdr h = (hdr) headers.get(i); - if (name.equalsIgnoreCase(h.name)) { - headers.remove(i); - i--; // have to look at i again - } - } - } - - /** - * Return all the headers as an Enumeration of - * {@link Header} objects. - * - * @return Header objects - */ - public FinalArrayList getAllHeaders() { - return headers; // conceptually it should be read-only, but for performance reason I'm not wrapping it here - } - - /** - * Add an RFC822 header line to the header store. - * If the line starts with a space or tab (a continuation line), - * add it to the last header line in the list.

- *

- * Note that RFC822 headers can only contain US-ASCII characters - * - * @param line raw RFC822 header line - */ - public void addHeaderLine(String line) { - try { - char c = line.charAt(0); - if (c == ' ' || c == '\t') { - hdr h = (hdr) headers.get(headers.size() - 1); - h.line += "\r\n" + line; - } else - headers.add(new hdr(line)); - } catch (StringIndexOutOfBoundsException e) { - // line is empty, ignore it - return; - } catch (NoSuchElementException e) { - // XXX - vector is empty? - } - } - - /** - * Return all the header lines as a collection - */ - public List getAllHeaderLines() { - if(headerValueView==null) - headerValueView = new AbstractList() { - public Object get(int index) { - return ((hdr)headers.get(index)).line; - } - - public int size() { - return headers.size(); - } - }; - return headerValueView; - } -} - -/* - * A private utility class to represent an individual header. - */ - -class hdr implements Header { - // XXX - should these be private? - String name; // the canonicalized (trimmed) name of this header - // XXX - should name be stored in lower case? - String line; // the entire RFC822 header "line" - - /* - * Constructor that takes a line and splits out - * the header name. - */ - hdr(String l) { - int i = l.indexOf(':'); - if (i < 0) { - // should never happen - name = l.trim(); - } else { - name = l.substring(0, i).trim(); - } - line = l; - } - - /* - * Constructor that takes a header name and value. - */ - hdr(String n, String v) { - name = n; - line = n + ": " + v; - } - - /* - * Return the "name" part of the header line. - */ - public String getName() { - return name; - } - - /* - * Return the "value" part of the header line. - */ - public String getValue() { - int i = line.indexOf(':'); - if (i < 0) - return line; - - int j; - if (name.equalsIgnoreCase("Content-Description")) { - // Content-Description should retain the folded whitespace after header unfolding - - // rf. RFC2822 section 2.2.3, rf. RFC2822 section 3.2.3 - for (j = i + 1; j < line.length(); j++) { - char c = line.charAt(j); - if (!(/*c == ' ' ||*/c == '\t' || c == '\r' || c == '\n')) - break; - } - } else { - // skip whitespace after ':' - for (j = i + 1; j < line.length(); j++) { - char c = line.charAt(j); - if (!(c == ' ' || c == '\t' || c == '\r' || c == '\n')) - break; - } - } - return line.substring(j); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeBodyPart.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeBodyPart.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1165 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)MimeBodyPart.java 1.52 03/02/12 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - - -import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; -import com.sun.xml.internal.messaging.saaj.packaging.mime.util.OutputUtil; -import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; -import com.sun.xml.internal.messaging.saaj.util.FinalArrayList; - -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.activation.DataHandler; -import java.io.BufferedInputStream; -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.UnsupportedEncodingException; -import java.util.List; -import javax.activation.DataSource; -import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart; - -/** - * This class represents a MIME body part. - * MimeBodyParts are contained in MimeMultipart - * objects.

- * - * MimeBodyPart uses the InternetHeaders class to parse - * and store the headers of that body part.

- * - *


A note on RFC 822 and MIME headers

- * - * RFC 822 header fields must contain only - * US-ASCII characters. MIME allows non ASCII characters to be present - * in certain portions of certain headers, by encoding those characters. - * RFC 2047 specifies the rules for doing this. The MimeUtility - * class provided in this package can be used to to achieve this. - * Callers of the setHeader, addHeader, and - * addHeaderLine methods are responsible for enforcing - * the MIME requirements for the specified headers. In addition, these - * header fields must be folded (wrapped) before being sent if they - * exceed the line length limitation for the transport (1000 bytes for - * SMTP). Received headers may have been folded. The application is - * responsible for folding and unfolding headers as appropriate.

- * - * @author John Mani - * @author Bill Shannon - * @see MimeUtility - */ - -public final class MimeBodyPart { - - /** - * This part should be presented as an attachment. - * @see #getDisposition - * @see #setDisposition - */ - public static final String ATTACHMENT = "attachment"; - - /** - * This part should be presented inline. - * @see #getDisposition - * @see #setDisposition - */ - public static final String INLINE = "inline"; - - - // Paranoia: - // allow this last minute change to be disabled if it causes problems - private static boolean setDefaultTextCharset = true; - - static { - try { - String s = System.getProperty("mail.mime.setdefaulttextcharset"); - // default to true - setDefaultTextCharset = s == null || !s.equalsIgnoreCase("false"); - } catch (SecurityException sex) { - // ignore it - } - } - - /* - Data is represented in one of three forms. - Either we have a DataHandler, or byte[] as the raw content image, or the contentStream. - It's OK to have more than one of them, provided that they are identical. - */ - - /** - * The DataHandler object representing this MimeBodyPart's content. - */ - private DataHandler dh; - - /** - * Byte array that holds the bytes of the content of this MimeBodyPart. - * Used in a pair with {@link #contentLength} to denote a regision of a buffer - * as a valid data. - */ - private byte[] content; - private int contentLength; - private int start = 0; - - /** - * If the data for this body part was supplied by an - * InputStream that implements the SharedInputStream interface, - * contentStream is another such stream representing - * the content of this body part. In this case, content - * will be null. - * - * @since JavaMail 1.2 - */ - private InputStream contentStream; - - - - /** - * The InternetHeaders object that stores all the headers - * of this body part. - */ - private final InternetHeaders headers; - - /** - * The MimeMultipart object containing this MimeBodyPart, - * if known. - * @since JavaMail 1.1 - */ - private MimeMultipart parent; - - private MIMEPart mimePart; - - /** - * An empty MimeBodyPart object is created. - * This body part maybe filled in by a client constructing a multipart - * message. - */ - public MimeBodyPart() { - headers = new InternetHeaders(); - } - - /** - * Constructs a MimeBodyPart by reading and parsing the data from - * the specified input stream. The parser consumes data till the end - * of the given input stream. The input stream must start at the - * beginning of a valid MIME body part and must terminate at the end - * of that body part.

- * - * Note that the "boundary" string that delimits body parts must - * not be included in the input stream. The intention - * is that the MimeMultipart parser will extract each body part's bytes - * from a multipart stream and feed them into this constructor, without - * the delimiter strings. - * - * @param is the body part Input Stream - */ - public MimeBodyPart(InputStream is) throws MessagingException { - if (!(is instanceof ByteArrayInputStream) && - !(is instanceof BufferedInputStream) && - !(is instanceof SharedInputStream)) - is = new BufferedInputStream(is); - - headers = new InternetHeaders(is); - - if (is instanceof SharedInputStream) { - SharedInputStream sis = (SharedInputStream) is; - contentStream = sis.newStream(sis.getPosition(), -1); - } else { - ByteOutputStream bos = null; - try { - bos = new ByteOutputStream(); - bos.write(is); - content = bos.getBytes(); - contentLength = bos.getCount(); - } catch (IOException ioex) { - throw new MessagingException("Error reading input stream", ioex); - } finally { - if (bos != null) - bos.close(); - } - } - - } - - /** - * Constructs a MimeBodyPart using the given header and - * content bytes.

- * - * Used by providers. - * - * @param headers The header of this part - * @param content bytes representing the body of this part. - */ - public MimeBodyPart(InternetHeaders headers, byte[] content, int len) { - this.headers = headers; - this.content = content; - this.contentLength = len; - } - - public MimeBodyPart( - InternetHeaders headers, byte[] content, int start, int len) { - this.headers = headers; - this.content = content; - this.start = start; - this.contentLength = len; - } - - public MimeBodyPart(MIMEPart part) { - mimePart = part; - headers = new InternetHeaders(); - List hdrs = mimePart.getAllHeaders(); - for (com.sun.xml.internal.org.jvnet.mimepull.Header hd : hdrs) { - headers.addHeader(hd.getName(), hd.getValue()); - } - } - /** - * Return the containing MimeMultipart object, - * or null if not known. - */ - public MimeMultipart getParent() { - return parent; - } - - /** - * Set the parent of this MimeBodyPart to be the specified - * MimeMultipart. Normally called by MimeMultipart's - * addBodyPart method. parent may be - * null if the MimeBodyPart is being removed - * from its containing MimeMultipart. - * @since JavaMail 1.1 - */ - public void setParent(MimeMultipart parent) { - this.parent = parent; - } - - /** - * Return the size of the content of this body part in bytes. - * Return -1 if the size cannot be determined.

- * - * Note that this number may not be an exact measure of the - * content size and may or may not account for any transfer - * encoding of the content.

- * - * This implementation returns the size of the content - * array (if not null), or, if contentStream is not - * null, and the available method returns a positive - * number, it returns that number as the size. Otherwise, it returns - * -1. - * - * @return size in bytes, or -1 if not known - */ - public int getSize() { - - if (mimePart != null) { - try { - return mimePart.read().available(); - } catch (IOException ex) { - return -1; - } - } - if (content != null) - return contentLength; - if (contentStream != null) { - try { - int size = contentStream.available(); - // only believe the size if it's greate than zero, since zero - // is the default returned by the InputStream class itself - if (size > 0) - return size; - } catch (IOException ex) { - // ignore it - } - } - return -1; - } - - /** - * Return the number of lines for the content of this MimeBodyPart. - * Return -1 if this number cannot be determined.

- * - * Note that this number may not be an exact measure of the - * content length and may or may not account for any transfer - * encoding of the content.

- * - * This implementation returns -1. - * - * @return number of lines, or -1 if not known - */ - public int getLineCount() { - return -1; - } - - /** - * Returns the value of the RFC 822 "Content-Type" header field. - * This represents the content type of the content of this - * body part. This value must not be null. If this field is - * unavailable, "text/plain" should be returned.

- * - * This implementation uses getHeader(name) - * to obtain the requisite header field. - * - * @return Content-Type of this body part - */ - public String getContentType() { - if (mimePart != null) { - return mimePart.getContentType(); - } - String s = getHeader("Content-Type", null); - if (s == null) - s = "text/plain"; - - return s; - } - - /** - * Is this MimeBodyPart of the specified MIME type? This method - * compares only the primaryType and - * subType. - * The parameters of the content types are ignored.

- * - * For example, this method will return true when - * comparing a MimeBodyPart of content type "text/plain" - * with "text/plain; charset=foobar".

- * - * If the subType of mimeType is the - * special character '*', then the subtype is ignored during the - * comparison. - */ - public boolean isMimeType(String mimeType) { - boolean result; - // XXX - lots of room for optimization here! - try { - ContentType ct = new ContentType(getContentType()); - result = ct.match(mimeType); - } catch (ParseException ex) { - result = getContentType().equalsIgnoreCase(mimeType); - } - return result; - } - - /** - * Returns the value of the "Content-Disposition" header field. - * This represents the disposition of this part. The disposition - * describes how the part should be presented to the user.

- * - * If the Content-Disposition field is unavailable, - * null is returned.

- * - * This implementation uses getHeader(name) - * to obtain the requisite header field. - * - * @see #headers - */ - public String getDisposition() throws MessagingException { - String s = getHeader("Content-Disposition", null); - - if (s == null) - return null; - - ContentDisposition cd = new ContentDisposition(s); - return cd.getDisposition(); - } - - /** - * Set the "Content-Disposition" header field of this body part. - * If the disposition is null, any existing "Content-Disposition" - * header field is removed. - * - * @exception IllegalStateException if this body part is - * obtained from a READ_ONLY folder. - */ - public void setDisposition(String disposition) throws MessagingException { - if (disposition == null) - removeHeader("Content-Disposition"); - else { - String s = getHeader("Content-Disposition", null); - if (s != null) { - /* A Content-Disposition header already exists .. - * - * Override disposition, but attempt to retain - * existing disposition parameters - */ - ContentDisposition cd = new ContentDisposition(s); - cd.setDisposition(disposition); - disposition = cd.toString(); - } - setHeader("Content-Disposition", disposition); - } - } - - /** - * Returns the content transfer encoding from the - * "Content-Transfer-Encoding" header - * field. Returns null if the header is unavailable - * or its value is absent.

- * - * This implementation uses getHeader(name) - * to obtain the requisite header field. - * - * @see #headers - */ - public String getEncoding() throws MessagingException { - String s = getHeader("Content-Transfer-Encoding", null); - - if (s == null) - return null; - - s = s.trim(); // get rid of trailing spaces - // quick check for known values to avoid unnecessary use - // of tokenizer. - if (s.equalsIgnoreCase("7bit") || s.equalsIgnoreCase("8bit") || - s.equalsIgnoreCase("quoted-printable") || - s.equalsIgnoreCase("base64")) - return s; - - // Tokenize the header to obtain the encoding (skip comments) - HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME); - - HeaderTokenizer.Token tk; - int tkType; - - for (;;) { - tk = h.next(); // get a token - tkType = tk.getType(); - if (tkType == HeaderTokenizer.Token.EOF) - break; // done - else if (tkType == HeaderTokenizer.Token.ATOM) - return tk.getValue(); - else // invalid token, skip it. - continue; - } - return s; - } - - /** - * Returns the value of the "Content-ID" header field. Returns - * null if the field is unavailable or its value is - * absent.

- * - * This implementation uses getHeader(name) - * to obtain the requisite header field. - */ - public String getContentID() { - return getHeader("Content-ID", null); - } - - /** - * Set the "Content-ID" header field of this body part. - * If the cid parameter is null, any existing - * "Content-ID" is removed. - * - * @exception IllegalStateException if this body part is - * obtained from a READ_ONLY folder. - * @since JavaMail 1.3 - */ - public void setContentID(String cid) { - if (cid == null) - removeHeader("Content-ID"); - else - setHeader("Content-ID", cid); - } - - /** - * Return the value of the "Content-MD5" header field. Returns - * null if this field is unavailable or its value - * is absent.

- * - * This implementation uses getHeader(name) - * to obtain the requisite header field. - */ - public String getContentMD5() { - return getHeader("Content-MD5", null); - } - - /** - * Set the "Content-MD5" header field of this body part. - * - * @exception IllegalStateException if this body part is - * obtained from a READ_ONLY folder. - */ - public void setContentMD5(String md5) { - setHeader("Content-MD5", md5); - } - - /** - * Get the languages specified in the Content-Language header - * of this MimeBodyPart. The Content-Language header is defined by - * RFC 1766. Returns null if this header is not - * available or its value is absent.

- * - * This implementation uses getHeader(name) - * to obtain the requisite header field. - */ - public String[] getContentLanguage() throws MessagingException { - String s = getHeader("Content-Language", null); - - if (s == null) - return null; - - // Tokenize the header to obtain the Language-tags (skip comments) - HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME); - FinalArrayList v = new FinalArrayList(); - - HeaderTokenizer.Token tk; - int tkType; - - while (true) { - tk = h.next(); // get a language-tag - tkType = tk.getType(); - if (tkType == HeaderTokenizer.Token.EOF) - break; // done - else if (tkType == HeaderTokenizer.Token.ATOM) v.add(tk.getValue()); - else // invalid token, skip it. - continue; - } - - if (v.size() == 0) - return null; - - return (String[])v.toArray(new String[v.size()]); - } - - /** - * Set the Content-Language header of this MimeBodyPart. The - * Content-Language header is defined by RFC 1766. - * - * @param languages array of language tags - */ - public void setContentLanguage(String[] languages) { - StringBuffer sb = new StringBuffer(languages[0]); - for (int i = 1; i < languages.length; i++) - sb.append(',').append(languages[i]); - setHeader("Content-Language", sb.toString()); - } - - /** - * Returns the "Content-Description" header field of this body part. - * This typically associates some descriptive information with - * this part. Returns null if this field is unavailable or its - * value is absent.

- * - * If the Content-Description field is encoded as per RFC 2047, - * it is decoded and converted into Unicode. If the decoding or - * conversion fails, the raw data is returned as is.

- * - * This implementation uses getHeader(name) - * to obtain the requisite header field. - * - * @return content description - */ - public String getDescription() { - String rawvalue = getHeader("Content-Description", null); - - if (rawvalue == null) - return null; - - try { - return MimeUtility.decodeText(MimeUtility.unfold(rawvalue)); - } catch (UnsupportedEncodingException ex) { - return rawvalue; - } - } - - /** - * Set the "Content-Description" header field for this body part. - * If the description parameter is null, then any - * existing "Content-Description" fields are removed.

- * - * If the description contains non US-ASCII characters, it will - * be encoded using the platform's default charset. If the - * description contains only US-ASCII characters, no encoding - * is done and it is used as is.

- * - * Note that if the charset encoding process fails, a - * MessagingException is thrown, and an UnsupportedEncodingException - * is included in the chain of nested exceptions within the - * MessagingException. - * - * @param description content description - * @exception IllegalStateException if this body part is - * obtained from a READ_ONLY folder. - * @exception MessagingException An - * UnsupportedEncodingException may be included - * in the exception chain if the charset - * conversion fails. - */ - public void setDescription(String description) throws MessagingException { - setDescription(description, null); - } - - /** - * Set the "Content-Description" header field for this body part. - * If the description parameter is null, then any - * existing "Content-Description" fields are removed.

- * - * If the description contains non US-ASCII characters, it will - * be encoded using the specified charset. If the description - * contains only US-ASCII characters, no encoding is done and - * it is used as is.

- * - * Note that if the charset encoding process fails, a - * MessagingException is thrown, and an UnsupportedEncodingException - * is included in the chain of nested exceptions within the - * MessagingException. - * - * @param description Description - * @param charset Charset for encoding - * @exception IllegalStateException if this body part is - * obtained from a READ_ONLY folder. - * @exception MessagingException An - * UnsupportedEncodingException may be included - * in the exception chain if the charset - * conversion fails. - */ - public void setDescription(String description, String charset) - throws MessagingException { - if (description == null) { - removeHeader("Content-Description"); - return; - } - - try { - setHeader("Content-Description", MimeUtility.fold(21, - MimeUtility.encodeText(description, charset, null))); - } catch (UnsupportedEncodingException uex) { - throw new MessagingException("Encoding error", uex); - } - } - - /** - * Get the filename associated with this body part.

- * - * Returns the value of the "filename" parameter from the - * "Content-Disposition" header field of this body part. If its - * not available, returns the value of the "name" parameter from - * the "Content-Type" header field of this body part. - * Returns null if both are absent. - * - * @return filename - */ - public String getFileName() throws MessagingException { - String filename = null; - String s = getHeader("Content-Disposition", null); - - if (s != null) { - // Parse the header .. - ContentDisposition cd = new ContentDisposition(s); - filename = cd.getParameter("filename"); - } - if (filename == null) { - // Still no filename ? Try the "name" ContentType parameter - s = getHeader("Content-Type", null); - if (s != null) { - try { - ContentType ct = new ContentType(s); - filename = ct.getParameter("name"); - } catch (ParseException pex) { } // ignore it - } - } - return filename; - } - - /** - * Set the filename associated with this body part, if possible.

- * - * Sets the "filename" parameter of the "Content-Disposition" - * header field of this body part. - * - * @exception IllegalStateException if this body part is - * obtained from a READ_ONLY folder. - */ - public void setFileName(String filename) throws MessagingException { - // Set the Content-Disposition "filename" parameter - String s = getHeader("Content-Disposition", null); - ContentDisposition cd = - new ContentDisposition(s == null ? ATTACHMENT : s); - cd.setParameter("filename", filename); - setHeader("Content-Disposition", cd.toString()); - - /* Also attempt to set the Content-Type "name" parameter, - * to satisfy ancient MUAs. - * XXX: This is not RFC compliant, and hence should really - * be conditional based on some property. Fix this once we - * figure out how to get at Properties from here ! - */ - s = getHeader("Content-Type", null); - if (s != null) { - try { - ContentType cType = new ContentType(s); - cType.setParameter("name", filename); - setHeader("Content-Type", cType.toString()); - } catch (ParseException pex) { } // ignore it - } - } - - /** - * Return a decoded input stream for this body part's "content".

- * - * This implementation obtains the input stream from the DataHandler. - * That is, it invokes getDataHandler().getInputStream(); - * - * @return an InputStream - * @exception IOException this is typically thrown by the - * DataHandler. Refer to the documentation for - * javax.activation.DataHandler for more details. - * - * @see #getContentStream - * @see DataHandler#getInputStream - */ - public InputStream getInputStream() - throws IOException { - return getDataHandler().getInputStream(); - } - - /** - * Produce the raw bytes of the content. This method is used - * when creating a DataHandler object for the content. Subclasses - * that can provide a separate input stream for just the MimeBodyPart - * content might want to override this method.

- * - * @see #content - */ - /*package*/ InputStream getContentStream() throws MessagingException { - if (mimePart != null) { - return mimePart.read(); - } - if (contentStream != null) - return ((SharedInputStream)contentStream).newStream(0, -1); - if (content != null) - return new ByteArrayInputStream(content,start,contentLength); - - throw new MessagingException("No content"); - } - - /** - * Return an InputStream to the raw data with any Content-Transfer-Encoding - * intact. This method is useful if the "Content-Transfer-Encoding" - * header is incorrect or corrupt, which would prevent the - * getInputStream method or getContent method - * from returning the correct data. In such a case the application may - * use this method and attempt to decode the raw data itself.

- * - * This implementation simply calls the getContentStream - * method. - * - * @see #getInputStream - * @see #getContentStream - * @since JavaMail 1.2 - */ - public InputStream getRawInputStream() throws MessagingException { - return getContentStream(); - } - - /** - * Return a DataHandler for this body part's content.

- * - * The implementation provided here works just like the - * the implementation in MimeMessage. - */ - public DataHandler getDataHandler() { - if (mimePart != null) { - //return an inputstream - return new DataHandler(new DataSource() { - - public InputStream getInputStream() throws IOException { - return mimePart.read(); - } - - public OutputStream getOutputStream() throws IOException { - throw new UnsupportedOperationException("getOutputStream cannot be supported : You have enabled LazyAttachments Option"); - } - - public String getContentType() { - return mimePart.getContentType(); - } - - public String getName() { - return "MIMEPart Wrapped DataSource"; - } - }); - } - if (dh == null) - dh = new DataHandler(new MimePartDataSource(this)); - return dh; - } - - /** - * Return the content as a java object. The type of the object - * returned is of course dependent on the content itself. For - * example, the native format of a text/plain content is usually - * a String object. The native format for a "multipart" - * content is always a MimeMultipart subclass. For content types that are - * unknown to the DataHandler system, an input stream is returned - * as the content.

- * - * This implementation obtains the content from the DataHandler. - * That is, it invokes getDataHandler().getContent(); - * - * @return Object - * @exception IOException this is typically thrown by the - * DataHandler. Refer to the documentation for - * javax.activation.DataHandler for more details. - */ - public Object getContent() throws IOException { - return getDataHandler().getContent(); - } - - /** - * This method provides the mechanism to set this body part's content. - * The given DataHandler object should wrap the actual content. - * - * @param dh The DataHandler for the content - * @exception IllegalStateException if this body part is - * obtained from a READ_ONLY folder. - */ - public void setDataHandler(DataHandler dh) { - if (mimePart != null) { - mimePart = null; - } - this.dh = dh; - this.content = null; - this.contentStream = null; - removeHeader("Content-Type"); - removeHeader("Content-Transfer-Encoding"); - } - - /** - * A convenience method for setting this body part's content.

- * - * The content is wrapped in a DataHandler object. Note that a - * DataContentHandler class for the specified type should be - * available to the JavaMail implementation for this to work right. - * That is, to do setContent(foobar, "application/x-foobar"), - * a DataContentHandler for "application/x-foobar" should be installed. - * Refer to the Java Activation Framework for more information. - * - * @param o the content object - * @param type Mime type of the object - * @exception IllegalStateException if this body part is - * obtained from a READ_ONLY folder. - */ - public void setContent(Object o, String type) { - if (mimePart != null) { - mimePart = null; - } - if (o instanceof MimeMultipart) { - setContent((MimeMultipart)o); - } else { - setDataHandler(new DataHandler(o, type)); - } - } - - /** - * Convenience method that sets the given String as this - * part's content, with a MIME type of "text/plain". If the - * string contains non US-ASCII characters, it will be encoded - * using the platform's default charset. The charset is also - * used to set the "charset" parameter.

- * - * Note that there may be a performance penalty if - * text is large, since this method may have - * to scan all the characters to determine what charset to - * use.

- * If the charset is already known, use the - * setText() version that takes the charset parameter. - * - * @see #setText(String text, String charset) - */ - public void setText(String text) { - setText(text, null); - } - - /** - * Convenience method that sets the given String as this part's - * content, with a MIME type of "text/plain" and the specified - * charset. The given Unicode string will be charset-encoded - * using the specified charset. The charset is also used to set - * the "charset" parameter. - */ - public void setText(String text, String charset) { - if (charset == null) { - if (MimeUtility.checkAscii(text) != MimeUtility.ALL_ASCII) - charset = MimeUtility.getDefaultMIMECharset(); - else - charset = "us-ascii"; - } - setContent(text, "text/plain; charset=" + - MimeUtility.quote(charset, HeaderTokenizer.MIME)); - } - - /** - * This method sets the body part's content to a MimeMultipart object. - * - * @param mp The multipart object that is the Message's content - * @exception IllegalStateException if this body part is - * obtained from a READ_ONLY folder. - */ - public void setContent(MimeMultipart mp) { - if (mimePart != null) { - mimePart = null; - } - setDataHandler(new DataHandler(mp, mp.getContentType().toString())); - mp.setParent(this); - } - - /** - * Output the body part as an RFC 822 format stream. - * - * @exception MessagingException - * @exception IOException if an error occurs writing to the - * stream or if an error is generated - * by the javax.activation layer. - * @see DataHandler#writeTo - */ - public void writeTo(OutputStream os) - throws IOException, MessagingException { - - // First, write out the header - List hdrLines = headers.getAllHeaderLines(); - int sz = hdrLines.size(); - for( int i=0; inull, only the first header is - * returned. - * - * @param name the name of this header - * @param delimiter delimiter between fields in returned string - * @return the value fields for all headers with - * this name - */ - public String getHeader(String name, String delimiter) { - return headers.getHeader(name, delimiter); - } - - /** - * Set the value for this header_name. Replaces all existing - * header values with this new value. Note that RFC 822 headers - * must contain only US-ASCII characters, so a header that - * contains non US-ASCII characters must be encoded as per the - * rules of RFC 2047. - * - * @param name header name - * @param value header value - * @see MimeUtility - */ - public void setHeader(String name, String value) { - headers.setHeader(name, value); - } - - /** - * Add this value to the existing values for this header_name. - * Note that RFC 822 headers must contain only US-ASCII - * characters, so a header that contains non US-ASCII characters - * must be encoded as per the rules of RFC 2047. - * - * @param name header name - * @param value header value - * @see MimeUtility - */ - public void addHeader(String name, String value) { - headers.addHeader(name, value); - } - - /** - * Remove all headers with this name. - */ - public void removeHeader(String name) { - headers.removeHeader(name); - } - - /** - * Return all the headers from this Message as an Enumeration of - * Header objects. - */ - public FinalArrayList getAllHeaders() { - return headers.getAllHeaders(); - } - - - /** - * Add a header line to this body part - */ - public void addHeaderLine(String line) { - headers.addHeaderLine(line); - } - - /** - * Examine the content of this body part and update the appropriate - * MIME headers. Typical headers that get set here are - * Content-Type and Content-Transfer-Encoding. - * Headers might need to be updated in two cases: - * - *
- * - A message being crafted by a mail application will certainly - * need to activate this method at some point to fill up its internal - * headers. - * - *
- * - A message read in from a Store will have obtained - * all its headers from the store, and so doesn't need this. - * However, if this message is editable and if any edits have - * been made to either the content or message structure, we might - * need to resync our headers. - * - *
- * In both cases this method is typically called by the - * Message.saveChanges method. - */ - protected void updateHeaders() throws MessagingException { - DataHandler dh = getDataHandler(); - /* - * Code flow indicates null is never returned from - * getdataHandler() - findbugs - */ - //if (dh == null) // Huh ? - // return; - - try { - String type = dh.getContentType(); - boolean composite = false; - boolean needCTHeader = getHeader("Content-Type") == null; - - ContentType cType = new ContentType(type); - if (cType.match("multipart/*")) { - // If multipart, recurse - composite = true; - Object o = dh.getContent(); - ((MimeMultipart) o).updateHeaders(); - } else if (cType.match("message/rfc822")) { - composite = true; - } - - // Content-Transfer-Encoding, but only if we don't - // already have one - if (!composite) { // not allowed on composite parts - if (getHeader("Content-Transfer-Encoding") == null) - setEncoding(MimeUtility.getEncoding(dh)); - - if (needCTHeader && setDefaultTextCharset && - cType.match("text/*") && - cType.getParameter("charset") == null) { - /* - * Set a default charset for text parts. - * We really should examine the data to determine - * whether or not it's all ASCII, but that's too - * expensive so we make an assumption: If we - * chose 7bit encoding for this data, it's probably - * ASCII. (MimeUtility.getEncoding will choose - * 7bit only in this case, but someone might've - * set the Content-Transfer-Encoding header manually.) - */ - String charset; - String enc = getEncoding(); - if (enc != null && enc.equalsIgnoreCase("7bit")) - charset = "us-ascii"; - else - charset = MimeUtility.getDefaultMIMECharset(); - cType.setParameter("charset", charset); - type = cType.toString(); - } - } - - // Now, let's update our own headers ... - - // Content-type, but only if we don't already have one - if (needCTHeader) { - /* - * Pull out "filename" from Content-Disposition, and - * use that to set the "name" parameter. This is to - * satisfy older MUAs (DtMail, Roam and probably - * a bunch of others). - */ - String s = getHeader("Content-Disposition", null); - if (s != null) { - // Parse the header .. - ContentDisposition cd = new ContentDisposition(s); - String filename = cd.getParameter("filename"); - if (filename != null) { - cType.setParameter("name", filename); - type = cType.toString(); - } - } - - setHeader("Content-Type", type); - } - } catch (IOException ex) { - throw new MessagingException("IOException updating headers", ex); - } - } - - private void setEncoding(String encoding) { - setHeader("Content-Transfer-Encoding", encoding); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeMultipart.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeMultipart.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,657 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)MimeMultipart.java 1.31 03/01/29 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - -import java.io.*; - -import javax.activation.DataSource; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.*; -import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*; -import com.sun.xml.internal.messaging.saaj.util.FinalArrayList; -import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; -import com.sun.xml.internal.messaging.saaj.util.SAAJUtil; - -/** - * The MimeMultipart class is an implementation - * that uses MIME conventions for the multipart data.

- * - * A MimeMultipart is obtained from a MimeBodyPart whose primary type - * is "multipart" (by invoking the part's getContent() method) - * or it can be created by a client as part of creating a new MimeMessage.

- * - * The default multipart subtype is "mixed". The other multipart - * subtypes, such as "alternative", "related", and so on, can be - * implemented as subclasses of MimeMultipart with additional methods - * to implement the additional semantics of that type of multipart - * content. The intent is that service providers, mail JavaBean writers - * and mail clients will write many such subclasses and their Command - * Beans, and will install them into the JavaBeans Activation - * Framework, so that any JavaMail implementation and its clients can - * transparently find and use these classes. Thus, a MIME multipart - * handler is treated just like any other type handler, thereby - * decoupling the process of providing multipart handlers from the - * JavaMail API. Lacking these additional MimeMultipart subclasses, - * all subtypes of MIME multipart data appear as MimeMultipart objects.

- * - * An application can directly construct a MIME multipart object of any - * subtype by using the MimeMultipart(String subtype) - * constructor. For example, to create a "multipart/alternative" object, - * use new MimeMultipart("alternative"). - * - * @version 1.31, 03/01/29 - * @author John Mani - * @author Bill Shannon - * @author Max Spivak - */ - -//BM MimeMultipart can extend this -public class MimeMultipart { - - /** - * The DataSource supplying our InputStream. - */ - protected DataSource ds = null; - - /** - * Have we parsed the data from our InputStream yet? - * Defaults to true; set to false when our constructor is - * given a DataSource with an InputStream that we need to - * parse. - */ - protected boolean parsed = true; - - /** - * Vector of MimeBodyPart objects. - */ - protected FinalArrayList parts = new FinalArrayList(); // Holds BodyParts - - /** - * This field specifies the content-type of this multipart - * object. It defaults to "multipart/mixed". - */ - protected ContentType contentType; - - /** - * The MimeBodyPart containing this MimeMultipart, - * if known. - * @since JavaMail 1.1 - */ - protected MimeBodyPart parent; - - protected static final boolean ignoreMissingEndBoundary; - static { - ignoreMissingEndBoundary = SAAJUtil.getSystemBoolean("saaj.mime.multipart.ignoremissingendboundary"); - } - - /** - * Default constructor. An empty MimeMultipart object - * is created. Its content type is set to "multipart/mixed". - * A unique boundary string is generated and this string is - * setup as the "boundary" parameter for the - * contentType field.

- * - * MimeBodyParts may be added later. - */ - public MimeMultipart() { - this("mixed"); - } - - /** - * Construct a MimeMultipart object of the given subtype. - * A unique boundary string is generated and this string is - * setup as the "boundary" parameter for the - * contentType field.

- * - * MimeBodyParts may be added later. - */ - public MimeMultipart(String subtype) { - //super(); - /* - * Compute a boundary string. - */ - String boundary = UniqueValue.getUniqueBoundaryValue(); - contentType = new ContentType("multipart", subtype, null); - contentType.setParameter("boundary", boundary); - } - - /** - * Constructs a MimeMultipart object and its bodyparts from the - * given DataSource.

- * - * This constructor handles as a special case the situation where the - * given DataSource is a MultipartDataSource object. - * - * Otherwise, the DataSource is assumed to provide a MIME multipart - * byte stream. The parsed flag is set to false. When - * the data for the body parts are needed, the parser extracts the - * "boundary" parameter from the content type of this DataSource, - * skips the 'preamble' and reads bytes till the terminating - * boundary and creates MimeBodyParts for each part of the stream. - * - * @param ds DataSource, can be a MultipartDataSource - * @param ct - * This must be the same information as {@link DataSource#getContentType()}. - * All the callers of this method seem to have this object handy, so - * for performance reason this method accepts it. Can be null. - */ - public MimeMultipart(DataSource ds, ContentType ct) throws MessagingException { - // 'ds' was not a MultipartDataSource, we have - // to parse this ourself. - parsed = false; - this.ds = ds; - if (ct==null) - contentType = new ContentType(ds.getContentType()); - else - contentType = ct; - } - - /** - * Set the subtype. This method should be invoked only on a new - * MimeMultipart object created by the client. The default subtype - * of such a multipart object is "mixed".

- * - * @param subtype Subtype - */ - public void setSubType(String subtype) { - contentType.setSubType(subtype); - } - - /** - * Return the number of enclosed MimeBodyPart objects. - * - * @return number of parts - */ - public int getCount() throws MessagingException { - parse(); - if (parts == null) - return 0; - - return parts.size(); - } - - /** - * Get the specified MimeBodyPart. BodyParts are numbered starting at 0. - * - * @param index the index of the desired MimeBodyPart - * @return the MimeBodyPart - * @exception MessagingException if no such MimeBodyPart exists - */ - public MimeBodyPart getBodyPart(int index) - throws MessagingException { - parse(); - if (parts == null) - throw new IndexOutOfBoundsException("No such BodyPart"); - - return (MimeBodyPart)parts.get(index); - } - - /** - * Get the MimeBodyPart referred to by the given ContentID (CID). - * Returns null if the part is not found. - * - * @param CID the ContentID of the desired part - * @return the MimeBodyPart - */ - public MimeBodyPart getBodyPart(String CID) - throws MessagingException { - parse(); - - int count = getCount(); - for (int i = 0; i < count; i++) { - MimeBodyPart part = getBodyPart(i); - String s = part.getContentID(); - // Old versions of AXIS2 put angle brackets around the content - // id but not the start param - String sNoAngle = (s!= null) ? s.replaceFirst("^<", "").replaceFirst(">$", "") - :null; - if (s != null && (s.equals(CID) || CID.equals(sNoAngle))) - return part; - } - return null; - } - - /** - * Update headers. The default implementation here just - * calls the updateHeaders method on each of its - * children BodyParts.

- * - * Note that the boundary parameter is already set up when - * a new and empty MimeMultipart object is created.

- * - * This method is called when the saveChanges - * method is invoked on the Message object containing this - * MimeMultipart. This is typically done as part of the Message - * send process, however note that a client is free to call - * it any number of times. So if the header updating process is - * expensive for a specific MimeMultipart subclass, then it - * might itself want to track whether its internal state actually - * did change, and do the header updating only if necessary. - */ - protected void updateHeaders() throws MessagingException { - for (int i = 0; i < parts.size(); i++) - ((MimeBodyPart)parts.get(i)).updateHeaders(); - } - - /** - * Iterates through all the parts and outputs each Mime part - * separated by a boundary. - */ - public void writeTo(OutputStream os) - throws IOException, MessagingException { - parse(); - - String boundary = "--" + contentType.getParameter("boundary"); - - for (int i = 0; i < parts.size(); i++) { - OutputUtil.writeln(boundary, os); // put out boundary - getBodyPart(i).writeTo(os); - OutputUtil.writeln(os); // put out empty line - } - - // put out last boundary - OutputUtil.writeAsAscii(boundary, os); - OutputUtil.writeAsAscii("--", os); - os.flush(); - } - - /** - * Parse the InputStream from our DataSource, constructing the - * appropriate MimeBodyParts. The parsed flag is - * set to true, and if true on entry nothing is done. This - * method is called by all other methods that need data for - * the body parts, to make sure the data has been parsed. - * - * @since JavaMail 1.2 - */ - protected void parse() throws MessagingException { - if (parsed) - return; - - InputStream in; - SharedInputStream sin = null; - long start = 0, end = 0; - boolean foundClosingBoundary = false; - - try { - in = ds.getInputStream(); - if (!(in instanceof ByteArrayInputStream) && - !(in instanceof BufferedInputStream) && - !(in instanceof SharedInputStream)) - in = new BufferedInputStream(in); - } catch (Exception ex) { - throw new MessagingException("No inputstream from datasource"); - } - if (in instanceof SharedInputStream) - sin = (SharedInputStream)in; - - String boundary = "--" + contentType.getParameter("boundary"); - byte[] bndbytes = ASCIIUtility.getBytes(boundary); - int bl = bndbytes.length; - - ByteOutputStream buf = null; - try { - // Skip the preamble - LineInputStream lin = new LineInputStream(in); - String line; - while ((line = lin.readLine()) != null) { - /* - * Strip trailing whitespace. Can't use trim method - * because it's too aggressive. Some bogus MIME - * messages will include control characters in the - * boundary string. - */ - int i; - for (i = line.length() - 1; i >= 0; i--) { - char c = line.charAt(i); - if (!(c == ' ' || c == '\t')) - break; - } - line = line.substring(0, i + 1); - if (line.equals(boundary)) - break; - } - if (line == null) - throw new MessagingException("Missing start boundary"); - - /* - * Read and process body parts until we see the - * terminating boundary line (or EOF). - */ - boolean done = false; - getparts: - while (!done) { - InternetHeaders headers = null; - if (sin != null) { - start = sin.getPosition(); - // skip headers - while ((line = lin.readLine()) != null && line.length() > 0) - ; - if (line == null) { - if (!ignoreMissingEndBoundary) { - throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers"); - } - // assume there's just a missing end boundary - break getparts; - } - } else { - // collect the headers for this body part - headers = createInternetHeaders(in); - } - - if (!in.markSupported()) - throw new MessagingException("Stream doesn't support mark"); - - buf = null; - // if we don't have a shared input stream, we copy the data - if (sin == null) - buf = new ByteOutputStream(); - int b; - boolean bol = true; // beginning of line flag - // the two possible end of line characters - int eol1 = -1, eol2 = -1; - - /* - * Read and save the content bytes in buf. - */ - for (;;) { - if (bol) { - /* - * At the beginning of a line, check whether the - * next line is a boundary. - */ - int i; - in.mark(bl + 4 + 1000); // bnd + "--\r\n" + lots of LWSP - // read bytes, matching against the boundary - for (i = 0; i < bl; i++) - if (in.read() != bndbytes[i]) - break; - if (i == bl) { - // matched the boundary, check for last boundary - int b2 = in.read(); - if (b2 == '-') { - if (in.read() == '-') { - done = true; - foundClosingBoundary = true; - break; // ignore trailing text - } - } - // skip linear whitespace - while (b2 == ' ' || b2 == '\t') - b2 = in.read(); - // check for end of line - if (b2 == '\n') - break; // got it! break out of the loop - if (b2 == '\r') { - in.mark(1); - if (in.read() != '\n') - in.reset(); - break; // got it! break out of the loop - } - } - // failed to match, reset and proceed normally - in.reset(); - - // if this is not the first line, write out the - // end of line characters from the previous line - if (buf != null && eol1 != -1) { - buf.write(eol1); - if (eol2 != -1) - buf.write(eol2); - eol1 = eol2 = -1; - } - } - - // read the next byte - if ((b = in.read()) < 0) { - done = true; - break; - } - - /* - * If we're at the end of the line, save the eol characters - * to be written out before the beginning of the next line. - */ - if (b == '\r' || b == '\n') { - bol = true; - if (sin != null) - end = sin.getPosition() - 1; - eol1 = b; - if (b == '\r') { - in.mark(1); - if ((b = in.read()) == '\n') - eol2 = b; - else - in.reset(); - } - } else { - bol = false; - if (buf != null) - buf.write(b); - } - } - - /* - * Create a MimeBody element to represent this body part. - */ - MimeBodyPart part; - if (sin != null) - part = createMimeBodyPart(sin.newStream(start, end)); - else - part = createMimeBodyPart(headers, buf.getBytes(), buf.getCount()); - addBodyPart(part); - } - } catch (IOException ioex) { - throw new MessagingException("IO Error", ioex); - } finally { - if (buf != null) - buf.close(); - } - - if (!ignoreMissingEndBoundary && !foundClosingBoundary && sin== null) { - throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers"); - } - parsed = true; - } - - /** - * Create and return an InternetHeaders object that loads the - * headers from the given InputStream. Subclasses can override - * this method to return a subclass of InternetHeaders, if - * necessary. This implementation simply constructs and returns - * an InternetHeaders object. - * - * @param is the InputStream to read the headers from - * @exception MessagingException - * @since JavaMail 1.2 - */ - protected InternetHeaders createInternetHeaders(InputStream is) - throws MessagingException { - return new InternetHeaders(is); - } - - /** - * Create and return a MimeBodyPart object to represent a - * body part parsed from the InputStream. Subclasses can override - * this method to return a subclass of MimeBodyPart, if - * necessary. This implementation simply constructs and returns - * a MimeBodyPart object. - * - * @param headers the headers for the body part - * @param content the content of the body part - * @since JavaMail 1.2 - */ - protected MimeBodyPart createMimeBodyPart(InternetHeaders headers, byte[] content, int len) { - return new MimeBodyPart(headers, content,len); - } - - /** - * Create and return a MimeBodyPart object to represent a - * body part parsed from the InputStream. Subclasses can override - * this method to return a subclass of MimeBodyPart, if - * necessary. This implementation simply constructs and returns - * a MimeBodyPart object. - * - * @param is InputStream containing the body part - * @exception MessagingException - * @since JavaMail 1.2 - */ - protected MimeBodyPart createMimeBodyPart(InputStream is) throws MessagingException { - return new MimeBodyPart(is); - } - - /** - * Setup this MimeMultipart object from the given MultipartDataSource.

- * - * The method adds the MultipartDataSource's MimeBodyPart - * objects into this MimeMultipart. This MimeMultipart's contentType is - * set to that of the MultipartDataSource.

- * - * This method is typically used in those cases where one - * has a multipart data source that has already been pre-parsed into - * the individual body parts (for example, an IMAP datasource), but - * needs to create an appropriate MimeMultipart subclass that represents - * a specific multipart subtype. - * - * @param mp MimeMultipart datasource - */ - - protected void setMultipartDataSource(MultipartDataSource mp) - throws MessagingException { - contentType = new ContentType(mp.getContentType()); - - int count = mp.getCount(); - for (int i = 0; i < count; i++) - addBodyPart(mp.getBodyPart(i)); - } - - /** - * Return the content-type of this MimeMultipart.

- * - * This implementation just returns the value of the - * contentType field. - * - * @return content-type - * @see #contentType - */ - public ContentType getContentType() { - return contentType; - } - - /** - * Remove the specified part from the multipart message. - * Shifts all the parts after the removed part down one. - * - * @param part The part to remove - * @return true if part removed, false otherwise - * @exception MessagingException if no such MimeBodyPart exists - */ - public boolean removeBodyPart(MimeBodyPart part) throws MessagingException { - if (parts == null) - throw new MessagingException("No such body part"); - - boolean ret = parts.remove(part); - part.setParent(null); - return ret; - } - - /** - * Remove the part at specified location (starting from 0). - * Shifts all the parts after the removed part down one. - * - * @param index Index of the part to remove - * @exception IndexOutOfBoundsException if the given index - * is out of range. - */ - public void removeBodyPart(int index) { - if (parts == null) - throw new IndexOutOfBoundsException("No such BodyPart"); - - MimeBodyPart part = (MimeBodyPart)parts.get(index); - parts.remove(index); - part.setParent(null); - } - - /** - * Adds a MimeBodyPart to the multipart. The MimeBodyPart is appended to - * the list of existing Parts. - * - * @param part The MimeBodyPart to be appended - */ - public synchronized void addBodyPart(MimeBodyPart part) { - if (parts == null) - parts = new FinalArrayList(); - - parts.add(part); - part.setParent(this); - } - - /** - * Adds a MimeBodyPart at position index. - * If index is not the last one in the list, - * the subsequent parts are shifted up. If index - * is larger than the number of parts present, the - * MimeBodyPart is appended to the end. - * - * @param part The MimeBodyPart to be inserted - * @param index Location where to insert the part - */ - public synchronized void addBodyPart(MimeBodyPart part, int index) { - if (parts == null) - parts = new FinalArrayList(); - - parts.add(index,part); - part.setParent(this); - } - - /** - * Return the MimeBodyPart that contains this MimeMultipart - * object, or null if not known. - * @since JavaMail 1.1 - */ - MimeBodyPart getParent() { - return parent; - } - - /** - * Set the parent of this MimeMultipart to be the specified - * MimeBodyPart. Normally called by the Message - * or MimeBodyPart setContent(MimeMultipart) method. - * parent may be null if the - * MimeMultipart is being removed from its containing - * MimeBodyPart. - * @since JavaMail 1.1 - */ - void setParent(MimeBodyPart parent) { - this.parent = parent; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePartDataSource.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePartDataSource.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,117 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)MimePartDataSource.java 1.9 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - -import java.io.*; -import java.net.UnknownServiceException; - -import javax.activation.DataSource; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; - -/** - * A utility class that implements a DataSource out of - * a MimeBodyPart. This class is primarily meant for service providers. - * - * @author John Mani - */ - -public final class MimePartDataSource implements DataSource { - private final MimeBodyPart part; - - /** - * Constructor, that constructs a DataSource from a MimeBodyPart. - */ - public MimePartDataSource(MimeBodyPart part) { - this.part = part; - } - - /** - * Returns an input stream from this MimeBodyPart.

- * - * This method applies the appropriate transfer-decoding, based - * on the Content-Transfer-Encoding attribute of this MimeBodyPart. - * Thus the returned input stream is a decoded stream of bytes.

- * - * This implementation obtains the raw content from the MimeBodyPart - * using the getContentStream() method and decodes - * it using the MimeUtility.decode() method. - * - * @return decoded input stream - */ - public InputStream getInputStream() throws IOException { - - try { - InputStream is = part.getContentStream(); - - String encoding = part.getEncoding(); - if (encoding != null) - return MimeUtility.decode(is, encoding); - else - return is; - } catch (MessagingException mex) { - throw new IOException(mex.getMessage()); - } - } - - /** - * DataSource method to return an output stream.

- * - * This implementation throws the UnknownServiceException. - */ - public OutputStream getOutputStream() throws IOException { - throw new UnknownServiceException(); - } - - /** - * Returns the content-type of this DataSource.

- * - * This implementation just invokes the getContentType - * method on the MimeBodyPart. - */ - public String getContentType() { - return part.getContentType(); - } - - /** - * DataSource method to return a name.

- * - * This implementation just returns an empty string. - */ - public String getName() { - try { - return part.getFileName(); - } catch (MessagingException mex) { - return ""; - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePullMultipart.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePullMultipart.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,121 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; -import com.sun.xml.internal.messaging.saaj.soap.AttachmentPartImpl; -import java.io.IOException; -import java.io.InputStream; -import java.util.List; -import javax.activation.DataSource; -import javax.xml.soap.AttachmentPart; -import com.sun.xml.internal.org.jvnet.mimepull.MIMEConfig; -import com.sun.xml.internal.org.jvnet.mimepull.MIMEMessage; -import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart; - -/** - * - * @author Kumar - */ -public class MimePullMultipart extends MimeMultipart { - - private InputStream in = null; - private String boundary = null; - private MIMEMessage mm = null; - private DataSource dataSource = null; - private ContentType contType = null; - private String startParam = null; - private MIMEPart soapPart = null; - - public MimePullMultipart(DataSource ds, ContentType ct) - throws MessagingException { - parsed = false; - if (ct==null) - contType = new ContentType(ds.getContentType()); - else - contType = ct; - - dataSource = ds; - boundary = contType.getParameter("boundary"); - } - - public MIMEPart readAndReturnSOAPPart() throws MessagingException { - if (soapPart != null) { - throw new MessagingException("Inputstream from datasource was already consumed"); - } - readSOAPPart(); - return soapPart; - - } - - protected void readSOAPPart() throws MessagingException { - try { - if (soapPart != null) { - return; - } - in = dataSource.getInputStream(); - MIMEConfig config = new MIMEConfig(); //use defaults - mm = new MIMEMessage(in, boundary, config); - String st = contType.getParameter("start"); - if(startParam == null) { - soapPart = mm.getPart(0); - } else { - // Strip <...> from root part's Content-I - if (st != null && st.length() > 2 && st.charAt(0) == '<' && st.charAt(st.length()-1) == '>') { - st = st.substring(1, st.length()-1); - } - startParam = st; - soapPart = mm.getPart(startParam); - - } - } catch (IOException ex) { - throw new MessagingException("No inputstream from datasource", ex); - } - } - - public void parseAll() throws MessagingException { - if (parsed) { - return; - } - if (soapPart == null) { - readSOAPPart(); - } - - List prts = mm.getAttachments(); - for(MIMEPart part : prts) { - if (part != soapPart) { - new AttachmentPartImpl(part); - this.addBodyPart(new MimeBodyPart(part)); - } - } - parsed = true; - } - - protected void parse() throws MessagingException { - parseAll(); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeUtility.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeUtility.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1507 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)MimeUtility.java 1.45 03/03/10 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - -import java.io.*; -import java.util.*; - -import javax.activation.DataHandler; -import javax.activation.DataSource; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; -import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*; -import com.sun.xml.internal.messaging.saaj.util.SAAJUtil; - -/** - * This is a utility class that provides various MIME related - * functionality.

- * - * There are a set of methods to encode and decode MIME headers as - * per RFC 2047. A brief description on handling such headers is - * given below:

- * - * RFC 822 mail headers must contain only US-ASCII - * characters. Headers that contain non US-ASCII characters must be - * encoded so that they contain only US-ASCII characters. Basically, - * this process involves using either BASE64 or QP to encode certain - * characters. RFC 2047 describes this in detail.

- * - * In Java, Strings contain (16 bit) Unicode characters. ASCII is a - * subset of Unicode (and occupies the range 0 - 127). A String - * that contains only ASCII characters is already mail-safe. If the - * String contains non US-ASCII characters, it must be encoded. An - * additional complexity in this step is that since Unicode is not - * yet a widely used charset, one might want to first charset-encode - * the String into another charset and then do the transfer-encoding. - *

- * Note that to get the actual bytes of a mail-safe String (say, - * for sending over SMTP), one must do - *

- *
- *      byte[] bytes = string.getBytes("iso-8859-1");
- *
- * 

- * - * The setHeader and addHeader methods - * on MimeMessage and MimeBodyPart assume that the given header values - * are Unicode strings that contain only US-ASCII characters. Hence - * the callers of those methods must insure that the values they pass - * do not contain non US-ASCII characters. The methods in this class - * help do this.

- * - * The getHeader family of methods on MimeMessage and - * MimeBodyPart return the raw header value. These might be encoded - * as per RFC 2047, and if so, must be decoded into Unicode Strings. - * The methods in this class help to do this.

- * - * Several System properties control strict conformance to the MIME - * spec. Note that these are not session properties but must be set - * globally as System properties.

- * - * The mail.mime.decodetext.strict property controls - * decoding of MIME encoded words. The MIME spec requires that encoded - * words start at the beginning of a whitespace separated word. Some - * mailers incorrectly include encoded words in the middle of a word. - * If the mail.mime.decodetext.strict System property is - * set to "false", an attempt will be made to decode these - * illegal encoded words. The default is true.

- * - * The mail.mime.encodeeol.strict property controls the - * choice of Content-Transfer-Encoding for MIME parts that are not of - * type "text". Often such parts will contain textual data for which - * an encoding that allows normal end of line conventions is appropriate. - * In rare cases, such a part will appear to contain entirely textual - * data, but will require an encoding that preserves CR and LF characters - * without change. If the mail.mime.decodetext.strict - * System property is set to "true", such an encoding will - * be used when necessary. The default is false.

- * - * In addition, the mail.mime.charset System property can - * be used to specify the default MIME charset to use for encoded words - * and text parts that don't otherwise specify a charset. Normally, the - * default MIME charset is derived from the default Java charset, as - * specified in the file.encoding System property. Most - * applications will have no need to explicitly set the default MIME - * charset. In cases where the default MIME charset to be used for - * mail messages is different than the charset used for files stored on - * the system, this property should be set. - * - * @version 1.45, 03/03/10 - * @author John Mani - * @author Bill Shannon - */ - -public class MimeUtility { - - // This class cannot be instantiated - private MimeUtility() { } - - public static final int ALL = -1; - - private static final int BUFFER_SIZE = 1024; - private static boolean decodeStrict = true; - private static boolean encodeEolStrict = false; - private static boolean foldEncodedWords = false; - private static boolean foldText = true; - - static { - try { - String s = SAAJUtil.getSystemProperty("mail.mime.decodetext.strict"); - // default to true - decodeStrict = s == null || !s.equalsIgnoreCase("false"); - s = SAAJUtil.getSystemProperty("mail.mime.encodeeol.strict"); - // default to false - encodeEolStrict = s != null && s.equalsIgnoreCase("true"); - s = SAAJUtil.getSystemProperty("mail.mime.foldencodedwords"); - // default to false - foldEncodedWords = s != null && s.equalsIgnoreCase("true"); - s = SAAJUtil.getSystemProperty("mail.mime.foldtext"); - // default to true - foldText = s == null || !s.equalsIgnoreCase("false"); - } catch (SecurityException sex) { - // ignore it - } - } - - - /** - * Get the content-transfer-encoding that should be applied - * to the input stream of this datasource, to make it mailsafe.

- * - * The algorithm used here is:
- *

- * - * @param ds DataSource - * @return the encoding. This is either "7bit", - * "quoted-printable" or "base64" - */ - public static String getEncoding(DataSource ds) { - ContentType cType = null; - InputStream is = null; - String encoding = null; - - try { - cType = new ContentType(ds.getContentType()); - is = ds.getInputStream(); - } catch (Exception ex) { - return "base64"; // what else ?! - } - - boolean isText = cType.match("text/*"); - // if not text, stop processing when we see non-ASCII - int i = checkAscii(is, ALL, !isText); - switch (i) { - case ALL_ASCII: - encoding = "7bit"; // all ascii - break; - case MOSTLY_ASCII: - encoding = "quoted-printable"; // mostly ascii - break; - default: - encoding = "base64"; // mostly binary - break; - } - - // Close the input stream - try { - is.close(); - } catch (IOException ioex) { } - - return encoding; - } - - /** - * Same as getEncoding(DataSource) except that instead - * of reading the data from an InputStream it uses the - * writeTo method to examine the data. This is more - * efficient in the common case of a DataHandler - * created with an object and a MIME type (for example, a - * "text/plain" String) because all the I/O is done in this - * thread. In the case requiring an InputStream the - * DataHandler uses a thread, a pair of pipe streams, - * and the writeTo method to produce the data.

- * - * @since JavaMail 1.2 - */ - public static String getEncoding(DataHandler dh) { - ContentType cType = null; - String encoding = null; - - /* - * Try to pick the most efficient means of determining the - * encoding. If this DataHandler was created using a DataSource, - * the getEncoding(DataSource) method is typically faster. If - * the DataHandler was created with an object, this method is - * much faster. To distinguish the two cases, we use a heuristic. - * A DataHandler created with an object will always have a null name. - * A DataHandler created with a DataSource will usually have a - * non-null name. - * - * XXX - This is actually quite a disgusting hack, but it makes - * a common case run over twice as fast. - */ - if (dh.getName() != null) - return getEncoding(dh.getDataSource()); - - try { - cType = new ContentType(dh.getContentType()); - } catch (Exception ex) { - return "base64"; // what else ?! - } - - if (cType.match("text/*")) { - // Check all of the available bytes - AsciiOutputStream aos = new AsciiOutputStream(false, false); - try { - dh.writeTo(aos); - } catch (IOException ex) { } // ignore it - switch (aos.getAscii()) { - case ALL_ASCII: - encoding = "7bit"; // all ascii - break; - case MOSTLY_ASCII: - encoding = "quoted-printable"; // mostly ascii - break; - default: - encoding = "base64"; // mostly binary - break; - } - } else { // not "text" - // Check all of available bytes, break out if we find - // at least one non-US-ASCII character - AsciiOutputStream aos = - new AsciiOutputStream(true, encodeEolStrict); - try { - dh.writeTo(aos); - } catch (IOException ex) { } // ignore it - if (aos.getAscii() == ALL_ASCII) // all ascii - encoding = "7bit"; - else // found atleast one non-ascii character, use b64 - encoding = "base64"; - } - - return encoding; - } - - /** - * Decode the given input stream. The Input stream returned is - * the decoded input stream. All the encodings defined in RFC 2045 - * are supported here. They include "base64", "quoted-printable", - * "7bit", "8bit", and "binary". In addition, "uuencode" is also - * supported. - * - * @param is input stream - * @param encoding the encoding of the stream. - * @return decoded input stream. - */ - public static InputStream decode(InputStream is, String encoding) - throws MessagingException { - if (encoding.equalsIgnoreCase("base64")) - return new BASE64DecoderStream(is); - else if (encoding.equalsIgnoreCase("quoted-printable")) - return new QPDecoderStream(is); - else if (encoding.equalsIgnoreCase("uuencode") || - encoding.equalsIgnoreCase("x-uuencode") || - encoding.equalsIgnoreCase("x-uue")) - return new UUDecoderStream(is); - else if (encoding.equalsIgnoreCase("binary") || - encoding.equalsIgnoreCase("7bit") || - encoding.equalsIgnoreCase("8bit")) - return is; - else - throw new MessagingException("Unknown encoding: " + encoding); - } - - /** - * Wrap an encoder around the given output stream. - * All the encodings defined in RFC 2045 are supported here. - * They include "base64", "quoted-printable", "7bit", "8bit" and - * "binary". In addition, "uuencode" is also supported. - * - * @param os output stream - * @param encoding the encoding of the stream. - * @return output stream that applies the - * specified encoding. - */ - public static OutputStream encode(OutputStream os, String encoding) - throws MessagingException { - if (encoding == null) - return os; - else if (encoding.equalsIgnoreCase("base64")) - return new BASE64EncoderStream(os); - else if (encoding.equalsIgnoreCase("quoted-printable")) - return new QPEncoderStream(os); - else if (encoding.equalsIgnoreCase("uuencode") || - encoding.equalsIgnoreCase("x-uuencode") || - encoding.equalsIgnoreCase("x-uue")) - return new UUEncoderStream(os); - else if (encoding.equalsIgnoreCase("binary") || - encoding.equalsIgnoreCase("7bit") || - encoding.equalsIgnoreCase("8bit")) - return os; - else - throw new MessagingException("Unknown encoding: " +encoding); - } - - /** - * Wrap an encoder around the given output stream. - * All the encodings defined in RFC 2045 are supported here. - * They include "base64", "quoted-printable", "7bit", "8bit" and - * "binary". In addition, "uuencode" is also supported. - * The filename parameter is used with the "uuencode" - * encoding and is included in the encoded output. - * - * @param os output stream - * @param encoding the encoding of the stream. - * @param filename name for the file being encoded (only used - * with uuencode) - * @return output stream that applies the - * specified encoding. - * @since JavaMail 1.2 - */ - public static OutputStream encode(OutputStream os, String encoding, - String filename) - throws MessagingException { - if (encoding == null) - return os; - else if (encoding.equalsIgnoreCase("base64")) - return new BASE64EncoderStream(os); - else if (encoding.equalsIgnoreCase("quoted-printable")) - return new QPEncoderStream(os); - else if (encoding.equalsIgnoreCase("uuencode") || - encoding.equalsIgnoreCase("x-uuencode") || - encoding.equalsIgnoreCase("x-uue")) - return new UUEncoderStream(os, filename); - else if (encoding.equalsIgnoreCase("binary") || - encoding.equalsIgnoreCase("7bit") || - encoding.equalsIgnoreCase("8bit")) - return os; - else - throw new MessagingException("Unknown encoding: " +encoding); - } - - /** - * Encode a RFC 822 "text" token into mail-safe form as per - * RFC 2047.

- * - * The given Unicode string is examined for non US-ASCII - * characters. If the string contains only US-ASCII characters, - * it is returned as-is. If the string contains non US-ASCII - * characters, it is first character-encoded using the platform's - * default charset, then transfer-encoded using either the B or - * Q encoding. The resulting bytes are then returned as a Unicode - * string containing only ASCII characters.

- * - * Note that this method should be used to encode only - * "unstructured" RFC 822 headers.

- * - * Example of usage: - *

-     *
-     *  MimeBodyPart part = ...
-     *  String rawvalue = "FooBar Mailer, Japanese version 1.1"
-     *  try {
-     *    // If we know for sure that rawvalue contains only US-ASCII
-     *    // characters, we can skip the encoding part
-     *    part.setHeader("X-mailer", MimeUtility.encodeText(rawvalue));
-     *  } catch (UnsupportedEncodingException e) {
-     *    // encoding failure
-     *  } catch (MessagingException me) {
-     *   // setHeader() failure
-     *  }
-     *
-     * 

- * - * @param text unicode string - * @return Unicode string containing only US-ASCII characters - * @exception UnsupportedEncodingException if the encoding fails - */ - public static String encodeText(String text) - throws UnsupportedEncodingException { - return encodeText(text, null, null); - } - - /** - * Encode a RFC 822 "text" token into mail-safe form as per - * RFC 2047.

- * - * The given Unicode string is examined for non US-ASCII - * characters. If the string contains only US-ASCII characters, - * it is returned as-is. If the string contains non US-ASCII - * characters, it is first character-encoded using the specified - * charset, then transfer-encoded using either the B or Q encoding. - * The resulting bytes are then returned as a Unicode string - * containing only ASCII characters.

- * - * Note that this method should be used to encode only - * "unstructured" RFC 822 headers. - * - * @param text the header value - * @param charset the charset. If this parameter is null, the - * platform's default chatset is used. - * @param encoding the encoding to be used. Currently supported - * values are "B" and "Q". If this parameter is null, then - * the "Q" encoding is used if most of characters to be - * encoded are in the ASCII charset, otherwise "B" encoding - * is used. - * @return Unicode string containing only US-ASCII characters - */ - public static String encodeText(String text, String charset, - String encoding) - throws UnsupportedEncodingException { - return encodeWord(text, charset, encoding, false); - } - - /** - * Decode "unstructured" headers, that is, headers that are defined - * as '*text' as per RFC 822.

- * - * The string is decoded using the algorithm specified in - * RFC 2047, Section 6.1.1. If the charset-conversion fails - * for any sequence, an UnsupportedEncodingException is thrown. - * If the String is not an RFC 2047 style encoded header, it is - * returned as-is

- * - * Example of usage: - *

-     *
-     *  MimeBodyPart part = ...
-     *  String rawvalue = null;
-     *  String  value = null;
-     *  try {
-     *    if ((rawvalue = part.getHeader("X-mailer")[0]) != null)
-     *      value = MimeUtility.decodeText(rawvalue);
-     *  } catch (UnsupportedEncodingException e) {
-     *      // Don't care
-     *      value = rawvalue;
-     *  } catch (MessagingException me) { }
-     *
-     *  return value;
-     *
-     * 

- * - * @param etext the possibly encoded value - * @exception UnsupportedEncodingException if the charset - * conversion failed. - */ - public static String decodeText(String etext) - throws UnsupportedEncodingException { - /* - * We look for sequences separated by "linear-white-space". - * (as per RFC 2047, Section 6.1.1) - * RFC 822 defines "linear-white-space" as SPACE | HT | CR | NL. - */ - String lwsp = " \t\n\r"; - StringTokenizer st; - - /* - * First, lets do a quick run thru the string and check - * whether the sequence "=?" exists at all. If none exists, - * we know there are no encoded-words in here and we can just - * return the string as-is, without suffering thru the later - * decoding logic. - * This handles the most common case of unencoded headers - * efficiently. - */ - if (etext.indexOf("=?") == -1) - return etext; - - // Encoded words found. Start decoding ... - - st = new StringTokenizer(etext, lwsp, true); - StringBuffer sb = new StringBuffer(); // decode buffer - StringBuffer wsb = new StringBuffer(); // white space buffer - boolean prevWasEncoded = false; - - while (st.hasMoreTokens()) { - char c; - String s = st.nextToken(); - // If whitespace, append it to the whitespace buffer - if (((c = s.charAt(0)) == ' ') || (c == '\t') || - (c == '\r') || (c == '\n')) - wsb.append(c); - else { - // Check if token is an 'encoded-word' .. - String word; - try { - word = decodeWord(s); - // Yes, this IS an 'encoded-word'. - if (!prevWasEncoded && wsb.length() > 0) { - // if the previous word was also encoded, we - // should ignore the collected whitespace. Else - // we include the whitespace as well. - sb.append(wsb); - } - prevWasEncoded = true; - } catch (ParseException pex) { - // This is NOT an 'encoded-word'. - word = s; - // possibly decode inner encoded words - if (!decodeStrict) - word = decodeInnerWords(word); - // include colleced whitespace .. - if (wsb.length() > 0) - sb.append(wsb); - prevWasEncoded = false; - } - sb.append(word); // append the actual word - wsb.setLength(0); // reset wsb for reuse - } - } - return sb.toString(); - } - - /** - * Encode a RFC 822 "word" token into mail-safe form as per - * RFC 2047.

- * - * The given Unicode string is examined for non US-ASCII - * characters. If the string contains only US-ASCII characters, - * it is returned as-is. If the string contains non US-ASCII - * characters, it is first character-encoded using the platform's - * default charset, then transfer-encoded using either the B or - * Q encoding. The resulting bytes are then returned as a Unicode - * string containing only ASCII characters.

- * - * This method is meant to be used when creating RFC 822 "phrases". - * The InternetAddress class, for example, uses this to encode - * it's 'phrase' component. - * - * @param text unicode string - * @return Array of Unicode strings containing only US-ASCII - * characters. - * @exception UnsupportedEncodingException if the encoding fails - */ - public static String encodeWord(String word) - throws UnsupportedEncodingException { - return encodeWord(word, null, null); - } - - /** - * Encode a RFC 822 "word" token into mail-safe form as per - * RFC 2047.

- * - * The given Unicode string is examined for non US-ASCII - * characters. If the string contains only US-ASCII characters, - * it is returned as-is. If the string contains non US-ASCII - * characters, it is first character-encoded using the specified - * charset, then transfer-encoded using either the B or Q encoding. - * The resulting bytes are then returned as a Unicode string - * containing only ASCII characters.

- * - * @param text unicode string - * @param charset the MIME charset - * @param encoding the encoding to be used. Currently supported - * values are "B" and "Q". If this parameter is null, then - * the "Q" encoding is used if most of characters to be - * encoded are in the ASCII charset, otherwise "B" encoding - * is used. - * @return Unicode string containing only US-ASCII characters - * @exception UnsupportedEncodingException if the encoding fails - */ - public static String encodeWord(String word, String charset, - String encoding) - throws UnsupportedEncodingException { - return encodeWord(word, charset, encoding, true); - } - - /* - * Encode the given string. The parameter 'encodingWord' should - * be true if a RFC 822 "word" token is being encoded and false if a - * RFC 822 "text" token is being encoded. This is because the - * "Q" encoding defined in RFC 2047 has more restrictions when - * encoding "word" tokens. (Sigh) - */ - private static String encodeWord(String string, String charset, - String encoding, boolean encodingWord) - throws UnsupportedEncodingException { - - // If 'string' contains only US-ASCII characters, just - // return it. - int ascii = checkAscii(string); - if (ascii == ALL_ASCII) - return string; - - // Else, apply the specified charset conversion. - String jcharset; - if (charset == null) { // use default charset - jcharset = getDefaultJavaCharset(); // the java charset - charset = getDefaultMIMECharset(); // the MIME equivalent - } else // MIME charset -> java charset - jcharset = javaCharset(charset); - - // If no transfer-encoding is specified, figure one out. - if (encoding == null) { - if (ascii != MOSTLY_NONASCII) - encoding = "Q"; - else - encoding = "B"; - } - - boolean b64; - if (encoding.equalsIgnoreCase("B")) - b64 = true; - else if (encoding.equalsIgnoreCase("Q")) - b64 = false; - else - throw new UnsupportedEncodingException( - "Unknown transfer encoding: " + encoding); - - StringBuffer outb = new StringBuffer(); // the output buffer - doEncode(string, b64, jcharset, - // As per RFC 2047, size of an encoded string should not - // exceed 75 bytes. - // 7 = size of "=?", '?', 'B'/'Q', '?', "?=" - 75 - 7 - charset.length(), // the available space - "=?" + charset + "?" + encoding + "?", // prefix - true, encodingWord, outb); - - return outb.toString(); - } - - private static void doEncode(String string, boolean b64, - String jcharset, int avail, String prefix, - boolean first, boolean encodingWord, StringBuffer buf) - throws UnsupportedEncodingException { - - // First find out what the length of the encoded version of - // 'string' would be. - byte[] bytes = string.getBytes(jcharset); - int len; - if (b64) // "B" encoding - len = BEncoderStream.encodedLength(bytes); - else // "Q" - len = QEncoderStream.encodedLength(bytes, encodingWord); - - int size; - if ((len > avail) && ((size = string.length()) > 1)) { - // If the length is greater than 'avail', split 'string' - // into two and recurse. - doEncode(string.substring(0, size/2), b64, jcharset, - avail, prefix, first, encodingWord, buf); - doEncode(string.substring(size/2, size), b64, jcharset, - avail, prefix, false, encodingWord, buf); - } else { - // length <= than 'avail'. Encode the given string - ByteArrayOutputStream os = new ByteArrayOutputStream(BUFFER_SIZE); - OutputStream eos; // the encoder - if (b64) // "B" encoding - eos = new BEncoderStream(os); - else // "Q" encoding - eos = new QEncoderStream(os, encodingWord); - - try { // do the encoding - eos.write(bytes); - eos.close(); - } catch (IOException ioex) { } - - byte[] encodedBytes = os.toByteArray(); // the encoded stuff - // Now write out the encoded (all ASCII) bytes into our - // StringBuffer - if (!first) // not the first line of this sequence - if (foldEncodedWords) - buf.append("\r\n "); // start a continuation line - else - buf.append(" "); // line will be folded later - - buf.append(prefix); - for (int i = 0; i < encodedBytes.length; i++) - buf.append((char)encodedBytes[i]); - buf.append("?="); // terminate the current sequence - } - } - - /** - * The string is parsed using the rules in RFC 2047 for parsing - * an "encoded-word". If the parse fails, a ParseException is - * thrown. Otherwise, it is transfer-decoded, and then - * charset-converted into Unicode. If the charset-conversion - * fails, an UnsupportedEncodingException is thrown.

- * - * @param eword the possibly encoded value - * @exception ParseException if the string is not an - * encoded-word as per RFC 2047. - * @exception UnsupportedEncodingException if the charset - * conversion failed. - */ - public static String decodeWord(String eword) - throws ParseException, UnsupportedEncodingException { - - if (!eword.startsWith("=?")) // not an encoded word - throw new ParseException(); - - // get charset - int start = 2; int pos; - if ((pos = eword.indexOf('?', start)) == -1) - throw new ParseException(); - String charset = javaCharset(eword.substring(start, pos)); - - // get encoding - start = pos+1; - if ((pos = eword.indexOf('?', start)) == -1) - throw new ParseException(); - String encoding = eword.substring(start, pos); - - // get encoded-sequence - start = pos+1; - if ((pos = eword.indexOf("?=", start)) == -1) - throw new ParseException(); - String word = eword.substring(start, pos); - - try { - // Extract the bytes from word - ByteArrayInputStream bis = - new ByteArrayInputStream(ASCIIUtility.getBytes(word)); - - // Get the appropriate decoder - InputStream is; - if (encoding.equalsIgnoreCase("B")) - is = new BASE64DecoderStream(bis); - else if (encoding.equalsIgnoreCase("Q")) - is = new QDecoderStream(bis); - else - throw new UnsupportedEncodingException( - "unknown encoding: " + encoding); - - // For b64 & q, size of decoded word <= size of word. So - // the decoded bytes must fit into the 'bytes' array. This - // is certainly more efficient than writing bytes into a - // ByteArrayOutputStream and then pulling out the byte[] - // from it. - int count = bis.available(); - byte[] bytes = new byte[count]; - // count is set to the actual number of decoded bytes - count = is.read(bytes, 0, count); - - // Finally, convert the decoded bytes into a String using - // the specified charset - String s = new String(bytes, 0, count, charset); - if (pos + 2 < eword.length()) { - // there's still more text in the string - String rest = eword.substring(pos + 2); - if (!decodeStrict) - rest = decodeInnerWords(rest); - s += rest; - } - return s; - } catch (UnsupportedEncodingException uex) { - // explicitly catch and rethrow this exception, otherwise - // the below IOException catch will swallow this up! - throw uex; - } catch (IOException ioex) { - // Shouldn't happen. - throw new ParseException(); - } catch (IllegalArgumentException iex) { - /* An unknown charset of the form ISO-XXX-XXX, will cause - * the JDK to throw an IllegalArgumentException ... Since the - * JDK will attempt to create a classname using this string, - * but valid classnames must not contain the character '-', - * and this results in an IllegalArgumentException, rather than - * the expected UnsupportedEncodingException. Yikes - */ - throw new UnsupportedEncodingException(); - } - } - - /** - * Look for encoded words within a word. The MIME spec doesn't - * allow this, but many broken mailers, especially Japanese mailers, - * produce such incorrect encodings. - */ - private static String decodeInnerWords(String word) - throws UnsupportedEncodingException { - int start = 0, i; - StringBuffer buf = new StringBuffer(); - while ((i = word.indexOf("=?", start)) >= 0) { - buf.append(word.substring(start, i)); - int end = word.indexOf("?=", i); - if (end < 0) - break; - String s = word.substring(i, end + 2); - try { - s = decodeWord(s); - } catch (ParseException pex) { - // ignore it, just use the original string - } - buf.append(s); - start = end + 2; - } - if (start == 0) - return word; - if (start < word.length()) - buf.append(word.substring(start)); - return buf.toString(); - } - - /** - * A utility method to quote a word, if the word contains any - * characters from the specified 'specials' list.

- * - * The HeaderTokenizer class defines two special - * sets of delimiters - MIME and RFC 822.

- * - * This method is typically used during the generation of - * RFC 822 and MIME header fields. - * - * @param word word to be quoted - * @param specials the set of special characters - * @return the possibly quoted word - * @see javax.mail.internet.HeaderTokenizer#MIME - * @see javax.mail.internet.HeaderTokenizer#RFC822 - */ - public static String quote(String word, String specials) { - int len = word.length(); - - /* - * Look for any "bad" characters, Escape and - * quote the entire string if necessary. - */ - boolean needQuoting = false; - for (int i = 0; i < len; i++) { - char c = word.charAt(i); - if (c == '"' || c == '\\' || c == '\r' || c == '\n') { - // need to escape them and then quote the whole string - StringBuffer sb = new StringBuffer(len + 3); - sb.append('"'); - sb.append(word.substring(0, i)); - int lastc = 0; - for (int j = i; j < len; j++) { - char cc = word.charAt(j); - if ((cc == '"') || (cc == '\\') || - (cc == '\r') || (cc == '\n')) - if (cc == '\n' && lastc == '\r') - ; // do nothing, CR was already escaped - else - sb.append('\\'); // Escape the character - sb.append(cc); - lastc = cc; - } - sb.append('"'); - return sb.toString(); - } else if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0) - // These characters cause the string to be quoted - needQuoting = true; - } - - if (needQuoting) { - StringBuffer sb = new StringBuffer(len + 2); - sb.append('"').append(word).append('"'); - return sb.toString(); - } else - return word; - } - - /** - * Fold a string at linear whitespace so that each line is no longer - * than 76 characters, if possible. If there are more than 76 - * non-whitespace characters consecutively, the string is folded at - * the first whitespace after that sequence. The parameter - * used indicates how many characters have been used in - * the current line; it is usually the length of the header name.

- * - * Note that line breaks in the string aren't escaped; they probably - * should be. - * - * @param used characters used in line so far - * @param s the string to fold - * @return the folded string - */ - /*public*/ static String fold(int used, String s) { - if (!foldText) - return s; - - int end; - char c; - // Strip trailing spaces - for (end = s.length() - 1; end >= 0; end--) { - c = s.charAt(end); - if (c != ' ' && c != '\t') - break; - } - if (end != s.length() - 1) - s = s.substring(0, end + 1); - - // if the string fits now, just return it - if (used + s.length() <= 76) - return s; - - // have to actually fold the string - StringBuffer sb = new StringBuffer(s.length() + 4); - char lastc = 0; - while (used + s.length() > 76) { - int lastspace = -1; - for (int i = 0; i < s.length(); i++) { - if (lastspace != -1 && used + i > 76) - break; - c = s.charAt(i); - if (c == ' ' || c == '\t') - if (!(lastc == ' ' || lastc == '\t')) - lastspace = i; - lastc = c; - } - if (lastspace == -1) { - // no space, use the whole thing - sb.append(s); - s = ""; - used = 0; - break; - } - sb.append(s.substring(0, lastspace)); - sb.append("\r\n"); - lastc = s.charAt(lastspace); - sb.append(lastc); - s = s.substring(lastspace + 1); - used = 1; - } - sb.append(s); - return sb.toString(); - } - - /** - * Unfold a folded header. Any line breaks that aren't escaped and - * are followed by whitespace are removed. - * - * @param s the string to unfold - * @return the unfolded string - */ - /*public*/ static String unfold(String s) { - if (!foldText) - return s; - - StringBuffer sb = null; - int i; - while ((i = indexOfAny(s, "\r\n")) >= 0) { - int start = i; - int l = s.length(); - i++; // skip CR or NL - if (i < l && s.charAt(i - 1) == '\r' && s.charAt(i) == '\n') - i++; // skip LF - if (start == 0 || s.charAt(start - 1) != '\\') { - char c; - // if next line starts with whitespace, skip all of it - // XXX - always has to be true? - if (i < l && ((c = s.charAt(i)) == ' ' || c == '\t')) { - i++; // skip whitespace - while (i < l && ((c = s.charAt(i)) == ' ' || c == '\t')) - i++; - if (sb == null) - sb = new StringBuffer(s.length()); - if (start != 0) { - sb.append(s.substring(0, start)); - sb.append(' '); - } - s = s.substring(i); - continue; - } - // it's not a continuation line, just leave it in - if (sb == null) - sb = new StringBuffer(s.length()); - sb.append(s.substring(0, i)); - s = s.substring(i); - } else { - // there's a backslash at "start - 1" - // strip it out, but leave in the line break - if (sb == null) - sb = new StringBuffer(s.length()); - sb.append(s.substring(0, start - 1)); - sb.append(s.substring(start, i)); - s = s.substring(i); - } - } - if (sb != null) { - sb.append(s); - return sb.toString(); - } else - return s; - } - - /** - * Return the first index of any of the characters in "any" in "s", - * or -1 if none are found. - * - * This should be a method on String. - */ - private static int indexOfAny(String s, String any) { - return indexOfAny(s, any, 0); - } - - private static int indexOfAny(String s, String any, int start) { - try { - int len = s.length(); - for (int i = start; i < len; i++) { - if (any.indexOf(s.charAt(i)) >= 0) - return i; - } - return -1; - } catch (StringIndexOutOfBoundsException e) { - return -1; - } - } - - /** - * Convert a MIME charset name into a valid Java charset name.

- * - * @param charset the MIME charset name - * @return the Java charset equivalent. If a suitable mapping is - * not available, the passed in charset is itself returned. - */ - public static String javaCharset(String charset) { - if (mime2java == null || charset == null) - // no mapping table, or charset parameter is null - return charset; - - String alias = (String)mime2java.get(charset.toLowerCase()); - return alias == null ? charset : alias; - } - - /** - * Convert a java charset into its MIME charset name.

- * - * Note that a future version of JDK (post 1.2) might provide - * this functionality, in which case, we may deprecate this - * method then. - * - * @param charset the JDK charset - * @return the MIME/IANA equivalent. If a mapping - * is not possible, the passed in charset itself - * is returned. - * @since JavaMail 1.1 - */ - public static String mimeCharset(String charset) { - if (java2mime == null || charset == null) - // no mapping table or charset param is null - return charset; - - String alias = (String)java2mime.get(charset.toLowerCase()); - return alias == null ? charset : alias; - } - - private static String defaultJavaCharset; - private static String defaultMIMECharset; - - /** - * Get the default charset corresponding to the system's current - * default locale. If the System property mail.mime.charset - * is set, a system charset corresponding to this MIME charset will be - * returned.

- * - * @return the default charset of the system's default locale, - * as a Java charset. (NOT a MIME charset) - * @since JavaMail 1.1 - */ - public static String getDefaultJavaCharset() { - if (defaultJavaCharset == null) { - /* - * If mail.mime.charset is set, it controls the default - * Java charset as well. - */ - String mimecs = null; - - mimecs = SAAJUtil.getSystemProperty("mail.mime.charset"); - - if (mimecs != null && mimecs.length() > 0) { - defaultJavaCharset = javaCharset(mimecs); - return defaultJavaCharset; - } - - try { - defaultJavaCharset = System.getProperty("file.encoding", - "8859_1"); - } catch (SecurityException sex) { - - class NullInputStream extends InputStream { - public int read() { - return 0; - } - } - InputStreamReader reader = - new InputStreamReader(new NullInputStream()); - defaultJavaCharset = reader.getEncoding(); - if (defaultJavaCharset == null) - defaultJavaCharset = "8859_1"; - } - } - - return defaultJavaCharset; - } - - /* - * Get the default MIME charset for this locale. - */ - static String getDefaultMIMECharset() { - if (defaultMIMECharset == null) { - defaultMIMECharset = SAAJUtil.getSystemProperty("mail.mime.charset"); - } - if (defaultMIMECharset == null) - defaultMIMECharset = mimeCharset(getDefaultJavaCharset()); - return defaultMIMECharset; - } - - // Tables to map MIME charset names to Java names and vice versa. - // XXX - Should eventually use J2SE 1.4 java.nio.charset.Charset - private static Hashtable mime2java; - private static Hashtable java2mime; - - static { - java2mime = new Hashtable(40); - mime2java = new Hashtable(10); - - try { - // Use this class's classloader to load the mapping file - // XXX - we should use SecuritySupport, but it's in another package - InputStream is = - com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility.class.getResourceAsStream( - "/META-INF/javamail.charset.map"); - - if (is != null) { - is = new LineInputStream(is); - - // Load the JDK-to-MIME charset mapping table - loadMappings((LineInputStream)is, java2mime); - - // Load the MIME-to-JDK charset mapping table - loadMappings((LineInputStream)is, mime2java); - } - } catch (Exception ex) { } - - // If we didn't load the tables, e.g., because we didn't have - // permission, load them manually. The entries here should be - // the same as the default javamail.charset.map. - if (java2mime.isEmpty()) { - java2mime.put("8859_1", "ISO-8859-1"); - java2mime.put("iso8859_1", "ISO-8859-1"); - java2mime.put("ISO8859-1", "ISO-8859-1"); - - java2mime.put("8859_2", "ISO-8859-2"); - java2mime.put("iso8859_2", "ISO-8859-2"); - java2mime.put("ISO8859-2", "ISO-8859-2"); - - java2mime.put("8859_3", "ISO-8859-3"); - java2mime.put("iso8859_3", "ISO-8859-3"); - java2mime.put("ISO8859-3", "ISO-8859-3"); - - java2mime.put("8859_4", "ISO-8859-4"); - java2mime.put("iso8859_4", "ISO-8859-4"); - java2mime.put("ISO8859-4", "ISO-8859-4"); - - java2mime.put("8859_5", "ISO-8859-5"); - java2mime.put("iso8859_5", "ISO-8859-5"); - java2mime.put("ISO8859-5", "ISO-8859-5"); - - java2mime.put("8859_6", "ISO-8859-6"); - java2mime.put("iso8859_6", "ISO-8859-6"); - java2mime.put("ISO8859-6", "ISO-8859-6"); - - java2mime.put("8859_7", "ISO-8859-7"); - java2mime.put("iso8859_7", "ISO-8859-7"); - java2mime.put("ISO8859-7", "ISO-8859-7"); - - java2mime.put("8859_8", "ISO-8859-8"); - java2mime.put("iso8859_8", "ISO-8859-8"); - java2mime.put("ISO8859-8", "ISO-8859-8"); - - java2mime.put("8859_9", "ISO-8859-9"); - java2mime.put("iso8859_9", "ISO-8859-9"); - java2mime.put("ISO8859-9", "ISO-8859-9"); - - java2mime.put("SJIS", "Shift_JIS"); - java2mime.put("MS932", "Shift_JIS"); - java2mime.put("JIS", "ISO-2022-JP"); - java2mime.put("ISO2022JP", "ISO-2022-JP"); - java2mime.put("EUC_JP", "euc-jp"); - java2mime.put("KOI8_R", "koi8-r"); - java2mime.put("EUC_CN", "euc-cn"); - java2mime.put("EUC_TW", "euc-tw"); - java2mime.put("EUC_KR", "euc-kr"); - } - if (mime2java.isEmpty()) { - mime2java.put("iso-2022-cn", "ISO2022CN"); - mime2java.put("iso-2022-kr", "ISO2022KR"); - mime2java.put("utf-8", "UTF8"); - mime2java.put("utf8", "UTF8"); - mime2java.put("ja_jp.iso2022-7", "ISO2022JP"); - mime2java.put("ja_jp.eucjp", "EUCJIS"); - mime2java.put("euc-kr", "KSC5601"); - mime2java.put("euckr", "KSC5601"); - mime2java.put("us-ascii", "ISO-8859-1"); - mime2java.put("x-us-ascii", "ISO-8859-1"); - } - } - - private static void loadMappings(LineInputStream is, Hashtable table) { - String currLine; - - while (true) { - try { - currLine = is.readLine(); - } catch (IOException ioex) { - break; // error in reading, stop - } - - if (currLine == null) // end of file, stop - break; - if (currLine.startsWith("--") && currLine.endsWith("--")) - // end of this table - break; - - // ignore empty lines and comments - if (currLine.trim().length() == 0 || currLine.startsWith("#")) - continue; - - // A valid entry is of the form - // where, := SPACE | HT. Parse this - StringTokenizer tk = new StringTokenizer(currLine, " \t"); - try { - String key = tk.nextToken(); - String value = tk.nextToken(); - table.put(key.toLowerCase(), value); - } catch (NoSuchElementException nex) { } - } - } - - static final int ALL_ASCII = 1; - static final int MOSTLY_ASCII = 2; - static final int MOSTLY_NONASCII = 3; - - /** - * Check if the given string contains non US-ASCII characters. - * @param s string - * @return ALL_ASCII if all characters in the string - * belong to the US-ASCII charset. MOSTLY_ASCII - * if more than half of the available characters - * are US-ASCII characters. Else MOSTLY_NONASCII. - */ - static int checkAscii(String s) { - int ascii = 0, non_ascii = 0; - int l = s.length(); - - for (int i = 0; i < l; i++) { - if (nonascii((int)s.charAt(i))) // non-ascii - non_ascii++; - else - ascii++; - } - - if (non_ascii == 0) - return ALL_ASCII; - if (ascii > non_ascii) - return MOSTLY_ASCII; - - return MOSTLY_NONASCII; - } - - /** - * Check if the given byte array contains non US-ASCII characters. - * @param b byte array - * @return ALL_ASCII if all characters in the string - * belong to the US-ASCII charset. MOSTLY_ASCII - * if more than half of the available characters - * are US-ASCII characters. Else MOSTLY_NONASCII. - * - * XXX - this method is no longer used - */ - static int checkAscii(byte[] b) { - int ascii = 0, non_ascii = 0; - - for (int i=0; i < b.length; i++) { - // The '&' operator automatically causes b[i] to be promoted - // to an int, and we mask out the higher bytes in the int - // so that the resulting value is not a negative integer. - if (nonascii(b[i] & 0xff)) // non-ascii - non_ascii++; - else - ascii++; - } - - if (non_ascii == 0) - return ALL_ASCII; - if (ascii > non_ascii) - return MOSTLY_ASCII; - - return MOSTLY_NONASCII; - } - - /** - * Check if the given input stream contains non US-ASCII characters. - * Upto max bytes are checked. If max is - * set to ALL, then all the bytes available in this - * input stream are checked. If breakOnNonAscii is true - * the check terminates when the first non-US-ASCII character is - * found and MOSTLY_NONASCII is returned. Else, the check continues - * till max bytes or till the end of stream. - * - * @param is the input stream - * @param max maximum bytes to check for. The special value - * ALL indicates that all the bytes in this input - * stream must be checked. - * @param breakOnNonAscii if true, then terminate the - * the check when the first non-US-ASCII character - * is found. - * @return ALL_ASCII if all characters in the string - * belong to the US-ASCII charset. MOSTLY_ASCII - * if more than half of the available characters - * are US-ASCII characters. Else MOSTLY_NONASCII. - */ - static int checkAscii(InputStream is, int max, boolean breakOnNonAscii) { - int ascii = 0, non_ascii = 0; - int len; - int block = 4096; - int linelen = 0; - boolean longLine = false, badEOL = false; - boolean checkEOL = encodeEolStrict && breakOnNonAscii; - byte buf[] = null; - if (max != 0) { - block = (max == ALL) ? 4096 : Math.min(max, 4096); - buf = new byte[block]; - } - while (max != 0) { - try { - if ((len = is.read(buf, 0, block)) == -1) - break; - int lastb = 0; - for (int i = 0; i < len; i++) { - // The '&' operator automatically causes b[i] to - // be promoted to an int, and we mask out the higher - // bytes in the int so that the resulting value is - // not a negative integer. - int b = buf[i] & 0xff; - if (checkEOL && - ((lastb == '\r' && b != '\n') || - (lastb != '\r' && b == '\n'))) - badEOL = true; - if (b == '\r' || b == '\n') - linelen = 0; - else { - linelen++; - if (linelen > 998) // 1000 - CRLF - longLine = true; - } - if (nonascii(b)) { // non-ascii - if (breakOnNonAscii) // we are done - return MOSTLY_NONASCII; - else - non_ascii++; - } else - ascii++; - lastb = b; - } - } catch (IOException ioex) { - break; - } - if (max != ALL) - max -= len; - } - - if (max == 0 && breakOnNonAscii) - // We have been told to break on the first non-ascii character. - // We haven't got any non-ascii character yet, but then we - // have not checked all of the available bytes either. So we - // cannot say for sure that this input stream is ALL_ASCII, - // and hence we must play safe and return MOSTLY_NONASCII - - return MOSTLY_NONASCII; - - if (non_ascii == 0) { // no non-us-ascii characters so far - // If we're looking at non-text data, and we saw CR without LF - // or vice versa, consider this mostly non-ASCII so that it - // will be base64 encoded (since the quoted-printable encoder - // doesn't encode this case properly). - if (badEOL) - return MOSTLY_NONASCII; - // if we've seen a long line, we degrade to mostly ascii - else if (longLine) - return MOSTLY_ASCII; - else - return ALL_ASCII; - } - if (ascii > non_ascii) // mostly ascii - return MOSTLY_ASCII; - return MOSTLY_NONASCII; - } - - static final boolean nonascii(int b) { - return b >= 0177 || (b < 040 && b != '\r' && b != '\n' && b != '\t'); - } -} - -/** - * An OutputStream that determines whether the data written to - * it is all ASCII, mostly ASCII, or mostly non-ASCII. - */ -class AsciiOutputStream extends OutputStream { - private boolean breakOnNonAscii; - private int ascii = 0, non_ascii = 0; - private int linelen = 0; - private boolean longLine = false; - private boolean badEOL = false; - private boolean checkEOL = false; - private int lastb = 0; - private int ret = 0; - - public AsciiOutputStream(boolean breakOnNonAscii, boolean encodeEolStrict) { - this.breakOnNonAscii = breakOnNonAscii; - checkEOL = encodeEolStrict && breakOnNonAscii; - } - - public void write(int b) throws IOException { - check(b); - } - - public void write(byte b[]) throws IOException { - write(b, 0, b.length); - } - - public void write(byte b[], int off, int len) throws IOException { - len += off; - for (int i = off; i < len ; i++) - check(b[i]); - } - - private final void check(int b) throws IOException { - b &= 0xff; - if (checkEOL && - ((lastb == '\r' && b != '\n') || (lastb != '\r' && b == '\n'))) - badEOL = true; - if (b == '\r' || b == '\n') - linelen = 0; - else { - linelen++; - if (linelen > 998) // 1000 - CRLF - longLine = true; - } - if (MimeUtility.nonascii(b)) { // non-ascii - non_ascii++; - if (breakOnNonAscii) { // we are done - ret = MimeUtility.MOSTLY_NONASCII; - throw new EOFException(); - } - } else - ascii++; - lastb = b; - } - - /** - * Return ASCII-ness of data stream. - */ - public int getAscii() { - if (ret != 0) - return ret; - // If we're looking at non-text data, and we saw CR without LF - // or vice versa, consider this mostly non-ASCII so that it - // will be base64 encoded (since the quoted-printable encoder - // doesn't encode this case properly). - if (badEOL) - return MimeUtility.MOSTLY_NONASCII; - else if (non_ascii == 0) { // no non-us-ascii characters so far - // if we've seen a long line, we degrade to mostly ascii - if (longLine) - return MimeUtility.MOSTLY_ASCII; - else - return MimeUtility.ALL_ASCII; - } - if (ascii > non_ascii) // mostly ascii - return MimeUtility.MOSTLY_ASCII; - return MimeUtility.MOSTLY_NONASCII; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParameterList.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParameterList.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,237 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)ParameterList.java 1.10 03/02/12 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; - -/** - * This class holds MIME parameters (attribute-value pairs). - * - * @version 1.10, 03/02/12 - * @author John Mani - */ - -public final class ParameterList { - - private final HashMap list; - - /** - * No-arg Constructor. - */ - public ParameterList() { - this.list = new HashMap(); - } - - private ParameterList(HashMap m) { - this.list = m; - } - - /** - * Constructor that takes a parameter-list string. The String - * is parsed and the parameters are collected and stored internally. - * A ParseException is thrown if the parse fails. - * Note that an empty parameter-list string is valid and will be - * parsed into an empty ParameterList. - * - * @param s the parameter-list string. - * @exception ParseException if the parse fails. - */ - public ParameterList(String s) throws ParseException { - HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME); - HeaderTokenizer.Token tk; - int type; - String name; - - list = new HashMap(); - while (true) { - tk = h.next(); - type = tk.getType(); - - if (type == HeaderTokenizer.Token.EOF) // done - return; - - if ((char)type == ';') { - // expect parameter name - tk = h.next(); - // tolerate trailing semicolon, even though it violates the spec - if (tk.getType() == HeaderTokenizer.Token.EOF) - return; - // parameter name must be a MIME Atom - if (tk.getType() != HeaderTokenizer.Token.ATOM) - throw new ParseException(); - name = tk.getValue().toLowerCase(); - - // expect '=' - tk = h.next(); - if ((char)tk.getType() != '=') - throw new ParseException(); - - // expect parameter value - tk = h.next(); - type = tk.getType(); - // parameter value must be a MIME Atom or Quoted String - if (type != HeaderTokenizer.Token.ATOM && - type != HeaderTokenizer.Token.QUOTEDSTRING) - throw new ParseException(); - - list.put(name, tk.getValue()); - } else - throw new ParseException(); - } - } - - /** - * Return the number of parameters in this list. - * - * @return number of parameters. - */ - public int size() { - return list.size(); - } - - /** - * Returns the value of the specified parameter. Note that - * parameter names are case-insensitive. - * - * @param name parameter name. - * @return Value of the parameter. Returns - * null if the parameter is not - * present. - */ - public String get(String name) { - return (String)list.get(name.trim().toLowerCase()); - } - - /** - * Set a parameter. If this parameter already exists, it is - * replaced by this new value. - * - * @param name name of the parameter. - * @param value value of the parameter. - */ - public void set(String name, String value) { - list.put(name.trim().toLowerCase(), value); - } - - /** - * Removes the specified parameter from this ParameterList. - * This method does nothing if the parameter is not present. - * - * @param name name of the parameter. - */ - public void remove(String name) { - list.remove(name.trim().toLowerCase()); - } - - /** - * Return an enumeration of the names of all parameters in this - * list. - * - * @return Enumeration of all parameter names in this list. - */ - public Iterator getNames() { - return list.keySet().iterator(); - } - - - /** - * Convert this ParameterList into a MIME String. If this is - * an empty list, an empty string is returned. - * - * @return String - */ - public String toString() { - return toString(0); - } - - /** - * Convert this ParameterList into a MIME String. If this is - * an empty list, an empty string is returned. - * - * The 'used' parameter specifies the number of character positions - * already taken up in the field into which the resulting parameter - * list is to be inserted. It's used to determine where to fold the - * resulting parameter list. - * - * @param used number of character positions already used, in - * the field into which the parameter list is to - * be inserted. - * @return String - */ - public String toString(int used) { - StringBuffer sb = new StringBuffer(); - Iterator itr = list.entrySet().iterator(); - - while (itr.hasNext()) { - Map.Entry e = (Map.Entry)itr.next(); - String name = (String)e.getKey(); - String value = quote((String)e.getValue()); - sb.append("; "); - used += 2; - int len = name.length() + value.length() + 1; - if (used + len > 76) { // overflows ... - sb.append("\r\n\t"); // .. start new continuation line - used = 8; // account for the starting char - } - sb.append(name).append('='); - used += name.length() + 1; - if (used + value.length() > 76) { // still overflows ... - // have to fold value - String s = MimeUtility.fold(used, value); - sb.append(s); - int lastlf = s.lastIndexOf('\n'); - if (lastlf >= 0) // always true - used += s.length() - lastlf - 1; - else - used += s.length(); - } else { - sb.append(value); - used += value.length(); - } - } - - return sb.toString(); - } - - // Quote a parameter value token if required. - private String quote(String value) { - if ("".equals(value)) - return "\"\""; - return MimeUtility.quote(value, HeaderTokenizer.MIME); - } - - public ParameterList copy() { - return new ParameterList((HashMap)list.clone()); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParseException.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParseException.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)ParseException.java 1.3 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; - -/** - * The exception thrown due to an error in parsing RFC822 - * or MIME headers - * - * @author John Mani - */ - -public class ParseException extends MessagingException { - - /** - * Constructs a ParseException with no detail message. - */ - public ParseException() { - super(); - } - - /** - * Constructs a ParseException with the specified detail message. - * @param s the detail message - */ - public ParseException(String s) { - super(s); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/SharedInputStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/SharedInputStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)SharedInputStream.java 1.2 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - -import java.io.InputStream; -import java.io.OutputStream; - -// SAAJ doesn't utilize this, but I think it should. -/** - * An InputStream that is backed by data that can be shared by multiple - * readers may implement this interface. This allows users of such an - * InputStream to determine the current positionin the InputStream, and - * to create new InputStreams representing a subset of the data in the - * original InputStream. The new InputStream will access the same - * underlying data as the original, without copying the data. - * - * @version 1.2, 02/03/27 - * @author Bill Shannon - * @since JavaMail 1.2 - */ - -public interface SharedInputStream { - /** - * Return the current position in the InputStream, as an - * offset from the beginning of the InputStream. - * - * @return the current position - */ - public long getPosition(); - - /** - * Return a new InputStream representing a subset of the data - * from this InputStream, starting at start (inclusive) - * up to end (exclusive). start must be - * non-negative. If end is -1, the new stream ends - * at the same place as this stream. The returned InputStream - * will also implement the SharedInputStream interface. - * - * @param start the starting position - * @param end the ending position + 1 - * @return the new stream - */ - public InputStream newStream(long start, long end); - - /** - * Writes the specified region to another {@link OutputStream}. - */ - public void writeTo(long start,long end, OutputStream out); -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/UniqueValue.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/UniqueValue.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)UniqueValue.java 1.6 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; - - -/** - * This is a utility class that generates unique values. The generated - * String contains only US-ASCII characters and hence is safe for use - * in RFC822 headers.

- * - * This is a package private class. - * - * @author John Mani - * @author Max Spivak - * @author Bill Shannon - */ - -class UniqueValue { - /** - * A global part number. Access is not synchronized because the - * value is only one part of the unique value and so doesn't need - * to be accurate. - */ - private static int part = 0; - - /** - * Get a unique value for use in a multipart boundary string. - * - * This implementation generates it by concatenating a global - * part number, a newly created object's hashCode(), - * and the current time (in milliseconds). - */ - public static String getUniqueBoundaryValue() { - StringBuffer s = new StringBuffer(); - - // Unique string is ----=_Part__. - s.append("----=_Part_").append(part++).append("_"). - append(s.hashCode()).append('.'). - append(System.currentTimeMillis()); - return s.toString(); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/ASCIIUtility.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/ASCIIUtility.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,155 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)ASCIIUtility.java 1.9 02/03/27 - */ - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.util; - -import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; - -import java.io.*; - -public class ASCIIUtility { - - // Private constructor so that this class is not instantiated - private ASCIIUtility() { } - - - /** - * Convert the bytes within the specified range of the given byte - * array into a signed integer in the given radix . The range extends - * from start till, but not including end.

- * - * Based on java.lang.Integer.parseInt() - */ - public static int parseInt(byte[] b, int start, int end, int radix) - throws NumberFormatException { - if (b == null) - throw new NumberFormatException("null"); - - int result = 0; - boolean negative = false; - int i = start; - int limit; - int multmin; - int digit; - - if (end > start) { - if (b[i] == '-') { - negative = true; - limit = Integer.MIN_VALUE; - i++; - } else { - limit = -Integer.MAX_VALUE; - } - multmin = limit / radix; - if (i < end) { - digit = Character.digit((char)b[i++], radix); - if (digit < 0) { - throw new NumberFormatException( - "illegal number: " + toString(b, start, end) - ); - } else { - result = -digit; - } - } - while (i < end) { - // Accumulating negatively avoids surprises near MAX_VALUE - digit = Character.digit((char)b[i++], radix); - if (digit < 0) { - throw new NumberFormatException("illegal number"); - } - if (result < multmin) { - throw new NumberFormatException("illegal number"); - } - result *= radix; - if (result < limit + digit) { - throw new NumberFormatException("illegal number"); - } - result -= digit; - } - } else { - throw new NumberFormatException("illegal number"); - } - if (negative) { - if (i > start + 1) { - return result; - } else { /* Only got "-" */ - throw new NumberFormatException("illegal number"); - } - } else { - return -result; - } - } - - /** - * Convert the bytes within the specified range of the given byte - * array into a String. The range extends from start - * till, but not including end.

- */ - public static String toString(byte[] b, int start, int end) { - int size = end - start; - char[] theChars = new char[size]; - - for (int i = 0, j = start; i < size; ) - theChars[i++] = (char)(b[j++]&0xff); - - return new String(theChars); - } - - public static byte[] getBytes(String s) { - char [] chars= s.toCharArray(); - int size = chars.length; - byte[] bytes = new byte[size]; - - for (int i = 0; i < size;) - bytes[i] = (byte) chars[i++]; - return bytes; - } - - /** - * - * @deprecated - * this is an expensive operation that require an additional - * buffer reallocation just to get the array of an exact size. - * Unless you absolutely need the exact size array, don't use this. - * Use {@link ByteOutputStream} and {@link ByteOutputStream#write(InputStream)}. - */ - public static byte[] getBytes(InputStream is) throws IOException { - ByteOutputStream bos = null; - try { - bos = new ByteOutputStream(); - bos.write(is); - } finally { - if (bos != null) - bos.close(); - is.close(); - } - return bos.toByteArray(); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64DecoderStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64DecoderStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,256 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)BASE64DecoderStream.java 1.8 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.util; - -import java.io.*; - -/** - * This class implements a BASE64 Decoder. It is implemented as - * a FilterInputStream, so one can just wrap this class around - * any input stream and read bytes from this filter. The decoding - * is done as the bytes are read out. - * - * @author John Mani - * @author Bill Shannon - */ - -public class BASE64DecoderStream extends FilterInputStream { - private byte[] buffer; // cache of decoded bytes - private int bufsize = 0; // size of the cache - private int index = 0; // index into the cache - - /** - * Create a BASE64 decoder that decodes the specified input stream - * @param in the input stream - */ - public BASE64DecoderStream(InputStream in) { - super(in); - buffer = new byte[3]; - } - - /** - * Read the next decoded byte from this input stream. The byte - * is returned as an int in the range 0 - * to 255. If no byte is available because the end of - * the stream has been reached, the value -1 is returned. - * This method blocks until input data is available, the end of the - * stream is detected, or an exception is thrown. - * - * @return next byte of data, or -1 if the end of the - * stream is reached. - * @exception IOException if an I/O error occurs. - * @see java.io.FilterInputStream#in - */ - public int read() throws IOException { - if (index >= bufsize) { - decode(); // Fills up buffer - if (bufsize == 0) // buffer is empty - return -1; - index = 0; // reset index into buffer - } - return buffer[index++] & 0xff; // Zero off the MSB - } - - /** - * Reads up to len decoded bytes of data from this input stream - * into an array of bytes. This method blocks until some input is - * available. - *

- * - * @param buf the buffer into which the data is read. - * @param off the start offset of the data. - * @param len the maximum number of bytes read. - * @return the total number of bytes read into the buffer, or - * -1 if there is no more data because the end of - * the stream has been reached. - * @exception IOException if an I/O error occurs. - */ - public int read(byte[] buf, int off, int len) throws IOException { - int i, c; - for (i = 0; i < len; i++) { - if ((c = read()) == -1) { - if (i == 0) // At end of stream, so we should - i = -1; // return -1 , NOT 0. - break; - } - buf[off+i] = (byte)c; - } - - return i; - } - - /** - * Tests if this input stream supports marks. Currently this class - * does not support marks - */ - public boolean markSupported() { - return false; // Maybe later .. - } - - /** - * Returns the number of bytes that can be read from this input - * stream without blocking. However, this figure is only - * a close approximation in case the original encoded stream - * contains embedded CRLFs; since the CRLFs are discarded, not decoded - */ - public int available() throws IOException { - // This is only an estimate, since in.available() - // might include CRLFs too .. - return ((in.available() * 3)/4 + (bufsize-index)); - } - - /** - * This character array provides the character to value map - * based on RFC1521. - */ - private final static char pem_array[] = { - 'A','B','C','D','E','F','G','H', // 0 - 'I','J','K','L','M','N','O','P', // 1 - 'Q','R','S','T','U','V','W','X', // 2 - 'Y','Z','a','b','c','d','e','f', // 3 - 'g','h','i','j','k','l','m','n', // 4 - 'o','p','q','r','s','t','u','v', // 5 - 'w','x','y','z','0','1','2','3', // 6 - '4','5','6','7','8','9','+','/' // 7 - }; - - private final static byte pem_convert_array[] = new byte[256]; - - static { - for (int i = 0; i < 255; i++) - pem_convert_array[i] = -1; - for(int i = 0; i < pem_array.length; i++) - pem_convert_array[pem_array[i]] = (byte) i; - } - - /* The decoder algorithm */ - private byte[] decode_buffer = new byte[4]; - private void decode() throws IOException { - bufsize = 0; - /* - * We need 4 valid base64 characters before we start decoding. - * We skip anything that's not a valid base64 character (usually - * just CRLF). - */ - int got = 0; - while (got < 4) { - int i = in.read(); - if (i == -1) { - if (got == 0) - return; // EOF before any data is ok - throw new IOException("Error in encoded stream, got " + got); - } - if (i >= 0 && i < 256 && i == '=' || pem_convert_array[i] != -1) - decode_buffer[got++] = (byte)i; - } - - byte a, b; - a = pem_convert_array[decode_buffer[0] & 0xff]; - b = pem_convert_array[decode_buffer[1] & 0xff]; - // The first decoded byte - buffer[bufsize++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3)); - - if (decode_buffer[2] == '=') // End of this BASE64 encoding - return; - a = b; - b = pem_convert_array[decode_buffer[2] & 0xff]; - // The second decoded byte - buffer[bufsize++] = (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf)); - - if (decode_buffer[3] == '=') // End of this BASE64 encoding - return; - a = b; - b = pem_convert_array[decode_buffer[3] & 0xff]; - // The third decoded byte - buffer[bufsize++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f)); - } - - /** - * Base64 decode a byte array. No line breaks are allowed. - * This method is suitable for short strings, such as those - * in the IMAP AUTHENTICATE protocol, but not to decode the - * entire content of a MIME part. - * - * NOTE: inbuf may only contain valid base64 characters. - * Whitespace is not ignored. - */ - public static byte[] decode(byte[] inbuf) { - int size = (inbuf.length / 4) * 3; - if (size == 0) - return inbuf; - - if (inbuf[inbuf.length - 1] == '=') { - size--; - if (inbuf[inbuf.length - 2] == '=') - size--; - } - byte[] outbuf = new byte[size]; - - int inpos = 0, outpos = 0; - size = inbuf.length; - while (size > 0) { - byte a, b; - a = pem_convert_array[inbuf[inpos++] & 0xff]; - b = pem_convert_array[inbuf[inpos++] & 0xff]; - // The first decoded byte - outbuf[outpos++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3)); - - if (inbuf[inpos] == '=') // End of this BASE64 encoding - return outbuf; - a = b; - b = pem_convert_array[inbuf[inpos++] & 0xff]; - // The second decoded byte - outbuf[outpos++] = (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf)); - - if (inbuf[inpos] == '=') // End of this BASE64 encoding - return outbuf; - a = b; - b = pem_convert_array[inbuf[inpos++] & 0xff]; - // The third decoded byte - outbuf[outpos++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f)); - size -= 4; - } - return outbuf; - } - - /*** begin TEST program *** - public static void main(String argv[]) throws Exception { - FileInputStream infile = new FileInputStream(argv[0]); - BASE64DecoderStream decoder = new BASE64DecoderStream(infile); - int c; - - while ((c = decoder.read()) != -1) - System.out.print((char)c); - System.out.flush(); - } - *** end TEST program ***/ -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64EncoderStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64EncoderStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,244 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)BASE64EncoderStream.java 1.6 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.util; - -import java.io.*; - -/** - * This class implements a BASE64 Encoder. It is implemented as - * a FilterOutputStream, so one can just wrap this class around - * any output stream and write bytes into this filter. The Encoding - * is done as the bytes are written out. - * - * @author John Mani - * @author Bill Shannon - */ - -public class BASE64EncoderStream extends FilterOutputStream { - private byte[] buffer; // cache of bytes that are yet to be encoded - private int bufsize = 0; // size of the cache - private int count = 0; // number of bytes that have been output - private int bytesPerLine; // number of bytes per line - - /** - * Create a BASE64 encoder that encodes the specified input stream - * @param out the output stream - * @param bytesPerLine number of bytes per line. The encoder inserts - * a CRLF sequence after the specified number of bytes - */ - public BASE64EncoderStream(OutputStream out, int bytesPerLine) { - super(out); - buffer = new byte[3]; - this.bytesPerLine = bytesPerLine; - } - - /** - * Create a BASE64 encoder that encodes the specified input stream. - * Inserts the CRLF sequence after outputting 76 bytes. - * @param out the output stream - */ - public BASE64EncoderStream(OutputStream out) { - this(out, 76); - } - - /** - * Encodes len bytes from the specified - * byte array starting at offset off to - * this output stream. - * - * @param b the data. - * @param off the start offset in the data. - * @param len the number of bytes to write. - * @exception IOException if an I/O error occurs. - */ - public void write(byte[] b, int off, int len) throws IOException { - for (int i = 0; i < len; i++) - write(b[off + i]); - } - - /** - * Encodes b.length bytes to this output stream. - * @param b the data to be written. - * @exception IOException if an I/O error occurs. - */ - public void write(byte[] b) throws IOException { - write(b, 0, b.length); - } - - /** - * Encodes the specified byte to this output stream. - * @param c the byte. - * @exception IOException if an I/O error occurs. - */ - public void write(int c) throws IOException { - buffer[bufsize++] = (byte)c; - if (bufsize == 3) { // Encoding unit = 3 bytes - encode(); - bufsize = 0; - } - } - - /** - * Flushes this output stream and forces any buffered output bytes - * to be encoded out to the stream. - * @exception IOException if an I/O error occurs. - */ - public void flush() throws IOException { - if (bufsize > 0) { // If there's unencoded characters in the buffer .. - encode(); // .. encode them - bufsize = 0; - } - out.flush(); - } - - /** - * Forces any buffered output bytes to be encoded out to the stream - * and closes this output stream - */ - public void close() throws IOException { - flush(); - out.close(); - } - - /** This array maps the characters to their 6 bit values */ - private final static char pem_array[] = { - 'A','B','C','D','E','F','G','H', // 0 - 'I','J','K','L','M','N','O','P', // 1 - 'Q','R','S','T','U','V','W','X', // 2 - 'Y','Z','a','b','c','d','e','f', // 3 - 'g','h','i','j','k','l','m','n', // 4 - 'o','p','q','r','s','t','u','v', // 5 - 'w','x','y','z','0','1','2','3', // 6 - '4','5','6','7','8','9','+','/' // 7 - }; - - private void encode() throws IOException { - // If writing out this encoded unit will cause overflow, - // start a new line. - if (count + 4 > bytesPerLine) { - out.write('\r'); - out.write('\n'); - count = 0; - } - - byte a, b, c; - if (bufsize == 1) { - a = buffer[0]; - b = 0; - c = 0; - out.write(pem_array[(a >>> 2) & 0x3F]); - out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]); - out.write('='); // pad character - out.write('='); // pad character - } else if (bufsize == 2) { - a = buffer[0]; - b = buffer[1]; - c = 0; - out.write(pem_array[(a >>> 2) & 0x3F]); - out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]); - out.write(pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]); - out.write('='); // pad character - } else { - a = buffer[0]; - b = buffer[1]; - c = buffer[2]; - out.write(pem_array[(a >>> 2) & 0x3F]); - out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]); - out.write(pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]); - out.write(pem_array[c & 0x3F]); - } - - // increment count - count += 4; - } - - /** - * Base64 encode a byte array. No line breaks are inserted. - * This method is suitable for short strings, such as those - * in the IMAP AUTHENTICATE protocol, but not to encode the - * entire content of a MIME part. - */ - public static byte[] encode(byte[] inbuf) { - if (inbuf.length == 0) - return inbuf; - byte[] outbuf = new byte[((inbuf.length + 2) / 3) * 4]; - int inpos = 0, outpos = 0; - int size = inbuf.length; - while (size > 0) { - byte a, b, c; - if (size == 1) { - a = inbuf[inpos++]; - b = 0; - c = 0; - outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F]; - outbuf[outpos++] = - (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]; - outbuf[outpos++] = (byte)'='; // pad character - outbuf[outpos++] = (byte)'='; // pad character - } else if (size == 2) { - a = inbuf[inpos++]; - b = inbuf[inpos++]; - c = 0; - outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F]; - outbuf[outpos++] = - (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]; - outbuf[outpos++] = - (byte)pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]; - outbuf[outpos++] = (byte)'='; // pad character - } else { - a = inbuf[inpos++]; - b = inbuf[inpos++]; - c = inbuf[inpos++]; - outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F]; - outbuf[outpos++] = - (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]; - outbuf[outpos++] = - (byte)pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]; - outbuf[outpos++] = (byte)pem_array[c & 0x3F]; - } - size -= 3; - } - return outbuf; - } - - /*** begin TEST program - public static void main(String argv[]) throws Exception { - FileInputStream infile = new FileInputStream(argv[0]); - BASE64EncoderStream encoder = new BASE64EncoderStream(System.out); - int c; - - while ((c = infile.read()) != -1) - encoder.write(c); - encoder.close(); - } - *** end TEST program **/ -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BEncoderStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BEncoderStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)BEncoderStream.java 1.3 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.util; - -import java.io.OutputStream; - -/** - * This class implements a 'B' Encoder as defined by RFC2047 for - * encoding MIME headers. It subclasses the BASE64EncoderStream - * class. - * - * @author John Mani - */ - -public class BEncoderStream extends BASE64EncoderStream { - - /** - * Create a 'B' encoder that encodes the specified input stream. - * @param out the output stream - */ - public BEncoderStream(OutputStream out) { - super(out, Integer.MAX_VALUE); // MAX_VALUE is 2^31, should - // suffice (!) to indicate that - // CRLFs should not be inserted - } - - /** - * Returns the length of the encoded version of this byte array. - */ - public static int encodedLength(byte[] b) { - return ((b.length + 2)/3) * 4; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/LineInputStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/LineInputStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,112 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)LineInputStream.java 1.7 03/01/07 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.util; - -import java.io.*; - -/** - * This class is to support reading CRLF terminated lines that - * contain only US-ASCII characters from an input stream. Provides - * functionality that is similar to the deprecated - * DataInputStream.readLine(). Expected use is to read - * lines as String objects from a RFC822 stream. - * - * It is implemented as a FilterInputStream, so one can just wrap - * this class around any input stream and read bytes from this filter. - * - * @author John Mani - */ - -public final class LineInputStream extends FilterInputStream { - - private char[] lineBuffer = null; // reusable byte buffer - - public LineInputStream(InputStream in) { - super(in); - } - - /** - * Read a line containing only ASCII characters from the input - * stream. A line is terminated by a CR or NL or CR-NL sequence. - * A common error is a CR-CR-NL sequence, which will also terminate - * a line. - * The line terminator is not returned as part of the returned - * String. Returns null if no data is available.

- * - * This class is similar to the deprecated - * DataInputStream.readLine() - */ - public String readLine() throws IOException { - InputStream in = this.in; - char[] buf = lineBuffer; - - if (buf == null) - buf = lineBuffer = new char[128]; - - int c1; - int room = buf.length; - int offset = 0; - - while ((c1 = in.read()) != -1) { - if (c1 == '\n') // Got NL, outa here. - break; - else if (c1 == '\r') { - // Got CR, is the next char NL ? - int c2 = in.read(); - if (c2 == '\r') // discard extraneous CR - c2 = in.read(); - if (c2 != '\n') { - // If not NL, push it back - if (!(in instanceof PushbackInputStream)) - in = this.in = new PushbackInputStream(in); - ((PushbackInputStream)in).unread(c2); - } - break; // outa here. - } - - // Not CR, NL or CR-NL ... - // .. Insert the byte into our byte buffer - if (--room < 0) { // No room, need to grow. - buf = new char[offset + 128]; - room = buf.length - offset - 1; - System.arraycopy(lineBuffer, 0, buf, 0, offset); - lineBuffer = buf; - } - buf[offset++] = (char)c1; - } - - if ((c1 == -1) && (offset == 0)) - return null; - - return String.copyValueOf(buf, 0, offset); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/OutputUtil.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/OutputUtil.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,69 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)OutputUtil.java 1.6 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.util; - -import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; - -import java.io.OutputStream; -import java.io.IOException; - -/** - * This class is to support writing out Strings as a sequence of bytes - * terminated by a CRLF sequence. The String must contain only US-ASCII - * characters.

- * - * The expected use is to write out RFC822 style headers to an output - * stream.

- * - * @author Kohsuke Kawaguchi - */ -public abstract class OutputUtil { - private static byte[] newline = {'\r','\n'}; - - public static void writeln(String s,OutputStream out) throws IOException { - writeAsAscii(s,out); - writeln(out); - } - - /** - * Writes a string as ASCII string. - */ - public static void writeAsAscii(String s,OutputStream out) throws IOException { - int len = s.length(); - for( int i=0; iint in the range 0 - * to 255. If no byte is available because the end of - * the stream has been reached, the value -1 is returned. - * This method blocks until input data is available, the end of the - * stream is detected, or an exception is thrown. - * - * @return the next byte of data, or -1 if the end of the - * stream is reached. - * @exception IOException if an I/O error occurs. - */ - public int read() throws IOException { - int c = in.read(); - - if (c == '_') // Return '_' as ' ' - return ' '; - else if (c == '=') { - // QP Encoded atom. Get the next two bytes .. - ba[0] = (byte)in.read(); - ba[1] = (byte)in.read(); - // .. and decode them - try { - return ASCIIUtility.parseInt(ba, 0, 2, 16); - } catch (NumberFormatException nex) { - throw new IOException("Error in QP stream " + nex.getMessage()); - } - } else - return c; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QEncoderStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QEncoderStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)QEncoderStream.java 1.4 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.util; - -import java.io.IOException; -import java.io.OutputStream; - -/** - * This class implements a Q Encoder as defined by RFC 2047 for - * encoding MIME headers. It subclasses the QPEncoderStream class. - * - * @author John Mani - */ - -public class QEncoderStream extends QPEncoderStream { - - private String specials; - private static String WORD_SPECIALS = "=_?\"#$%&'(),.:;<>@[\\]^`{|}~"; - private static String TEXT_SPECIALS = "=_?"; - - /** - * Create a Q encoder that encodes the specified input stream - * @param out the output stream - * @param encodingWord true if we are Q-encoding a word within a - * phrase. - */ - public QEncoderStream(OutputStream out, boolean encodingWord) { - super(out, Integer.MAX_VALUE); // MAX_VALUE is 2^31, should - // suffice (!) to indicate that - // CRLFs should not be inserted - // when encoding rfc822 headers - - // a RFC822 "word" token has more restrictions than a - // RFC822 "text" token. - specials = encodingWord ? WORD_SPECIALS : TEXT_SPECIALS; - } - - /** - * Encodes the specified byte to this output stream. - * @param c the byte. - * @exception IOException if an I/O error occurs. - */ - public void write(int c) throws IOException { - c = c & 0xff; // Turn off the MSB. - if (c == ' ') - output('_', false); - else if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0) - // Encoding required. - output(c, true); - else // No encoding required - output(c, false); - } - - /** - * Returns the length of the encoded version of this byte array. - */ - public static int encodedLength(byte[] b, boolean encodingWord) { - int len = 0; - String specials = encodingWord ? WORD_SPECIALS: TEXT_SPECIALS; - for (int i = 0; i < b.length; i++) { - int c = b[i] & 0xff; // Mask off MSB - if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0) - // needs encoding - len += 3; // Q-encoding is 1 -> 3 conversion - else - len++; - } - return len; - } - - /**** begin TEST program *** - public static void main(String argv[]) throws Exception { - FileInputStream infile = new FileInputStream(argv[0]); - QEncoderStream encoder = new QEncoderStream(System.out); - int c; - - while ((c = infile.read()) != -1) - encoder.write(c); - encoder.close(); - } - *** end TEST program ***/ -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPDecoderStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPDecoderStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,198 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)QPDecoderStream.java 1.9 02/04/02 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.util; - -import java.io.*; - -/** - * This class implements a QP Decoder. It is implemented as - * a FilterInputStream, so one can just wrap this class around - * any input stream and read bytes from this filter. The decoding - * is done as the bytes are read out. - * - * @author John Mani - */ - -public class QPDecoderStream extends FilterInputStream { - protected byte[] ba = new byte[2]; - protected int spaces = 0; - - /** - * Create a Quoted Printable decoder that decodes the specified - * input stream. - * @param in the input stream - */ - public QPDecoderStream(InputStream in) { - super(new PushbackInputStream(in, 2)); // pushback of size=2 - } - - /** - * Read the next decoded byte from this input stream. The byte - * is returned as an int in the range 0 - * to 255. If no byte is available because the end of - * the stream has been reached, the value -1 is returned. - * This method blocks until input data is available, the end of the - * stream is detected, or an exception is thrown. - * - * @return the next byte of data, or -1 if the end of the - * stream is reached. - * @exception IOException if an I/O error occurs. - */ - public int read() throws IOException { - if (spaces > 0) { - // We have cached space characters, return one - spaces--; - return ' '; - } - - int c = in.read(); - - if (c == ' ') { - // Got space, keep reading till we get a non-space char - while ((c = in.read()) == ' ') - spaces++; - - if (c == '\r' || c == '\n' || c == -1) - // If the non-space char is CR/LF/EOF, the spaces we got - // so far is junk introduced during transport. Junk 'em. - spaces = 0; - else { - // The non-space char is NOT CR/LF, the spaces are valid. - ((PushbackInputStream)in).unread(c); - c = ' '; - } - return c; // return either or - } - else if (c == '=') { - // QP Encoded atom. Decode the next two bytes - int a = in.read(); - - if (a == '\n') { - /* Hmm ... not really confirming QP encoding, but lets - * allow this as a LF terminated encoded line .. and - * consider this a soft linebreak and recurse to fetch - * the next char. - */ - return read(); - } else if (a == '\r') { - // Expecting LF. This forms a soft linebreak to be ignored. - int b = in.read(); - if (b != '\n') - /* Not really confirming QP encoding, but - * lets allow this as well. - */ - ((PushbackInputStream)in).unread(b); - return read(); - } else if (a == -1) { - // Not valid QP encoding, but we be nice and tolerant here ! - return -1; - } else { - ba[0] = (byte)a; - ba[1] = (byte)in.read(); - try { - return ASCIIUtility.parseInt(ba, 0, 2, 16); - } catch (NumberFormatException nex) { - /* - System.err.println( - "Illegal characters in QP encoded stream: " + - ASCIIUtility.toString(ba, 0, 2) - ); - */ - - ((PushbackInputStream)in).unread(ba); - return c; - } - } - } - return c; - } - - /** - * Reads up to len decoded bytes of data from this input stream - * into an array of bytes. This method blocks until some input is - * available. - *

- * - * @param buf the buffer into which the data is read. - * @param off the start offset of the data. - * @param len the maximum number of bytes read. - * @return the total number of bytes read into the buffer, or - * -1 if there is no more data because the end of - * the stream has been reached. - * @exception IOException if an I/O error occurs. - */ - public int read(byte[] buf, int off, int len) throws IOException { - int i, c; - for (i = 0; i < len; i++) { - if ((c = read()) == -1) { - if (i == 0) // At end of stream, so we should - i = -1; // return -1 , NOT 0. - break; - } - buf[off+i] = (byte)c; - } - return i; - } - - /** - * Tests if this input stream supports marks. Currently this class - * does not support marks - */ - public boolean markSupported() { - return false; - } - - /** - * Returns the number of bytes that can be read from this input - * stream without blocking. The QP algorithm does not permit - * a priori knowledge of the number of bytes after decoding, so - * this method just invokes the available method - * of the original input stream. - */ - public int available() throws IOException { - // This is bogus ! We don't really know how much - // bytes are available *after* decoding - return in.available(); - } - - /**** begin TEST program - public static void main(String argv[]) throws Exception { - FileInputStream infile = new FileInputStream(argv[0]); - QPDecoderStream decoder = new QPDecoderStream(infile); - int c; - - while ((c = decoder.read()) != -1) - System.out.print((char)c); - System.out.println(); - } - *** end TEST program ****/ -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPEncoderStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPEncoderStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,199 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)QPEncoderStream.java 1.6 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.util; - -import java.io.*; - -/** - * This class implements a Quoted Printable Encoder. It is implemented as - * a FilterOutputStream, so one can just wrap this class around - * any output stream and write bytes into this filter. The Encoding - * is done as the bytes are written out. - * - * @author John Mani - */ - -public class QPEncoderStream extends FilterOutputStream { - private int count = 0; // number of bytes that have been output - private int bytesPerLine; // number of bytes per line - private boolean gotSpace = false; - private boolean gotCR = false; - - /** - * Create a QP encoder that encodes the specified input stream - * @param out the output stream - * @param bytesPerLine the number of bytes per line. The encoder - * inserts a CRLF sequence after this many number - * of bytes. - */ - public QPEncoderStream(OutputStream out, int bytesPerLine) { - super(out); - // Subtract 1 to account for the '=' in the soft-return - // at the end of a line - this.bytesPerLine = bytesPerLine - 1; - } - - /** - * Create a QP encoder that encodes the specified input stream. - * Inserts the CRLF sequence after outputting 76 bytes. - * @param out the output stream - */ - public QPEncoderStream(OutputStream out) { - this(out, 76); - } - - /** - * Encodes len bytes from the specified - * byte array starting at offset off to - * this output stream. - * - * @param b the data. - * @param off the start offset in the data. - * @param len the number of bytes to write. - * @exception IOException if an I/O error occurs. - */ - public void write(byte[] b, int off, int len) throws IOException { - for (int i = 0; i < len; i++) - write(b[off + i]); - } - - /** - * Encodes b.length bytes to this output stream. - * @param b the data to be written. - * @exception IOException if an I/O error occurs. - */ - public void write(byte[] b) throws IOException { - write(b, 0, b.length); - } - - /** - * Encodes the specified byte to this output stream. - * @param c the byte. - * @exception IOException if an I/O error occurs. - */ - public void write(int c) throws IOException { - c = c & 0xff; // Turn off the MSB. - if (gotSpace) { // previous character was - if (c == '\r' || c == '\n') - // if CR/LF, we need to encode the char - output(' ', true); - else // no encoding required, just output the char - output(' ', false); - gotSpace = false; - } - - if (c == '\r') { - gotCR = true; - outputCRLF(); - } else { - if (c == '\n') { - if (gotCR) - // This is a CRLF sequence, we already output the - // corresponding CRLF when we got the CR, so ignore this - ; - else - outputCRLF(); - } else if (c == ' ') { - gotSpace = true; - } else if (c < 040 || c >= 0177 || c == '=') - // Encoding required. - output(c, true); - else // No encoding required - output(c, false); - // whatever it was, it wasn't a CR - gotCR = false; - } - } - - /** - * Flushes this output stream and forces any buffered output bytes - * to be encoded out to the stream. - * @exception IOException if an I/O error occurs. - */ - public void flush() throws IOException { - out.flush(); - } - - /** - * Forces any buffered output bytes to be encoded out to the stream - * and closes this output stream - */ - public void close() throws IOException { - out.close(); - } - - private void outputCRLF() throws IOException { - out.write('\r'); - out.write('\n'); - count = 0; - } - - // The encoding table - private final static char hex[] = { - '0','1', '2', '3', '4', '5', '6', '7', - '8','9', 'A', 'B', 'C', 'D', 'E', 'F' - }; - - protected void output(int c, boolean encode) throws IOException { - if (encode) { - if ((count += 3) > bytesPerLine) { - out.write('='); - out.write('\r'); - out.write('\n'); - count = 3; // set the next line's length - } - out.write('='); - out.write(hex[c >> 4]); - out.write(hex[c & 0xf]); - } else { - if (++count > bytesPerLine) { - out.write('='); - out.write('\r'); - out.write('\n'); - count = 1; // set the next line's length - } - out.write(c); - } - } - - /**** begin TEST program *** - public static void main(String argv[]) throws Exception { - FileInputStream infile = new FileInputStream(argv[0]); - QPEncoderStream encoder = new QPEncoderStream(System.out); - int c; - - while ((c = infile.read()) != -1) - encoder.write(c); - encoder.close(); - } - *** end TEST program ***/ -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUDecoderStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUDecoderStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,257 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)UUDecoderStream.java 1.8 02/07/08 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.util; - -import java.io.*; - -/** - * This class implements a UUDecoder. It is implemented as - * a FilterInputStream, so one can just wrap this class around - * any input stream and read bytes from this filter. The decoding - * is done as the bytes are read out. - * - * @author John Mani - * @author Bill Shannon - */ - -public class UUDecoderStream extends FilterInputStream { - private String name; - private int mode; - - private byte[] buffer; // cache of decoded bytes - private int bufsize = 0; // size of the cache - private int index = 0; // index into the cache - private boolean gotPrefix = false; - private boolean gotEnd = false; - private LineInputStream lin; - - /** - * Create a UUdecoder that decodes the specified input stream - * @param in the input stream - */ - public UUDecoderStream(InputStream in) { - super(in); - lin = new LineInputStream(in); - buffer = new byte[45]; // max decoded chars in a line = 45 - } - - /** - * Read the next decoded byte from this input stream. The byte - * is returned as an int in the range 0 - * to 255. If no byte is available because the end of - * the stream has been reached, the value -1 is returned. - * This method blocks until input data is available, the end of the - * stream is detected, or an exception is thrown. - * - * @return next byte of data, or -1 if the end of - * stream is reached. - * @exception IOException if an I/O error occurs. - * @see java.io.FilterInputStream#in - */ - - public int read() throws IOException { - if (index >= bufsize) { - readPrefix(); - if (!decode()) - return -1; - index = 0; // reset index into buffer - } - return buffer[index++] & 0xff; // return lower byte - } - - public int read(byte[] buf, int off, int len) throws IOException { - int i, c; - for (i = 0; i < len; i++) { - if ((c = read()) == -1) { - if (i == 0) // At end of stream, so we should - i = -1; // return -1, NOT 0. - break; - } - buf[off+i] = (byte)c; - } - return i; - } - - public boolean markSupported() { - return false; - } - - public int available() throws IOException { - // This is only an estimate, since in.available() - // might include CRLFs too .. - return ((in.available() * 3)/4 + (bufsize-index)); - } - - /** - * Get the "name" field from the prefix. This is meant to - * be the pathname of the decoded file - * - * @return name of decoded file - * @exception IOException if an I/O error occurs. - */ - public String getName() throws IOException { - readPrefix(); - return name; - } - - /** - * Get the "mode" field from the prefix. This is the permission - * mode of the source file. - * - * @return permission mode of source file - * @exception IOException if an I/O error occurs. - */ - public int getMode() throws IOException { - readPrefix(); - return mode; - } - - /** - * UUencoded streams start off with the line: - * "begin " - * Search for this prefix and gobble it up. - */ - private void readPrefix() throws IOException { - if (gotPrefix) // got the prefix - return; - - String s; - for (;;) { - // read till we get the prefix: "begin MODE FILENAME" - s = lin.readLine(); // NOTE: readLine consumes CRLF pairs too - if (s == null) - throw new IOException("UUDecoder error: No Begin"); - if (s.regionMatches(true, 0, "begin", 0, 5)) { - try { - mode = Integer.parseInt(s.substring(6,9)); - } catch (NumberFormatException ex) { - throw new IOException("UUDecoder error: " + ex.toString()); - } - name = s.substring(10); - gotPrefix = true; - return; - } - } - } - - private boolean decode() throws IOException { - - if (gotEnd) - return false; - bufsize = 0; - String line; - do { - line = lin.readLine(); - - /* - * Improperly encoded data sometimes omits the zero length - * line that starts with a space character, we detect the - * following "end" line here. - */ - if (line == null) - throw new IOException("Missing End"); - if (line.regionMatches(true, 0, "end", 0, 3)) { - gotEnd = true; - return false; - } - } while (line.length() == 0); - int count = line.charAt(0); - if (count < ' ') - throw new IOException("Buffer format error"); - - /* - * The first character in a line is the number of original (not - * the encoded atoms) characters in the line. Note that all the - * code below has to handle the character that indicates - * end of encoded stream. - */ - count = (count - ' ') & 0x3f; - - if (count == 0) { - line = lin.readLine(); - if (line == null || !line.regionMatches(true, 0, "end", 0, 3)) - throw new IOException("Missing End"); - gotEnd = true; - return false; - } - - int need = ((count * 8)+5)/6; -//System.out.println("count " + count + ", need " + need + ", len " + line.length()); - if (line.length() < need + 1) - throw new IOException("Short buffer error"); - - int i = 1; - byte a, b; - /* - * A correct uuencoder always encodes 3 characters at a time, even - * if there aren't 3 characters left. But since some people out - * there have broken uuencoders we handle the case where they - * don't include these "unnecessary" characters. - */ - while (bufsize < count) { - // continue decoding until we get 'count' decoded chars - a = (byte)((line.charAt(i++) - ' ') & 0x3f); - b = (byte)((line.charAt(i++) - ' ') & 0x3f); - buffer[bufsize++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3)); - - if (bufsize < count) { - a = b; - b = (byte)((line.charAt(i++) - ' ') & 0x3f); - buffer[bufsize++] = - (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf)); - } - - if (bufsize < count) { - a = b; - b = (byte)((line.charAt(i++) - ' ') & 0x3f); - buffer[bufsize++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f)); - } - } - return true; - } - - /*** begin TEST program ***** - public static void main(String argv[]) throws Exception { - FileInputStream infile = new FileInputStream(argv[0]); - UUDecoderStream decoder = new UUDecoderStream(infile); - int c; - - try { - while ((c = decoder.read()) != -1) - System.out.write(c); - System.out.flush(); - } catch (Exception e) { - e.printStackTrace(); - } - } - **** end TEST program ****/ -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUEncoderStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUEncoderStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,206 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @(#)UUEncoderStream.java 1.3 02/03/27 - */ - - - -package com.sun.xml.internal.messaging.saaj.packaging.mime.util; - -import java.io.*; - -/** - * This class implements a UUEncoder. It is implemented as - * a FilterOutputStream, so one can just wrap this class around - * any output stream and write bytes into this filter. The Encoding - * is done as the bytes are written out. - * - * @author John Mani - */ - -public class UUEncoderStream extends FilterOutputStream { - private byte[] buffer; // cache of bytes that are yet to be encoded - private int bufsize = 0; // size of the cache - private boolean wrotePrefix = false; - - protected String name; // name of file - protected int mode; // permissions mode - - /** - * Create a UUencoder that encodes the specified input stream - * @param out the output stream - */ - public UUEncoderStream(OutputStream out) { - this(out, "encoder.buf", 644); - } - - /** - * Create a UUencoder that encodes the specified input stream - * @param out the output stream - * @param name Specifies a name for the encoded buffer - */ - public UUEncoderStream(OutputStream out, String name) { - this(out, name, 644); - } - - /** - * Create a UUencoder that encodes the specified input stream - * @param out the output stream - * @param name Specifies a name for the encoded buffer - * @param mode Specifies permission mode for the encoded buffer - */ - public UUEncoderStream(OutputStream out, String name, int mode) { - super(out); - this.name = name; - this.mode = mode; - buffer = new byte[45]; - } - - /** - * Set up the buffer name and permission mode. - * This method has any effect only if it is invoked before - * you start writing into the output stream - */ - public void setNameMode(String name, int mode) { - this.name = name; - this.mode = mode; - } - - public void write(byte[] b, int off, int len) throws IOException { - for (int i = 0; i < len; i++) - write(b[off + i]); - } - - public void write(byte[] data) throws IOException { - write(data, 0, data.length); - } - - public void write(int c) throws IOException { - /* buffer up characters till we get a line's worth, then encode - * and write them out. Max number of characters allowed per - * line is 45. - */ - buffer[bufsize++] = (byte)c; - if (bufsize == 45) { - writePrefix(); - encode(); - bufsize = 0; - } - } - - public void flush() throws IOException { - if (bufsize > 0) { // If there's unencoded characters in the buffer - writePrefix(); - encode(); // .. encode them - } - writeSuffix(); - out.flush(); - } - - public void close() throws IOException { - flush(); - out.close(); - } - - /** - * Write out the prefix: "begin " - */ - private void writePrefix() throws IOException { - if (!wrotePrefix) { - PrintStream ps = new PrintStream(out); - ps.println("begin " + mode + " " + name); - ps.flush(); - wrotePrefix = true; - } - } - - /** - * Write a single line containing space and the suffix line - * containing the single word "end" (terminated by a newline) - */ - private void writeSuffix() throws IOException { - PrintStream ps = new PrintStream(out); - ps.println(" \nend"); - ps.flush(); - } - - /** - * Encode a line. - * Start off with the character count, followed by the encoded atoms - * and terminate with LF. (or is it CRLF or the local line-terminator ?) - * Take three bytes and encodes them into 4 characters - * If bufsize if not a multiple of 3, the remaining bytes are filled - * with '1'. This insures that the last line won't end in spaces - * and potentiallly be truncated. - */ - private void encode() throws IOException { - byte a, b, c; - int c1, c2, c3, c4; - int i = 0; - - // Start off with the count of characters in the line - out.write((bufsize & 0x3f) + ' '); - - while (i < bufsize) { - a = buffer[i++]; - if (i < bufsize) { - b = buffer[i++]; - if (i < bufsize) - c = buffer[i++]; - else // default c to 1 - c = 1; - } - else { // default b & c to 1 - b = 1; - c = 1; - } - - c1 = (a >>> 2) & 0x3f; - c2 = ((a << 4) & 0x30) | ((b >>> 4) & 0xf); - c3 = ((b << 2) & 0x3c) | ((c >>> 6) & 0x3); - c4 = c & 0x3f; - out.write(c1 + ' '); - out.write(c2 + ' '); - out.write(c3 + ' '); - out.write(c4 + ' '); - } - // Terminate with LF. (should it be CRLF or local line-terminator ?) - out.write('\n'); - } - - /**** begin TEST program ***** - public static void main(String argv[]) throws Exception { - FileInputStream infile = new FileInputStream(argv[0]); - UUEncoderStream encoder = new UUEncoderStream(System.out); - int c; - - while ((c = infile.read()) != -1) - encoder.write(c); - encoder.close(); - } - **** end TEST program *****/ -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/AttachmentPartImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/AttachmentPartImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,612 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.util.ASCIIUtility; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.Header; -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimePartDataSource; -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.InternetHeaders; -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart; -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility; -import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - -import java.io.IOException; -import java.io.InputStream; -import java.io.ByteArrayOutputStream; -import java.io.ByteArrayInputStream; -import java.io.OutputStream; -import java.util.Iterator; -import java.util.List; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.activation.*; -import javax.xml.soap.*; -import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart; - -/** - * Implementation of attachments. - * - * @author Anil Vijendran (akv@eng.sun.com) - */ -public class AttachmentPartImpl extends AttachmentPart { - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); - - private final MimeHeaders headers; - private MimeBodyPart rawContent = null; - private DataHandler dataHandler = null; - - //alternate impl that uses a MIMEPart - private MIMEPart mimePart = null; - - public AttachmentPartImpl() { - headers = new MimeHeaders(); - - // initialization from here should cover most of cases; - // if not, it would be necessary to call - // AttachmentPartImpl.initializeJavaActivationHandlers() - // explicitly by programmer - initializeJavaActivationHandlers(); - } - - public AttachmentPartImpl(MIMEPart part) { - headers = new MimeHeaders(); - mimePart = part; - List hdrs = part.getAllHeaders(); - for (com.sun.xml.internal.org.jvnet.mimepull.Header hd : hdrs) { - headers.addHeader(hd.getName(), hd.getValue()); - } - } - - public int getSize() throws SOAPException { - if (mimePart != null) { - try { - return mimePart.read().available(); - } catch (IOException e) { - return -1; - } - } - if ((rawContent == null) && (dataHandler == null)) - return 0; - - if (rawContent != null) { - try { - return rawContent.getSize(); - } catch (Exception ex) { - log.log( - Level.SEVERE, - "SAAJ0573.soap.attachment.getrawbytes.ioexception", - new String[] { ex.getLocalizedMessage()}); - throw new SOAPExceptionImpl("Raw InputStream Error: " + ex); - } - } else { - ByteOutputStream bout = new ByteOutputStream(); - try { - dataHandler.writeTo(bout); - } catch (IOException ex) { - log.log( - Level.SEVERE, - "SAAJ0501.soap.data.handler.err", - new String[] { ex.getLocalizedMessage()}); - throw new SOAPExceptionImpl("Data handler error: " + ex); - } - return bout.size(); - } - } - - public void clearContent() { - if (mimePart != null) { - mimePart.close(); - mimePart = null; - } - dataHandler = null; - rawContent = null; - } - - public Object getContent() throws SOAPException { - try { - if (mimePart != null) { - //return an inputstream - return mimePart.read(); - } - if (dataHandler != null) { - return getDataHandler().getContent(); - } else if (rawContent != null) { - return rawContent.getContent(); - } else { - log.severe("SAAJ0572.soap.no.content.for.attachment"); - throw new SOAPExceptionImpl("No data handler/content associated with this attachment"); - } - } catch (Exception ex) { - log.log(Level.SEVERE, "SAAJ0575.soap.attachment.getcontent.exception", ex); - throw new SOAPExceptionImpl(ex.getLocalizedMessage()); - } - } - - public void setContent(Object object, String contentType) - throws IllegalArgumentException { - if (mimePart != null) { - mimePart.close(); - mimePart = null; - } - DataHandler dh = new DataHandler(object, contentType); - - setDataHandler(dh); - } - - - public DataHandler getDataHandler() throws SOAPException { - if (mimePart != null) { - //return an inputstream - return new DataHandler(new DataSource() { - - public InputStream getInputStream() throws IOException { - return mimePart.read(); - } - - public OutputStream getOutputStream() throws IOException { - throw new UnsupportedOperationException("getOutputStream cannot be supported : You have enabled LazyAttachments Option"); - } - - public String getContentType() { - return mimePart.getContentType(); - } - - public String getName() { - return "MIMEPart Wrapper DataSource"; - } - }); - } - if (dataHandler == null) { - if (rawContent != null) { - return new DataHandler(new MimePartDataSource(rawContent)); - } - log.severe("SAAJ0502.soap.no.handler.for.attachment"); - throw new SOAPExceptionImpl("No data handler associated with this attachment"); - } - return dataHandler; - } - - public void setDataHandler(DataHandler dataHandler) - throws IllegalArgumentException { - if (mimePart != null) { - mimePart.close(); - mimePart = null; - } - if (dataHandler == null) { - log.severe("SAAJ0503.soap.no.null.to.dataHandler"); - throw new IllegalArgumentException("Null dataHandler argument to setDataHandler"); - } - this.dataHandler = dataHandler; - rawContent = null; - - if (log.isLoggable(Level.FINE)) - log.log(Level.FINE, "SAAJ0580.soap.set.Content-Type", - new String[] { dataHandler.getContentType() }); - setMimeHeader("Content-Type", dataHandler.getContentType()); - } - - public void removeAllMimeHeaders() { - headers.removeAllHeaders(); - } - - public void removeMimeHeader(String header) { - headers.removeHeader(header); - } - - public String[] getMimeHeader(String name) { - return headers.getHeader(name); - } - - public void setMimeHeader(String name, String value) { - headers.setHeader(name, value); - } - - public void addMimeHeader(String name, String value) { - headers.addHeader(name, value); - } - - public Iterator getAllMimeHeaders() { - return headers.getAllHeaders(); - } - - public Iterator getMatchingMimeHeaders(String[] names) { - return headers.getMatchingHeaders(names); - } - - public Iterator getNonMatchingMimeHeaders(String[] names) { - return headers.getNonMatchingHeaders(names); - } - - boolean hasAllHeaders(MimeHeaders hdrs) { - if (hdrs != null) { - Iterator i = hdrs.getAllHeaders(); - while (i.hasNext()) { - MimeHeader hdr = (MimeHeader) i.next(); - String[] values = headers.getHeader(hdr.getName()); - boolean found = false; - - if (values != null) { - for (int j = 0; j < values.length; j++) - if (hdr.getValue().equalsIgnoreCase(values[j])) { - found = true; - break; - } - } - - if (!found) { - return false; - } - } - } - return true; - } - - MimeBodyPart getMimePart() throws SOAPException { - try { - if (this.mimePart != null) { - return new MimeBodyPart(mimePart); - } - if (rawContent != null) { - copyMimeHeaders(headers, rawContent); - return rawContent; - } - - MimeBodyPart envelope = new MimeBodyPart(); - - envelope.setDataHandler(dataHandler); - copyMimeHeaders(headers, envelope); - - return envelope; - } catch (Exception ex) { - log.severe("SAAJ0504.soap.cannot.externalize.attachment"); - throw new SOAPExceptionImpl("Unable to externalize attachment", ex); - } - } - - public static void copyMimeHeaders(MimeHeaders headers, MimeBodyPart mbp) - throws SOAPException { - - Iterator i = headers.getAllHeaders(); - - while (i.hasNext()) - try { - MimeHeader mh = (MimeHeader) i.next(); - - mbp.setHeader(mh.getName(), mh.getValue()); - } catch (Exception ex) { - log.severe("SAAJ0505.soap.cannot.copy.mime.hdr"); - throw new SOAPExceptionImpl("Unable to copy MIME header", ex); - } - } - - public static void copyMimeHeaders(MimeBodyPart mbp, AttachmentPartImpl ap) - throws SOAPException { - try { - List hdr = mbp.getAllHeaders(); - int sz = hdr.size(); - for( int i=0; i { - - private static final String FAILED_TO_CREATE_NEW_INSTANCE = "FAILED_TO_CREATE_NEW_INSTANCE"; - - private WeakHashMap CACHE = new WeakHashMap(); - - public V get() throws Error { - ClassLoader tccl = getContextClassLoader(); - V instance = CACHE.get(tccl); - if (instance == null) { - instance = createNewInstance(); - CACHE.put(tccl, instance); - } - return instance; - } - - public void set(V instance) { - CACHE.put(getContextClassLoader(), instance); - } - - protected abstract V initialValue() throws Exception; - - private V createNewInstance() { - try { - return initialValue(); - } catch (Exception e) { - throw new Error(format(FAILED_TO_CREATE_NEW_INSTANCE, getClass().getName()), e); - } - } - - private static String format(String property, Object... args) { - String text = ResourceBundle.getBundle(ContextClassloaderLocal.class.getName()).getString(property); - return MessageFormat.format(text, args); - } - - private static ClassLoader getContextClassLoader() { - return (ClassLoader) - AccessController.doPrivileged(new PrivilegedAction() { - public Object run() { - ClassLoader cl = null; - try { - cl = Thread.currentThread().getContextClassLoader(); - } catch (SecurityException ex) { - } - return cl; - } - }); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ContextClassloaderLocal.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ContextClassloaderLocal.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,26 +0,0 @@ -# -# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -FAILED_TO_CREATE_NEW_INSTANCE=Failed to create new instance of {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/Envelope.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/Envelope.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,60 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import java.io.IOException; -import java.io.OutputStream; - -import javax.xml.soap.SOAPEnvelope; -import javax.xml.soap.SOAPException; -import javax.xml.transform.Source; - -/** - * Different implementations for SOAP Envelope must all implement this - * interface. - * - * @author Anil Vijendran (akv@eng.sun.com) - */ -public interface Envelope extends SOAPEnvelope { - /** - * Get the content as a JAXP Source. - */ - Source getContent(); - - /** - * Output the content. - */ - void output(OutputStream out) throws IOException; - - /** - * Output the content. - */ - void output(OutputStream out, boolean isFastInfoset) throws IOException; - - void setStaxBridge(StaxBridge bridge) throws SOAPException; - - StaxBridge getStaxBridge() throws SOAPException; -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/EnvelopeFactory.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/EnvelopeFactory.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,185 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import com.sun.xml.internal.messaging.saaj.LazyEnvelopeSource; -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.util.JAXMStreamSource; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; -import com.sun.xml.internal.messaging.saaj.util.ParserPool; -import com.sun.xml.internal.messaging.saaj.util.RejectDoctypeSaxFilter; -import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer; -import org.xml.sax.InputSource; -import org.xml.sax.XMLReader; - -import javax.xml.parsers.SAXParser; -import javax.xml.soap.SOAPException; -import javax.xml.stream.XMLInputFactory; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.dom.DOMResult; -import javax.xml.transform.sax.SAXSource; -import javax.xml.transform.stax.StAXSource; -import javax.xml.transform.stream.StreamSource; -import java.util.logging.Logger; - -/** - * EnvelopeFactory creates SOAP Envelope objects using different - * underlying implementations. - */ -public class EnvelopeFactory { - - protected static final Logger - log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); - - private static ContextClassloaderLocal parserPool = - new ContextClassloaderLocal() { - @Override - protected ParserPool initialValue() throws Exception { - return new ParserPool(5); - } - }; - - public static Envelope createEnvelope(Source src, SOAPPartImpl soapPart) - throws SOAPException - { - if (src instanceof JAXMStreamSource) { - try { - if (!SOAPPartImpl.lazyContentLength) { - ((JAXMStreamSource) src).reset(); - } - } catch (java.io.IOException ioe) { - log.severe("SAAJ0515.source.reset.exception"); - throw new SOAPExceptionImpl(ioe); - } - } - if (src instanceof LazyEnvelopeSource) { - return lazy((LazyEnvelopeSource)src, soapPart); - } - if (soapPart.message.isLazySoapBodyParsing()) { - return parseEnvelopeStax(src, soapPart); - } else { - return parseEnvelopeSax(src, soapPart); - } - } - - private static Envelope lazy(LazyEnvelopeSource src, SOAPPartImpl soapPart) throws SOAPException { - try { - StaxBridge staxBridge = new StaxLazySourceBridge(src, soapPart); - staxBridge.bridgeEnvelopeAndHeaders(); - Envelope env = (Envelope) soapPart.getEnvelope(); - env.setStaxBridge(staxBridge); - return env; - } catch (XMLStreamException e) { - throw new SOAPException(e); - } - } - - static private XMLInputFactory xmlInputFactory = null; - - private static Envelope parseEnvelopeStax(Source src, SOAPPartImpl soapPart) - throws SOAPException { - XMLStreamReader streamReader = null; - if (src instanceof StAXSource) { - streamReader = ((StAXSource) src).getXMLStreamReader(); - } - try { - if (streamReader == null) { - if (xmlInputFactory == null) xmlInputFactory = XMLInputFactory.newInstance(); - streamReader = xmlInputFactory.createXMLStreamReader(src); - } -// SaajStaxWriter saajWriter = new SaajStaxWriter(soapPart.message, soapPart.document); -// XMLStreamReaderToXMLStreamWriter readerWriterBridge = new XMLStreamReaderToXMLStreamWriter( -// streamReader, saajWriter, soapPart.getSOAPNamespace()); - - StaxBridge readerWriterBridge = new StaxReaderBridge(streamReader, soapPart); - //bridge will stop reading at body element, and parse upon request, so save it - //on the envelope - readerWriterBridge.bridgeEnvelopeAndHeaders(); - - Envelope env = (Envelope) soapPart.getEnvelope(); - env.setStaxBridge(readerWriterBridge); - return env; - } catch (Exception e) { - throw new SOAPException(e); - } - } - private static Envelope parseEnvelopeSax(Source src, SOAPPartImpl soapPart) - throws SOAPException { - // Insert SAX filter to disallow Document Type Declarations since - // they are not legal in SOAP - SAXParser saxParser = null; - if (src instanceof StreamSource) { - try { - saxParser = parserPool.get().get(); - } catch (Exception e) { - log.severe("SAAJ0601.util.newSAXParser.exception"); - throw new SOAPExceptionImpl( - "Couldn't get a SAX parser while constructing a envelope", - e); - } - InputSource is = SAXSource.sourceToInputSource(src); - if (is.getEncoding()== null && soapPart.getSourceCharsetEncoding() != null) { - is.setEncoding(soapPart.getSourceCharsetEncoding()); - } - XMLReader rejectFilter; - try { - rejectFilter = new RejectDoctypeSaxFilter(saxParser); - } catch (Exception ex) { - log.severe("SAAJ0510.soap.cannot.create.envelope"); - throw new SOAPExceptionImpl( - "Unable to create envelope from given source: ", - ex); - } - src = new SAXSource(rejectFilter, is); - } - - try { - Transformer transformer = - EfficientStreamingTransformer.newTransformer(); - DOMResult result = new DOMResult(soapPart); - transformer.transform(src, result); - - Envelope env = (Envelope) soapPart.getEnvelope(); - return env; - } catch (Exception ex) { - if (ex instanceof SOAPVersionMismatchException) { - throw (SOAPVersionMismatchException) ex; - } - log.severe("SAAJ0511.soap.cannot.create.envelope"); - throw new SOAPExceptionImpl( - "Unable to create envelope from given source: ", - ex); - } finally { - if (saxParser != null) { - parserPool.get().returnParser(saxParser); - } - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/FastInfosetDataContentHandler.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/FastInfosetDataContentHandler.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,121 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import java.awt.datatransfer.DataFlavor; -import java.io.IOException; -import java.io.OutputStream; -import java.io.InputStream; - -import javax.activation.*; -import javax.xml.transform.Source; - -import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection; - -/** - * JAF data handler for Fast Infoset content - * - * @author Santiago Pericas-Geertsen - */ -public class FastInfosetDataContentHandler implements DataContentHandler { - public static final String STR_SRC = "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource"; - - public FastInfosetDataContentHandler() { - } - - /** - * return the DataFlavors for this DataContentHandler - * @return The DataFlavors. - */ - public DataFlavor[] getTransferDataFlavors() { // throws Exception; - DataFlavor flavors[] = new DataFlavor[1]; - flavors[0] = new ActivationDataFlavor( - FastInfosetReflection.getFastInfosetSource_class(), - "application/fastinfoset", "Fast Infoset"); - return flavors; - } - - /** - * return the Transfer Data of type DataFlavor from InputStream - * @param df The DataFlavor. - * @param ins The InputStream corresponding to the data. - * @return The constructed Object. - */ - public Object getTransferData(DataFlavor flavor, DataSource dataSource) - throws IOException - { - if (flavor.getMimeType().startsWith("application/fastinfoset")) { - try { - if (flavor.getRepresentationClass().getName().equals(STR_SRC)) { - return FastInfosetReflection.FastInfosetSource_new( - dataSource.getInputStream()); - } - } - catch (Exception e) { - throw new IOException(e.getMessage()); - } - } - return null; - } - - public Object getContent(DataSource dataSource) throws IOException { - try { - return FastInfosetReflection.FastInfosetSource_new( - dataSource.getInputStream()); - } - catch (Exception e) { - throw new IOException(e.getMessage()); - } - } - - /** - * construct an object from a byte stream - * (similar semantically to previous method, we are deciding - * which one to support) - */ - public void writeTo(Object obj, String mimeType, OutputStream os) - throws IOException - { - if (!mimeType.equals("application/fastinfoset")) { - throw new IOException("Invalid content type \"" + mimeType - + "\" for FastInfosetDCH"); - } - - try { - InputStream is = FastInfosetReflection.FastInfosetSource_getInputStream( - (Source) obj); - - int n; byte[] buffer = new byte[4096]; - while ((n = is.read(buffer)) != -1) { - os.write(buffer, 0, n); - } - } - catch (Exception ex) { - throw new IOException( - "Error copying FI source to output stream " + ex.getMessage()); - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/GifDataContentHandler.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/GifDataContentHandler.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import java.awt.datatransfer.DataFlavor; -import java.io.*; -import java.awt.*; - -import javax.activation.*; - -/** - * DataContentHandler for image/gif. - * - * @author Ana Lindstrom-Tamer - */ -public class GifDataContentHandler extends Component implements DataContentHandler { - private static ActivationDataFlavor myDF = - new ActivationDataFlavor( - java.awt.Image.class, - "image/gif", - "GIF Image"); - - protected ActivationDataFlavor getDF() { - return myDF; - } - - /** - * Return the DataFlavors for this DataContentHandler. - * - * @return The DataFlavors - */ - public DataFlavor[] getTransferDataFlavors() { // throws Exception; - return new DataFlavor[] { getDF()}; - } - - /** - * Return the Transfer Data of type DataFlavor from InputStream. - * - * @param df The DataFlavor - * @param ins The InputStream corresponding to the data - * @return String object - */ - public Object getTransferData(DataFlavor df, DataSource ds) - throws IOException { - // use myDF.equals to be sure to get ActivationDataFlavor.equals, - // which properly ignores Content-Type parameters in comparison - if (getDF().equals(df)) - return getContent(ds); - else - return null; - } - - public Object getContent(DataSource ds) throws IOException { - InputStream is = ds.getInputStream(); - int pos = 0; - int count; - byte buf[] = new byte[1024]; - - while ((count = is.read(buf, pos, buf.length - pos)) != -1) { - pos += count; - if (pos >= buf.length) { - int size = buf.length; - if (size < 256*1024) - size += size; - else - size += 256*1024; - byte tbuf[] = new byte[size]; - System.arraycopy(buf, 0, tbuf, 0, pos); - buf = tbuf; - } - } - Toolkit tk = Toolkit.getDefaultToolkit(); - return tk.createImage(buf, 0, pos); - } - - /** - * Write the object to the output stream, using the specified MIME type. - */ - public void writeTo(Object obj, String type, OutputStream os) - throws IOException { - if (obj != null && !(obj instanceof Image)) - throw new IOException("\"" + getDF().getMimeType() + - "\" DataContentHandler requires Image object, " + - "was given object of type " + obj.getClass().toString()); - - throw new IOException(getDF().getMimeType() + " encoding not supported"); - } - - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ImageDataContentHandler.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ImageDataContentHandler.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,171 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import java.awt.*; -import java.awt.datatransfer.DataFlavor; -import java.awt.image.BufferedImage; -import java.io.*; -import java.util.Arrays; -import java.util.Iterator; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.activation.*; -import javax.imageio.ImageIO; -import javax.imageio.ImageWriter; -import javax.imageio.stream.ImageOutputStream; - -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - -public class ImageDataContentHandler extends Component - implements DataContentHandler { - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); - - private DataFlavor[] flavor; - - public ImageDataContentHandler() { - String[] mimeTypes = ImageIO.getReaderMIMETypes(); - flavor = new DataFlavor[mimeTypes.length]; - for(int i=0; i < mimeTypes.length; i++) { - flavor[i] = new ActivationDataFlavor( - java.awt.Image.class, mimeTypes[i], "Image"); - } - } - - /** - * Returns an array of DataFlavor objects indicating the flavors the - * data can be provided in. The array should be ordered according to - * preference for providing the data (from most richly descriptive to - * least descriptive). - * - * @return The DataFlavors. - */ - public DataFlavor[] getTransferDataFlavors() { - return (DataFlavor[]) Arrays.copyOf(flavor, flavor.length); - } - - /** - * Returns an object which represents the data to be transferred. - * The class of the object returned is defined by the representation class - * of the flavor. - * - * @param df The DataFlavor representing the requested type. - * @param ds The DataSource representing the data to be converted. - * @return The constructed Object. - */ - public Object getTransferData(DataFlavor df, DataSource ds) - throws IOException { - for (int i=0; i < flavor.length; i++) { - if (flavor[i].equals(df)) { - return getContent(ds); - } - } - return null; - } - - /** - * Return an object representing the data in its most preferred form. - * Generally this will be the form described by the first DataFlavor - * returned by the getTransferDataFlavors method. - * - * @param ds The DataSource representing the data to be converted. - * @return The constructed Object. - */ - public Object getContent(DataSource ds) throws IOException { - return ImageIO.read(new BufferedInputStream(ds.getInputStream())); - } - - /** - * Convert the object to a byte stream of the specified MIME type - * and write it to the output stream. - * - * @param obj The object to be converted. - * @param mimeType The requested MIME type of the resulting byte stream. - * @param os The output stream into which to write the converted - * byte stream. - */ - - public void writeTo(Object obj, String type, OutputStream os) - throws IOException { - - try { - BufferedImage bufImage = null; - if (obj instanceof BufferedImage) { - bufImage = (BufferedImage)obj; - } else if (obj instanceof Image) { - bufImage = render((Image)obj); - } else { - log.log(Level.SEVERE, - "SAAJ0520.soap.invalid.obj.type", - new String[] { obj.getClass().toString() }); - throw new IOException( - "ImageDataContentHandler requires Image object, " - + "was given object of type " - + obj.getClass().toString()); - } - ImageWriter writer = null; - Iterator i = ImageIO.getImageWritersByMIMEType(type); - if (i.hasNext()) { - writer = (ImageWriter)i.next(); - } - if (writer != null) { - ImageOutputStream stream = null; - stream = ImageIO.createImageOutputStream(os); - writer.setOutput(stream); - writer.write(bufImage); - writer.dispose(); - stream.close(); - } else { - log.log(Level.SEVERE, "SAAJ0526.soap.unsupported.mime.type", - new String[] { type }); - throw new IOException("Unsupported mime type:"+ type); - } - } catch (Exception e) { - log.severe("SAAJ0525.soap.cannot.encode.img"); - throw new IOException("Unable to encode the image to a stream " - + e.getMessage()); - } - } - - - private BufferedImage render(Image img) throws InterruptedException { - - MediaTracker tracker = new MediaTracker(this); - tracker.addImage(img, 0); - tracker.waitForAll(); - BufferedImage bufImage = new BufferedImage(img.getWidth(null), - img.getHeight(null), BufferedImage.TYPE_INT_RGB); - Graphics g = bufImage.createGraphics(); - g.drawImage(img, 0, 0, null); - g.dispose(); - return bufImage; - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/JpegDataContentHandler.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/JpegDataContentHandler.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,162 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import java.awt.*; -import java.awt.datatransfer.DataFlavor; -import java.awt.image.BufferedImage; -import java.io.*; - -import javax.activation.*; - -//import com.sun.image.codec.jpeg.*; -import javax.imageio.ImageIO; - -/** - * JAF data handler for Jpeg content - * - * @author Ana Lindstrom-Tamer - */ - -public class JpegDataContentHandler - extends Component - implements DataContentHandler { - public static final String STR_SRC = "java.awt.Image"; - - /** - * return the DataFlavors for this DataContentHandler - * @return The DataFlavors. - */ - public DataFlavor[] getTransferDataFlavors() { // throws Exception; - DataFlavor flavors[] = new DataFlavor[1]; - - try { - flavors[0] = - new ActivationDataFlavor( - Class.forName(STR_SRC), - "image/jpeg", - "JPEG"); - } catch (Exception e) { - System.out.println(e); - } - - return flavors; - } - - /** - * return the Transfer Data of type DataFlavor from InputStream - * @param df The DataFlavor. - * @param ins The InputStream corresponding to the data. - * @return The constructed Object. - */ - public Object getTransferData(DataFlavor df, DataSource ds) { - - // this is sort of hacky, but will work for the - // sake of testing... - if (df.getMimeType().startsWith("image/jpeg")) { - if (df.getRepresentationClass().getName().equals(STR_SRC)) { - InputStream inputStream = null; - BufferedImage jpegLoadImage = null; - - try { - inputStream = ds.getInputStream(); - jpegLoadImage = ImageIO.read(inputStream); - - } catch (Exception e) { - System.out.println(e); - } - - return jpegLoadImage; - } - } - return null; - } - - /** - * - */ - public Object getContent(DataSource ds) { // throws Exception; - InputStream inputStream = null; - BufferedImage jpegLoadImage = null; - - try { - inputStream = ds.getInputStream(); - jpegLoadImage = ImageIO.read(inputStream); - - } catch (Exception e) { - } - - return (Image) jpegLoadImage; - } - - /** - * construct an object from a byte stream - * (similar semantically to previous method, we are deciding - * which one to support) - */ - public void writeTo(Object obj, String mimeType, OutputStream os) - throws IOException { - if (!mimeType.equals("image/jpeg")) - throw new IOException( - "Invalid content type \"" - + mimeType - + "\" for ImageContentHandler"); - - if (obj == null) { - throw new IOException("Null object for ImageContentHandler"); - } - - try { - BufferedImage bufImage = null; - if (obj instanceof BufferedImage) { - bufImage = (BufferedImage) obj; - - } else { - Image img = (Image) obj; - MediaTracker tracker = new MediaTracker(this); - tracker.addImage(img, 0); - tracker.waitForAll(); - if (tracker.isErrorAny()) { - throw new IOException("Error while loading image"); - } - bufImage = - new BufferedImage( - img.getWidth(null), - img.getHeight(null), - BufferedImage.TYPE_INT_RGB); - - Graphics g = bufImage.createGraphics(); - g.drawImage(img, 0, 0, null); - } - ImageIO.write(bufImage, "jpeg", os); - - } catch (Exception ex) { - throw new IOException( - "Unable to run the JPEG Encoder on a stream " - + ex.getMessage()); - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LazyEnvelope.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LazyEnvelope.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,61 +0,0 @@ -/* - * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -public interface LazyEnvelope extends Envelope { - public XMLStreamReader getPayloadReader() throws SOAPException; - public boolean isLazy(); - public void writeTo(XMLStreamWriter writer) throws XMLStreamException, SOAPException; - - /** - * Retrieve payload qname without materializing its contents - * @return - * @throws SOAPException - */ - public QName getPayloadQName() throws SOAPException; - - /** - * Retrieve payload attribute value without materializing its contents - * @param localName - * @return - * @throws SOAPException - */ - public String getPayloadAttributeValue(String localName) throws SOAPException; - - /** - * Retrieve payload attribute value without materializing its contents - * @param qName - * @return - * @throws SOAPException - */ - public String getPayloadAttributeValue(QName qName) throws SOAPException; -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for soap pkg -# Error messages -SAAJ0501.soap.data.handler.err=SAAJ0501: Data handler error: {0} -SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: No data handler associated with this attachment -SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Null dataHandler argument to setDataHandler -SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Unable to externalize attachment -SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: Unable to copy MIME header -SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: Unable to copy MIME headers into attachment -# Usage not found. TODO Remove -#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} -SAAJ0508.soap.cannot.register.handlers=SAAJ050: Unable to register handlers in JAF command map - -SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Unable to create envelope from given source -SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Unable to create envelope from given source -SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Unable to create envelope: incorrect factory used during tree construction -SAAJ0513.soap.unknown.ns=SAAJ0513: Unable to create envelope from given source because the namespace was not recognized -SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Unable to create envelope from given source because the root element is not named Envelope -SAAJ0515.source.reset.exception=SAAJ0515: Unable to reset the soap-part content source - -SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler requires Image object, but was given object of type {0} -SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type set to {0} -SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Invalid content-type {0} for ImageContentHandler -SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Null object for ImageContentHandler -SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: Unable to run the JPEG Encoder on a stream -SAAJ0525.soap.cannot.encode.img=SAAJ0525: Unable to encode image to a stream -SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Unsupported mime type {0} - -SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Unrecognized Content-Type -SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Unable to parse content type -SAAJ0532.soap.no.Content-Type=SAAJ0532: Absent Content-Type -SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Cannot create message: incorrect content-type for SOAP version. Got {0}, but expected {1} -SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Unrecognized Content-Type -SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Unable to internalize message -SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type needs to be Multipart/Related and with type=text/xml or application/soap+xml -SAAJ0537.soap.invalid.content-type=SAAJ0537: Invalid Content-Type. Could be an error message instead of a SOAP message -SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: Unable to convert SOAP message into a Multipart object -SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Unable to get header stream in saveChanges -SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Error during saving a multipart message -SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Could not complete operation. Fragment not bound to SOAP part -SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Processing Instructions are not allowed in SOAP documents -SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: Entity References are not allowed in SOAP documents -SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: Source does not have a valid Reader or InputStream -SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Error setting the source for SOAPPart -SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Internal error: stream not of the right type -SAAJ0547.soap.cannot.externalize=SAAJ0547: Error while trying to externalize -SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: Unable to externalize header -SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Bad Content-Type for SOAP Part {0} -SAAJ0550.soap.null.headers=SAAJ0550: Cannot create message: Headers can't be null -SAAJ0551.soap.unsupported.encoding=SAAJ0551: Unsupported encoding {0} -SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML declaration parsing failed -SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode on SOAPPart not supported -SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument on SOAPPart not supported -SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig on SOAPPart not supported -SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode on SOAPPart not supported -SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI on SOAPPart not supported -SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI on SOAPPart not supported -SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking on SOAPPart not supported -SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding on SOAPPart not supported -SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding on SOAPPart not supported -SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone on SOAPPart not supported -SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone on SOAPPart not supported -SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion on SOAPPart not supported -SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion on SOAPPart not supported -SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking on SOAPPart not supported -# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" -SAAJ0567.soap.null.input=SAAJ0567: Null {0} argument to {1} -SAAJ0568.soap.unsupported.protocol=SAAJ0568: Protocol {0} does not support {1} -# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" -SAAJ0569.soap.unknown.protocol=SAAJ0569: Unknown Protocol {0} specified for creating {1} -SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: The parent element of a soap part is not defined -SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Setting value of a soap part is not defined -SAAJ0572.soap.no.content.for.attachment=SAAJ0572: No data handler/content associated with this attachment -SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException while reading the raw attachment content -SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException while trying to obtain the inputstream from datahandler for this attachment -SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Exception while trying to retrieve content for this attachment -SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Exception while trying to set the Raw content for this attachment -SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Exception while trying to get the Raw content for this attachment -SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Exception while trying to set the Decoded content for this attachment -SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Exception while trying to get the Encoded content for this attachment -SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Unable to locate attachment with cid {0} -SAAJ0591.soap.exception.in.set.property=SAAJ0591: Exception {0} when trying to set Property {1} on SOAP Message - -# Info messages -SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type set to {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_de.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_de.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for soap pkg -# Error messages -SAAJ0501.soap.data.handler.err=SAAJ0501: Daten-Handler-Fehler: {0} -SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: Es ist kein Daten-Handler mit diesem Anhang verkn\u00FCpft -SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Null-dataHandler-Argument f\u00FCr setDataHandler -SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Anhang kann nicht externalisiert werden -SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME-Header kann nicht kopiert werden -SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME-Header k\u00F6nnen nicht in Anhang kopiert werden -# Usage not found. TODO Remove -#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} -SAAJ0508.soap.cannot.register.handlers=SAAJ050: Handler k\u00F6nnen in JAF-Befehlszuordnung nicht registriert werden - -SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Envelope kann nicht aus angegebener Quelle erstellt werden -SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Envelope kann nicht aus angegebener Quelle erstellt werden -SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Envelope kann nicht erstellt werden: falsche Factory bei der Erstellung der Baumstruktur verwendet -SAAJ0513.soap.unknown.ns=SAAJ0513: Envelope kann nicht aus der angegebenen Quelle erstellt werden, weil der Namespace nicht erkannt wurde -SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Envelope kann nicht aus der angegebenen Quelle erstellt werden, weil das Root-Element nicht den Namen "Envelope" hat -SAAJ0515.source.reset.exception=SAAJ0515: soap-part-Contentquelle kann nicht zur\u00FCckgesetzt werden - -SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler erfordert Imageobjekt, Objekt vom Typ {0} wurde jedoch angegeben -SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type auf {0} festgelegt -SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Ung\u00FCltiger Content-Type {0} f\u00FCr ImageContentHandler -SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Null-Objekt f\u00FCr ImageContentHandler -SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: JPEG-Encoder kann nicht in einem Stream ausgef\u00FChrt werden -SAAJ0525.soap.cannot.encode.img=SAAJ0525: Image kann nicht in einem Stream codiert werden -SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Nicht unterst\u00FCtzter MIME-Typ {0} - -SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Nicht erkannter Content-Type -SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Content-Type kann nicht geparst werden -SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type fehlt -SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Nachricht kann nicht erstellt werden: Falscher Content-Type f\u00FCr SOAP-Version. {0} erhalten, jedoch {1} erwartet -SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Nicht erkannter Content-Type -SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Nachricht kann nicht \"internalisiert\" werden. -SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type muss Multipart/Related mit type=text/xml oder application/soap+xml sein -SAAJ0537.soap.invalid.content-type=SAAJ0537: Ung\u00FCltiger Content-Type. K\u00F6nnte eine Fehlermeldung anstelle einer SOAP-Nachricht sein -SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP-Nachricht kann nicht in ein Multipart-Objekt konvertiert werden -SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Header Stream in saveChanges kann nicht abgerufen werden -SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Fehler beim Speichern einer Multipart-Nachricht -SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Vorgang konnte nicht abgeschlossen werden. Fragment nicht an SOAP Part gebunden -SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Verarbeitungsanweisungen sind in SOAP-Dokumenten nicht zul\u00E4ssig -SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: Entity-Referenzen sind in SOAP-Dokumenten nicht zul\u00E4ssig -SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: Quelle hat keinen g\u00FCltigen Reader oder InputStream -SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Fehler beim Festlegen der Quelle f\u00FCr SOAPPart -SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Interner Fehler: Stream hat nicht den richtigen Typ -SAAJ0547.soap.cannot.externalize=SAAJ0547: Fehler bei Externalisierungsversuch -SAAJ0548.soap.cannot.externalize.hdr=SAAJ0504: Header kann nicht externalisiert werden -SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Ung\u00FCltiger Content-Type f\u00FCr SOAPPart {0} -SAAJ0550.soap.null.headers=SAAJ0550: Nachricht kann nicht erstellt werden: Header d\u00FCrfen nicht null sein -SAAJ0551.soap.unsupported.encoding=SAAJ0551: Nicht unterst\u00FCtzte Codierung {0} -SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: Parsing von XML-Deklaration nicht erfolgreich -SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode in SOAPPart nicht unterst\u00FCtzt -SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument in SOAPPart nicht unterst\u00FCtzt -SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig in SOAPPart nicht unterst\u00FCtzt -SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode in SOAPPart nicht unterst\u00FCtzt -SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI in SOAPPart nicht unterst\u00FCtzt -SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI in SOAPPart nicht unterst\u00FCtzt -SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking in SOAPPart nicht unterst\u00FCtzt -SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding in SOAPPart nicht unterst\u00FCtzt -SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding in SOAPPart nicht unterst\u00FCtzt -SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone in SOAPPart nicht unterst\u00FCtzt -SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone in SOAPPart nicht unterst\u00FCtzt -SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion in SOAPPart nicht unterst\u00FCtzt -SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion in SOAPPart nicht unterst\u00FCtzt -SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking in SOAPPart nicht unterst\u00FCtzt -# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" -SAAJ0567.soap.null.input=SAAJ0567: Null-{0}-Argument f\u00FCr {1} -SAAJ0568.soap.unsupported.protocol=SAAJ0568: Protokoll {0} unterst\u00FCtzt {1} nicht -# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" -SAAJ0569.soap.unknown.protocol=SAAJ0569: Unbekanntes Protokoll {0} f\u00FCr Erstellung von {1} angegeben -SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: Das \u00FCbergeordnete Element eines SOAPPart-Teils ist nicht definiert -SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Die Festlegung des Wertes eines SOAPPart-Teils ist nicht definiert -SAAJ0572.soap.no.content.for.attachment=SAAJ0502: Es ist kein Daten-Handler/Content mit diesem Anhang verkn\u00FCpft -SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException beim Lesen des Raw-Anhangscontents -SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException beim Versuch, den Input Stream aus Daten-Handler f\u00FCr diesen Anhang abzurufen -SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Ausnahme beim Versuch, den Content f\u00FCr diesen Anhang abzurufen -SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Ausnahme beim Versuch, den Raw-Content f\u00FCr diesen Anhang festzulegen -SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Ausnahme beim Versuch, den Raw-Content f\u00FCr diesen Anhang abzurufen -SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Ausnahme beim Versuch, den decodierten Content f\u00FCr diesen Anhang festzulegen -SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Ausnahme beim Versuch, den decodierten Content f\u00FCr diesen Anhang abzurufen -SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Anhang mit CID {0} kann nicht gefunden werden -SAAJ0591.soap.exception.in.set.property=SAAJ0591: Ausnahme {0} beim Versuch, Eigenschaft {1} in SOAP-Nachricht festzulegen - -# Info messages -SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type auf {0} festgelegt diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_es.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_es.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for soap pkg -# Error messages -SAAJ0501.soap.data.handler.err=SAAJ0501: Error de manejador de datos: {0} -SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: no hay ning\u00FAn manejador de datos asociado a este anexo -SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: argumento dataHandler nulo para setDataHandler -SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: no se ha podido externalizar el anexo -SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: no se ha podido copiar la cabecera MIME -SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: no se han podido copiar las cabeceras MIME en el anexo -# Usage not found. TODO Remove -#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} -SAAJ0508.soap.cannot.register.handlers=SAAJ050: no se han podido registrar los manejadores en la asignaci\u00F3n de comandos JAF - -SAAJ0510.soap.cannot.create.envelope=SAAJ0510: no se ha podido crear el elemento Envelope desde el origen especificado -SAAJ0511.soap.cannot.create.envelope=SAAJ0511: no se ha podido crear el elemento Envelope desde el origen especificado -SAAJ0512.soap.incorrect.factory.used=SAAJ0512: No se ha podido crear el elemento Envelope: se ha utilizado una f\u00E1brica incorrecta durante la construcci\u00F3n del \u00E1rbol -SAAJ0513.soap.unknown.ns=SAAJ0513: no se ha podido crear el elemento Envelope desde el origen especificado, porque no se ha reconocido el espacio de nombres -SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: no se ha podido crear el elemento Envelope desde el origen especificado, porque el elemento ra\u00EDz no se denomina Envelope -SAAJ0515.source.reset.exception=SAAJ0515: no se ha podido restablecer el origen del contenido de la parte soap - -SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler necesita un objeto de imagen, pero se ha proporcionado un objeto de tipo {0} -SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type est\u00E1 definido en {0} -SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Content-Type {0} no v\u00E1lido para ImageContentHandler -SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: objeto nulo para ImageContentHandler -SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: no se ha podido ejecutar el codificador JPEG en un flujo -SAAJ0525.soap.cannot.encode.img=SAAJ0525: no se ha podido codificar la imagen en un flujo -SAAJ0526.soap.unsupported.mime.type=SAAJ0526: tipo MIME no soportado {0} - -SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type no reconocido -SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: no se ha podido analizar el tipo de contenido -SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type ausente -SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: No se puede crear el mensaje: content-type incorrecto para la versi\u00F3n de SOAP. Se ha obtenido {0}, pero se esperaba {1} -SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type no reconocido -SAAJ0535.soap.cannot.internalize.message=SAAJ0535: no se ha podido internalizar el mensaje -SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type tiene que ser Multipart/Related y con type=text/xml o application/soap+xml -SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type no v\u00E1lido. Podr\u00EDa ser un mensaje de error en lugar de un mensaje SOAP -SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: no se ha podido convertir un mensaje SOAP en un objeto de varias partes -SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: no se ha podido obtener el flujo de cabeceras en saveChanges -SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: error al guardar un mensaje de varias partes -SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: no se ha podido completar la operaci\u00F3n. El fragmento no est\u00E1 enlazado a la parte SOAP -SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: no se permiten instrucciones de procesamiento en los documentos SOAP -SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: no se permiten referencias a entidades en los documentos SOAP -SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: el origen no tiene un Reader o InputStream v\u00E1lido -SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: error al definir el origen para SOAPPart -SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Error interno: el flujo no es del tipo correcto -SAAJ0547.soap.cannot.externalize=SAAJ0547: Error al intentar externalizar -SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: no se ha podido externalizar la cabecera -SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Content-Type err\u00F3neo para la parte SOAP {0} -SAAJ0550.soap.null.headers=SAAJ0550: no se puede crear el mensaje. Las cabeceras no pueden ser nulas -SAAJ0551.soap.unsupported.encoding=SAAJ0551: codificaci\u00F3n no soportada {0} -SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: fallo en el an\u00E1lisis de la declaraci\u00F3n XML -SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode en SOAPPart no est\u00E1 soportado -SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument en SOAPPart no est\u00E1 soportado -SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig en SOAPPart no est\u00E1 soportado -SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode en SOAPPart no est\u00E1 soportado -SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI en SOAPPart no est\u00E1 soportado -SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI en SOAPPart no est\u00E1 soportado -SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking en SOAPPart no est\u00E1 soportado -SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding en SOAPPart no est\u00E1 soportado -SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding en SOAPPart no est\u00E1 soportado -SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone en SOAPPart no est\u00E1 soportado -SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone en SOAPPart no est\u00E1 soportado -SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion en SOAPPart no est\u00E1 soportado -SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion en SOAPPart no est\u00E1 soportado -SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking en SOAPPart no est\u00E1 soportado -# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" -SAAJ0567.soap.null.input=SAAJ0567: argumento {0} nulo para {1} -SAAJ0568.soap.unsupported.protocol=SAAJ0568: el protocolo {0} no soporta {1} -# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" -SAAJ0569.soap.unknown.protocol=SAAJ0569: se ha especificado un protocolo {0} desconocido para crear {1} -SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: no se ha definido el elemento principal de una parte soap -SAAJ0571.soappart.setValue.not.defined=SAAJ0571: no se ha definido el valor de definici\u00F3n de una parte soap -SAAJ0572.soap.no.content.for.attachment=SAAJ0572: no hay ning\u00FAn manejador/contenido asociado a este anexo -SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: excepci\u00F3n de E/S al leer el contenido del anexo raw -SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: excepci\u00F3n de E/S al intentar obtener el flujo de entrada desde el manejador de datos de este anexo -SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: excepci\u00F3n al intentar recuperar el contenido de este anexo -SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: excepci\u00F3n al intentar definir el contenido raw de este anexo -SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: excepci\u00F3n al intentar obtener el contenido raw de este anexo -SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: excepci\u00F3n al intentar definir el contenido descodificado de este anexo -SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: excepci\u00F3n al intentar obtener el contenido codificado de este anexo -SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: no se ha encontrado el anexo con el CID {0} -SAAJ0591.soap.exception.in.set.property=SAAJ0591: excepci\u00F3n {0} al intentar definir la propiedad {1} en el mensaje SOAP - -# Info messages -SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type definido en {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_fr.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_fr.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for soap pkg -# Error messages -SAAJ0501.soap.data.handler.err=SAAJ0501 : erreur de gestionnaire de donn\u00E9es : {0} -SAAJ0502.soap.no.handler.for.attachment=SAAJ0502 : aucun gestionnaire de donn\u00E9es associ\u00E9 \u00E0 cette pi\u00E8ce jointe -SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503 : argument dataHandler NULL pour setDataHandler -SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504 : impossible d'externaliser la pi\u00E8ce jointe -SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505 : impossible de copier l'en-t\u00EAte MIME -SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506 : impossible de copier les en-t\u00EAtes MIME dans la pi\u00E8ce jointe -# Usage not found. TODO Remove -#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} -SAAJ0508.soap.cannot.register.handlers=SAAJ050 : impossible d'inscrire les gestionnaires dans la mappe de commande JAF - -SAAJ0510.soap.cannot.create.envelope=SAAJ0510 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e -SAAJ0511.soap.cannot.create.envelope=SAAJ0511 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e -SAAJ0512.soap.incorrect.factory.used=SAAJ0512 : impossible de cr\u00E9er une enveloppe : fabrique incorrecte utilis\u00E9e lors de la construction de l'arborescence -SAAJ0513.soap.unknown.ns=SAAJ0513 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e car l'espace de noms n'a pas \u00E9t\u00E9 reconnu -SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e car l'\u00E9l\u00E9ment racine n'est pas nomm\u00E9 Envelope -SAAJ0515.source.reset.exception=SAAJ0515 : impossible de red\u00E9finir la source de contenu soap-part - -SAAJ0520.soap.invalid.obj.type=SAAJ0520 : DataContentHandler exige un objet de type Image, mais a re\u00E7u un objet de type {0} -SAAJ0521.soap.set.Content-Type=SAAJ0521 : Content-Type d\u00E9fini sur {0} -SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522 : content-type {0} non valide pour ImageContentHandler -SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523 : objet NULL pour ImageContentHandler -SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524 : impossible d'ex\u00E9cuter l'encodeur JPEG sur un flux -SAAJ0525.soap.cannot.encode.img=SAAJ0525 : impossible d'encoder l'image en un flux -SAAJ0526.soap.unsupported.mime.type=SAAJ0526 : type MIME {0} non pris en charge - -SAAJ0530.soap.unknown.Content-Type=SAAJ0530 : Content-Type non reconnu -SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531 : impossible d'analyser le type de contenu -SAAJ0532.soap.no.Content-Type=SAAJ0532 : Content-Type absent -SAAJ0533.soap.incorrect.Content-Type=SAAJ0533 : impossible de cr\u00E9er un message : content-type incorrect pour la version SOAP. {0} obtenu, mais {1} attendu -SAAJ0534.soap.unknown.Content-Type=SAAJ0534 : Content-Type non reconnu -SAAJ0535.soap.cannot.internalize.message=SAAJ0535 : impossible d'internaliser le message -SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536 : Content-Type doit \u00EAtre Multipart/Related et avec le type = text/xml ou application/soap+xml -SAAJ0537.soap.invalid.content-type=SAAJ0537 : Content-Type non valide. Cela peut \u00EAtre un message d'erreur au lieu d'un message SOAP -SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538 : impossible de convertir un message SOAP en objet Multipart -SAAJ0539.soap.cannot.get.header.stream=SAAJ0539 : impossible d'obtenir un flux de donn\u00E9es d'en-t\u00EAte dans saveChanges -SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540 : erreur lors de l'enregistrement d'un message Multipart -SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541 : impossible de terminer l'op\u00E9ration. Fragment non li\u00E9 \u00E0 la partie SOAP -SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542 : les instructions de traitement ne sont pas autoris\u00E9es dans les documents SOAP -SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543 : les r\u00E9f\u00E9rences d'entit\u00E9 ne sont pas autoris\u00E9es dans les documents SOAP -SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544 : la source n'a pas de processus de lecture ou d'InputStream valide -SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545 : erreur lors de la d\u00E9finition de la source pour SOAPPart -SAAJ0546.soap.stream.incorrect.type=SAAJ0546 : erreur interne : le type du flux n'est pas correct -SAAJ0547.soap.cannot.externalize=SAAJ0547 : erreur lors de la tentative d'externalisation -SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548 : impossible d'externaliser l'en-t\u00EAte -SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549 : Content-Type incorrect pour la partie SOAP {0} -SAAJ0550.soap.null.headers=SAAJ0550 : impossible de cr\u00E9er le message : les en-t\u00EAtes ne peuvent pas \u00EAtre NULL -SAAJ0551.soap.unsupported.encoding=SAAJ0551 : encodage {0} non pris en charge -SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552 : \u00E9chec de l'analyse de la d\u00E9claration XML -SAAJ0553.soappart.renamenode.not.supported=SAAJ0553 : renameNode sur SOAPPart non pris en charge -SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554 : normalizeDocument sur SOAPPart non pris en charge -SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555 : getDomConfig sur SOAPPart non pris en charge -SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556 : adoptNode sur SOAPPart non pris en charge -SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557 : setDocumentURI sur SOAPPart non pris en charge -SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558 : getDocumentURI sur SOAPPart non pris en charge -SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559 : setStrictErrorChecking sur SOAPPart non pris en charge -SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560 : getInputEncoding sur SOAPPart non pris en charge -SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561 : getXmlEncoding sur SOAPPart non pris en charge -SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562 : getXmlStandalone sur SOAPPart non pris en charge -SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563 : setXmlStandalone sur SOAPPart non pris en charge -SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564 : getXmlVersion sur SOAPPart non pris en charge -SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565 : setXmlVersion sur SOAPPart non pris en charge -SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566 : getStrictErrorChecking sur SOAPPart non pris en charge -# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" -SAAJ0567.soap.null.input=SAAJ0567 : argument {0} NULL pour {1} -SAAJ0568.soap.unsupported.protocol=SAAJ0568 : le protocole {0} ne prend pas en charge {1} -# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" -SAAJ0569.soap.unknown.protocol=SAAJ0569 : protocole {0} inconnu indiqu\u00E9 pour la cr\u00E9ation de {1} -SAAJ0570.soappart.parent.element.not.defined=SAAJ0570 : l'\u00E9l\u00E9ment parent d'une partie SOAP n'est pas d\u00E9fini -SAAJ0571.soappart.setValue.not.defined=SAAJ0571 : la valeur de param\u00E8tre d'une partie SOAP n'est pas d\u00E9finie -SAAJ0572.soap.no.content.for.attachment=SAAJ0572 : aucun contenu/gestionnaire de donn\u00E9es associ\u00E9 \u00E0 cette pi\u00E8ce jointe -SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573 : exception d'E/S lors de la lecture du contenu de la pi\u00E8ce jointe raw -SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574 : exception d'E/S lors de la tentative d'obtention du flux d'entr\u00E9e \u00E0 partir du gestionnaire de donn\u00E9es pour cette pi\u00E8ce jointe -SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575 : exception lors de la tentative d'extraction du contenu pour cette pi\u00E8ce jointe -SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576 : exception lors de la tentative de d\u00E9finition du contenu Raw pour cette pi\u00E8ce jointe -SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577 : exception lors de la tentative d'obtention du contenu Raw pour cette pi\u00E8ce jointe -SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578 : exception lors de la tentative de d\u00E9finition du contenu Decoded pour cette pi\u00E8ce jointe -SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579 : exception lors de la tentative d'obtention du contenu Encoded pour cette pi\u00E8ce jointe -SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590 : impossible de localiser la pi\u00E8ce jointe avec le CID {0} -SAAJ0591.soap.exception.in.set.property=SAAJ0591 : exception {0} lors de la tentative de d\u00E9finition de la propri\u00E9t\u00E9 {1} sur le message SOAP - -# Info messages -SAAJ0580.soap.set.Content-Type=SAAJ0580 : Content-Type d\u00E9fini sur {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_it.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_it.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for soap pkg -# Error messages -SAAJ0501.soap.data.handler.err=SAAJ0501: Errore dell''handler dei dati: {0} -SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: Nessun handler dei dati associato a questo allegato -SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Argomento dataHandler nullo per setDataHandler -SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Impossibile esternalizzare l'allegato -SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: Impossibile copiare l'intestazione MIME -SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: Impossibile copiare le intestazioni MIME nell'allegato -# Usage not found. TODO Remove -#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} -SAAJ0508.soap.cannot.register.handlers=SAAJ050: Impossibile registrare gli handler nella mappa dei comandi JAF - -SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Impossibile creare l'envelope dall'origine specificata -SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Impossibile creare l'envelope dall'origine specificata -SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Impossibile creare l'envelope: factory errato usato durante la costruzione della struttura -SAAJ0513.soap.unknown.ns=SAAJ0513: Impossibile creare l'envelope dall'origine specificata poich\u00E9 lo spazio di nomi non \u00E8 stato riconosciuto -SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Impossibile creare l'envelope dall'origine specificata poich\u00E9 l'elemento radice non \u00E8 denominato Envelope -SAAJ0515.source.reset.exception=SAAJ0515: Impossibile reimpostare l'origine del contenuto soap-part - -SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler richiede un oggetto di immagine, ma l''oggetto specificato \u00E8 di tipo {0} -SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type impostato per {0} -SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Content-Type non valido {0} per ImageContentHandler -SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Oggetto nullo per ImageContentHandler -SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: Impossibile eseguire il codificatore JPEG su un flusso -SAAJ0525.soap.cannot.encode.img=SAAJ0525: Impossibile codificare l'immagine in un flusso -SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Tipo MIME {0} non supportato - -SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type non riconosciuto -SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Impossibile analizzare il tipo di contenuto -SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type assente -SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Impossibile creare il messaggio: Content-Type errato per la versione SOAP. Ricevuto {0}, ma previsto {1} -SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type non riconosciuto -SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Impossibile rendere interno il messaggio -SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type deve essere Multipart/Related e con type=text/xml -SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type non valido. Potrebbe essere un messaggio di errore anzich\u00E9 un messaggio SOAP -SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: Impossibile convertire il messaggio SOAP in un oggetto Multipart -SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Impossibile recuperare il flusso di intestazioni in saveChanges -SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Errore durante il salvataggio di un messaggio multiparte -SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Impossibile completare l'operazione. Frammento non associato alla SOAP Part -SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Le istruzioni di elaborazione non sono consentite nei documenti SOAP -SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: I riferimenti alle entit\u00E0 non sono consentiti nei documenti SOAP -SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: L'origine non ha un lettore o un flusso di input valido -SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Errore di impostazione dell''origine per SOAPPart -SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Errore interno: flusso di tipo errato -SAAJ0547.soap.cannot.externalize=SAAJ0547: Errore durante il tentativo di esternalizzazione -SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: Impossibile esternalizzare l'intestazione -SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Content-Type non valido per SOAP Part {0} -SAAJ0550.soap.null.headers=SAAJ0550: Impossibile creare il messaggio: le intestazioni non possono essere nulle -SAAJ0551.soap.unsupported.encoding=SAAJ0551: Codifica {0} non supportata -SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: Analisi della dichiarazione XML non riuscita -SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode su SOAPPart non supportato -SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument su SOAPPart non supportato -SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig su SOAPPart non supportato -SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode su SOAPPart non supportato -SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI su SOAPPart non supportato -SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI su SOAPPart non supportato -SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking su SOAPPart non supportato -SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding su SOAPPart non supportato -SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding su SOAPPart non supportato -SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone su SOAPPart non supportato -SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone su SOAPPart non supportato -SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion su SOAPPart non supportato -SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion su SOAPPart non supportato -SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking su SOAPPart non supportato -# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" -SAAJ0567.soap.null.input=SAAJ0567: Argomento {0} nullo a {1} -SAAJ0568.soap.unsupported.protocol=SAAJ0568: Il protocollo {0} non supporta {1} -# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" -SAAJ0569.soap.unknown.protocol=SAAJ0569: Protocollo sconosciuto {0} specificato per la creazione di {1} -SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: L'elemento padre di una SOAP Part non \u00E8 definito -SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Il valore di impostazione di una SOAP Part non \u00E8 definito -SAAJ0572.soap.no.content.for.attachment=SAAJ0572: Nessun handler dei dati/contenuto associato a questo allegato -SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException durante la lettura del contenuto dell'allegato di tipo RAW -SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException durante il tentativo di ottenere il flusso di input dall'handler dei dati per questo allegato -SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Eccezione durante il tentativo di recuperare il contenuto per questo allegato -SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Eccezione durante il tentativo di impostare il contenuto di tipo RAW per questo allegato -SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Eccezione durante il tentativo di recuperare il contenuto di tipo RAW per questo allegato -SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Eccezione durante il tentativo di impostare il contenuto decodificato per questo allegato -SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Eccezione durante il tentativo di recuperare il contenuto codificato per questo allegato -SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Impossibile trovare l''allegato con cid {0} -SAAJ0591.soap.exception.in.set.property=SAAJ0591: Eccezione {0} durante il tentativo di impostare Property {1} su SOAP Message - -# Info messages -SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type impostato per {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ja.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ja.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for soap pkg -# Error messages -SAAJ0501.soap.data.handler.err=SAAJ0501: \u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9\u30FB\u30A8\u30E9\u30FC: {0} -SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u3053\u306E\u6DFB\u4ED8\u306B\u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9\u304C\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler\u306B\u5BFE\u3059\u308BdataHandler\u5F15\u6570\u304Cnull\u3067\u3059 -SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u6DFB\u4ED8\u3092\u5916\u90E8\u5316\u3067\u304D\u307E\u305B\u3093 -SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME\u30D8\u30C3\u30C0\u30FC\u3092\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093 -SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME\u30D8\u30C3\u30C0\u30FC\u3092\u6DFB\u4ED8\u306B\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093 -# Usage not found. TODO Remove -#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} -SAAJ0508.soap.cannot.register.handlers=SAAJ050: JAF\u30B3\u30DE\u30F3\u30C9\u30FB\u30DE\u30C3\u30D7\u306B\u30CF\u30F3\u30C9\u30E9\u3092\u767B\u9332\u3067\u304D\u307E\u305B\u3093 - -SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 -SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 -SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: \u30C4\u30EA\u30FC\u306E\u69CB\u7BC9\u4E2D\u306B\u7121\u52B9\u306A\u30D5\u30A1\u30AF\u30C8\u30EA\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F -SAAJ0513.soap.unknown.ns=SAAJ0513: \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u8A8D\u8B58\u3055\u308C\u306A\u304B\u3063\u305F\u305F\u3081\u3001\u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 -SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u30EB\u30FC\u30C8\u8981\u7D20\u306E\u540D\u524D\u304CEnvelope\u3067\u306F\u306A\u3044\u305F\u3081\u3001\u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 -SAAJ0515.source.reset.exception=SAAJ0515: soap-part\u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30BD\u30FC\u30B9\u3092\u30EA\u30BB\u30C3\u30C8\u3067\u304D\u307E\u305B\u3093 - -SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler\u306B\u306FImage\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u5FC5\u8981\u3067\u3059\u304C\u3001\u30BF\u30A4\u30D7{0}\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F -SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 -SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler\u306Econtent-type {0}\u304C\u7121\u52B9\u3067\u3059 -SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304Cnull\u3067\u3059 -SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u30B9\u30C8\u30EA\u30FC\u30E0\u3067JPEG\u30A8\u30F3\u30B3\u30FC\u30C0\u3092\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093 -SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u30A4\u30E1\u30FC\u30B8\u3092\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u30A8\u30F3\u30B3\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093 -SAAJ0526.soap.unsupported.mime.type=SAAJ0526: MIME\u30BF\u30A4\u30D7{0}\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 - -SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type\u304C\u8A8D\u8B58\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F -SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30BF\u30A4\u30D7\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093 -SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type\u304C\u3042\u308A\u307E\u305B\u3093 -SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: SOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306Econtent-type\u304C\u7121\u52B9\u3067\u3059\u3002{0}\u304C\u53D6\u5F97\u3055\u308C\u307E\u3057\u305F\u304C\u3001{1}\u304C\u4E88\u671F\u3055\u308C\u307E\u3059 -SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type\u304C\u8A8D\u8B58\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F -SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u5185\u90E8\u5316\u3067\u304D\u307E\u305B\u3093 -SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type\u306FMultipart/Related\u3067\u3042\u308A\u3001type=text/xml\u307E\u305F\u306Fapplication/soap+xml\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type\u304C\u7121\u52B9\u3067\u3059\u3002SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u304B\u308F\u308A\u306B\u30A8\u30E9\u30FC\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u306A\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 -SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u3092Multipart\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093 -SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: saveChanges\u3067\u30D8\u30C3\u30C0\u30FC\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093 -SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: multipart\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u4FDD\u5B58\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u64CD\u4F5C\u3092\u5B8C\u4E86\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u304CSOAP\u30D1\u30FC\u30C8\u306B\u30D0\u30A4\u30F3\u30C9\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u51E6\u7406\u547D\u4EE4\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 -SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOAP\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 -SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u30BD\u30FC\u30B9\u306B\u6709\u52B9\u306AReader\u307E\u305F\u306FInputStream\u304C\u3042\u308A\u307E\u305B\u3093 -SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: SOAPPart\u306E\u30BD\u30FC\u30B9\u3092\u8A2D\u5B9A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5185\u90E8\u30A8\u30E9\u30FC: \u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u30BF\u30A4\u30D7\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093 -SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5916\u90E8\u5316\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F -SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u30D8\u30C3\u30C0\u30FC\u3092\u5916\u90E8\u5316\u3067\u304D\u307E\u305B\u3093 -SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP\u30D1\u30FC\u30C8{0}\u306EContent-Type\u304C\u7121\u52B9\u3067\u3059 -SAAJ0550.soap.null.headers=SAAJ0550: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: \u30D8\u30C3\u30C0\u30FC\u3092null\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML\u5BA3\u8A00\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F -SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: SOAPPart\u306ErenameNode\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: SOAPPart\u306EnormalizeDocument\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: SOAPPart\u306EgetDomConfig\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: SOAPPart\u306EadoptNode\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: SOAPPart\u306EsetDocumentURI\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: SOAPPart\u306EgetDocumentURI\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: SOAPPart\u306EsetStrictErrorChecking\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: SOAPPart\u306EgetInputEncoding\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: SOAPPart\u306EgetXmlEncoding\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: SOAPPart\u306EgetXmlStandalone\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: SOAPPart\u306EsetXmlStandalone\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: SOAPPart\u306EgetXmlVersion\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: SOAPPart\u306EsetXmlVersion\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: SOAPPart\u306EgetStrictErrorChecking\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" -SAAJ0567.soap.null.input=SAAJ0567: {1}\u306B\u5BFE\u3059\u308B{0}\u5F15\u6570\u304Cnull\u3067\u3059 -SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u30D7\u30ED\u30C8\u30B3\u30EB{0}\u306F{1}\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u305B\u3093 -# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" -SAAJ0569.soap.unknown.protocol=SAAJ0569: {1}\u306E\u4F5C\u6210\u306B\u5BFE\u3057\u3066\u4E0D\u660E\u306A\u30D7\u30ED\u30C8\u30B3\u30EB{0}\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F -SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: SOAP\u30D1\u30FC\u30C8\u306E\u89AA\u8981\u7D20\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0571.soappart.setValue.not.defined=SAAJ0571: SOAP\u30D1\u30FC\u30C8\u306E\u8A2D\u5B9A\u5024\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u3053\u306E\u6DFB\u4ED8\u306B\u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9/\u30B3\u30F3\u30C6\u30F3\u30C4\u304C\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: raw\u6DFB\u4ED8\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u8AAD\u53D6\u308A\u4E2D\u306BIOException\u304C\u767A\u751F\u3057\u307E\u3057\u305F -SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u3053\u306E\u6DFB\u4ED8\u306Edatahandler\u304B\u3089inputstream\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306BIOException\u304C\u767A\u751F\u3057\u307E\u3057\u305F -SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u3053\u306E\u6DFB\u4ED8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F -SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u3053\u306E\u6DFB\u4ED8\u306ERaw\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F -SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u3053\u306E\u6DFB\u4ED8\u306ERaw\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F -SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u3053\u306E\u6DFB\u4ED8\u306E\u30C7\u30B3\u30FC\u30C9\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F -SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u3053\u306E\u6DFB\u4ED8\u306E\u30A8\u30F3\u30B3\u30FC\u30C9\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F -SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: cid {0}\u306E\u6DFB\u4ED8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 -SAAJ0591.soap.exception.in.set.property=SAAJ0591: SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u3067\u30D7\u30ED\u30D1\u30C6\u30A3{1}\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306B\u4F8B\u5916{0}\u304C\u767A\u751F\u3057\u307E\u3057\u305F - -# Info messages -SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ko.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ko.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for soap pkg -# Error messages -SAAJ0501.soap.data.handler.err=SAAJ0501: \uB370\uC774\uD130 \uCC98\uB9AC\uAE30 \uC624\uB958: {0} -SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uACFC \uC5F0\uAD00\uB41C \uB370\uC774\uD130 \uCC98\uB9AC\uAE30\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler\uC5D0 \uB300\uD55C dataHandler \uC778\uC218\uAC00 \uB110\uC785\uB2C8\uB2E4. -SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \uCCA8\uBD80 \uD30C\uC77C\uC744 \uC678\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME \uD5E4\uB354\uB97C \uBCF5\uC0AC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME \uD5E4\uB354\uB97C \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uBCF5\uC0AC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -# Usage not found. TODO Remove -#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} -SAAJ0508.soap.cannot.register.handlers=SAAJ050: JAF \uBA85\uB839 \uB9F5\uC5D0\uC11C \uCC98\uB9AC\uAE30\uB97C \uB4F1\uB85D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. - -SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: \uD2B8\uB9AC \uC0DD\uC131 \uC911 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC740 \uD329\uD1A0\uB9AC\uAC00 \uC0AC\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0513.soap.unknown.ns=SAAJ0513: \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uC778\uC2DD\uD560 \uC218 \uC5C6\uC5B4 \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \uB8E8\uD2B8 \uC694\uC18C\uAC00 Envelope\uB85C \uBA85\uBA85\uB418\uC9C0 \uC54A\uC544 \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0515.source.reset.exception=SAAJ0515: soap-part \uCF58\uD150\uCE20 \uC18C\uC2A4\uB97C \uC7AC\uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. - -SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler\uC5D0\uB294 \uC774\uBBF8\uC9C0 \uAC1D\uCCB4\uAC00 \uD544\uC694\uD558\uC9C0\uB9CC {0} \uC720\uD615\uC758 \uAC1D\uCCB4\uAC00 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler\uC5D0 \uB300\uD55C content-type {0}\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. -SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler\uC5D0 \uB300\uD55C \uAC1D\uCCB4\uAC00 \uB110\uC785\uB2C8\uB2E4. -SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \uC2A4\uD2B8\uB9BC\uC5D0\uC11C JPEG \uC778\uCF54\uB354\uB97C \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0525.soap.cannot.encode.img=SAAJ0525: \uC2A4\uD2B8\uB9BC\uC5D0 \uC774\uBBF8\uC9C0\uB97C \uC778\uCF54\uB529\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0526.soap.unsupported.mime.type=SAAJ0526: {0}\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 mime \uC720\uD615\uC785\uB2C8\uB2E4. - -SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 Content-Type -SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \uCF58\uD150\uCE20 \uC720\uD615\uC758 \uAD6C\uBB38\uC744 \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \uBA54\uC2DC\uC9C0\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: SOAP \uBC84\uC804\uC5D0 \uB300\uD55C content-type\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. {0}\uC744(\uB97C) \uAC00\uC838\uC654\uC9C0\uB9CC {1}\uC774(\uAC00) \uD544\uC694\uD569\uB2C8\uB2E4. -SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 Content-Type -SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \uBA54\uC2DC\uC9C0\uB97C \uB0B4\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type\uC740 Multipart/Related\uC5EC\uC57C \uD558\uBA70 \uC720\uD615\uC774 text/xml \uB610\uB294 application/soap+xml\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4. -SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. SOAP \uBA54\uC2DC\uC9C0\uAC00 \uC544\uB2CC \uC624\uB958 \uBA54\uC2DC\uC9C0\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4. -SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP \uBA54\uC2DC\uC9C0\uB97C Multipart \uAC1D\uCCB4\uB85C \uBCC0\uD658\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: saveChanges\uC5D0\uC11C \uD5E4\uB354 \uC2A4\uD2B8\uB9BC\uC744 \uAC00\uC838\uC62C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Multipart \uBA54\uC2DC\uC9C0\uB97C \uC800\uC7A5\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \uC791\uC5C5\uC744 \uC644\uB8CC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E8\uD3B8\uC774 SOAP \uBD80\uBD84\uC5D0 \uBC14\uC778\uB4DC\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: \uC9C0\uCE68 \uCC98\uB9AC\uB294 SOAP \uBB38\uC11C\uC5D0\uC11C \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uB294 SOAP \uBB38\uC11C\uC5D0\uC11C \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \uC18C\uC2A4\uC5D0 \uC801\uD569\uD55C \uC77D\uAE30 \uC7A5\uCE58 \uB610\uB294 InputStream\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: SOAPPart\uC5D0 \uB300\uD55C \uC18C\uC2A4\uB97C \uC124\uC815\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \uB0B4\uBD80 \uC624\uB958: \uC2A4\uD2B8\uB9BC\uC758 \uC720\uD615\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0547.soap.cannot.externalize=SAAJ0547: \uC678\uBD80\uD654\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \uD5E4\uB354\uB97C \uC678\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \uBD80\uBD84 {0}\uC5D0 \uB300\uD55C Content-Type\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0550.soap.null.headers=SAAJ0550: \uBA54\uC2DC\uC9C0\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: \uD5E4\uB354\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0551.soap.unsupported.encoding=SAAJ0551: {0}\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uC778\uCF54\uB529\uC785\uB2C8\uB2E4. -SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML \uC120\uC5B8\uC758 \uAD6C\uBB38 \uBD84\uC11D\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: SOAPPart\uC758 renameNode\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: SOAPPart\uC758 normalizeDocument\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: SOAPPart\uC758 getDomConfig\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: SOAPPart\uC758 adoptNode\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: SOAPPart\uC758 setDocumentURI\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: SOAPPart\uC758 getDocumentURI\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: SOAPPart\uC758 setStrictErrorChecking\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: SOAPPart\uC758 getInputEncoding\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: SOAPPart\uC758 getXmlEncoding\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: SOAPPart\uC758 getXmlStandalone\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: SOAPPart\uC758 setXmlStandalone\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: SOAPPart\uC758 getXmlVersion\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: SOAPPart\uC758 setXmlVersion\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: SOAPPart\uC758 getStrictErrorChecking\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" -SAAJ0567.soap.null.input=SAAJ0567: {1}\uC5D0 \uB300\uD55C {0} \uC778\uC218\uAC00 \uB110\uC785\uB2C8\uB2E4. -SAAJ0568.soap.unsupported.protocol=SAAJ0568: {0} \uD504\uB85C\uD1A0\uCF5C\uC740 {1}\uC744(\uB97C) \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" -SAAJ0569.soap.unknown.protocol=SAAJ0569: {1} \uC0DD\uC131\uC744 \uC704\uD574 \uC54C \uC218 \uC5C6\uB294 \uD504\uB85C\uD1A0\uCF5C {0}\uC774(\uAC00) \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: SOAP \uBD80\uBD84\uC758 \uC0C1\uC704 \uC694\uC18C\uAC00 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. -SAAJ0571.soappart.setValue.not.defined=SAAJ0571: SOAP \uBD80\uBD84\uC758 \uC124\uC815 \uAC12\uC774 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. -SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uACFC \uC5F0\uAD00\uB41C \uB370\uC774\uD130 \uCC98\uB9AC\uAE30/\uCF58\uD150\uCE20\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \uC6D0\uC2DC \uCCA8\uBD80 \uD30C\uC77C \uCF58\uD150\uCE20\uB97C \uC77D\uB294 \uC911 IOException\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD574 \uB370\uC774\uD130 \uCC98\uB9AC\uAE30\uC5D0\uC11C \uC785\uB825 \uC2A4\uD2B8\uB9BC\uC744 \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 IOException\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uCF58\uD150\uCE20\uB97C \uAC80\uC0C9\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC6D0\uC2DC \uCF58\uD150\uCE20\uB97C \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC6D0\uC2DC \uCF58\uD150\uCE20\uB97C \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uB514\uCF54\uB529\uB41C \uCF58\uD150\uCE20\uB97C \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC778\uCF54\uB529\uB41C \uCF58\uD150\uCE20\uB97C \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: CID\uAC00 {0}\uC778 \uCCA8\uBD80 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0591.soap.exception.in.set.property=SAAJ0591: SOAP \uBA54\uC2DC\uC9C0\uC5D0\uC11C {1} \uC18D\uC131\uC744 \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 {0} \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. - -# Info messages -SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_pt_BR.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_pt_BR.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for soap pkg -# Error messages -SAAJ0501.soap.data.handler.err=SAAJ0501: erro do handler de dados: {0} -SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: n\u00E3o h\u00E1 handler de dados associado a este anexo -SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: argumento dataHandler nulo para setDataHandler -SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: n\u00E3o \u00E9 poss\u00EDvel externalizar o anexo -SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: n\u00E3o \u00E9 poss\u00EDvel copiar o cabe\u00E7alho MIME -SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: n\u00E3o \u00E9 poss\u00EDvel copiar cabe\u00E7alhos MIME no anexo -# Usage not found. TODO Remove -#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} -SAAJ0508.soap.cannot.register.handlers=SAAJ050: n\u00E3o \u00E9 poss\u00EDvel registrar os handlers no mapa de comando JAF - -SAAJ0510.soap.cannot.create.envelope=SAAJ0510: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida -SAAJ0511.soap.cannot.create.envelope=SAAJ0511: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida -SAAJ0512.soap.incorrect.factory.used=SAAJ0512: n\u00E3o \u00E9 poss\u00EDvel criar o envelope: factory incorreta usada durante a constru\u00E7\u00E3o da \u00E1rvore -SAAJ0513.soap.unknown.ns=SAAJ0513: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida porque o namespace n\u00E3o era reconhecido -SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida porque o elemento-raiz n\u00E3o \u00E9 um Envelope nomeado -SAAJ0515.source.reset.exception=SAAJ0515: n\u00E3o \u00E9 poss\u00EDvel redefinir a origem de conte\u00FAdo da parte de soap - -SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler requer objeto da Imagem, mas foi fornecido o objeto do tipo {0} -SAAJ0521.soap.set.Content-Type=SAAJ0521: Tipo de Conte\u00FAdo definido como {0} -SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: tipo de conte\u00FAdo {0} inv\u00E1lido para ImageContentHandler -SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: objeto nulo para ImageContentHandler -SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: n\u00E3o \u00E9 poss\u00EDvel executar o Codificador JPEG em um fluxo -SAAJ0525.soap.cannot.encode.img=SAAJ0525: n\u00E3o \u00E9 poss\u00EDvel codificar a imagem em um fluxo -SAAJ0526.soap.unsupported.mime.type=SAAJ0526: tipo de mime {0} n\u00E3o suportado - -SAAJ0530.soap.unknown.Content-Type=SAAJ0530: tipo de Conte\u00FAdo N\u00E3o Reconhecido -SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: n\u00E3o \u00E9 poss\u00EDvel fazer parse do tipo de conte\u00FAdo -SAAJ0532.soap.no.Content-Type=SAAJ0532: tipo de Conte\u00FAdo Inexistente -SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: n\u00E3o \u00E9 poss\u00EDvel criar a mensagem: tipo de conte\u00FAdo incorreto para a vers\u00E3o SOAP. Obteve {0}, mas esperava {1} -SAAJ0534.soap.unknown.Content-Type=SAAJ0534: tipo de Conte\u00FAdo N\u00E3o Reconhecido -SAAJ0535.soap.cannot.internalize.message=SAAJ0535: n\u00E3o \u00E9 poss\u00EDvel internalizar a mensagem -SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: o Tipo de Conte\u00FAdo precisa ser de V\u00E1rias Partes/Relacionado com tipo=texto/xml ou aplica\u00E7\u00E3o/soap+xml -SAAJ0537.soap.invalid.content-type=SAAJ0537: tipo de Conte\u00FAdo Inv\u00E1lido. Pode ser uma mensagem de erro, em vez de uma mensagem SOAP -SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: n\u00E3o \u00E9 poss\u00EDvel converter a mensagem SOAP em um objeto de V\u00E1rias partes -SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: n\u00E3o \u00E9 poss\u00EDvel obter fluxo do cabe\u00E7alho em saveChanges -SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: erro ao salvar uma mensagem de v\u00E1rias partes -SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: n\u00E3o foi poss\u00EDvel concluir a opera\u00E7\u00E3o. Fragmento n\u00E3o vinculado \u00E0 parte de SOAP -SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: as instru\u00E7\u00F5es de processamento n\u00E3o s\u00E3o permitidas nos documentos de SOAP -SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: refer\u00EAncias da entidade n\u00E3o s\u00E3o permitidas nos documentos SOAP -SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: a origem n\u00E3o tem um Reader ou InputStream v\u00E1lido -SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: erro ao definir a origem de SOAPPart -SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Erro interno: o fluxo n\u00E3o \u00E9 do tipo correto -SAAJ0547.soap.cannot.externalize=SAAJ0547: erro ao tentar externalizar -SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: n\u00E3o \u00E9 poss\u00EDvel externalizar o cabe\u00E7alho -SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: tipo de Conte\u00FAdo Inv\u00E1lido para a Parte {0} de SOAP -SAAJ0550.soap.null.headers=SAAJ0550: n\u00E3o \u00E9 poss\u00EDvel criar a mensagem: os cabe\u00E7alhos n\u00E3o podem ser nulos -SAAJ0551.soap.unsupported.encoding=SAAJ0551: codifica\u00E7\u00E3o n\u00E3o suportada {0} -SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: falha ao fazer parse da declara\u00E7\u00E3o XML -SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode em SOAPPart n\u00E3o suportado -SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument em SOAPPart n\u00E3o suportado -SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig em SOAPPart n\u00E3o suportado -SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode em SOAPPart n\u00E3o suportado -SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI em SOAPPart n\u00E3o suportado -SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI em SOAPPart n\u00E3o suportado -SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking em SOAPPart n\u00E3o suportado -SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding em SOAPPart n\u00E3o suportado -SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding em SOAPPart n\u00E3o suportado -SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone em SOAPPart n\u00E3o suportado -SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone em SOAPPart n\u00E3o suportado -SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion em SOAPPart n\u00E3o suportado -SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion em SOAPPart n\u00E3o suportado -SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking em SOAPPart n\u00E3o suportado -# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" -SAAJ0567.soap.null.input=SAAJ0567: argumento {0} nulo para {1} -SAAJ0568.soap.unsupported.protocol=SAAJ0568: o protocolo {0} n\u00E3o suporta {1} -# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" -SAAJ0569.soap.unknown.protocol=SAAJ0569: protocolo {0} Desconhecido especificado para criar {1} -SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: o elemento pai da parte de soap n\u00E3o foi definido -SAAJ0571.soappart.setValue.not.defined=SAAJ0571: o valor de defini\u00E7\u00E3o de uma parte de soap n\u00E3o foi definido -SAAJ0572.soap.no.content.for.attachment=SAAJ0572: n\u00E3o h\u00E1 handler/conte\u00FAdo de dados associado a este anexo -SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException ao ler o conte\u00FAdo do anexo bruto -SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException ao tentar obter o inputstream de datahandler deste anexo -SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: exce\u00E7\u00E3o ao tentar recuperar o conte\u00FAdo deste anexo -SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Bruto deste anexo -SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Bruto deste anexo -SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Decodificado deste anexo -SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: exce\u00E7\u00E3o ao tentar obter o conte\u00FAdo Codificado deste anexo -SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: n\u00E3o \u00E9 poss\u00EDvel localizar o anexo como o cid {0} -SAAJ0591.soap.exception.in.set.property=SAAJ0591: exce\u00E7\u00E3o {0} ao tentar definir a Propriedade {1} na Mensagem SOAP - -# Info messages -SAAJ0580.soap.set.Content-Type=SAAJ0580: Tipo de Conte\u00FAdo definido como {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_CN.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_CN.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for soap pkg -# Error messages -SAAJ0501.soap.data.handler.err=SAAJ0501: \u6570\u636E\u5904\u7406\u7A0B\u5E8F\u9519\u8BEF: {0} -SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u6CA1\u6709\u4E0E\u6B64\u9644\u4EF6\u5173\u8054\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F -SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler \u7684 dataHandler \u53C2\u6570\u4E3A\u7A7A\u503C -SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u65E0\u6CD5\u4F7F\u9644\u4EF6\u5916\u90E8\u5316 -SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: \u65E0\u6CD5\u590D\u5236 MIME \u6807\u5934 -SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: \u65E0\u6CD5\u5C06 MIME \u6807\u5934\u590D\u5236\u5230\u9644\u4EF6\u4E2D -# Usage not found. TODO Remove -#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} -SAAJ0508.soap.cannot.register.handlers=SAAJ050: \u65E0\u6CD5\u6CE8\u518C JAF \u547D\u4EE4\u6620\u5C04\u4E2D\u7684\u5904\u7406\u7A0B\u5E8F - -SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01 -SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01 -SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u65E0\u6CD5\u521B\u5EFA\u4FE1\u5C01: \u5728\u6811\u6784\u9020\u671F\u95F4\u4F7F\u7528\u7684\u5DE5\u5382\u4E0D\u6B63\u786E -SAAJ0513.soap.unknown.ns=SAAJ0513: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01, \u56E0\u4E3A\u65E0\u6CD5\u8BC6\u522B\u540D\u79F0\u7A7A\u95F4 -SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01, \u56E0\u4E3A\u6839\u5143\u7D20\u4E0D\u662F\u547D\u540D\u7684\u4FE1\u5C01 -SAAJ0515.source.reset.exception=SAAJ0515: \u65E0\u6CD5\u91CD\u7F6E soap-part \u5185\u5BB9\u6E90 - -SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler \u9700\u8981 Image \u5BF9\u8C61, \u4F46\u5374\u5F97\u5230\u7C7B\u578B\u4E3A{0}\u7684\u5BF9\u8C61 -SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type \u8BBE\u7F6E\u4E3A{0} -SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler \u7684 content-type {0}\u65E0\u6548 -SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler \u7684\u5BF9\u8C61\u4E3A\u7A7A\u503C -SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u65E0\u6CD5\u5728\u6D41\u4E0A\u8FD0\u884C JPEG \u7F16\u7801\u5668 -SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u65E0\u6CD5\u5C06\u56FE\u50CF\u7F16\u7801\u4E3A\u6D41 -SAAJ0526.soap.unsupported.mime.type=SAAJ0526: \u4E0D\u652F\u6301\u7684 mime \u7C7B\u578B{0} - -SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \u65E0\u6CD5\u8BC6\u522B\u7684 Content-Type -SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u65E0\u6CD5\u89E3\u6790\u5185\u5BB9\u7C7B\u578B -SAAJ0532.soap.no.Content-Type=SAAJ0532: \u7F3A\u5C11 Content-Type -SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F: SOAP \u7248\u672C\u7684 content-type \u4E0D\u6B63\u786E\u3002\u5F97\u5230\u7684\u662F{0}, \u4F46\u5E94\u4E3A{1} -SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \u65E0\u6CD5\u8BC6\u522B\u7684 Content-Type -SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u65E0\u6CD5\u4F7F\u6D88\u606F\u5185\u90E8\u5316 -SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type \u5FC5\u987B\u662F\u201C\u591A\u90E8\u5206/\u76F8\u5173\u201D\u5E76\u4E14\u5E26\u6709 type=text/xml \u6216 application/soap+xml -SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type \u65E0\u6548\u3002\u53EF\u4EE5\u662F\u9519\u8BEF\u6D88\u606F, \u4F46\u4E0D\u80FD\u662F SOAP \u6D88\u606F -SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: \u65E0\u6CD5\u5C06 SOAP \u6D88\u606F\u8F6C\u6362\u4E3A\u591A\u90E8\u5206\u5BF9\u8C61 -SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: \u65E0\u6CD5\u5728 saveChanges \u4E2D\u83B7\u53D6\u6807\u5934\u6D41 -SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: \u4FDD\u5B58\u591A\u90E8\u5206\u6D88\u606F\u671F\u95F4\u51FA\u9519 -SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u65E0\u6CD5\u5B8C\u6210\u64CD\u4F5C\u3002\u7247\u6BB5\u672A\u7ED1\u5B9A\u5230 SOAP \u90E8\u5206 -SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP \u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5904\u7406\u6307\u4EE4 -SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOAP \u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5B9E\u4F53\u5F15\u7528 -SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u6E90\u6CA1\u6709\u6709\u6548\u7684\u8BFB\u8FDB\u7A0B\u6216 InputStream -SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: \u4E3A SOAPPart \u8BBE\u7F6E\u6E90\u65F6\u51FA\u9519 -SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5185\u90E8\u9519\u8BEF: \u6D41\u7684\u7C7B\u578B\u4E0D\u6B63\u786E -SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5C1D\u8BD5\u5916\u90E8\u5316\u65F6\u51FA\u9519 -SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u65E0\u6CD5\u4F7F\u6807\u5934\u5916\u90E8\u5316 -SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \u90E8\u5206{0}\u7684 Content-Type \u9519\u8BEF -SAAJ0550.soap.null.headers=SAAJ0550: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F: \u6807\u5934\u4E0D\u80FD\u4E3A\u7A7A\u503C -SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u4E0D\u652F\u6301\u7684\u7F16\u7801{0} -SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: \u672A\u80FD\u89E3\u6790 XML \u58F0\u660E -SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 renameNode -SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 normalizeDocument -SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getDomConfig -SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 adoptNode -SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setDocumentURI -SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getDocumentURI -SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setStrictErrorChecking -SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getInputEncoding -SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlEncoding -SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlStandalone -SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setXmlStandalone -SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlVersion -SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setXmlVersion -SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getStrictErrorChecking -# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" -SAAJ0567.soap.null.input=SAAJ0567: {1}\u7684{0}\u53C2\u6570\u4E3A\u7A7A\u503C -SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u534F\u8BAE{0}\u4E0D\u652F\u6301{1} -# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" -SAAJ0569.soap.unknown.protocol=SAAJ0569: \u6307\u5B9A\u7528\u4E8E\u521B\u5EFA{1}\u7684\u534F\u8BAE{0}\u672A\u77E5 -SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: \u672A\u5B9A\u4E49 soap \u90E8\u5206\u7684\u7236\u5143\u7D20 -SAAJ0571.soappart.setValue.not.defined=SAAJ0571: \u672A\u5B9A\u4E49 soap \u90E8\u5206\u7684\u8BBE\u7F6E\u503C -SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u6CA1\u6709\u4E0E\u6B64\u9644\u4EF6\u5173\u8054\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F/\u5185\u5BB9 -SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \u8BFB\u53D6\u539F\u59CB\u9644\u4EF6\u5185\u5BB9\u65F6\u51FA\u73B0 IOException -SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u5C1D\u8BD5\u4ECE\u6B64\u9644\u4EF6\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F\u83B7\u53D6\u8F93\u5165\u6D41\u65F6\u51FA\u73B0 IOException -SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u5C1D\u8BD5\u68C0\u7D22\u6B64\u9644\u4EF6\u7684\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF -SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u5C1D\u8BD5\u8BBE\u7F6E\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF -SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u5C1D\u8BD5\u83B7\u53D6\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF -SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u5C1D\u8BD5\u8BBE\u7F6E\u6B64\u9644\u4EF6\u7684\u89E3\u7801\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF -SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u5C1D\u8BD5\u83B7\u53D6\u6B64\u9644\u4EF6\u7684\u7F16\u7801\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF -SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: \u65E0\u6CD5\u627E\u5230\u5177\u6709 cid {0} \u7684\u9644\u4EF6 -SAAJ0591.soap.exception.in.set.property=SAAJ0591: \u5C1D\u8BD5\u8BBE\u7F6E SOAP \u6D88\u606F\u7684\u5C5E\u6027{1}\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF{0} - -# Info messages -SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type \u8BBE\u7F6E\u4E3A{0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_TW.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_TW.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,110 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for soap pkg -# Error messages -SAAJ0501.soap.data.handler.err=SAAJ0501: \u8CC7\u6599\u8655\u7406\u7A0B\u5F0F\u932F\u8AA4: {0} -SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u6C92\u6709\u8207\u6B64\u9644\u4EF6\u76F8\u95DC\u806F\u7684\u8CC7\u6599\u8655\u7406\u7A0B\u5F0F -SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler \u7684 dataHandler \u5F15\u6578\u70BA\u7A7A\u503C -SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u7121\u6CD5\u5C07\u9644\u4EF6\u5916\u90E8\u5316 -SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: \u7121\u6CD5\u8907\u88FD MIME \u6A19\u982D -SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: \u7121\u6CD5\u5C07 MIME \u6A19\u982D\u8907\u88FD\u5230\u9644\u4EF6\u4E2D -# Usage not found. TODO Remove -#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} -SAAJ0508.soap.cannot.register.handlers=SAAJ050: \u7121\u6CD5\u5728 JAF \u547D\u4EE4\u5C0D\u61C9\u4E2D\u8A3B\u518A\u8655\u7406\u7A0B\u5F0F - -SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F -SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F -SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u7121\u6CD5\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F: \u5EFA\u69CB\u6A39\u72C0\u7D50\u69CB\u6642\u4F7F\u7528\u4E86\u4E0D\u6B63\u78BA\u7684\u8655\u7406\u7AD9 -SAAJ0513.soap.unknown.ns=SAAJ0513: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F, \u56E0\u70BA\u7121\u6CD5\u8FA8\u8B58\u8A72\u547D\u540D\u7A7A\u9593 -SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F, \u56E0\u70BA\u6839\u5143\u7D20\u4E0D\u662F\u6307\u5B9A\u7684 Envelope -SAAJ0515.source.reset.exception=SAAJ0515: \u7121\u6CD5\u91CD\u8A2D soap-part \u5167\u5BB9\u4F86\u6E90 - -SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler \u9700\u8981 Image \u7269\u4EF6, \u4F46\u662F\u63D0\u4F9B\u7684\u662F {0} \u985E\u578B\u7684\u7269\u4EF6 -SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type \u8A2D\u70BA {0} -SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler \u7684 content-type {0} \u7121\u6548 -SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler \u7684\u7269\u4EF6\u70BA\u7A7A\u503C -SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u7121\u6CD5\u5728\u4E32\u6D41\u4E0A\u57F7\u884C JPEG \u7DE8\u78BC\u5668 -SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u7121\u6CD5\u5C07\u5F71\u50CF\u7DE8\u78BC\u70BA\u4E32\u6D41 -SAAJ0526.soap.unsupported.mime.type=SAAJ0526: \u4E0D\u652F\u63F4\u7684 MIME \u985E\u578B {0} - -SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \u7121\u6CD5\u8FA8\u8B58\u7684 Content-Type -SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u7121\u6CD5\u5256\u6790\u5167\u5BB9\u985E\u578B -SAAJ0532.soap.no.Content-Type=SAAJ0532: \u7F3A\u5C11 Content-Type -SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F: SOAP \u7248\u672C\u7684 content-type \u4E0D\u6B63\u78BA. \u5F97\u5230 {0}, \u4F46\u61C9\u8A72\u662F {1} -SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \u7121\u6CD5\u8FA8\u8B58\u7684 Content-Type -SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u7121\u6CD5\u5C07\u8A0A\u606F\u5167\u90E8\u5316 -SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type \u5FC5\u9808\u662F Multipart/Related, \u4E14\u542B type=text/xml \u6216 application/soap+xml -SAAJ0537.soap.invalid.content-type=SAAJ0537: \u7121\u6548\u7684 Content-Type. \u53EF\u80FD\u662F\u53D6\u4EE3 SOAP \u8A0A\u606F\u7684\u932F\u8AA4\u8A0A\u606F -SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: \u7121\u6CD5\u5C07 SOAP \u8A0A\u606F\u8F49\u63DB\u70BA Multipart \u7269\u4EF6 -SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: \u7121\u6CD5\u81EA saveChanges \u53D6\u5F97\u6A19\u982D\u4E32\u6D41 -SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: \u5132\u5B58\u591A\u91CD\u90E8\u5206\u8A0A\u606F\u6642\u767C\u751F\u932F\u8AA4 -SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u7121\u6CD5\u5B8C\u6210\u4F5C\u696D. \u7247\u6BB5\u672A\u9023\u7D50\u81F3 SOAP \u90E8\u5206 -SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP \u6587\u4EF6\u4E2D\u4E0D\u5141\u8A31\u300C\u8655\u7406\u6307\u793A\u300D -SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOPA \u6587\u4EF6\u4E2D\u4E0D\u5141\u8A31\u300C\u500B\u9AD4\u53C3\u7167\u300D -SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u4F86\u6E90\u6C92\u6709\u6709\u6548\u7684 Reader \u6216 InputStream -SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: \u8A2D\u5B9A SOAPPart \u7684\u4F86\u6E90\u6642\u767C\u751F\u932F\u8AA4 -SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5167\u90E8\u932F\u8AA4: \u4E32\u6D41\u4E0D\u662F\u6B63\u78BA\u7684\u985E\u578B -SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5617\u8A66\u5916\u90E8\u5316\u6642\u767C\u751F\u932F\u8AA4 -SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u7121\u6CD5\u5C07\u6A19\u982D\u5916\u90E8\u5316 -SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \u90E8\u5206 {0} \u7684 Content-Type \u932F\u8AA4 -SAAJ0550.soap.null.headers=SAAJ0550: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F: \u6A19\u982D\u4E0D\u5F97\u662F\u7A7A\u503C -SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u4E0D\u652F\u63F4\u7684\u7DE8\u78BC {0} -SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML \u5BA3\u544A\u5256\u6790\u5931\u6557 -SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 renameNode -SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 normalizeDocument -SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getDomConfig -SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 adoptNode -SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setDocumentURI -SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getDocumentURI -SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setStrictErrorChecking -SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getInputEncoding -SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlEncoding -SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlStandalone -SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setXmlStandalone -SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlVersion -SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setXmlVersion -SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getStrictErrorChecking -# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" -SAAJ0567.soap.null.input=SAAJ0567: {1} \u7684 {0} \u5F15\u6578\u662F\u7A7A\u503C -SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u5354\u5B9A {0} \u4E0D\u652F\u63F4 {1} -# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" -SAAJ0569.soap.unknown.protocol=SAAJ0569: \u5EFA\u7ACB {1} \u6642\u6307\u5B9A\u4E86\u4E0D\u660E\u7684\u5354\u5B9A {0} -SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: \u672A\u5B9A\u7FA9 SOAP \u90E8\u5206\u7684\u7236\u9805\u5143\u7D20 -SAAJ0571.soappart.setValue.not.defined=SAAJ0571: \u672A\u5B9A\u7FA9 SOAP \u90E8\u5206\u7684\u8A2D\u5B9A\u503C -SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u6C92\u6709\u8207\u6B64\u9644\u4EF6\u76F8\u95DC\u806F\u7684\u8CC7\u6599\u8655\u7406\u7A0B\u5F0F/\u5167\u5BB9 -SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \u8B80\u53D6\u539F\u59CB\u9644\u4EF6\u5167\u5BB9\u6642\u767C\u751F IOException -SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u5617\u8A66\u5F9E\u6B64\u9644\u4EF6\u7684 datahandler \u53D6\u5F97 inputstream \u6642\u767C\u751F IOException -SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u5617\u8A66\u64F7\u53D6\u6B64\u9644\u4EF6\u7684\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 -SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u5617\u8A66\u8A2D\u5B9A\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 -SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u5617\u8A66\u53D6\u5F97\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 -SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u5617\u8A66\u8A2D\u5B9A\u6B64\u9644\u4EF6\u7684\u89E3\u78BC\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 -SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u5617\u8A66\u53D6\u5F97\u6B64\u9644\u4EF6\u7684\u89E3\u78BC\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 -SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: \u627E\u4E0D\u5230 cid \u70BA {0} \u7684\u9644\u4EF6 -SAAJ0591.soap.exception.in.set.property=SAAJ0591: \u5617\u8A66\u5728 SOAP \u8A0A\u606F\u4E0A\u8A2D\u5B9A\u7279\u6027 {1} \u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 {0} - -# Info messages -SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type \u8A2D\u70BA {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageFactoryImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageFactoryImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import java.io.*; -import java.util.logging.Logger; - -import javax.xml.soap.*; -import javax.xml.stream.XMLStreamReader; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType; -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ParseException; -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl; -import com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; -import com.sun.xml.internal.messaging.saaj.util.TeeInputStream; - -/** - * A factory for creating SOAP messages. - * - * Converted to a placeholder for common functionality between SOAP - * implementations. - * - * @author Phil Goodwin (phil.goodwin@sun.com) - */ -public class MessageFactoryImpl extends MessageFactory { - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); - - protected OutputStream listener; - - protected boolean lazyAttachments = false; - - public OutputStream listen(OutputStream newListener) { - OutputStream oldListener = listener; - listener = newListener; - return oldListener; - } - - public SOAPMessage createMessage() throws SOAPException { - throw new UnsupportedOperationException(); - } - - public SOAPMessage createMessage(String protocol) throws SOAPException { - if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol)) - return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl(); - else - return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl(); - } - - public SOAPMessage createMessage(boolean isFastInfoset, - boolean acceptFastInfoset) throws SOAPException - { - throw new UnsupportedOperationException(); - } - - public SOAPMessage createMessage(MimeHeaders headers, XMLStreamReader reader) throws SOAPException, IOException { - String contentTypeString = MessageImpl.getContentType(headers); - - if (listener != null) { - throw new SOAPException("Listener OutputStream is not supported with XMLStreamReader"); - } - - try { - ContentType contentType = new ContentType(contentTypeString); - int stat = MessageImpl.identifyContentType(contentType); - - if (MessageImpl.isSoap1_1Content(stat)) { - return new Message1_1Impl(headers,contentType,stat,reader); - } else if (MessageImpl.isSoap1_2Content(stat)) { - return new Message1_2Impl(headers,contentType,stat,reader); - } else { - log.severe("SAAJ0530.soap.unknown.Content-Type"); - throw new SOAPExceptionImpl("Unrecognized Content-Type"); - } - } catch (ParseException e) { - log.severe("SAAJ0531.soap.cannot.parse.Content-Type"); - throw new SOAPExceptionImpl( - "Unable to parse content type: " + e.getMessage()); - } - } - public SOAPMessage createMessage(MimeHeaders headers, InputStream in) - throws SOAPException, IOException { - String contentTypeString = MessageImpl.getContentType(headers); - - if (listener != null) { - in = new TeeInputStream(in, listener); - } - - try { - ContentType contentType = new ContentType(contentTypeString); - int stat = MessageImpl.identifyContentType(contentType); - - if (MessageImpl.isSoap1_1Content(stat)) { - return new Message1_1Impl(headers,contentType,stat,in); - } else if (MessageImpl.isSoap1_2Content(stat)) { - return new Message1_2Impl(headers,contentType,stat,in); - } else { - log.severe("SAAJ0530.soap.unknown.Content-Type"); - throw new SOAPExceptionImpl("Unrecognized Content-Type"); - } - } catch (ParseException e) { - log.severe("SAAJ0531.soap.cannot.parse.Content-Type"); - throw new SOAPExceptionImpl( - "Unable to parse content type: " + e.getMessage()); - } - } - - protected static final String getContentType(MimeHeaders headers) { - String[] values = headers.getHeader("Content-Type"); - if (values == null) - return null; - else - return values[0]; - } - - public void setLazyAttachmentOptimization(boolean flag) { - lazyAttachments = flag; - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1486 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import java.io.*; -import java.util.*; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.activation.DataHandler; -import javax.activation.DataSource; -import javax.xml.soap.*; -import javax.xml.stream.XMLStreamReader; -import javax.xml.transform.Source; -import javax.xml.transform.stax.StAXSource; -import javax.xml.transform.stream.StreamSource; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.Header; -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.*; -import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*; -import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; -import com.sun.xml.internal.messaging.saaj.util.*; -import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart; - -/** - * The message implementation for SOAP messages with - * attachments. Messages for specific profiles will likely extend this - * MessageImpl class and add more value for that particular profile. - * - * @author Anil Vijendran (akv@eng.sun.com) - * @author Rajiv Mordani (rajiv.mordani@sun.com) - * @author Manveen Kaur (manveen.kaur@sun.com) - */ - -public abstract class MessageImpl - extends SOAPMessage - implements SOAPConstants { - - - public static final String CONTENT_ID = "Content-ID"; - public static final String CONTENT_LOCATION = "Content-Location"; - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); - - protected static final int PLAIN_XML_FLAG = 1; // 00001 - protected static final int MIME_MULTIPART_FLAG = 2; // 00010 - protected static final int SOAP1_1_FLAG = 4; // 00100 - protected static final int SOAP1_2_FLAG = 8; // 01000 - //protected static final int MIME_MULTIPART_XOP_FLAG = 14; // 01110 - protected static final int MIME_MULTIPART_XOP_SOAP1_1_FLAG = 6; // 00110 - protected static final int MIME_MULTIPART_XOP_SOAP1_2_FLAG = 10; // 01010 - protected static final int XOP_FLAG = 13; // 01101 - protected static final int FI_ENCODED_FLAG = 16; // 10000 - - protected MimeHeaders headers; - protected ContentType contentType; - protected SOAPPartImpl soapPartImpl; - protected FinalArrayList attachments; - protected boolean saved = false; - protected byte[] messageBytes; - protected int messageByteCount; - protected HashMap properties = new HashMap(); - - // used for lazy attachment initialization - protected MimeMultipart multiPart = null; - protected boolean attachmentsInitialized = false; - - /** - * True if this part is encoded using Fast Infoset. - * MIME -> application/fastinfoset - */ - protected boolean isFastInfoset = false; - - /** - * True if the Accept header of this message includes - * application/fastinfoset - */ - protected boolean acceptFastInfoset = false; - - protected MimeMultipart mmp = null; - - // if attachments are present, don't read the entire message in byte stream in saveTo() - private boolean optimizeAttachmentProcessing = true; - - private InputStream inputStreamAfterSaveChanges = null; - - public static final String LAZY_SOAP_BODY_PARSING = "saaj.lazy.soap.body"; - - // switch back to old MimeMultipart incase of problem - private static boolean switchOffBM = false; - private static boolean switchOffLazyAttachment = false; - private static boolean useMimePull = false; - - static { - String s = SAAJUtil.getSystemProperty("saaj.mime.optimization"); - if ((s != null) && s.equals("false")) { - switchOffBM = true; - } - s = SAAJUtil.getSystemProperty("saaj.lazy.mime.optimization"); - if ((s != null) && s.equals("false")) { - switchOffLazyAttachment = true; - } - useMimePull = SAAJUtil.getSystemBoolean("saaj.use.mimepull"); - - } - - //property to indicate optimized serialization for lazy attachments - private boolean lazyAttachments = false; - - // most of the times, Content-Types are already all lower cased. - // String.toLowerCase() works faster in this case, so even if you - // are only doing one comparison, it pays off to use String.toLowerCase() - // than String.equalsIgnoreCase(). When you do more than one comparison, - // the benefits of String.toLowerCase() dominates. - // - // - // for FI, - // use application/fastinfoset for SOAP 1.1 - // use application/soap+fastinfoset for SOAP 1.2 - // to speed up comparisons, test methods always use lower cases. - - /** - * @param primary - * must be all lower case - * @param sub - * must be all lower case - */ - private static boolean isSoap1_1Type(String primary, String sub) { - return primary.equalsIgnoreCase("text") && sub.equalsIgnoreCase("xml") - || primary.equalsIgnoreCase("text") && sub.equalsIgnoreCase("xml-soap") - || primary.equals("application") - && sub.equals("fastinfoset"); - } - - /** - * @param type - * must be all lower case - */ - private static boolean isEqualToSoap1_1Type(String type) { - return type.startsWith("text/xml") || - type.startsWith("application/fastinfoset"); - } - - /** - * @param primary - * must be all lower case - * @param sub - * must be all lower case - */ - private static boolean isSoap1_2Type(String primary, String sub) { - return primary.equals("application") - && (sub.equals("soap+xml") - || sub.equals("soap+fastinfoset")); - } - - /** - * @param type - * must be all lower case - */ - private static boolean isEqualToSoap1_2Type(String type) { - return type.startsWith("application/soap+xml") || - type.startsWith("application/soap+fastinfoset"); - } - - /** - * Construct a new message. This will be invoked before message - * sends. - */ - protected MessageImpl() { - this(false, false); - attachmentsInitialized = true; - } - - /** - * Construct a new message. This will be invoked before message - * sends. - */ - protected MessageImpl(boolean isFastInfoset, boolean acceptFastInfoset) { - this.isFastInfoset = isFastInfoset; - this.acceptFastInfoset = acceptFastInfoset; - - headers = new MimeHeaders(); - headers.setHeader("Accept", getExpectedAcceptHeader()); - contentType = new ContentType(); - } - - /** - * Shallow copy. - */ - protected MessageImpl(SOAPMessage msg) { - if (!(msg instanceof MessageImpl)) { - // don't know how to handle this. - } - MessageImpl src = (MessageImpl) msg; - this.headers = src.headers; - this.soapPartImpl = src.soapPartImpl; - this.attachments = src.attachments; - this.saved = src.saved; - this.messageBytes = src.messageBytes; - this.messageByteCount = src.messageByteCount; - this.properties = src.properties; - this.contentType = src.contentType; - } - - /** - * @param stat - * the mask value obtained from {@link #identifyContentType(ContentType)} - */ - protected static boolean isSoap1_1Content(int stat) { - return (stat & SOAP1_1_FLAG) != 0; - } - - /** - * @param stat - * the mask value obtained from {@link #identifyContentType(ContentType)} - */ - protected static boolean isSoap1_2Content(int stat) { - return (stat & SOAP1_2_FLAG) != 0; - } - - private static boolean isMimeMultipartXOPSoap1_2Package(ContentType contentType) { - String type = contentType.getParameter("type"); - if (type == null) { - return false; - } - type = type.toLowerCase(); - if (!type.startsWith("application/xop+xml")) { - return false; - } - String startinfo = contentType.getParameter("start-info"); - if (startinfo == null) { - return false; - } - startinfo = startinfo.toLowerCase(); - return isEqualToSoap1_2Type(startinfo); - } - - - //private static boolean isMimeMultipartXOPPackage(ContentType contentType) { - private static boolean isMimeMultipartXOPSoap1_1Package(ContentType contentType) { - String type = contentType.getParameter("type"); - if(type==null) - return false; - - type = type.toLowerCase(); - if(!type.startsWith("application/xop+xml")) - return false; - - String startinfo = contentType.getParameter("start-info"); - if(startinfo == null) - return false; - startinfo = startinfo.toLowerCase(); - return isEqualToSoap1_1Type(startinfo); - } - - private static boolean isSOAPBodyXOPPackage(ContentType contentType){ - String primary = contentType.getPrimaryType(); - String sub = contentType.getSubType(); - - if (primary.equalsIgnoreCase("application")) { - if (sub.equalsIgnoreCase("xop+xml")) { - String type = getTypeParameter(contentType); - return isEqualToSoap1_2Type(type) || isEqualToSoap1_1Type(type); - } - } - return false; - } - - /** - * Construct a message from an input stream. When messages are - * received, there's two parts -- the transport headers and the - * message content in a transport specific stream. - */ - protected MessageImpl(MimeHeaders headers, final InputStream in) - throws SOAPExceptionImpl { - contentType = parseContentType(headers); - init(headers,identifyContentType(contentType),contentType,in); - } - - private static ContentType parseContentType(MimeHeaders headers) throws SOAPExceptionImpl { - final String ct; - if (headers != null) - ct = getContentType(headers); - else { - log.severe("SAAJ0550.soap.null.headers"); - throw new SOAPExceptionImpl("Cannot create message: " + - "Headers can't be null"); - } - - if (ct == null) { - log.severe("SAAJ0532.soap.no.Content-Type"); - throw new SOAPExceptionImpl("Absent Content-Type"); - } - try { - return new ContentType(ct); - } catch (Throwable ex) { - log.severe("SAAJ0535.soap.cannot.internalize.message"); - throw new SOAPExceptionImpl("Unable to internalize message", ex); - } - } - - /** - * Construct a message from an input stream. When messages are - * received, there's two parts -- the transport headers and the - * message content in a transport specific stream. - * - * @param contentType - * The parsed content type header from the headers variable. - * This is redundant parameter, but it avoids reparsing this header again. - * @param stat - * The result of {@link #identifyContentType(ContentType)} over - * the contentType parameter. This redundant parameter, but it avoids - * recomputing this information again. - */ - protected MessageImpl(MimeHeaders headers, final ContentType contentType, int stat, final InputStream in) throws SOAPExceptionImpl { - init(headers, stat, contentType, in); - - } - - public MessageImpl(MimeHeaders headers, ContentType ct, int stat, - XMLStreamReader reader) throws SOAPExceptionImpl { - init(headers, stat, ct, reader); - } - - private void init(MimeHeaders headers, int stat, final ContentType contentType, final Object input) throws SOAPExceptionImpl { - this.headers = headers; - - try { - - // Set isFastInfoset/acceptFastInfoset flag based on MIME type - if ((stat & FI_ENCODED_FLAG) > 0) { - isFastInfoset = acceptFastInfoset = true; - } - - // If necessary, inspect Accept header to set acceptFastInfoset - if (!isFastInfoset) { - String[] values = headers.getHeader("Accept"); - if (values != null) { - for (int i = 0; i < values.length; i++) { - StringTokenizer st = new StringTokenizer(values[i], ","); - while (st.hasMoreTokens()) { - final String token = st.nextToken().trim(); - if (token.equalsIgnoreCase("application/fastinfoset") || - token.equalsIgnoreCase("application/soap+fastinfoset")) { - acceptFastInfoset = true; - break; - } - } - } - } - } - - if (!isCorrectSoapVersion(stat)) { - log.log( - Level.SEVERE, - "SAAJ0533.soap.incorrect.Content-Type", - new String[] { - contentType.toString(), - getExpectedContentType()}); - throw new SOAPVersionMismatchException( - "Cannot create message: incorrect content-type for SOAP version. Got: " - + contentType - + " Expected: " - + getExpectedContentType()); - } - InputStream in = null; - XMLStreamReader rdr = null; - if (input instanceof InputStream) { - in = (InputStream) input; - } else { - //is a StAX reader - rdr = (XMLStreamReader) input; - } - if ((stat & PLAIN_XML_FLAG) != 0) { - if (in != null) { - if (isFastInfoset) { - getSOAPPart().setContent( - FastInfosetReflection.FastInfosetSource_new(in)); - } else { - initCharsetProperty(contentType); - getSOAPPart().setContent(new StreamSource(in)); - } - } else { - //is a StAX reader - if (isFastInfoset) { - //need to get FI stax reader - } else { - initCharsetProperty(contentType); - getSOAPPart().setContent(new StAXSource(rdr)); - } - } - } - else if ((stat & MIME_MULTIPART_FLAG) != 0 && in == null) { - //only parse multipart in the inputstream case - //in stax reader case, we would be given the attachments separately - getSOAPPart().setContent(new StAXSource(rdr)); - } else if ((stat & MIME_MULTIPART_FLAG) != 0) { - final InputStream finalIn = in; - DataSource ds = new DataSource() { - public InputStream getInputStream() { - return finalIn; - } - - public OutputStream getOutputStream() { - return null; - } - - public String getContentType() { - return contentType.toString(); - } - - public String getName() { - return ""; - } - }; - - multiPart = null; - if (useMimePull) { - multiPart = new MimePullMultipart(ds,contentType); - } else if (switchOffBM) { - multiPart = new MimeMultipart(ds,contentType); - } else { - multiPart = new BMMimeMultipart(ds,contentType); - } - - String startParam = contentType.getParameter("start"); - MimeBodyPart soapMessagePart = null; - InputStream soapPartInputStream = null; - String contentID = null; - String contentIDNoAngle = null; - if (switchOffBM || switchOffLazyAttachment) { - if(startParam == null) { - soapMessagePart = multiPart.getBodyPart(0); - for (int i = 1; i < multiPart.getCount(); i++) { - initializeAttachment(multiPart, i); - } - } else { - soapMessagePart = multiPart.getBodyPart(startParam); - for (int i = 0; i < multiPart.getCount(); i++) { - contentID = multiPart.getBodyPart(i).getContentID(); - // Old versions of AXIS2 put angle brackets around the content - // id but not the start param - contentIDNoAngle = (contentID != null) ? - contentID.replaceFirst("^<", "").replaceFirst(">$", "") : null; - if(!startParam.equals(contentID) && !startParam.equals(contentIDNoAngle)) - initializeAttachment(multiPart, i); - } - } - } else { - if (useMimePull) { - MimePullMultipart mpMultipart = (MimePullMultipart)multiPart; - MIMEPart sp = mpMultipart.readAndReturnSOAPPart(); - soapMessagePart = new MimeBodyPart(sp); - soapPartInputStream = sp.readOnce(); - } else { - BMMimeMultipart bmMultipart = - (BMMimeMultipart) multiPart; - InputStream stream = bmMultipart.initStream(); - - SharedInputStream sin = null; - if (stream instanceof SharedInputStream) { - sin = (SharedInputStream) stream; - } - - String boundary = "--" + - contentType.getParameter("boundary"); - byte[] bndbytes = ASCIIUtility.getBytes(boundary); - if (startParam == null) { - soapMessagePart = - bmMultipart.getNextPart(stream, bndbytes, sin); - bmMultipart.removeBodyPart(soapMessagePart); - } else { - MimeBodyPart bp = null; - try { - while (!startParam.equals(contentID) && !startParam.equals(contentIDNoAngle)) { - bp = bmMultipart.getNextPart( - stream, bndbytes, sin); - contentID = bp.getContentID(); - // Old versions of AXIS2 put angle brackets around the content - // id but not the start param - contentIDNoAngle = (contentID != null) ? - contentID.replaceFirst("^<", "").replaceFirst(">$", "") : null; - } - soapMessagePart = bp; - bmMultipart.removeBodyPart(bp); - } catch (Exception e) { - throw new SOAPExceptionImpl(e); - } - } - } - } - - // findbugs correctly points out that we'd NPE instantiating - // the ContentType (just below here) if soapMessagePart were - // null. Hence are better off throwing a controlled exception - // at this point if it is null. - if (soapMessagePart == null) { - log.severe("SAAJ0510.soap.cannot.create.envelope"); - throw new SOAPExceptionImpl( - "Unable to create envelope from given source: SOAP part not found"); - } - - if (soapPartInputStream == null) { - soapPartInputStream = soapMessagePart.getInputStream(); - } - - ContentType soapPartCType = new ContentType( - soapMessagePart.getContentType()); - initCharsetProperty(soapPartCType); - String baseType = soapPartCType.getBaseType().toLowerCase(); - if(!(isEqualToSoap1_1Type(baseType) - || isEqualToSoap1_2Type(baseType) - || isSOAPBodyXOPPackage(soapPartCType))) { - log.log(Level.SEVERE, - "SAAJ0549.soap.part.invalid.Content-Type", - new Object[] {baseType}); - throw new SOAPExceptionImpl( - "Bad Content-Type for SOAP Part : " + - baseType); - } - - SOAPPart soapPart = getSOAPPart(); - setMimeHeaders(soapPart, soapMessagePart); - soapPart.setContent(isFastInfoset ? - (Source) FastInfosetReflection.FastInfosetSource_new( - soapPartInputStream) : - (Source) new StreamSource(soapPartInputStream)); - } else { - log.severe("SAAJ0534.soap.unknown.Content-Type"); - throw new SOAPExceptionImpl("Unrecognized Content-Type"); - } - } catch (Throwable ex) { - log.severe("SAAJ0535.soap.cannot.internalize.message"); - throw new SOAPExceptionImpl("Unable to internalize message", ex); - } - needsSave(); - } - - public boolean isFastInfoset() { - return isFastInfoset; - } - - public boolean acceptFastInfoset() { - return acceptFastInfoset; - } - - public void setIsFastInfoset(boolean value) { - if (value != isFastInfoset) { - isFastInfoset = value; - if (isFastInfoset) { - acceptFastInfoset = true; - } - saved = false; // ensure transcoding if necessary - } - } - - public boolean isLazySoapBodyParsing() { - Object lazyParsingProp = getProperty(LAZY_SOAP_BODY_PARSING); - if (lazyParsingProp == null) return false; - if (lazyParsingProp instanceof Boolean) { - return ((Boolean) lazyParsingProp).booleanValue(); - } else { - return Boolean.valueOf(lazyParsingProp.toString()); - } - } - public Object getProperty(String property) { - return (String) properties.get(property); - } - - public void setProperty(String property, Object value) { - verify(property, value); - properties.put(property, value); - } - - private void verify(String property, Object value) { - if (property.equalsIgnoreCase(SOAPMessage.WRITE_XML_DECLARATION)) { - if (!("true".equals(value) || "false".equals(value))) - throw new RuntimeException( - property + " must have value false or true"); - - try { - EnvelopeImpl env = (EnvelopeImpl) getSOAPPart().getEnvelope(); - if ("true".equalsIgnoreCase((String)value)) { - env.setOmitXmlDecl("no"); - } else if ("false".equalsIgnoreCase((String)value)) { - env.setOmitXmlDecl("yes"); - } - } catch (Exception e) { - log.log(Level.SEVERE, "SAAJ0591.soap.exception.in.set.property", - new Object[] {e.getMessage(), "javax.xml.soap.write-xml-declaration"}); - throw new RuntimeException(e); - } - return; - } - - if (property.equalsIgnoreCase(SOAPMessage.CHARACTER_SET_ENCODING)) { - try { - ((EnvelopeImpl) getSOAPPart().getEnvelope()).setCharsetEncoding((String)value); - } catch (Exception e) { - log.log(Level.SEVERE, "SAAJ0591.soap.exception.in.set.property", - new Object[] {e.getMessage(), "javax.xml.soap.character-set-encoding"}); - throw new RuntimeException(e); - } - } - } - - protected abstract boolean isCorrectSoapVersion(int contentTypeId); - - protected abstract String getExpectedContentType(); - protected abstract String getExpectedAcceptHeader(); - - /** - * Sniffs the Content-Type header so that we can determine how to process. - * - *

- * In the absence of type attribute we assume it to be text/xml. - * That would mean we're easy on accepting the message and - * generate the correct thing (as the SWA spec also specifies - * that the type parameter should always be text/xml) - * - * @return - * combination of flags, such as PLAIN_XML_CODE and MIME_MULTIPART_CODE. - */ - // SOAP1.2 allow SOAP1.2 content type - static int identifyContentType(ContentType ct) - throws SOAPExceptionImpl { - // TBD - // Is there anything else we need to verify here? - - String primary = ct.getPrimaryType().toLowerCase(); - String sub = ct.getSubType().toLowerCase(); - - if (primary.equals("multipart")) { - if (sub.equals("related")) { - String type = getTypeParameter(ct); - if (isEqualToSoap1_1Type(type)) { - return (type.equals("application/fastinfoset") ? - FI_ENCODED_FLAG : 0) | MIME_MULTIPART_FLAG | SOAP1_1_FLAG; - } - else if (isEqualToSoap1_2Type(type)) { - return (type.equals("application/soap+fastinfoset") ? - FI_ENCODED_FLAG : 0) | MIME_MULTIPART_FLAG | SOAP1_2_FLAG; - /*} else if (isMimeMultipartXOPPackage(ct)) { - return MIME_MULTIPART_XOP_FLAG;*/ - } else if (isMimeMultipartXOPSoap1_1Package(ct)) { - return MIME_MULTIPART_XOP_SOAP1_1_FLAG; - } else if (isMimeMultipartXOPSoap1_2Package(ct)) { - return MIME_MULTIPART_XOP_SOAP1_2_FLAG; - } else { - log.severe("SAAJ0536.soap.content-type.mustbe.multipart"); - throw new SOAPExceptionImpl( - "Content-Type needs to be Multipart/Related " - + "and with \"type=text/xml\" " - + "or \"type=application/soap+xml\""); - } - } else { - log.severe("SAAJ0537.soap.invalid.content-type"); - throw new SOAPExceptionImpl( - "Invalid Content-Type: " + primary + '/' + sub); - } - } - else if (isSoap1_1Type(primary, sub)) { - return (primary.equalsIgnoreCase("application") - && sub.equalsIgnoreCase("fastinfoset") ? - FI_ENCODED_FLAG : 0) - | PLAIN_XML_FLAG | SOAP1_1_FLAG; - } - else if (isSoap1_2Type(primary, sub)) { - return (primary.equalsIgnoreCase("application") - && sub.equalsIgnoreCase("soap+fastinfoset") ? - FI_ENCODED_FLAG : 0) - | PLAIN_XML_FLAG | SOAP1_2_FLAG; - } else if(isSOAPBodyXOPPackage(ct)){ - return XOP_FLAG; - } else { - log.severe("SAAJ0537.soap.invalid.content-type"); - throw new SOAPExceptionImpl( - "Invalid Content-Type:" - + primary - + '/' - + sub - + ". Is this an error message instead of a SOAP response?"); - } - } - - /** - * Obtains the type parameter of the Content-Type header. Defaults to "text/xml". - */ - private static String getTypeParameter(ContentType contentType) { - String p = contentType.getParameter("type"); - if(p!=null) - return p.toLowerCase(); - else - return "text/xml"; - } - - public MimeHeaders getMimeHeaders() { - return this.headers; - } - - final static String getContentType(MimeHeaders headers) { - String[] values = headers.getHeader("Content-Type"); - if (values == null) - return null; - else - return values[0]; - } - - /* - * Get the complete ContentType value along with optional parameters. - */ - public String getContentType() { - return getContentType(this.headers); - } - - public void setContentType(String type) { - headers.setHeader("Content-Type", type); - needsSave(); - } - - private ContentType contentType() { - ContentType ct = null; - try { - String currentContent = getContentType(); - if (currentContent == null) { - return this.contentType; - } - ct = new ContentType(currentContent); - } catch (Exception e) { - // what to do here? - } - return ct; - } - - /* - * Return the MIME type string, without the parameters. - */ - public String getBaseType() { - return contentType().getBaseType(); - } - - public void setBaseType(String type) { - ContentType ct = contentType(); - ct.setParameter("type", type); - headers.setHeader("Content-Type", ct.toString()); - needsSave(); - } - - public String getAction() { - return contentType().getParameter("action"); - } - - public void setAction(String action) { - ContentType ct = contentType(); - ct.setParameter("action", action); - headers.setHeader("Content-Type", ct.toString()); - needsSave(); - } - - public String getCharset() { - return contentType().getParameter("charset"); - } - - public void setCharset(String charset) { - ContentType ct = contentType(); - ct.setParameter("charset", charset); - headers.setHeader("Content-Type", ct.toString()); - needsSave(); - } - - /** - * All write methods (i.e setters) should call this method in - * order to make sure that a save is necessary since the state - * has been modified. - */ - private final void needsSave() { - saved = false; - } - - public boolean saveRequired() { - return saved != true; - } - - public String getContentDescription() { - String[] values = headers.getHeader("Content-Description"); - if (values != null && values.length > 0) - return values[0]; - return null; - } - - public void setContentDescription(String description) { - headers.setHeader("Content-Description", description); - needsSave(); - } - - public abstract SOAPPart getSOAPPart(); - - public void removeAllAttachments() { - try { - initializeAllAttachments(); - } catch (Exception e) { - throw new RuntimeException(e); - } - - if (attachments != null) { - attachments.clear(); - needsSave(); - } - } - - public int countAttachments() { - try { - initializeAllAttachments(); - } catch (Exception e) { - throw new RuntimeException(e); - } - if (attachments != null) - return attachments.size(); - return 0; - } - - public void addAttachmentPart(AttachmentPart attachment) { - try { - initializeAllAttachments(); - this.optimizeAttachmentProcessing = true; - } catch (Exception e) { - throw new RuntimeException(e); - } - if (attachments == null) - attachments = new FinalArrayList(); - - attachments.add(attachment); - - needsSave(); - } - - static private final Iterator nullIter = Collections.EMPTY_LIST.iterator(); - - public Iterator getAttachments() { - try { - initializeAllAttachments(); - } catch (Exception e) { - throw new RuntimeException(e); - } - if (attachments == null) - return nullIter; - return attachments.iterator(); - } - - private void setFinalContentType(String charset) { - ContentType ct = contentType(); - if (ct == null) { - ct = new ContentType(); - } - String[] split = getExpectedContentType().split("/"); - ct.setPrimaryType(split[0]); - ct.setSubType(split[1]); - ct.setParameter("charset", charset); - headers.setHeader("Content-Type", ct.toString()); - } - - private class MimeMatchingIterator implements Iterator { - public MimeMatchingIterator(MimeHeaders headers) { - this.headers = headers; - this.iter = attachments.iterator(); - } - - private Iterator iter; - private MimeHeaders headers; - private Object nextAttachment; - - public boolean hasNext() { - if (nextAttachment == null) - nextAttachment = nextMatch(); - return nextAttachment != null; - } - - public Object next() { - if (nextAttachment != null) { - Object ret = nextAttachment; - nextAttachment = null; - return ret; - } - - if (hasNext()) - return nextAttachment; - - return null; - } - - Object nextMatch() { - while (iter.hasNext()) { - AttachmentPartImpl ap = (AttachmentPartImpl) iter.next(); - if (ap.hasAllHeaders(headers)) - return ap; - } - return null; - } - - public void remove() { - iter.remove(); - } - } - - public Iterator getAttachments(MimeHeaders headers) { - try { - initializeAllAttachments(); - } catch (Exception e) { - throw new RuntimeException(e); - } - if (attachments == null) - return nullIter; - - return new MimeMatchingIterator(headers); - } - - public void removeAttachments(MimeHeaders headers) { - try { - initializeAllAttachments(); - } catch (Exception e) { - throw new RuntimeException(e); - } - if (attachments == null) - return ; - - Iterator it = new MimeMatchingIterator(headers); - while (it.hasNext()) { - int index = attachments.indexOf(it.next()); - attachments.set(index, null); - } - FinalArrayList f = new FinalArrayList(); - for (int i = 0; i < attachments.size(); i++) { - if (attachments.get(i) != null) { - f.add(attachments.get(i)); - } - } - attachments = f; - // needsSave(); - } - - public AttachmentPart createAttachmentPart() { - return new AttachmentPartImpl(); - } - - public AttachmentPart getAttachment(SOAPElement element) - throws SOAPException { - try { - initializeAllAttachments(); - } catch (Exception e) { - throw new RuntimeException(e); - } - String uri; - String hrefAttr = element.getAttribute("href"); - if ("".equals(hrefAttr)) { - Node node = getValueNodeStrict(element); - String swaRef = null; - if (node != null) { - swaRef = node.getValue(); - } - if (swaRef == null || "".equals(swaRef)) { - return null; - } else { - uri = swaRef; - } - } else { - uri = hrefAttr; - } - return getAttachmentPart(uri); - } - - private Node getValueNodeStrict(SOAPElement element) { - Node node = (Node)element.getFirstChild(); - if (node != null) { - if (node.getNextSibling() == null - && node.getNodeType() == org.w3c.dom.Node.TEXT_NODE) { - return node; - } else { - return null; - } - } - return null; - } - - - private AttachmentPart getAttachmentPart(String uri) throws SOAPException { - AttachmentPart _part; - try { - if (uri.startsWith("cid:")) { - // rfc2392 - uri = '<'+uri.substring("cid:".length())+'>'; - - MimeHeaders headersToMatch = new MimeHeaders(); - headersToMatch.addHeader(CONTENT_ID, uri); - - Iterator i = this.getAttachments(headersToMatch); - _part = (i == null) ? null : (AttachmentPart)i.next(); - } else { - // try content-location - MimeHeaders headersToMatch = new MimeHeaders(); - headersToMatch.addHeader(CONTENT_LOCATION, uri); - - Iterator i = this.getAttachments(headersToMatch); - _part = (i == null) ? null : (AttachmentPart)i.next(); - } - - // try auto-generated JAXRPC CID - if (_part == null) { - Iterator j = this.getAttachments(); - - while (j.hasNext()) { - AttachmentPart p = (AttachmentPart)j.next(); - String cl = p.getContentId(); - if (cl != null) { - // obtain the partname - int eqIndex = cl.indexOf("="); - if (eqIndex > -1) { - cl = cl.substring(1, eqIndex); - if (cl.equalsIgnoreCase(uri)) { - _part = p; - break; - } - } - } - } - } - - } catch (Exception se) { - log.log(Level.SEVERE, "SAAJ0590.soap.unable.to.locate.attachment", new Object[] {uri}); - throw new SOAPExceptionImpl(se); - } - return _part; - } - - private final InputStream getHeaderBytes() - throws IOException { - SOAPPartImpl sp = (SOAPPartImpl) getSOAPPart(); - return sp.getContentAsStream(); - } - - private String convertToSingleLine(String contentType) { - StringBuffer buffer = new StringBuffer(); - for (int i = 0; i < contentType.length(); i ++) { - char c = contentType.charAt(i); - if (c != '\r' && c != '\n' && c != '\t') - buffer.append(c); - } - return buffer.toString(); - } - - private MimeMultipart getMimeMessage() throws SOAPException { - try { - SOAPPartImpl soapPart = (SOAPPartImpl) getSOAPPart(); - MimeBodyPart mimeSoapPart = soapPart.getMimePart(); - - /* - * Get content type from this message instead of soapPart - * to ensure agreement if soapPart is transcoded (XML <-> FI) - */ - ContentType soapPartCtype = new ContentType(getExpectedContentType()); - - if (!isFastInfoset) { - soapPartCtype.setParameter("charset", initCharset()); - } - mimeSoapPart.setHeader("Content-Type", soapPartCtype.toString()); - - MimeMultipart headerAndBody = null; - - if (!switchOffBM && !switchOffLazyAttachment && - (multiPart != null) && !attachmentsInitialized) { - headerAndBody = new BMMimeMultipart(); - headerAndBody.addBodyPart(mimeSoapPart); - if (attachments != null) { - for (Iterator eachAttachment = attachments.iterator(); - eachAttachment.hasNext();) { - headerAndBody.addBodyPart( - ((AttachmentPartImpl) eachAttachment.next()) - .getMimePart()); - } - } - InputStream in = ((BMMimeMultipart)multiPart).getInputStream(); - if (!((BMMimeMultipart)multiPart).lastBodyPartFound() && - !((BMMimeMultipart)multiPart).isEndOfStream()) { - ((BMMimeMultipart)headerAndBody).setInputStream(in); - ((BMMimeMultipart)headerAndBody).setBoundary( - ((BMMimeMultipart)multiPart).getBoundary()); - ((BMMimeMultipart)headerAndBody). - setLazyAttachments(lazyAttachments); - } - - } else { - headerAndBody = new MimeMultipart(); - headerAndBody.addBodyPart(mimeSoapPart); - - for (Iterator eachAttachement = getAttachments(); - eachAttachement.hasNext(); - ) { - headerAndBody.addBodyPart( - ((AttachmentPartImpl) eachAttachement.next()) - .getMimePart()); - } - } - - ContentType contentType = headerAndBody.getContentType(); - - ParameterList l = contentType.getParameterList(); - - // set content type depending on SOAP version - l.set("type", getExpectedContentType()); - l.set("boundary", contentType.getParameter("boundary")); - ContentType nct = new ContentType("multipart", "related", l); - - headers.setHeader( - "Content-Type", - convertToSingleLine(nct.toString())); - // TBD - // Set content length MIME header here. - - return headerAndBody; - } catch (SOAPException ex) { - throw ex; - } catch (Throwable ex) { - log.severe("SAAJ0538.soap.cannot.convert.msg.to.multipart.obj"); - throw new SOAPExceptionImpl( - "Unable to convert SOAP message into " - + "a MimeMultipart object", - ex); - } - } - - private String initCharset() { - - String charset = null; - - String[] cts = getMimeHeaders().getHeader("Content-Type"); - if ((cts != null) && (cts[0] != null)) { - charset = getCharsetString(cts[0]); - } - - if (charset == null) { - charset = (String) getProperty(CHARACTER_SET_ENCODING); - } - - if (charset != null) { - return charset; - } - - return "utf-8"; - } - - private String getCharsetString(String s) { - try { - int index = s.indexOf(";"); - if(index < 0) - return null; - ParameterList pl = new ParameterList(s.substring(index)); - return pl.get("charset"); - } catch(Exception e) { - return null; - } - } - - public void saveChanges() throws SOAPException { - - // suck in all the data from the attachments and have it - // ready for writing/sending etc. - - String charset = initCharset(); - - /*if (countAttachments() == 0) {*/ - int attachmentCount = (attachments == null) ? 0 : attachments.size(); - if (attachmentCount == 0) { - if (!switchOffBM && !switchOffLazyAttachment && - !attachmentsInitialized && (multiPart != null)) { - // so there might be attachments - attachmentCount = 1; - } - } - - try { - if ((attachmentCount == 0) && !hasXOPContent()) { - InputStream in; - try{ - /* - * Not sure why this is called getHeaderBytes(), but it actually - * returns the whole message as a byte stream. This stream could - * be either XML of Fast depending on the mode. - */ - in = getHeaderBytes(); - // no attachments, hence this property can be false - this.optimizeAttachmentProcessing = false; - if (SOAPPartImpl.lazyContentLength) { - inputStreamAfterSaveChanges = in; - } - } catch (IOException ex) { - log.severe("SAAJ0539.soap.cannot.get.header.stream"); - throw new SOAPExceptionImpl( - "Unable to get header stream in saveChanges: ", - ex); - } - - if (in instanceof ByteInputStream) { - ByteInputStream bIn = (ByteInputStream)in; - messageBytes = bIn.getBytes(); - messageByteCount = bIn.getCount(); - } - - setFinalContentType(charset); - /* - headers.setHeader( - "Content-Type", - getExpectedContentType() + - (isFastInfoset ? "" : "; charset=" + charset));*/ - if (messageByteCount > 0) { - headers.setHeader( - "Content-Length", - Integer.toString(messageByteCount)); - } - } else { - if(hasXOPContent()) - mmp = getXOPMessage(); - else - mmp = getMimeMessage(); - } - } catch (Throwable ex) { - log.severe("SAAJ0540.soap.err.saving.multipart.msg"); - throw new SOAPExceptionImpl( - "Error during saving a multipart message", - ex); - } - - // FIX ME -- SOAP Action replaced by Content-Type optional parameter action - /* - if(isCorrectSoapVersion(SOAP1_1_FLAG)) { - - String[] soapAction = headers.getHeader("SOAPAction"); - - if (soapAction == null || soapAction.length == 0) - headers.setHeader("SOAPAction", "\"\""); - - } - */ - - saved = true; - } - - private MimeMultipart getXOPMessage() throws SOAPException { - try { - MimeMultipart headerAndBody = new MimeMultipart(); - SOAPPartImpl soapPart = (SOAPPartImpl)getSOAPPart(); - MimeBodyPart mimeSoapPart = soapPart.getMimePart(); - ContentType soapPartCtype = - new ContentType("application/xop+xml"); - soapPartCtype.setParameter("type", getExpectedContentType()); - String charset = initCharset(); - soapPartCtype.setParameter("charset", charset); - mimeSoapPart.setHeader("Content-Type", soapPartCtype.toString()); - headerAndBody.addBodyPart(mimeSoapPart); - - for (Iterator eachAttachement = getAttachments(); - eachAttachement.hasNext(); - ) { - headerAndBody.addBodyPart( - ((AttachmentPartImpl) eachAttachement.next()) - .getMimePart()); - } - - ContentType contentType = headerAndBody.getContentType(); - - ParameterList l = contentType.getParameterList(); - - //lets not write start-info for now till we get servlet fix done - l.set("start-info", getExpectedContentType());//+";charset="+initCharset()); - - // set content type depending on SOAP version - l.set("type", "application/xop+xml"); - - if (isCorrectSoapVersion(SOAP1_2_FLAG)) { - String action = getAction(); - if(action != null) - l.set("action", action); - } - - l.set("boundary", contentType.getParameter("boundary")); - ContentType nct = new ContentType("Multipart", "Related", l); - headers.setHeader( - "Content-Type", - convertToSingleLine(nct.toString())); - // TBD - // Set content length MIME header here. - - return headerAndBody; - } catch (SOAPException ex) { - throw ex; - } catch (Throwable ex) { - log.severe("SAAJ0538.soap.cannot.convert.msg.to.multipart.obj"); - throw new SOAPExceptionImpl( - "Unable to convert SOAP message into " - + "a MimeMultipart object", - ex); - } - - } - - private boolean hasXOPContent() throws ParseException { - String type = getContentType(); - if(type == null) - return false; - ContentType ct = new ContentType(type); - //return isMimeMultipartXOPPackage(ct) || isSOAPBodyXOPPackage(ct); - return isMimeMultipartXOPSoap1_1Package(ct) || - isMimeMultipartXOPSoap1_2Package(ct) || isSOAPBodyXOPPackage(ct); - - } - - public void writeTo(OutputStream out) throws SOAPException, IOException { - if (saveRequired()){ - this.optimizeAttachmentProcessing = true; - saveChanges(); - } - - if(!optimizeAttachmentProcessing){ - if (SOAPPartImpl.lazyContentLength && messageByteCount <= 0) { - byte[] buf = new byte[1024]; - - int length = 0; - while( (length = inputStreamAfterSaveChanges.read(buf)) != -1) { - out.write(buf,0, length); - messageByteCount += length; - } - if (messageByteCount > 0) { - headers.setHeader( - "Content-Length", - Integer.toString(messageByteCount)); - } - } else { - out.write(messageBytes, 0, messageByteCount); - } - } - else{ - try{ - if(hasXOPContent()){ - mmp.writeTo(out); - }else{ - mmp.writeTo(out); - if (!switchOffBM && !switchOffLazyAttachment && - (multiPart != null) && !attachmentsInitialized) { - ((BMMimeMultipart)multiPart).setInputStream( - ((BMMimeMultipart)mmp).getInputStream()); - } - } - } catch(Exception ex){ - log.severe("SAAJ0540.soap.err.saving.multipart.msg"); - throw new SOAPExceptionImpl( - "Error during saving a multipart message", - ex); - } - } - - if(isCorrectSoapVersion(SOAP1_1_FLAG)) { - - String[] soapAction = headers.getHeader("SOAPAction"); - - if (soapAction == null || soapAction.length == 0) - headers.setHeader("SOAPAction", "\"\""); - - } - - messageBytes = null; - needsSave(); - } - - public SOAPBody getSOAPBody() throws SOAPException { - SOAPBody body = getSOAPPart().getEnvelope().getBody(); - /*if (body == null) { - throw new SOAPException("No SOAP Body was found in the SOAP Message"); - }*/ - return body; - } - - public SOAPHeader getSOAPHeader() throws SOAPException { - SOAPHeader hdr = getSOAPPart().getEnvelope().getHeader(); - /*if (hdr == null) { - throw new SOAPException("No SOAP Header was found in the SOAP Message"); - }*/ - return hdr; - } - - private void initializeAllAttachments () - throws MessagingException, SOAPException { - if (switchOffBM || switchOffLazyAttachment) { - return; - } - - if (attachmentsInitialized || (multiPart == null)) { - return; - } - - if (attachments == null) - attachments = new FinalArrayList(); - - int count = multiPart.getCount(); - for (int i=0; i < count; i++ ) { - initializeAttachment(multiPart.getBodyPart(i)); - } - attachmentsInitialized = true; - //multiPart = null; - needsSave(); - } - - private void initializeAttachment(MimeBodyPart mbp) throws SOAPException { - AttachmentPartImpl attachmentPart = new AttachmentPartImpl(); - DataHandler attachmentHandler = mbp.getDataHandler(); - attachmentPart.setDataHandler(attachmentHandler); - - AttachmentPartImpl.copyMimeHeaders(mbp, attachmentPart); - attachments.add(attachmentPart); - } - - private void initializeAttachment(MimeMultipart multiPart, int i) - throws Exception { - MimeBodyPart currentBodyPart = multiPart.getBodyPart(i); - AttachmentPartImpl attachmentPart = new AttachmentPartImpl(); - - DataHandler attachmentHandler = currentBodyPart.getDataHandler(); - attachmentPart.setDataHandler(attachmentHandler); - - AttachmentPartImpl.copyMimeHeaders(currentBodyPart, attachmentPart); - addAttachmentPart(attachmentPart); - } - - private void setMimeHeaders(SOAPPart soapPart, - MimeBodyPart soapMessagePart) throws Exception { - - // first remove the existing content-type - soapPart.removeAllMimeHeaders(); - // add everything present in soapMessagePart - List headers = soapMessagePart.getAllHeaders(); - int sz = headers.size(); - for( int i=0; iDataContentHandler. - * - * @return The DataFlavors - */ - public DataFlavor[] getTransferDataFlavors() { // throws Exception; - return new DataFlavor[] { myDF }; - } - - /** - * Return the Transfer Data of type DataFlavor from InputStream. - * - * @param df The DataFlavor - * @param ins The InputStream corresponding to the data - * @return String object - */ - public Object getTransferData(DataFlavor df, DataSource ds) { - // use myDF.equals to be sure to get ActivationDataFlavor.equals, - // which properly ignores Content-Type parameters in comparison - if (myDF.equals(df)) - return getContent(ds); - else - return null; - } - - /** - * Return the content. - */ - public Object getContent(DataSource ds) { - try { - return new MimeMultipart( - ds, new ContentType(ds.getContentType())); - } catch (Exception e) { - return null; - } - } - - /** - * Write the object to the output stream, using the specific MIME type. - */ - public void writeTo(Object obj, String mimeType, OutputStream os) - throws IOException { - if (obj instanceof MimeMultipart) { - try { - //TODO: temporarily allow only ByteOutputStream - // Need to add writeTo(OutputStream) on MimeMultipart - ByteOutputStream baos = null; - if (os instanceof ByteOutputStream) { - baos = (ByteOutputStream)os; - } else { - throw new IOException("Input Stream expected to be a com.sun.xml.internal.messaging.saaj.util.ByteOutputStream, but found " + - os.getClass().getName()); - } - ((MimeMultipart)obj).writeTo(baos); - } catch (Exception e) { - throw new IOException(e.toString()); - } - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SAAJMetaFactoryImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SAAJMetaFactoryImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import javax.xml.soap.SAAJMetaFactory; -import javax.xml.soap.SOAPConstants; -import javax.xml.soap.MessageFactory; -import javax.xml.soap.SOAPFactory; -import javax.xml.soap.SOAPException; - -import java.util.logging.Level; -import java.util.logging.Logger; - -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - -public class SAAJMetaFactoryImpl extends SAAJMetaFactory { - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); - - protected MessageFactory newMessageFactory(String protocol) - throws SOAPException { - if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol)) { - return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl(); - } else if (SOAPConstants.SOAP_1_2_PROTOCOL.equals(protocol)) { - return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPMessageFactory1_2Impl(); - } else if (SOAPConstants.DYNAMIC_SOAP_PROTOCOL.equals(protocol)) { - return new com.sun.xml.internal.messaging.saaj.soap.dynamic.SOAPMessageFactoryDynamicImpl(); - } else { - log.log( - Level.SEVERE, - "SAAJ0569.soap.unknown.protocol", - new Object[] {protocol, "MessageFactory"}); - throw new SOAPException("Unknown Protocol: " + protocol + - " specified for creating MessageFactory"); - } - } - - protected SOAPFactory newSOAPFactory(String protocol) - throws SOAPException { - if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol)) { - return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl(); - } else if (SOAPConstants.SOAP_1_2_PROTOCOL.equals(protocol)) { - return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPFactory1_2Impl(); - } else if (SOAPConstants.DYNAMIC_SOAP_PROTOCOL.equals(protocol)) { - return new com.sun.xml.internal.messaging.saaj.soap.dynamic.SOAPFactoryDynamicImpl(); - } else { - log.log( - Level.SEVERE, - "SAAJ0569.soap.unknown.protocol", - new Object[] {protocol, "SOAPFactory"}); - throw new SOAPException("Unknown Protocol: " + protocol + - " specified for creating SOAPFactory"); - } - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocument.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocument.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,35 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap; - -public interface SOAPDocument { - SOAPPartImpl getSOAPPart(); - SOAPDocumentImpl getDocument(); -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentFragment.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentFragment.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap; - -import com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl; -import com.sun.org.apache.xerces.internal.dom.DocumentFragmentImpl; - -public class SOAPDocumentFragment extends DocumentFragmentImpl { - - public SOAPDocumentFragment(CoreDocumentImpl ownerDoc) { - super(ownerDoc); - } - - public SOAPDocumentFragment() { - super(); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,193 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap; - -import java.util.logging.Logger; - -import com.sun.org.apache.xerces.internal.dom.DocumentImpl; -import org.w3c.dom.*; - -import com.sun.xml.internal.messaging.saaj.soap.impl.*; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - -public class SOAPDocumentImpl extends DocumentImpl implements SOAPDocument { - - private static final String XMLNS = "xmlns".intern(); - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); - - SOAPPartImpl enclosingSOAPPart; - - public SOAPDocumentImpl(SOAPPartImpl enclosingDocument) { - this.enclosingSOAPPart = enclosingDocument; - } - - // public SOAPDocumentImpl(boolean grammarAccess) { - // super(grammarAccess); - // } - // - // public SOAPDocumentImpl(DocumentType doctype) { - // super(doctype); - // } - // - // public SOAPDocumentImpl(DocumentType doctype, boolean grammarAccess) { - // super(doctype, grammarAccess); - // } - - public SOAPPartImpl getSOAPPart() { - if (enclosingSOAPPart == null) { - log.severe("SAAJ0541.soap.fragment.not.bound.to.part"); - throw new RuntimeException("Could not complete operation. Fragment not bound to SOAP part."); - } - return enclosingSOAPPart; - } - - public SOAPDocumentImpl getDocument() { - return this; - } - - public DocumentType getDoctype() { - // SOAP means no DTD, No DTD means no doctype (SOAP 1.2 only?) - return null; - } - - public DOMImplementation getImplementation() { - return super.getImplementation(); - } - - public Element getDocumentElement() { - // This had better be an Envelope! - getSOAPPart().doGetDocumentElement(); - return doGetDocumentElement(); - } - - protected Element doGetDocumentElement() { - return super.getDocumentElement(); - } - - public Element createElement(String tagName) throws DOMException { - return ElementFactory.createElement( - this, - NameImpl.getLocalNameFromTagName(tagName), - NameImpl.getPrefixFromTagName(tagName), - null); - } - - public DocumentFragment createDocumentFragment() { - return new SOAPDocumentFragment(this); - } - - public org.w3c.dom.Text createTextNode(String data) { - return new SOAPTextImpl(this, data); - } - - public Comment createComment(String data) { - return new SOAPCommentImpl(this, data); - } - - public CDATASection createCDATASection(String data) throws DOMException { - return new CDATAImpl(this, data); - } - - public ProcessingInstruction createProcessingInstruction( - String target, - String data) - throws DOMException { - log.severe("SAAJ0542.soap.proc.instructions.not.allowed.in.docs"); - throw new UnsupportedOperationException("Processing Instructions are not allowed in SOAP documents"); - } - - public Attr createAttribute(String name) throws DOMException { - boolean isQualifiedName = (name.indexOf(":") > 0); - if (isQualifiedName) { - String nsUri = null; - String prefix = name.substring(0, name.indexOf(":")); - //cannot do anything to resolve the URI if prefix is not - //XMLNS. - if (XMLNS.equals(prefix)) { - nsUri = ElementImpl.XMLNS_URI; - return createAttributeNS(nsUri, name); - } - } - - return super.createAttribute(name); - } - - public EntityReference createEntityReference(String name) - throws DOMException { - log.severe("SAAJ0543.soap.entity.refs.not.allowed.in.docs"); - throw new UnsupportedOperationException("Entity References are not allowed in SOAP documents"); - } - - public NodeList getElementsByTagName(String tagname) { - return super.getElementsByTagName(tagname); - } - - public org.w3c.dom.Node importNode(Node importedNode, boolean deep) - throws DOMException { - return super.importNode(importedNode, deep); - } - - public Element createElementNS(String namespaceURI, String qualifiedName) - throws DOMException { - return ElementFactory.createElement( - this, - NameImpl.getLocalNameFromTagName(qualifiedName), - NameImpl.getPrefixFromTagName(qualifiedName), - namespaceURI); - } - - public Attr createAttributeNS(String namespaceURI, String qualifiedName) - throws DOMException { - return super.createAttributeNS(namespaceURI, qualifiedName); - } - - public NodeList getElementsByTagNameNS( - String namespaceURI, - String localName) { - return super.getElementsByTagNameNS(namespaceURI, localName); - } - - public Element getElementById(String elementId) { - return super.getElementById(elementId); - } - - public Node cloneNode(boolean deep) { - SOAPPartImpl newSoapPart = getSOAPPart().doCloneNode(); - super.cloneNode(newSoapPart.getDocument(), deep); - return newSoapPart; - } - - public void cloneNode(SOAPDocumentImpl newdoc, boolean deep) { - super.cloneNode(newdoc, deep); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPFactoryImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPFactoryImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import java.util.logging.Logger; -import java.util.logging.Level; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.soap.impl.ElementFactory; -import com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; -import com.sun.xml.internal.messaging.saaj.util.*; - -import org.w3c.dom.Element; -import org.w3c.dom.Document; -import org.w3c.dom.NodeList; -import org.w3c.dom.NamedNodeMap; -import org.w3c.dom.Attr; - -public abstract class SOAPFactoryImpl extends SOAPFactory { - - protected static final Logger - log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); - - protected abstract SOAPDocumentImpl createDocument(); - - public SOAPElement createElement(String tagName) throws SOAPException { - if (tagName == null) { - log.log( - Level.SEVERE,"SAAJ0567.soap.null.input", - new Object[] {"tagName","SOAPFactory.createElement"}); - throw new SOAPException("Null tagName argument passed to createElement"); - } - return ElementFactory.createElement(createDocument(), - NameImpl.createFromTagName(tagName)); - } - - public SOAPElement createElement(Name name) throws SOAPException { - // @since SAAJ 1.3 - // If the Name was null it would cause a NullPointerException in earlier release - if (name == null) { - log.log(Level.SEVERE,"SAAJ0567.soap.null.input", - new Object[] {"name","SOAPFactory.createElement"}); - throw new SOAPException("Null name argument passed to createElement"); - } - return ElementFactory.createElement(createDocument(), name); - } - - public SOAPElement createElement(QName qname) throws SOAPException { - if (qname == null) { - log.log(Level.SEVERE,"SAAJ0567.soap.null.input", - new Object[] {"qname","SOAPFactory.createElement"}); - throw new SOAPException("Null qname argument passed to createElement"); - } - return ElementFactory.createElement(createDocument(),qname); - } - - public SOAPElement createElement( - String localName, - String prefix, - String uri) throws SOAPException { - - // @since SAAJ 1.3 - // if prefix !=null but localName== null then in earlier releases it would create - // a Qualified Name :null which is not meaningful - if (localName == null) { - log.log(Level.SEVERE,"SAAJ0567.soap.null.input", - new Object[] {"localName","SOAPFactory.createElement"}); - throw new SOAPException("Null localName argument passed to createElement"); - } - return ElementFactory.createElement(createDocument(), localName, prefix, uri); - } - - public Name createName(String localName, String prefix, String uri) - throws SOAPException { - // @since SAAJ 1.3 - // if localName==null, earlier impl would create Name with localName="" - // which is absurd. - if (localName == null) { - log.log( - Level.SEVERE,"SAAJ0567.soap.null.input", - new Object[] {"localName","SOAPFactory.createName"}); - throw new SOAPException("Null localName argument passed to createName"); - } - return NameImpl.create(localName, prefix, uri); - } - - public Name createName(String localName) throws SOAPException { - // @since SAAJ 1.3 - // if localName==null, earlier impl would create Name with localName=null - // which is absurd. - if (localName == null) { - log.log( - Level.SEVERE,"SAAJ0567.soap.null.input", - new Object[] {"localName","SOAPFactory.createName"}); - throw new SOAPException("Null localName argument passed to createName"); - } - return NameImpl.createFromUnqualifiedName(localName); - } - - // Note: the child elements might still be org.w3c.dom.Element's, but the - // getChildElements will do the conversion to SOAPElement when called. - public SOAPElement createElement(Element domElement) throws SOAPException { - if (domElement == null) { - return null; - } - return convertToSoapElement(domElement); - } - - private SOAPElement convertToSoapElement(Element element) throws SOAPException { - - if (element instanceof SOAPElement) { - return (SOAPElement) element; - } - - SOAPElement copy = createElement( - element.getLocalName(), - element.getPrefix(), - element.getNamespaceURI()); - - Document ownerDoc = copy.getOwnerDocument(); - - NamedNodeMap attrMap = element.getAttributes(); - for (int i=0; i < attrMap.getLength(); i++) { - Attr nextAttr = (Attr)attrMap.item(i); - Attr importedAttr = (Attr)ownerDoc.importNode(nextAttr, true); - copy.setAttributeNodeNS(importedAttr); - } - - - NodeList nl = element.getChildNodes(); - for (int i=0; i < nl.getLength(); i++) { - org.w3c.dom.Node next = nl.item(i); - org.w3c.dom.Node imported = ownerDoc.importNode(next, true); - copy.appendChild(imported); - } - - return copy; - } - - public Detail createDetail() throws SOAPException { - throw new UnsupportedOperationException(); - } - - public SOAPFault createFault(String reasonText, QName faultCode) throws SOAPException { - throw new UnsupportedOperationException(); - } - - public SOAPFault createFault() throws SOAPException { - throw new UnsupportedOperationException(); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPIOException.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPIOException.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** - * Created on Nov 19, 2002 - * - * To change this generated comment edit the template variable "filecomment": - * Window>Preferences>Java>Templates. - * To enable and disable the creation of file comments go to - * Window>Preferences>Java>Code Generation. - */ -package com.sun.xml.internal.messaging.saaj.soap; - -import java.io.*; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; - -public class SOAPIOException extends IOException { - SOAPExceptionImpl soapException; - - public SOAPIOException() { - super(); - soapException = new SOAPExceptionImpl(); - soapException.fillInStackTrace(); - } - - public SOAPIOException(String s) { - super(); - soapException = new SOAPExceptionImpl(s); - soapException.fillInStackTrace(); - } - - public SOAPIOException(String reason, Throwable cause) { - super(); - soapException = new SOAPExceptionImpl(reason, cause); - soapException.fillInStackTrace(); - } - - public SOAPIOException(Throwable cause) { - super(cause.toString()); - soapException = new SOAPExceptionImpl(cause); - soapException.fillInStackTrace(); - } - - public Throwable fillInStackTrace() { - if (soapException != null) { - soapException.fillInStackTrace(); - } - return this; - } - - public String getLocalizedMessage() { - return soapException.getLocalizedMessage(); - } - - public String getMessage() { - return soapException.getMessage(); - } - - public void printStackTrace() { - soapException.printStackTrace(); - } - - public void printStackTrace(PrintStream s) { - soapException.printStackTrace(s); - } - - public void printStackTrace(PrintWriter s) { - soapException.printStackTrace(s); - } - - public String toString() { - return soapException.toString(); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPPartImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPPartImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,822 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import java.io.*; -import java.util.Iterator; -import java.util.logging.Logger; -import java.util.logging.Level; - -import javax.activation.DataHandler; -import javax.activation.DataSource; -import javax.xml.soap.*; -import javax.xml.transform.Source; -import javax.xml.transform.stream.StreamSource; - -import org.w3c.dom.*; - -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; -import com.sun.xml.internal.messaging.saaj.util.*; - -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.sax.SAXSource; - -/** - * SOAPPartImpl is the first attachment. This contains the XML/SOAP document. - * - * @author Anil Vijendran (anil@sun.com) - */ -public abstract class SOAPPartImpl extends SOAPPart implements SOAPDocument { - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); - - protected MimeHeaders headers; - protected Envelope envelope; - protected Source source; - protected SOAPDocumentImpl document; - - //flag to indicate if a setContent happened. - private boolean sourceWasSet = false; - - // Records whether the input source had an xml decl or not. - protected boolean omitXmlDecl = true; - - // Records the charset encoding of the input stream source if provided. - protected String sourceCharsetEncoding = null; - - /** - * Reference to containing message (may be null) - */ - protected MessageImpl message; - - static final boolean lazyContentLength; - static { - lazyContentLength = SAAJUtil.getSystemBoolean("saaj.lazy.contentlength"); - } - - protected SOAPPartImpl() { - this(null); - } - - protected SOAPPartImpl(MessageImpl message) { - document = new SOAPDocumentImpl(this); - headers = new MimeHeaders(); - this.message = message; - headers.setHeader("Content-Type", getContentType()); - } - - protected abstract String getContentType(); - protected abstract Envelope createEnvelopeFromSource() - throws SOAPException; - protected abstract Envelope createEmptyEnvelope(String prefix) - throws SOAPException; - protected abstract SOAPPartImpl duplicateType(); - - protected String getContentTypeString() { - return getContentType(); - } - - public boolean isFastInfoset() { - return (message != null) ? message.isFastInfoset() : false; - } - - public SOAPEnvelope getEnvelope() throws SOAPException { - - // If there is no SOAP envelope already created, then create - // one from a source if one exists. If there is a newer source - // then use that source. - - if (sourceWasSet) - sourceWasSet = false; - - lookForEnvelope(); - if (envelope != null) { - if (source != null) { // there's a newer source, use it - document.removeChild(envelope); - envelope = createEnvelopeFromSource(); - } - } else if (source != null) { - envelope = createEnvelopeFromSource(); - } else { - envelope = createEmptyEnvelope(null); - document.insertBefore(envelope, null); - } - return envelope; - } - - protected void lookForEnvelope() throws SOAPException { - Element envelopeChildElement = document.doGetDocumentElement(); - if (envelopeChildElement == null || envelopeChildElement instanceof Envelope) { - envelope = (EnvelopeImpl) envelopeChildElement; - } else if (!(envelopeChildElement instanceof ElementImpl)) { - log.severe("SAAJ0512.soap.incorrect.factory.used"); - throw new SOAPExceptionImpl("Unable to create envelope: incorrect factory used during tree construction"); - } else { - ElementImpl soapElement = (ElementImpl) envelopeChildElement; - if (soapElement.getLocalName().equalsIgnoreCase("Envelope")) { - String prefix = soapElement.getPrefix(); - String uri = (prefix == null) ? soapElement.getNamespaceURI() : soapElement.getNamespaceURI(prefix); - if(!uri.equals(NameImpl.SOAP11_NAMESPACE) && !uri.equals(NameImpl.SOAP12_NAMESPACE)) { - log.severe("SAAJ0513.soap.unknown.ns"); - throw new SOAPVersionMismatchException("Unable to create envelope from given source because the namespace was not recognized"); - } - } else { - log.severe("SAAJ0514.soap.root.elem.not.named.envelope"); - throw new SOAPExceptionImpl( - "Unable to create envelope from given source because the root element is not named \"Envelope\""); - } - } - } - - public void removeAllMimeHeaders() { - headers.removeAllHeaders(); - } - - public void removeMimeHeader(String header) { - headers.removeHeader(header); - } - - public String[] getMimeHeader(String name) { - return headers.getHeader(name); - } - - public void setMimeHeader(String name, String value) { - headers.setHeader(name, value); - } - - public void addMimeHeader(String name, String value) { - headers.addHeader(name, value); - } - - public Iterator getAllMimeHeaders() { - return headers.getAllHeaders(); - } - - public Iterator getMatchingMimeHeaders(String[] names) { - return headers.getMatchingHeaders(names); - } - - public Iterator getNonMatchingMimeHeaders(String[] names) { - return headers.getNonMatchingHeaders(names); - } - - public Source getContent() throws SOAPException { - if (source != null) { - InputStream bis = null; - if (source instanceof JAXMStreamSource) { - StreamSource streamSource = (StreamSource)source; - bis = streamSource.getInputStream(); - } else if (FastInfosetReflection.isFastInfosetSource(source)) { - // FastInfosetSource inherits from SAXSource - SAXSource saxSource = (SAXSource)source; - bis = saxSource.getInputSource().getByteStream(); - } - - if (bis != null) { - try { - bis.reset(); - } catch (IOException e) { - /* This exception will never be thrown. - * - * The setContent method will modify the source - * if StreamSource to JAXMStreamSource, that uses - * a ByteInputStream, and for a FastInfosetSource will - * replace the InputStream with a ByteInputStream. - */ - } - } - return source; - } - - return ((Envelope) getEnvelope()).getContent(); - } - - public void setContent(Source source) throws SOAPException { - try { - if (source instanceof StreamSource) { - InputStream is = ((StreamSource) source).getInputStream(); - Reader rdr = ((StreamSource) source).getReader(); - - if (is != null) { - this.source = new JAXMStreamSource(is); - } else if (rdr != null) { - this.source = new JAXMStreamSource(rdr); - } else { - log.severe("SAAJ0544.soap.no.valid.reader.for.src"); - throw new SOAPExceptionImpl("Source does not have a valid Reader or InputStream"); - } - } - else if (FastInfosetReflection.isFastInfosetSource(source)) { - // InputStream is = source.getInputStream() - InputStream is = FastInfosetReflection.FastInfosetSource_getInputStream(source); - - /* - * Underlying stream must be ByteInputStream for getContentAsStream(). We pay the - * cost of copying the underlying bytes here to avoid multiple copies every time - * getBytes() is called on a ByteInputStream. - */ - if (!(is instanceof ByteInputStream)) { - ByteOutputStream bout = null; - try { - bout = new ByteOutputStream(); - bout.write(is); - - // source.setInputStream(new ByteInputStream(...)) - FastInfosetReflection.FastInfosetSource_setInputStream( - source, bout.newInputStream()); - } finally { - if (bout != null) - bout.close(); - } - } - this.source = source; - } - else { - this.source = source; - } - sourceWasSet = true; - } - catch (Exception ex) { - ex.printStackTrace(); - - log.severe("SAAJ0545.soap.cannot.set.src.for.part"); - throw new SOAPExceptionImpl( - "Error setting the source for SOAPPart: " + ex.getMessage()); - } - } - - public InputStream getContentAsStream() throws IOException { - if (source != null) { - InputStream is = null; - - // Allow message to be transcode if so requested - if (source instanceof StreamSource && !isFastInfoset()) { - is = ((StreamSource) source).getInputStream(); - } - else if (FastInfosetReflection.isFastInfosetSource(source) && - isFastInfoset()) - { - try { - // InputStream is = source.getInputStream() - is = FastInfosetReflection.FastInfosetSource_getInputStream(source); - } - catch (Exception e) { - throw new IOException(e.toString()); - } - } - - if (is != null) { - if (lazyContentLength) { - return is; - } - if (!(is instanceof ByteInputStream)) { - log.severe("SAAJ0546.soap.stream.incorrect.type"); - throw new IOException("Internal error: stream not of the right type"); - } - return (ByteInputStream) is; - } - // need to do something here for reader... - // for now we'll see if we can fallback... - } - - ByteOutputStream b = new ByteOutputStream(); - - Envelope env = null; - - try { - env = (Envelope) getEnvelope(); - env.output(b, isFastInfoset()); - } - catch (SOAPException soapException) { - log.severe("SAAJ0547.soap.cannot.externalize"); - throw new SOAPIOException( - "SOAP exception while trying to externalize: ", - soapException); - } - - return b.newInputStream(); - } - - MimeBodyPart getMimePart() throws SOAPException { - try { - MimeBodyPart headerEnvelope = new MimeBodyPart(); - - headerEnvelope.setDataHandler(getDataHandler()); - AttachmentPartImpl.copyMimeHeaders(headers, headerEnvelope); - - return headerEnvelope; - } catch (SOAPException ex) { - throw ex; - } catch (Exception ex) { - log.severe("SAAJ0548.soap.cannot.externalize.hdr"); - throw new SOAPExceptionImpl("Unable to externalize header", ex); - } - } - - MimeHeaders getMimeHeaders() { - return headers; - } - - DataHandler getDataHandler() { - DataSource ds = new DataSource() { - public OutputStream getOutputStream() throws IOException { - throw new IOException("Illegal Operation"); - } - - public String getContentType() { - return getContentTypeString(); - } - - public String getName() { - return getContentId(); - } - - public InputStream getInputStream() throws IOException { - return getContentAsStream(); - } - }; - return new DataHandler(ds); - } - - public SOAPDocumentImpl getDocument() { - handleNewSource(); - return document; - } - - public SOAPPartImpl getSOAPPart() { - return this; - } - - public DocumentType getDoctype() { - return document.getDoctype(); - } - - // Forward all of these calls to the document to ensure that they work the - // same way whether they are called from here or directly from the document. - // If the document needs any help from this SOAPPart then - // Make it use a call-back as in doGetDocumentElement() below - public DOMImplementation getImplementation() { - return document.getImplementation(); - } - - public Element getDocumentElement() { - // If there is no SOAP envelope already created, then create - // one from a source if one exists. If there is a newer source - // then use that source. - try { - getEnvelope(); - } catch (SOAPException e) { - } - return document.getDocumentElement(); - } - - protected void doGetDocumentElement() { - handleNewSource(); - try { - lookForEnvelope(); - } catch (SOAPException e) { - } - } - - public Element createElement(String tagName) throws DOMException { - return document.createElement(tagName); - } - - public DocumentFragment createDocumentFragment() { - return document.createDocumentFragment(); - } - - public org.w3c.dom.Text createTextNode(String data) { - return document.createTextNode(data); - } - - public Comment createComment(String data) { - return document.createComment(data); - } - - public CDATASection createCDATASection(String data) throws DOMException { - return document.createCDATASection(data); - } - - public ProcessingInstruction createProcessingInstruction( - String target, - String data) - throws DOMException { - return document.createProcessingInstruction(target, data); - } - - public Attr createAttribute(String name) throws DOMException { - return document.createAttribute(name); - } - - public EntityReference createEntityReference(String name) - throws DOMException { - return document.createEntityReference(name); - } - - public NodeList getElementsByTagName(String tagname) { - handleNewSource(); - return document.getElementsByTagName(tagname); - } - - public org.w3c.dom.Node importNode( - org.w3c.dom.Node importedNode, - boolean deep) - throws DOMException { - handleNewSource(); - return document.importNode(importedNode, deep); - } - - public Element createElementNS(String namespaceURI, String qualifiedName) - throws DOMException { - return document.createElementNS(namespaceURI, qualifiedName); - } - - public Attr createAttributeNS(String namespaceURI, String qualifiedName) - throws DOMException { - return document.createAttributeNS(namespaceURI, qualifiedName); - } - - public NodeList getElementsByTagNameNS( - String namespaceURI, - String localName) { - handleNewSource(); - return document.getElementsByTagNameNS(namespaceURI, localName); - } - - public Element getElementById(String elementId) { - handleNewSource(); - return document.getElementById(elementId); - } - public org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild) - throws DOMException { - handleNewSource(); - return document.appendChild(newChild); - } - - public org.w3c.dom.Node cloneNode(boolean deep) { - handleNewSource(); - return document.cloneNode(deep); - } - - protected SOAPPartImpl doCloneNode() { - handleNewSource(); - SOAPPartImpl newSoapPart = duplicateType(); - - newSoapPart.headers = MimeHeadersUtil.copy(this.headers); - newSoapPart.source = this.source; - return newSoapPart; - } - - public NamedNodeMap getAttributes() { - return document.getAttributes(); - } - - public NodeList getChildNodes() { - handleNewSource(); - return document.getChildNodes(); - } - - public org.w3c.dom.Node getFirstChild() { - handleNewSource(); - return document.getFirstChild(); - } - - public org.w3c.dom.Node getLastChild() { - handleNewSource(); - return document.getLastChild(); - } - - public String getLocalName() { - return document.getLocalName(); - } - - public String getNamespaceURI() { - return document.getNamespaceURI(); - } - - public org.w3c.dom.Node getNextSibling() { - handleNewSource(); - return document.getNextSibling(); - } - - public String getNodeName() { - return document.getNodeName(); - } - - public short getNodeType() { - return document.getNodeType(); - } - - public String getNodeValue() throws DOMException { - return document.getNodeValue(); - } - - public Document getOwnerDocument() { - return document.getOwnerDocument(); - } - - public org.w3c.dom.Node getParentNode() { - return document.getParentNode(); - } - - public String getPrefix() { - return document.getPrefix(); - } - - public org.w3c.dom.Node getPreviousSibling() { - return document.getPreviousSibling(); - } - - public boolean hasAttributes() { - return document.hasAttributes(); - } - - public boolean hasChildNodes() { - handleNewSource(); - return document.hasChildNodes(); - } - - public org.w3c.dom.Node insertBefore( - org.w3c.dom.Node arg0, - org.w3c.dom.Node arg1) - throws DOMException { - handleNewSource(); - return document.insertBefore(arg0, arg1); - } - - public boolean isSupported(String arg0, String arg1) { - return document.isSupported(arg0, arg1); - } - - public void normalize() { - handleNewSource(); - document.normalize(); - } - - public org.w3c.dom.Node removeChild(org.w3c.dom.Node arg0) - throws DOMException { - handleNewSource(); - return document.removeChild(arg0); - } - - public org.w3c.dom.Node replaceChild( - org.w3c.dom.Node arg0, - org.w3c.dom.Node arg1) - throws DOMException { - handleNewSource(); - return document.replaceChild(arg0, arg1); - } - - public void setNodeValue(String arg0) throws DOMException { - document.setNodeValue(arg0); - } - - public void setPrefix(String arg0) throws DOMException { - document.setPrefix(arg0); - } - - private void handleNewSource() { - if (sourceWasSet) { - // There is a newer source use that source. - try { - getEnvelope(); - } catch (SOAPException e) { - } - } - } - - protected XMLDeclarationParser lookForXmlDecl() throws SOAPException { - if ((source != null) && (source instanceof StreamSource)) { - - Reader reader = null; - - InputStream inputStream = ((StreamSource) source).getInputStream(); - if (inputStream != null) { - if (getSourceCharsetEncoding() == null) { - reader = new InputStreamReader(inputStream); - } else { - try { - reader = - new InputStreamReader( - inputStream, getSourceCharsetEncoding()); - } catch (UnsupportedEncodingException uee) { - log.log( - Level.SEVERE, - "SAAJ0551.soap.unsupported.encoding", - new Object[] {getSourceCharsetEncoding()}); - throw new SOAPExceptionImpl( - "Unsupported encoding " + getSourceCharsetEncoding(), - uee); - } - } - } else { - reader = ((StreamSource) source).getReader(); - } - if (reader != null) { - PushbackReader pushbackReader = - new PushbackReader(reader, 4096); //some size to unread - XMLDeclarationParser ev = - new XMLDeclarationParser(pushbackReader); - try { - ev.parse(); - } catch (Exception e) { - log.log( - Level.SEVERE, - "SAAJ0552.soap.xml.decl.parsing.failed"); - throw new SOAPExceptionImpl( - "XML declaration parsing failed", e); - } - String xmlDecl = ev.getXmlDeclaration(); - if ((xmlDecl != null) && (xmlDecl.length() > 0)) { - this.omitXmlDecl = false; - } - if (lazyContentLength) { - source = new StreamSource(pushbackReader); - } - return ev; - } - } else if ((source != null) && (source instanceof DOMSource)) { - //TODO: A Domsource maynot contain XMLDecl ?. - } - return null; - } - - public void setSourceCharsetEncoding(String charset) { - this.sourceCharsetEncoding = charset; - } - - public org.w3c.dom.Node renameNode(org.w3c.dom.Node n, String namespaceURI, String qualifiedName) - throws DOMException { - handleNewSource(); - return document.renameNode(n, namespaceURI, qualifiedName); - } - - public void normalizeDocument() { - document.normalizeDocument(); - } - - public DOMConfiguration getDomConfig() { - return document.getDomConfig(); - } - - public org.w3c.dom.Node adoptNode(org.w3c.dom.Node source) throws DOMException { - handleNewSource(); - return document.adoptNode(source); - } - - public void setDocumentURI(String documentURI) { - document.setDocumentURI(documentURI); - } - - public String getDocumentURI() { - return document.getDocumentURI(); - } - - public void setStrictErrorChecking(boolean strictErrorChecking) { - document.setStrictErrorChecking(strictErrorChecking); - } - - public String getInputEncoding() { - return document.getInputEncoding(); - } - - public String getXmlEncoding() { - return document.getXmlEncoding(); - } - - public boolean getXmlStandalone() { - return document.getXmlStandalone(); - } - - public void setXmlStandalone(boolean xmlStandalone) throws DOMException { - document.setXmlStandalone(xmlStandalone); - } - - public String getXmlVersion() { - return document.getXmlVersion(); - } - - public void setXmlVersion(String xmlVersion) throws DOMException { - document.setXmlVersion(xmlVersion); - } - - public boolean getStrictErrorChecking() { - return document.getStrictErrorChecking(); - } - - // DOM L3 methods from org.w3c.dom.Node - public String getBaseURI() { - return document.getBaseURI(); - } - - public short compareDocumentPosition(org.w3c.dom.Node other) - throws DOMException { - return document.compareDocumentPosition(other); - } - - public String getTextContent() - throws DOMException { - return document.getTextContent(); - } - - public void setTextContent(String textContent) throws DOMException { - document.setTextContent(textContent); - } - - public boolean isSameNode(org.w3c.dom.Node other) { - return document.isSameNode(other); - } - - public String lookupPrefix(String namespaceURI) { - return document.lookupPrefix(namespaceURI); - } - - public boolean isDefaultNamespace(String namespaceURI) { - return document.isDefaultNamespace(namespaceURI); - } - - public String lookupNamespaceURI(String prefix) { - return document.lookupNamespaceURI(prefix); - } - - public boolean isEqualNode(org.w3c.dom.Node arg) { - return document.isEqualNode(arg); - } - - public Object getFeature(String feature, - String version) { - return document.getFeature(feature,version); - } - - public Object setUserData(String key, - Object data, - UserDataHandler handler) { - return document.setUserData(key, data, handler); - } - - public Object getUserData(String key) { - return document.getUserData(key); - } - - public void recycleNode() { - // Nothing seems to be required to be done here - } - - public String getValue() { - return null; - } - - public void setValue(String value) { - log.severe("SAAJ0571.soappart.setValue.not.defined"); - throw new IllegalStateException("Setting value of a soap part is not defined"); - } - - public void setParentElement(SOAPElement parent) throws SOAPException { - log.severe("SAAJ0570.soappart.parent.element.not.defined"); - throw new SOAPExceptionImpl("The parent element of a soap part is not defined"); - } - - public SOAPElement getParentElement() { - return null; - } - - public void detachNode() { - // Nothing seems to be required to be done here - } - - public String getSourceCharsetEncoding() { - return sourceCharsetEncoding; - } - - public abstract String getSOAPNamespace(); -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPVersionMismatchException.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPVersionMismatchException.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; - -public class SOAPVersionMismatchException extends SOAPExceptionImpl { - /** - * Constructs a SOAPExceptionImpl object with no - * reason or embedded Throwable object. - */ - public SOAPVersionMismatchException() { - super(); - } - - /** - * Constructs a SOAPExceptionImpl object with the given - * String as the reason for the exception being thrown. - * - * @param reason a description of what caused the exception - */ - public SOAPVersionMismatchException(String reason) { - super(reason); - } - - /** - * Constructs a SOAPExceptionImpl object with the given - * String as the reason for the exception being thrown - * and the given Throwable object as an embedded - * exception. - * - * @param reason a description of what caused the exception - * @param cause a Throwable object that is to - * be embedded in this SOAPExceptionImpl object - */ - public SOAPVersionMismatchException(String reason, Throwable cause) { - super(reason, cause); - } - - /** - * Constructs a SOAPExceptionImpl object initialized - * with the given Throwable object. - */ - public SOAPVersionMismatchException(Throwable cause) { - super(cause); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxBridge.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxBridge.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,68 +0,0 @@ -/* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import com.sun.xml.internal.messaging.saaj.util.stax.SaajStaxWriter; - -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter; - - -/** - * StaxBridge builds Envelope using a XMLStreamReaderToXMLStreamWriter - * - * @author shih-chang.chen@oracle.com - */ -public abstract class StaxBridge { - protected SaajStaxWriter saajWriter; - protected XMLStreamReaderToXMLStreamWriter readerToWriter; - protected XMLStreamReaderToXMLStreamWriter.Breakpoint breakpoint; - - - public StaxBridge(SOAPPartImpl soapPart) throws SOAPException { - readerToWriter = new XMLStreamReaderToXMLStreamWriter(); - saajWriter = new SaajStaxWriter(soapPart.message, soapPart.getSOAPNamespace()); - } - - public void bridgeEnvelopeAndHeaders() throws XMLStreamException { - readerToWriter.bridge(breakpoint); - } - - public void bridgePayload() throws XMLStreamException { - readerToWriter.bridge(breakpoint); - } - - abstract public XMLStreamReader getPayloadReader(); - - abstract public QName getPayloadQName(); - - abstract public String getPayloadAttributeValue(String attName) ; - - abstract public String getPayloadAttributeValue(QName attName) ; -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxLazySourceBridge.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxLazySourceBridge.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -/* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; - -import com.sun.xml.internal.messaging.saaj.LazyEnvelopeSource; -import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter; - - -/** - * StaxBridge builds Envelope from LazyEnvelopeSource - * - * @author shih-chang.chen@oracle.com - */ -public class StaxLazySourceBridge extends StaxBridge { - private LazyEnvelopeSource lazySource; - - public StaxLazySourceBridge(LazyEnvelopeSource src, SOAPPartImpl soapPart) throws SOAPException { - super(soapPart); - lazySource = src; - final String soapEnvNS = soapPart.getSOAPNamespace(); - try { - breakpoint = new XMLStreamReaderToXMLStreamWriter.Breakpoint(src.readToBodyStarTag(), saajWriter) { - public boolean proceedAfterStartElement() { - if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){ - return false; - } else - return true; - } - }; - } catch (XMLStreamException e) { - throw new SOAPException(e); - } - } - - @Override - public XMLStreamReader getPayloadReader() { - return lazySource.readPayload(); -// throw new UnsupportedOperationException(); - } - - @Override - public QName getPayloadQName() { - return lazySource.getPayloadQName(); - } - - @Override - public String getPayloadAttributeValue(String attName) { - if (lazySource.isPayloadStreamReader()) { - XMLStreamReader reader = lazySource.readPayload(); - if (reader.getEventType() == reader.START_ELEMENT) { - return reader.getAttributeValue(null, attName); - } - } - return null; - } - - @Override - public String getPayloadAttributeValue(QName attName) { - if (lazySource.isPayloadStreamReader()) { - XMLStreamReader reader = lazySource.readPayload(); - if (reader.getEventType() == reader.START_ELEMENT) { - return reader.getAttributeValue(attName.getNamespaceURI(), attName.getLocalPart()); - } - } - return null; - } - - public void bridgePayload() throws XMLStreamException { - //Assuming out is at Body - writePayloadTo(saajWriter); - } - - public void writePayloadTo(XMLStreamWriter writer) throws XMLStreamException { - lazySource.writePayloadTo(writer); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxReaderBridge.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxReaderBridge.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,78 +0,0 @@ -/* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.stream.XMLStreamReader; - -import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter; - -/** - * StaxBridge builds Envelope using a XMLStreamReaderToXMLStreamWriter - * - * @author shih-chang.chen@oracle.com - */ -public class StaxReaderBridge extends StaxBridge { - private XMLStreamReader in; - - public StaxReaderBridge(XMLStreamReader reader, SOAPPartImpl soapPart) throws SOAPException { - super(soapPart); - in = reader; - final String soapEnvNS = soapPart.getSOAPNamespace(); - breakpoint = new XMLStreamReaderToXMLStreamWriter.Breakpoint(reader, saajWriter) { - boolean seenBody = false; - boolean stopedAtBody = false; - public boolean proceedBeforeStartElement() { - if (stopedAtBody) return true; - if (seenBody) { - stopedAtBody = true; - return false; - } - if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){ - seenBody = true; - } - return true; - } - }; - } - - public XMLStreamReader getPayloadReader() { - return in; - } - - public QName getPayloadQName() { - return (in.getEventType() == in.START_ELEMENT) ? in.getName() : null; - } - - public String getPayloadAttributeValue(String attName) { - return (in.getEventType() == in.START_ELEMENT) ? in.getAttributeValue(null, attName) : null; - } - - public String getPayloadAttributeValue(QName attName) { - return (in.getEventType() == in.START_ELEMENT) ? in.getAttributeValue(attName.getNamespaceURI(), attName.getLocalPart()) : null; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StringDataContentHandler.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/StringDataContentHandler.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,167 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import java.awt.datatransfer.DataFlavor; -import java.io.*; - -import javax.activation.*; -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility; -import com.sun.xml.internal.messaging.saaj.packaging.mime.util.ASCIIUtility; -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType; - -/** - * JAF data content handler for text/plain --> String - * - */ -public class StringDataContentHandler implements DataContentHandler { - private static ActivationDataFlavor myDF = new ActivationDataFlavor( - java.lang.String.class, - "text/plain", - "Text String"); - - protected ActivationDataFlavor getDF() { - return myDF; - } - - /** - * Return the DataFlavors for this DataContentHandler. - * - * @return The DataFlavors - */ - public DataFlavor[] getTransferDataFlavors() { - return new DataFlavor[] { getDF() }; - } - - /** - * Return the Transfer Data of type DataFlavor from InputStream. - * - * @param df The DataFlavor - * @param ds The DataSource corresponding to the data - * @return String object - */ - public Object getTransferData(DataFlavor df, DataSource ds) - throws IOException { - // use myDF.equals to be sure to get ActivationDataFlavor.equals, - // which properly ignores Content-Type parameters in comparison - if (getDF().equals(df)) - return getContent(ds); - else - return null; - } - - public Object getContent(DataSource ds) throws IOException { - String enc = null; - InputStreamReader is = null; - - try { - enc = getCharset(ds.getContentType()); - is = new InputStreamReader(ds.getInputStream(), enc); - } catch (IllegalArgumentException iex) { - /* - * An unknown charset of the form ISO-XXX-XXX will cause - * the JDK to throw an IllegalArgumentException. The - * JDK will attempt to create a classname using this string, - * but valid classnames must not contain the character '-', - * and this results in an IllegalArgumentException, rather than - * the expected UnsupportedEncodingException. Yikes. - */ - throw new UnsupportedEncodingException(enc); - } - - try { - int pos = 0; - int count; - char buf[] = new char[1024]; - - while ((count = is.read(buf, pos, buf.length - pos)) != -1) { - pos += count; - if (pos >= buf.length) { - int size = buf.length; - if (size < 256*1024) - size += size; - else - size += 256*1024; - char tbuf[] = new char[size]; - System.arraycopy(buf, 0, tbuf, 0, pos); - buf = tbuf; - } - } - return new String(buf, 0, pos); - } finally { - try { - is.close(); - } catch (IOException ex) { } - } - } - - /** - * Write the object to the output stream, using the specified MIME type. - */ - public void writeTo(Object obj, String type, OutputStream os) - throws IOException { - if (!(obj instanceof String)) - throw new IOException("\"" + getDF().getMimeType() + - "\" DataContentHandler requires String object, " + - "was given object of type " + obj.getClass().toString()); - - String enc = null; - OutputStreamWriter osw = null; - - try { - enc = getCharset(type); - osw = new OutputStreamWriter(os, enc); - } catch (IllegalArgumentException iex) { - /* - * An unknown charset of the form ISO-XXX-XXX will cause - * the JDK to throw an IllegalArgumentException. The - * JDK will attempt to create a classname using this string, - * but valid classnames must not contain the character '-', - * and this results in an IllegalArgumentException, rather than - * the expected UnsupportedEncodingException. Yikes. - */ - throw new UnsupportedEncodingException(enc); - } - - String s = (String)obj; - osw.write(s, 0, s.length()); - osw.flush(); - } - - private String getCharset(String type) { - try { - ContentType ct = new ContentType(type); - String charset = ct.getParameter("charset"); - if (charset == null) - // If the charset parameter is absent, use US-ASCII. - charset = "us-ascii"; - return MimeUtility.javaCharset(charset); - } catch (Exception ex) { - return null; - } - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/XmlDataContentHandler.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/XmlDataContentHandler.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,127 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap; - -import java.awt.datatransfer.DataFlavor; -import java.io.IOException; -import java.io.OutputStream; - -import javax.activation.*; -import javax.xml.transform.Source; -import javax.xml.transform.Transformer; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; - -import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer; - -/** - * JAF data handler for XML content - * - * @author Anil Vijendran - */ -public class XmlDataContentHandler implements DataContentHandler { - public static final String STR_SRC = "javax.xml.transform.stream.StreamSource"; - private static Class streamSourceClass = null; - - public XmlDataContentHandler() throws ClassNotFoundException { - if (streamSourceClass == null) { - streamSourceClass = Class.forName(STR_SRC); - } - } - - /** - * return the DataFlavors for this DataContentHandler - * @return The DataFlavors. - */ - public DataFlavor[] getTransferDataFlavors() { // throws Exception; - DataFlavor flavors[] = new DataFlavor[2]; - - flavors[0] = - new ActivationDataFlavor(streamSourceClass, "text/xml", "XML"); - flavors[1] = - new ActivationDataFlavor(streamSourceClass, "application/xml", "XML"); - - return flavors; - } - - /** - * return the Transfer Data of type DataFlavor from InputStream - * @param df The DataFlavor. - * @param ins The InputStream corresponding to the data. - * @return The constructed Object. - */ - public Object getTransferData(DataFlavor flavor, DataSource dataSource) - throws IOException { - if (flavor.getMimeType().startsWith("text/xml") || - flavor.getMimeType().startsWith("application/xml")) { - if (flavor.getRepresentationClass().getName().equals(STR_SRC)) { - return new StreamSource(dataSource.getInputStream()); - } - } - return null; - } - - /** - * - */ - public Object getContent(DataSource dataSource) throws IOException { - return new StreamSource(dataSource.getInputStream()); - } - - /** - * construct an object from a byte stream - * (similar semantically to previous method, we are deciding - * which one to support) - */ - public void writeTo(Object obj, String mimeType, OutputStream os) - throws IOException { - if (!mimeType.startsWith("text/xml") && !mimeType.startsWith("application/xml")) - throw new IOException( - "Invalid content type \"" + mimeType + "\" for XmlDCH"); - - - try { - Transformer transformer = EfficientStreamingTransformer.newTransformer(); - StreamResult result = new StreamResult(os); - if (obj instanceof DataSource) { - // Streaming transform applies only to javax.xml.transform.StreamSource - transformer.transform((Source) getContent((DataSource)obj), result); - } else { - Source src=null; - if (obj instanceof String) { - src= new StreamSource(new java.io.StringReader((String) obj)); - } else { - src=(Source) obj; - } - transformer.transform(src, result); - } - } catch (Exception ex) { - throw new IOException( - "Unable to run the JAXP transformer on a stream " - + ex.getMessage()); - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPFactoryDynamicImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPFactoryDynamicImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,48 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.dynamic; - -import javax.xml.soap.Detail; -import javax.xml.soap.SOAPException; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl; - -public class SOAPFactoryDynamicImpl extends SOAPFactoryImpl { - protected SOAPDocumentImpl createDocument() { - return null; - } - - public Detail createDetail() throws SOAPException { - throw new UnsupportedOperationException( - "createDetail() not supported for Dynamic Protocol"); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPMessageFactoryDynamicImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPMessageFactoryDynamicImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.dynamic; - -import java.io.IOException; -import java.io.InputStream; - -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl; - -public class SOAPMessageFactoryDynamicImpl extends MessageFactoryImpl { - public SOAPMessage createMessage() throws SOAPException { - throw new UnsupportedOperationException( - "createMessage() not supported for Dynamic Protocol"); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyElementImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyElementImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.impl; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; - -/** - * All elements of the SOAP-ENV:BODY. - * - * @author Anil Vijendran (akv@eng.sun.com) - */ -public abstract class BodyElementImpl - extends ElementImpl - implements SOAPBodyElement { - - public BodyElementImpl(SOAPDocumentImpl ownerDoc, Name qname) { - super(ownerDoc, qname); - } - - public BodyElementImpl(SOAPDocumentImpl ownerDoc, QName qname) { - super(ownerDoc, qname); - } - - public void setParentElement(SOAPElement element) throws SOAPException { - if (! (element instanceof SOAPBody)) { - log.severe("SAAJ0101.impl.parent.of.body.elem.mustbe.body"); - throw new SOAPException("Parent of a SOAPBodyElement has to be a SOAPBody"); - } - super.setParentElement(element); - } - - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,467 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.impl; - -import java.util.Iterator; -import java.util.Locale; -import java.util.logging.Level; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; - -import org.w3c.dom.*; -import org.w3c.dom.Node; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.StaxBridge; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -/** - * The implementation of SOAP-ENV:BODY or the SOAPBody abstraction. - * - * @author Anil Vijendran (anil@sun.com) - */ -public abstract class BodyImpl extends ElementImpl implements SOAPBody { - private SOAPFault fault; -// private XMLStreamReaderToXMLStreamWriter staxBridge; - private StaxBridge staxBridge; - private boolean payloadStreamRead = false; - - protected BodyImpl(SOAPDocumentImpl ownerDoc, NameImpl bodyName) { - super(ownerDoc, bodyName); - } - - protected abstract NameImpl getFaultName(String name); - protected abstract boolean isFault(SOAPElement child); - protected abstract SOAPBodyElement createBodyElement(Name name); - protected abstract SOAPBodyElement createBodyElement(QName name); - protected abstract SOAPFault createFaultElement(); - protected abstract QName getDefaultFaultCode(); - - public SOAPFault addFault() throws SOAPException { - if (hasFault()) { - log.severe("SAAJ0110.impl.fault.already.exists"); - throw new SOAPExceptionImpl("Error: Fault already exists"); - } - - fault = createFaultElement(); - - addNode(fault); - - fault.setFaultCode(getDefaultFaultCode()); - fault.setFaultString("Fault string, and possibly fault code, not set"); - - return fault; - } - - public SOAPFault addFault( - Name faultCode, - String faultString, - Locale locale) - throws SOAPException { - - SOAPFault fault = addFault(); - fault.setFaultCode(faultCode); - fault.setFaultString(faultString, locale); - return fault; - } - - public SOAPFault addFault( - QName faultCode, - String faultString, - Locale locale) - throws SOAPException { - - SOAPFault fault = addFault(); - fault.setFaultCode(faultCode); - fault.setFaultString(faultString, locale); - return fault; - } - - public SOAPFault addFault(Name faultCode, String faultString) - throws SOAPException { - - SOAPFault fault = addFault(); - fault.setFaultCode(faultCode); - fault.setFaultString(faultString); - return fault; - } - - public SOAPFault addFault(QName faultCode, String faultString) - throws SOAPException { - - SOAPFault fault = addFault(); - fault.setFaultCode(faultCode); - fault.setFaultString(faultString); - return fault; - } - - void initializeFault() { - FaultImpl flt = (FaultImpl) findFault(); - fault = flt; - } - - protected SOAPElement findFault() { - Iterator eachChild = getChildElementNodes(); - while (eachChild.hasNext()) { - SOAPElement child = (SOAPElement) eachChild.next(); - if (isFault(child)) { - return child; - } - } - - return null; - } - - public boolean hasFault() { - QName payloadQName = getPayloadQName(); - return getFaultQName().equals(payloadQName); - } - - private Object getFaultQName() { - return new QName(getNamespaceURI(), "Fault"); - } - - public SOAPFault getFault() { - if (hasFault()) { - if (fault == null) { - //initialize fault member - fault = (SOAPFault) getFirstChildElement(); - } - return fault; - } - return null; - } - - public SOAPBodyElement addBodyElement(Name name) throws SOAPException { - SOAPBodyElement newBodyElement = - (SOAPBodyElement) ElementFactory.createNamedElement( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name.getLocalName(), - name.getPrefix(), - name.getURI()); - if (newBodyElement == null) { - newBodyElement = createBodyElement(name); - } - addNode(newBodyElement); - return newBodyElement; - } - - public SOAPBodyElement addBodyElement(QName qname) throws SOAPException { - SOAPBodyElement newBodyElement = - (SOAPBodyElement) ElementFactory.createNamedElement( - ((SOAPDocument) getOwnerDocument()).getDocument(), - qname.getLocalPart(), - qname.getPrefix(), - qname.getNamespaceURI()); - if (newBodyElement == null) { - newBodyElement = createBodyElement(qname); - } - addNode(newBodyElement); - return newBodyElement; - } - - public void setParentElement(SOAPElement element) throws SOAPException { - - if (!(element instanceof SOAPEnvelope)) { - log.severe("SAAJ0111.impl.body.parent.must.be.envelope"); - throw new SOAPException("Parent of SOAPBody has to be a SOAPEnvelope"); - } - super.setParentElement(element); - } - - protected SOAPElement addElement(Name name) throws SOAPException { - return addBodyElement(name); - } - - protected SOAPElement addElement(QName name) throws SOAPException { - return addBodyElement(name); - } - - // public Node insertBefore(Node newElement, Node ref) throws DOMException { - // if (!(newElement instanceof SOAPBodyElement) && (newElement instanceof SOAPElement)) { - // newElement = new ElementWrapper((ElementImpl) newElement); - // } - // return super.insertBefore(newElement, ref); - // } - // - // public Node replaceChild(Node newElement, Node ref) throws DOMException { - // if (!(newElement instanceof SOAPBodyElement) && (newElement instanceof SOAPElement)) { - // newElement = new ElementWrapper((ElementImpl) newElement); - // } - // return super.replaceChild(newElement, ref); - // } - - public SOAPBodyElement addDocument(Document document) - throws SOAPException { - /* - - Element rootNode = - document.getDocumentElement(); - // Causes all deferred nodes to be inflated - rootNode.normalize(); - adoptElement(rootNode); - SOAPBodyElement bodyElement = (SOAPBodyElement) convertToSoapElement(rootNode); - addNode(bodyElement); - return bodyElement; - */ - ///* - SOAPBodyElement newBodyElement = null; - DocumentFragment docFrag = document.createDocumentFragment(); - Element rootElement = document.getDocumentElement(); - if(rootElement != null) { - docFrag.appendChild(rootElement); - - Document ownerDoc = getOwnerDocument(); - // This copies the whole tree which could be very big so it's slow. - // However, it does have the advantage of actually working. - org.w3c.dom.Node replacingNode = ownerDoc.importNode(docFrag, true); - // Adding replacingNode at the last of the children list of body - addNode(replacingNode); - Iterator i = - getChildElements(NameImpl.copyElementName(rootElement)); - // Return the child element with the required name which is at the - // end of the list - while(i.hasNext()) - newBodyElement = (SOAPBodyElement) i.next(); - } - return newBodyElement; - //*/ - } - - protected SOAPElement convertToSoapElement(Element element) { - if ((element instanceof SOAPBodyElement) && - //this check is required because ElementImpl currently - // implements SOAPBodyElement - !(element.getClass().equals(ElementImpl.class))) { - return (SOAPElement) element; - } else { - return replaceElementWithSOAPElement( - element, - (ElementImpl) createBodyElement(NameImpl - .copyElementName(element))); - } - } - - public SOAPElement setElementQName(QName newName) throws SOAPException { - log.log(Level.SEVERE, - "SAAJ0146.impl.invalid.name.change.requested", - new Object[] {elementQName.getLocalPart(), - newName.getLocalPart()}); - throw new SOAPException("Cannot change name for " - + elementQName.getLocalPart() + " to " - + newName.getLocalPart()); - } - - public Document extractContentAsDocument() throws SOAPException { - - Iterator eachChild = getChildElements(); - javax.xml.soap.Node firstBodyElement = null; - - while (eachChild.hasNext() && - !(firstBodyElement instanceof SOAPElement)) - firstBodyElement = (javax.xml.soap.Node) eachChild.next(); - - boolean exactlyOneChildElement = true; - if (firstBodyElement == null) - exactlyOneChildElement = false; - else { - for (org.w3c.dom.Node node = firstBodyElement.getNextSibling(); - node != null; - node = node.getNextSibling()) { - - if (node instanceof Element) { - exactlyOneChildElement = false; - break; - } - } - } - - if(!exactlyOneChildElement) { - log.log(Level.SEVERE, - "SAAJ0250.impl.body.should.have.exactly.one.child"); - throw new SOAPException("Cannot extract Document from body"); - } - - Document document = null; - try { - DocumentBuilderFactory factory = - new com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl(); - factory.setNamespaceAware(true); - DocumentBuilder builder = factory.newDocumentBuilder(); - document = builder.newDocument(); - - Element rootElement = (Element) document.importNode( - firstBodyElement, - true); - - document.appendChild(rootElement); - - } catch(Exception e) { - log.log(Level.SEVERE, - "SAAJ0251.impl.cannot.extract.document.from.body"); - throw new SOAPExceptionImpl( - "Unable to extract Document from body", e); - } - - firstBodyElement.detachNode(); - - return document; - } - - private void materializePayloadWrapException() { - try { - materializePayload(); - } catch (SOAPException e) { - throw new RuntimeException(e); - } - } - private void materializePayload() throws SOAPException { - if (staxBridge != null) { - if (payloadStreamRead) { - //the payload has already been read via stream reader and the - //stream has been exhausted already. Throw an - //exception since we are now trying to materialize as DOM and - //there is no stream left to read - throw new SOAPException("SOAPBody payload stream has been fully read - cannot materialize as DOM!"); - } - try { - staxBridge.bridgePayload(); - staxBridge = null; - payloadStreamRead = true; - } catch (XMLStreamException e) { - throw new SOAPException(e); - } - } - } - - @Override - public boolean hasChildNodes() { - boolean hasChildren = super.hasChildNodes(); - //to answer this question we need to know _whether_ we have at least one child - //So no need to materialize body if we already know we have a header child - if (!hasChildren) { - materializePayloadWrapException(); - } - return super.hasChildNodes(); - } - - @Override - public NodeList getChildNodes() { - materializePayloadWrapException(); - return super.getChildNodes(); - } - - @Override - public Node getFirstChild() { - Node child = super.getFirstChild(); - if (child == null) { - materializePayloadWrapException(); - } - return super.getFirstChild(); - } - - public Node getFirstChildNoMaterialize() { - return super.getFirstChild(); - } - - @Override - public Node getLastChild() { - materializePayloadWrapException(); - return super.getLastChild(); - } - - XMLStreamReader getPayloadReader() { - return staxBridge.getPayloadReader(); - } - - void setStaxBridge(StaxBridge bridge) { - this.staxBridge = bridge; - } - - StaxBridge getStaxBridge() { - return staxBridge; - } - - void setPayloadStreamRead() { - this.payloadStreamRead = true; - } - - QName getPayloadQName() { - if (staxBridge != null) { - return staxBridge.getPayloadQName(); - } else { - //not lazy - Just get first child element and return its name - Element elem = getFirstChildElement(); - if (elem != null) { - String ns = elem.getNamespaceURI(); - String pref = elem.getPrefix(); - String local = elem.getLocalName(); - if (pref != null) return new QName(ns, local, pref); - if (ns != null) return new QName(ns, local); - return new QName(local); - } - } - return null; - } - - String getPayloadAttributeValue(String attName) { - if (staxBridge != null) { - return staxBridge.getPayloadAttributeValue(attName); - } else { - //not lazy -Just get first child element and return its attribute - Element elem = getFirstChildElement(); - if (elem != null) { - return elem.getAttribute(localName); - } - } - return null; - } - - String getPayloadAttributeValue(QName attNAme) { - if (staxBridge != null) { - return staxBridge.getPayloadAttributeValue(attNAme); - } else { - //not lazy -Just get first child element and return its attribute - Element elem = getFirstChildElement(); - if (elem != null) { - return elem.getAttributeNS(attNAme.getNamespaceURI(), attNAme.getLocalPart()); - } - } - return null; - } - - public boolean isLazy() { - return (staxBridge != null && !payloadStreamRead); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/CDATAImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/CDATAImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.impl; - -import java.util.logging.Logger; - -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPException; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - -public class CDATAImpl - extends com.sun.org.apache.xerces.internal.dom.CDATASectionImpl - implements javax.xml.soap.Text { - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings"); - - static final String cdataUC = " 0) { - setAttributeNS(XMLNS_URI, "xmlns:" + prefix, uri); - } else { - setAttributeNS(XMLNS_URI, "xmlns", uri); - } - //Fix for CR:6474641 - //tryToFindEncodingStyleAttributeName(); - return this; - } - - public String getAttributeValue(Name name) { - return getAttributeValueFrom(this, name); - } - - public String getAttributeValue(QName qname) { - return getAttributeValueFrom( - this, - qname.getNamespaceURI(), - qname.getLocalPart(), - qname.getPrefix(), - getQualifiedName(qname)); - } - - public Iterator getAllAttributes() { - Iterator i = getAllAttributesFrom(this); - ArrayList list = new ArrayList(); - while (i.hasNext()) { - Name name = (Name) i.next(); - if (!"xmlns".equalsIgnoreCase(name.getPrefix())) - list.add(name); - } - return list.iterator(); - } - - public Iterator getAllAttributesAsQNames() { - Iterator i = getAllAttributesFrom(this); - ArrayList list = new ArrayList(); - while (i.hasNext()) { - Name name = (Name) i.next(); - if (!"xmlns".equalsIgnoreCase(name.getPrefix())) { - list.add(NameImpl.convertToQName(name)); - } - } - return list.iterator(); - } - - - public Iterator getNamespacePrefixes() { - return doGetNamespacePrefixes(false); - } - - public Iterator getVisibleNamespacePrefixes() { - return doGetNamespacePrefixes(true); - } - - protected Iterator doGetNamespacePrefixes(final boolean deep) { - return new Iterator() { - String next = null; - String last = null; - NamespaceContextIterator eachNamespace = - getNamespaceContextNodes(deep); - - void findNext() { - while (next == null && eachNamespace.hasNext()) { - String attributeKey = - eachNamespace.nextNamespaceAttr().getNodeName(); - if (attributeKey.startsWith("xmlns:")) { - next = attributeKey.substring("xmlns:".length()); - } - } - } - - public boolean hasNext() { - findNext(); - return next != null; - } - - public Object next() { - findNext(); - if (next == null) { - throw new NoSuchElementException(); - } - - last = next; - next = null; - return last; - } - - public void remove() { - if (last == null) { - throw new IllegalStateException(); - } - eachNamespace.remove(); - next = null; - last = null; - } - }; - } - - public Name getElementName() { - return NameImpl.convertToName(elementQName); - } - - public QName getElementQName() { - return elementQName; - } - - public boolean removeAttribute(Name name) { - return removeAttribute(name.getURI(), name.getLocalName()); - } - - public boolean removeAttribute(QName name) { - return removeAttribute(name.getNamespaceURI(), name.getLocalPart()); - } - - private boolean removeAttribute(String uri, String localName) { - String nonzeroLengthUri = - (uri == null || uri.length() == 0) ? null : uri; - org.w3c.dom.Attr attribute = - getAttributeNodeNS(nonzeroLengthUri, localName); - if (attribute == null) { - return false; - } - removeAttributeNode(attribute); - return true; - } - - public boolean removeNamespaceDeclaration(String prefix) { - org.w3c.dom.Attr declaration = getNamespaceAttr(prefix); - if (declaration == null) { - return false; - } - try { - removeAttributeNode(declaration); - } catch (DOMException de) { - // ignore - } - return true; - } - - public Iterator getChildElements() { - return getChildElementsFrom(this); - } - - protected SOAPElement convertToSoapElement(Element element) { - if (element instanceof SOAPElement) { - return (SOAPElement) element; - } else { - return replaceElementWithSOAPElement( - element, - (ElementImpl) createElement(NameImpl.copyElementName(element))); - } - } - - protected static SOAPElement replaceElementWithSOAPElement( - Element element, - ElementImpl copy) { - - Iterator eachAttribute = getAllAttributesFrom(element); - while (eachAttribute.hasNext()) { - Name name = (Name) eachAttribute.next(); - copy.addAttributeBare(name, getAttributeValueFrom(element, name)); - } - - Iterator eachChild = getChildElementsFrom(element); - while (eachChild.hasNext()) { - Node nextChild = (Node) eachChild.next(); - copy.insertBefore(nextChild, null); - } - - Node parent = element.getParentNode(); - if (parent != null) { - parent.replaceChild(copy, element); - } // XXX else throw an exception? - - return copy; - } - - protected Iterator getChildElementNodes() { - return new Iterator() { - Iterator eachNode = getChildElements(); - Node next = null; - Node last = null; - - public boolean hasNext() { - if (next == null) { - while (eachNode.hasNext()) { - Node node = (Node) eachNode.next(); - if (node instanceof SOAPElement) { - next = node; - break; - } - } - } - return next != null; - } - - public Object next() { - if (hasNext()) { - last = next; - next = null; - return last; - } - throw new NoSuchElementException(); - } - - public void remove() { - if (last == null) { - throw new IllegalStateException(); - } - Node target = last; - last = null; - removeChild(target); - } - }; - } - - public Iterator getChildElements(final Name name) { - return getChildElements(name.getURI(), name.getLocalName()); - } - - public Iterator getChildElements(final QName qname) { - return getChildElements(qname.getNamespaceURI(), qname.getLocalPart()); - } - - private Iterator getChildElements(final String nameUri, final String nameLocal) { - return new Iterator() { - Iterator eachElement = getChildElementNodes(); - Node next = null; - Node last = null; - - public boolean hasNext() { - if (next == null) { - while (eachElement.hasNext()) { - Node element = (Node) eachElement.next(); - String elementUri = element.getNamespaceURI(); - elementUri = elementUri == null ? "" : elementUri; - String elementName = element.getLocalName(); - if (elementUri.equals(nameUri) - && elementName.equals(nameLocal)) { - next = element; - break; - } - } - } - return next != null; - } - - public Object next() { - if (!hasNext()) { - throw new NoSuchElementException(); - } - last = next; - next = null; - return last; - } - - public void remove() { - if (last == null) { - throw new IllegalStateException(); - } - Node target = last; - last = null; - removeChild(target); - } - }; - } - - public void removeContents() { - Node currentChild = getFirstChild(); - - while (currentChild != null) { - Node temp = currentChild.getNextSibling(); - if (currentChild instanceof javax.xml.soap.Node) { - ((javax.xml.soap.Node) currentChild).detachNode(); - } else { - Node parent = currentChild.getParentNode(); - if (parent != null) { - parent.removeChild(currentChild); - } - - } - currentChild = temp; - } - } - - public void setEncodingStyle(String encodingStyle) throws SOAPException { - if (!"".equals(encodingStyle)) { - try { - new URI(encodingStyle); - } catch (URISyntaxException m) { - log.log( - Level.SEVERE, - "SAAJ0105.impl.encoding.style.mustbe.valid.URI", - new String[] { encodingStyle }); - throw new IllegalArgumentException( - "Encoding style (" + encodingStyle + ") should be a valid URI"); - } - } - encodingStyleAttribute.setValue(encodingStyle); - tryToFindEncodingStyleAttributeName(); - } - - public String getEncodingStyle() { - String encodingStyle = encodingStyleAttribute.getValue(); - if (encodingStyle != null) - return encodingStyle; - String soapNamespace = getSOAPNamespace(); - if (soapNamespace != null) { - Attr attr = getAttributeNodeNS(soapNamespace, "encodingStyle"); - if (attr != null) { - encodingStyle = attr.getValue(); - try { - setEncodingStyle(encodingStyle); - } catch (SOAPException se) { - // has to be ignored - } - return encodingStyle; - } - } - return null; - } - - // Node methods - public String getValue() { - javax.xml.soap.Node valueNode = getValueNode(); - return valueNode == null ? null : valueNode.getValue(); - } - - public void setValue(String value) { - Node valueNode = getValueNodeStrict(); - if (valueNode != null) { - valueNode.setNodeValue(value); - } else { - try { - addTextNode(value); - } catch (SOAPException e) { - throw new RuntimeException(e.getMessage()); - } - } - } - - protected Node getValueNodeStrict() { - Node node = getFirstChild(); - if (node != null) { - if (node.getNextSibling() == null - && node.getNodeType() == org.w3c.dom.Node.TEXT_NODE) { - return node; - } else { - log.severe("SAAJ0107.impl.elem.child.not.single.text"); - throw new IllegalStateException(); - } - } - - return null; - } - - protected javax.xml.soap.Node getValueNode() { - Iterator i = getChildElements(); - while (i.hasNext()) { - javax.xml.soap.Node n = (javax.xml.soap.Node) i.next(); - if (n.getNodeType() == org.w3c.dom.Node.TEXT_NODE || - n.getNodeType() == org.w3c.dom.Node.CDATA_SECTION_NODE) { - // TODO: Hack to fix text node split into multiple lines. - normalize(); - // Should remove the normalization step when this gets fixed in - // DOM/Xerces. - return (javax.xml.soap.Node) n; - } - } - return null; - } - - public void setParentElement(SOAPElement element) throws SOAPException { - if (element == null) { - log.severe("SAAJ0106.impl.no.null.to.parent.elem"); - throw new SOAPException("Cannot pass NULL to setParentElement"); - } - element.addChildElement(this); - findEncodingStyleAttributeName(); - } - - protected void findEncodingStyleAttributeName() throws SOAPException { - String soapNamespace = getSOAPNamespace(); - if (soapNamespace != null) { - String soapNamespacePrefix = getNamespacePrefix(soapNamespace); - if (soapNamespacePrefix != null) { - setEncodingStyleNamespace(soapNamespace, soapNamespacePrefix); - } - } - } - - protected void setEncodingStyleNamespace( - String soapNamespace, - String soapNamespacePrefix) - throws SOAPException { - Name encodingStyleAttributeName = - NameImpl.create( - "encodingStyle", - soapNamespacePrefix, - soapNamespace); - encodingStyleAttribute.setName(encodingStyleAttributeName); - } - - public SOAPElement getParentElement() { - Node parentNode = getParentNode(); - if (parentNode instanceof SOAPDocument) { - return null; - } - return (SOAPElement) parentNode; - } - - protected String getSOAPNamespace() { - String soapNamespace = null; - - SOAPElement antecedent = this; - while (antecedent != null) { - Name antecedentName = antecedent.getElementName(); - String antecedentNamespace = antecedentName.getURI(); - - if (NameImpl.SOAP11_NAMESPACE.equals(antecedentNamespace) - || NameImpl.SOAP12_NAMESPACE.equals(antecedentNamespace)) { - - soapNamespace = antecedentNamespace; - break; - } - - antecedent = antecedent.getParentElement(); - } - - return soapNamespace; - } - - public void detachNode() { - Node parent = getParentNode(); - if (parent != null) { - parent.removeChild(this); - } - encodingStyleAttribute.clearNameAndValue(); - // Fix for CR: 6474641 - //tryToFindEncodingStyleAttributeName(); - } - - public void tryToFindEncodingStyleAttributeName() { - try { - findEncodingStyleAttributeName(); - } catch (SOAPException e) { /*okay to fail*/ - } - } - - public void recycleNode() { - detachNode(); - // TBD - // - add this to the factory so subsequent - // creations can reuse this object. - } - - class AttributeManager { - Name attributeName = null; - String attributeValue = null; - - public void setName(Name newName) throws SOAPException { - clearAttribute(); - attributeName = newName; - reconcileAttribute(); - } - public void clearName() { - clearAttribute(); - attributeName = null; - } - public void setValue(String value) throws SOAPException { - attributeValue = value; - reconcileAttribute(); - } - public Name getName() { - return attributeName; - } - public String getValue() { - return attributeValue; - } - - /** Note: to be used only in detachNode method */ - public void clearNameAndValue() { - attributeName = null; - attributeValue = null; - } - - private void reconcileAttribute() throws SOAPException { - if (attributeName != null) { - removeAttribute(attributeName); - if (attributeValue != null) { - addAttribute(attributeName, attributeValue); - } - } - } - private void clearAttribute() { - if (attributeName != null) { - removeAttribute(attributeName); - } - } - } - - protected static org.w3c.dom.Attr getNamespaceAttrFrom( - Element element, - String prefix) { - NamespaceContextIterator eachNamespace = - new NamespaceContextIterator(element); - while (eachNamespace.hasNext()) { - org.w3c.dom.Attr namespaceDecl = eachNamespace.nextNamespaceAttr(); - String declaredPrefix = - NameImpl.getLocalNameFromTagName(namespaceDecl.getNodeName()); - if (declaredPrefix.equals(prefix)) { - return namespaceDecl; - } - } - return null; - } - - protected static Iterator getAllAttributesFrom(final Element element) { - final NamedNodeMap attributes = element.getAttributes(); - - return new Iterator() { - int attributesLength = attributes.getLength(); - int attributeIndex = 0; - String currentName; - - public boolean hasNext() { - return attributeIndex < attributesLength; - } - - public Object next() { - if (!hasNext()) { - throw new NoSuchElementException(); - } - Node current = attributes.item(attributeIndex++); - currentName = current.getNodeName(); - - String prefix = NameImpl.getPrefixFromTagName(currentName); - if (prefix.length() == 0) { - return NameImpl.createFromUnqualifiedName(currentName); - } else { - Name attributeName = - NameImpl.createFromQualifiedName( - currentName, - current.getNamespaceURI()); - return attributeName; - } - } - - public void remove() { - if (currentName == null) { - throw new IllegalStateException(); - } - attributes.removeNamedItem(currentName); - } - }; - } - - protected static String getAttributeValueFrom(Element element, Name name) { - return getAttributeValueFrom( - element, - name.getURI(), - name.getLocalName(), - name.getPrefix(), - name.getQualifiedName()); - } - - private static String getAttributeValueFrom( - Element element, - String uri, - String localName, - String prefix, - String qualifiedName) { - - String nonzeroLengthUri = - (uri == null || uri.length() == 0) ? null : uri; - - boolean mustUseGetAttributeNodeNS = (nonzeroLengthUri != null); - - if (mustUseGetAttributeNodeNS) { - - if (!element.hasAttributeNS(uri, localName)) { - return null; - } - - String attrValue = - element.getAttributeNS(nonzeroLengthUri, localName); - - return attrValue; - } - - Attr attribute = null; - attribute = element.getAttributeNode(qualifiedName); - - return attribute == null ? null : attribute.getValue(); - } - - protected static Iterator getChildElementsFrom(final Element element) { - return new Iterator() { - Node next = element.getFirstChild(); - Node nextNext = null; - Node last = null; - - public boolean hasNext() { - if (next != null) { - return true; - } - if (next == null && nextNext != null) { - next = nextNext; - } - - return next != null; - } - - public Object next() { - if (hasNext()) { - last = next; - next = null; - - if ((element instanceof ElementImpl) - && (last instanceof Element)) { - last = - ((ElementImpl) element).convertToSoapElement( - (Element) last); - } - - nextNext = last.getNextSibling(); - return last; - } - throw new NoSuchElementException(); - } - - public void remove() { - if (last == null) { - throw new IllegalStateException(); - } - Node target = last; - last = null; - element.removeChild(target); - } - }; - } - - public static String getQualifiedName(QName name) { - String prefix = name.getPrefix(); - String localName = name.getLocalPart(); - String qualifiedName = null; - - if (prefix != null && prefix.length() > 0) { - qualifiedName = prefix + ":" + localName; - } else { - qualifiedName = localName; - } - return qualifiedName; - } - - public static String getLocalPart(String qualifiedName) { - if (qualifiedName == null) { - // Log - throw new IllegalArgumentException("Cannot get local name for a \"null\" qualified name"); - } - - int index = qualifiedName.indexOf(':'); - if (index < 0) - return qualifiedName; - else - return qualifiedName.substring(index + 1); - } - - public static String getPrefix(String qualifiedName) { - if (qualifiedName == null) { - // Log - throw new IllegalArgumentException("Cannot get prefix for a \"null\" qualified name"); - } - - int index = qualifiedName.indexOf(':'); - if (index < 0) - return ""; - else - return qualifiedName.substring(0, index); - } - - protected boolean isNamespaceQualified(Name name) { - return !"".equals(name.getURI()); - } - - protected boolean isNamespaceQualified(QName name) { - return !"".equals(name.getNamespaceURI()); - } - - protected SOAPElement circumventBug5034339(SOAPElement element) { - - Name elementName = element.getElementName(); - if (!isNamespaceQualified(elementName)) { - String prefix = elementName.getPrefix(); - String defaultNamespace = getNamespaceURI(prefix); - if (defaultNamespace != null) { - Name newElementName = - NameImpl.create( - elementName.getLocalName(), - elementName.getPrefix(), - defaultNamespace); - SOAPElement newElement = createElement(newElementName); - replaceChild(newElement, element); - return newElement; - } - } - return element; - } - - //TODO: This is a temporary SAAJ workaround for optimizing XWS - // should be removed once the corresponding JAXP bug is fixed - // It appears the bug will be fixed in JAXP 1.4 (not by Appserver 9 timeframe) - public void setAttributeNS( - String namespaceURI,String qualifiedName, String value) { - int index = qualifiedName.indexOf(':'); - String localName; - if (index < 0) - localName = qualifiedName; - else - localName = qualifiedName.substring(index + 1); - - // Workaround for bug 6467808 - This needs to be fixed in JAXP - - // Rolling back this fix, this is a wrong fix, infact its causing other regressions in JAXWS tck and - // other tests, because of this change the namespace declarations on soapenv:Fault element are never - // picked up. The fix for bug 6467808 should be in JAXP. -// if(elementQName.getLocalPart().equals("Fault") && -// (SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE.equals(value) || -// SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE.equals(value))) -// return; - - super.setAttributeNS(namespaceURI,qualifiedName,value); - //String tmpLocalName = this.getLocalName(); - String tmpURI = this.getNamespaceURI(); - boolean isIDNS = false; - if( tmpURI != null && (tmpURI.equals(DSIG_NS) || tmpURI.equals(XENC_NS))){ - isIDNS = true; - } - //No need to check for Signature/encryption element - //just check for namespace. - if(localName.equals("Id")){ - if(namespaceURI == null || namespaceURI.equals("")){ - setIdAttribute(localName,true); - }else if(isIDNS || WSU_NS.equals(namespaceURI)){ - setIdAttributeNS(namespaceURI,localName,true); - } - } - - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/EnvelopeImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/EnvelopeImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,438 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.impl; - -import java.io.IOException; -import java.io.OutputStream; -import java.io.OutputStreamWriter; - -import java.util.logging.Level; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; -import javax.xml.stream.XMLStreamWriter; -import javax.xml.transform.*; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.LazyEnvelope; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.StaxBridge; -import com.sun.xml.internal.messaging.saaj.soap.StaxLazySourceBridge; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; -import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection; -import com.sun.xml.internal.messaging.saaj.util.stax.LazyEnvelopeStaxReader; -import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer; - -import com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader; -import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter; - -/** - * Our implementation of the SOAP envelope. - * - * @author Anil Vijendran (anil@sun.com) - */ -public abstract class EnvelopeImpl extends ElementImpl implements LazyEnvelope { - protected HeaderImpl header; - protected BodyImpl body; - String omitXmlDecl = "yes"; - String charset = "utf-8"; - String xmlDecl = null; - - protected EnvelopeImpl(SOAPDocumentImpl ownerDoc, Name name) { - super(ownerDoc, name); - } - - protected EnvelopeImpl(SOAPDocumentImpl ownerDoc, QName name) { - super(ownerDoc, name); - } - - protected EnvelopeImpl( - SOAPDocumentImpl ownerDoc, - NameImpl name, - boolean createHeader, - boolean createBody) - throws SOAPException { - this(ownerDoc, name); - - ensureNamespaceIsDeclared( - getElementQName().getPrefix(), getElementQName().getNamespaceURI()); - - // XXX - if (createHeader) - addHeader(); - - if (createBody) - addBody(); - } - - protected abstract NameImpl getHeaderName(String prefix); - protected abstract NameImpl getBodyName(String prefix); - - public SOAPHeader addHeader() throws SOAPException { - return addHeader(null); - } - - public SOAPHeader addHeader(String prefix) throws SOAPException { - - if (prefix == null || prefix.equals("")) { - prefix = getPrefix(); - } - - NameImpl headerName = getHeaderName(prefix); - NameImpl bodyName = getBodyName(prefix); - - HeaderImpl header = null; - SOAPElement firstChild = (SOAPElement) getFirstChildElement(); - - if (firstChild != null) { - if (firstChild.getElementName().equals(headerName)) { - log.severe("SAAJ0120.impl.header.already.exists"); - throw new SOAPExceptionImpl("Can't add a header when one is already present."); - } else if (!firstChild.getElementName().equals(bodyName)) { - log.severe("SAAJ0121.impl.invalid.first.child.of.envelope"); - throw new SOAPExceptionImpl("First child of Envelope must be either a Header or Body"); - } - } - - header = (HeaderImpl) createElement(headerName); - insertBefore(header, firstChild); - header.ensureNamespaceIsDeclared(headerName.getPrefix(), headerName.getURI()); - - return header; - } - - protected void lookForHeader() throws SOAPException { - NameImpl headerName = getHeaderName(null); - - HeaderImpl hdr = (HeaderImpl) findChild(headerName); - header = hdr; - } - - public SOAPHeader getHeader() throws SOAPException { - lookForHeader(); - return header; - } - - protected void lookForBody() throws SOAPException { - NameImpl bodyName = getBodyName(null); - - BodyImpl bodyChildElement = (BodyImpl) findChild(bodyName); - body = bodyChildElement; - } - - public SOAPBody addBody() throws SOAPException { - return addBody(null); - } - - public SOAPBody addBody(String prefix) throws SOAPException { - lookForBody(); - - if (prefix == null || prefix.equals("")) { - prefix = getPrefix(); - } - - if (body == null) { - NameImpl bodyName = getBodyName(prefix); - body = (BodyImpl) createElement(bodyName); - insertBefore(body, null); - body.ensureNamespaceIsDeclared(bodyName.getPrefix(), bodyName.getURI()); - } else { - log.severe("SAAJ0122.impl.body.already.exists"); - throw new SOAPExceptionImpl("Can't add a body when one is already present."); - } - - return body; - } - - protected SOAPElement addElement(Name name) throws SOAPException { - if (getBodyName(null).equals(name)) { - return addBody(name.getPrefix()); - } - if (getHeaderName(null).equals(name)) { - return addHeader(name.getPrefix()); - } - - return super.addElement(name); - } - - protected SOAPElement addElement(QName name) throws SOAPException { - if (getBodyName(null).equals(NameImpl.convertToName(name))) { - return addBody(name.getPrefix()); - } - if (getHeaderName(null).equals(NameImpl.convertToName(name))) { - return addHeader(name.getPrefix()); - } - - return super.addElement(name); - } - - public SOAPBody getBody() throws SOAPException { - lookForBody(); - return body; - } - - public Source getContent() { - return new DOMSource(getOwnerDocument()); - } - - public Name createName(String localName, String prefix, String uri) - throws SOAPException { - - // validating parameters before passing them on - // to make sure that the namespace specification rules are followed - - // reserved xmlns prefix cannot be used. - if ("xmlns".equals(prefix)) { - log.severe("SAAJ0123.impl.no.reserved.xmlns"); - throw new SOAPExceptionImpl("Cannot declare reserved xmlns prefix"); - } - // Qualified name cannot be xmlns. - if ((prefix == null) && ("xmlns".equals(localName))) { - log.severe("SAAJ0124.impl.qualified.name.cannot.be.xmlns"); - throw new SOAPExceptionImpl("Qualified name cannot be xmlns"); - } - - return NameImpl.create(localName, prefix, uri); - } - - public Name createName(String localName, String prefix) - throws SOAPException { - String namespace = getNamespaceURI(prefix); - if (namespace == null) { - log.log( - Level.SEVERE, - "SAAJ0126.impl.cannot.locate.ns", - new String[] { prefix }); - throw new SOAPExceptionImpl( - "Unable to locate namespace for prefix " + prefix); - } - return NameImpl.create(localName, prefix, namespace); - } - - public Name createName(String localName) throws SOAPException { - return NameImpl.createFromUnqualifiedName(localName); - } - - public void setOmitXmlDecl(String value) { - this.omitXmlDecl = value; - } - - public void setXmlDecl(String value) { - this.xmlDecl = value; - } - - private String getOmitXmlDecl() { - return this.omitXmlDecl; - } - - public void setCharsetEncoding(String value) { - charset = value; - } - - public void output(OutputStream out) throws IOException { - try { -// materializeBody(); - Transformer transformer = - EfficientStreamingTransformer.newTransformer(); - - transformer.setOutputProperty( - OutputKeys.OMIT_XML_DECLARATION, "yes"); - /*omitXmlDecl);*/ - // no equivalent for "setExpandEmptyElements" - transformer.setOutputProperty( - OutputKeys.ENCODING, - charset); - - if (omitXmlDecl.equals("no") && xmlDecl == null) { - xmlDecl = ""; - } - - StreamResult result = new StreamResult(out); - if (xmlDecl != null) { - OutputStreamWriter writer = new OutputStreamWriter(out, charset); - writer.write(xmlDecl); - writer.flush(); - result = new StreamResult(writer); - } - - if (log.isLoggable(Level.FINE)) { - log.log(Level.FINE, "SAAJ0190.impl.set.xml.declaration", - new String[] { omitXmlDecl }); - log.log(Level.FINE, "SAAJ0191.impl.set.encoding", - new String[] { charset }); - } - - //StreamResult result = new StreamResult(out); - transformer.transform(getContent(), result); - } catch (Exception ex) { - throw new IOException(ex.getMessage()); - } - } - - /** - * Serialize to FI if boolean parameter set. - */ - public void output(OutputStream out, boolean isFastInfoset) - throws IOException - { - if (!isFastInfoset) { - output(out); - } - else { - try { - // Run transform and generate FI output from content - Source source = getContent(); - Transformer transformer = EfficientStreamingTransformer.newTransformer(); - transformer.transform(getContent(), - FastInfosetReflection.FastInfosetResult_new(out)); - } - catch (Exception ex) { - throw new IOException(ex.getMessage()); - } - } - } - - // public void prettyPrint(OutputStream out) throws IOException { - // if (getDocument() == null) - // initDocument(); - // - // OutputFormat format = OutputFormat.createPrettyPrint(); - // - // format.setIndentSize(2); - // format.setNewlines(true); - // format.setTrimText(true); - // format.setPadText(true); - // format.setExpandEmptyElements(false); - // - // XMLWriter writer = new XMLWriter(out, format); - // writer.write(getDocument()); - // } - // - // public void prettyPrint(Writer out) throws IOException { - // if (getDocument() == null) - // initDocument(); - // - // OutputFormat format = OutputFormat.createPrettyPrint(); - // - // format.setIndentSize(2); - // format.setNewlines(true); - // format.setTrimText(true); - // format.setPadText(true); - // format.setExpandEmptyElements(false); - // - // XMLWriter writer = new XMLWriter(out, format); - // writer.write(getDocument()); - // } - - - public SOAPElement setElementQName(QName newName) throws SOAPException { - log.log(Level.SEVERE, - "SAAJ0146.impl.invalid.name.change.requested", - new Object[] {elementQName.getLocalPart(), - newName.getLocalPart()}); - throw new SOAPException("Cannot change name for " - + elementQName.getLocalPart() + " to " - + newName.getLocalPart()); - } - - @Override - public void setStaxBridge(StaxBridge bridge) throws SOAPException { - //set it on the body - ((BodyImpl) getBody()).setStaxBridge(bridge); - } - - @Override - public StaxBridge getStaxBridge() throws SOAPException { - return ((BodyImpl) getBody()).getStaxBridge(); - } - - @Override - public XMLStreamReader getPayloadReader() throws SOAPException { - return ((BodyImpl) getBody()).getPayloadReader(); - } - - @Override - public void writeTo(final XMLStreamWriter writer) throws XMLStreamException, SOAPException { - StaxBridge readBridge = this.getStaxBridge(); - if (readBridge != null && readBridge instanceof StaxLazySourceBridge) { -// StaxSoapWriteBridge writingBridge = new StaxSoapWriteBridge(this); -// writingBridge.write(writer); - final String soapEnvNS = this.getNamespaceURI(); - final DOMStreamReader reader = new DOMStreamReader(this); - XMLStreamReaderToXMLStreamWriter writingBridge = new XMLStreamReaderToXMLStreamWriter(); - writingBridge.bridge( new XMLStreamReaderToXMLStreamWriter.Breakpoint(reader, writer) { - public boolean proceedAfterStartElement() { - if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){ - return false; - } else - return true; - } - });//bridgeToBodyStartTag - ((StaxLazySourceBridge)readBridge).writePayloadTo(writer); - writer.writeEndElement();//body - writer.writeEndElement();//env - writer.writeEndDocument(); - writer.flush(); - } else { - LazyEnvelopeStaxReader lazyEnvReader = new LazyEnvelopeStaxReader(this); - XMLStreamReaderToXMLStreamWriter writingBridge = new XMLStreamReaderToXMLStreamWriter(); - writingBridge.bridge(lazyEnvReader, writer); -// writingBridge.bridge(new XMLStreamReaderToXMLStreamWriter.Breakpoint(lazyEnvReader, writer)); - } - //Assume the staxBridge is exhausted now since we would have read the body reader - ((BodyImpl) getBody()).setPayloadStreamRead(); - } - - @Override - public QName getPayloadQName() throws SOAPException { - return ((BodyImpl) getBody()).getPayloadQName(); - } - - @Override - public String getPayloadAttributeValue(String localName) throws SOAPException { - return ((BodyImpl) getBody()).getPayloadAttributeValue(localName); - } - - @Override - public String getPayloadAttributeValue(QName qName) throws SOAPException { - return ((BodyImpl) getBody()).getPayloadAttributeValue(qName); - } - - @Override - public boolean isLazy() { - try { - return ((BodyImpl) getBody()).isLazy(); - } catch (SOAPException e) { - return false; - } - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultElementImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultElementImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.impl; - -import java.util.logging.Level; - -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPFaultElement; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public abstract class FaultElementImpl - extends ElementImpl - implements SOAPFaultElement { - - protected FaultElementImpl(SOAPDocumentImpl ownerDoc, NameImpl qname) { - super(ownerDoc, qname); - } - - protected FaultElementImpl(SOAPDocumentImpl ownerDoc, QName qname) { - super(ownerDoc, qname); - } - - protected abstract boolean isStandardFaultElement(); - - public SOAPElement setElementQName(QName newName) throws SOAPException { - log.log(Level.SEVERE, - "SAAJ0146.impl.invalid.name.change.requested", - new Object[] {elementQName.getLocalPart(), - newName.getLocalPart()}); - throw new SOAPException("Cannot change name for " - + elementQName.getLocalPart() + " to " - + newName.getLocalPart()); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,346 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.impl; - -import java.util.Locale; -import java.util.logging.Level; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import org.w3c.dom.Element; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public abstract class FaultImpl extends ElementImpl implements SOAPFault { - - /* This can also represent a fault reason element */ - protected SOAPFaultElement faultStringElement; - - /* This can also represent a fault role element */ - protected SOAPFaultElement faultActorElement; - - protected SOAPFaultElement faultCodeElement; - - protected Detail detail; - - protected FaultImpl(SOAPDocumentImpl ownerDoc, NameImpl name) { - super(ownerDoc, name); - } - - - protected abstract NameImpl getDetailName(); - protected abstract NameImpl getFaultCodeName(); - protected abstract NameImpl getFaultStringName(); - protected abstract NameImpl getFaultActorName(); - protected abstract DetailImpl createDetail(); - protected abstract FaultElementImpl createSOAPFaultElement(String localName); - protected abstract FaultElementImpl createSOAPFaultElement(QName qname); - protected abstract FaultElementImpl createSOAPFaultElement(Name qname); - protected abstract void checkIfStandardFaultCode(String faultCode, String uri) throws SOAPException; - protected abstract void finallySetFaultCode(String faultcode) throws SOAPException; - protected abstract boolean isStandardFaultElement(String localName); - protected abstract QName getDefaultFaultCode(); - - - protected void findFaultCodeElement() { - this.faultCodeElement = - (SOAPFaultElement) findAndConvertChildElement(getFaultCodeName()); - } - - protected void findFaultActorElement() { - this.faultActorElement = - (SOAPFaultElement) findAndConvertChildElement(getFaultActorName()); - } - - protected void findFaultStringElement() { - this.faultStringElement = - (SOAPFaultElement) findAndConvertChildElement(getFaultStringName()); - } - - public void setFaultCode(String faultCode) throws SOAPException { - setFaultCode( - NameImpl.getLocalNameFromTagName(faultCode), - NameImpl.getPrefixFromTagName(faultCode), - null); - } - - public void setFaultCode(String faultCode, String prefix, String uri) - throws SOAPException { - - if (prefix == null || "".equals(prefix)) { - if (uri != null && !"".equals(uri)) { - prefix = getNamespacePrefix(uri); - if (prefix == null || "".equals(prefix)) { - prefix = "ns0"; - } - } - } - if (this.faultCodeElement == null) - findFaultCodeElement(); - - if (this.faultCodeElement == null) - this.faultCodeElement = addFaultCodeElement(); - else - this.faultCodeElement.removeContents(); - - if (uri == null || "".equals(uri)) { - uri = this.faultCodeElement.getNamespaceURI(prefix); - } - if (uri == null || "".equals(uri)) { - if (prefix != null && !"".equals(prefix)) { - //cannot allow an empty URI for a non-Empty prefix - log.log(Level.SEVERE, "SAAJ0140.impl.no.ns.URI", new Object[]{prefix + ":" + faultCode}); - throw new SOAPExceptionImpl("Empty/Null NamespaceURI specified for faultCode \"" + prefix + ":" + faultCode + "\""); - } else { - uri = ""; - } - } - checkIfStandardFaultCode(faultCode, uri); - ((FaultElementImpl) this.faultCodeElement).ensureNamespaceIsDeclared(prefix, uri); - - if (prefix == null || "".equals(prefix)) { - finallySetFaultCode(faultCode); - } else { - finallySetFaultCode(prefix + ":" + faultCode); - } - } - - public void setFaultCode(Name faultCodeQName) throws SOAPException { - setFaultCode( - faultCodeQName.getLocalName(), - faultCodeQName.getPrefix(), - faultCodeQName.getURI()); - } - - public void setFaultCode(QName faultCodeQName) throws SOAPException { - setFaultCode( - faultCodeQName.getLocalPart(), - faultCodeQName.getPrefix(), - faultCodeQName.getNamespaceURI()); - } - - protected static QName convertCodeToQName( - String code, - SOAPElement codeContainingElement) { - - int prefixIndex = code.indexOf(':'); - if (prefixIndex == -1) { - return new QName(code); - } - - String prefix = code.substring(0, prefixIndex); - String nsName =((ElementImpl) codeContainingElement).lookupNamespaceURI(prefix); - //((ElementImpl) codeContainingElement).getNamespaceURI(prefix); - return new QName(nsName, getLocalPart(code), prefix); - } - - protected void initializeDetail() { - NameImpl detailName = getDetailName(); - detail = (Detail) findAndConvertChildElement(detailName); - } - - public Detail getDetail() { - if (detail == null) - initializeDetail(); - if ((detail != null) && (detail.getParentNode() == null)) { - // a detach node was called on it - detail = null; - } - return detail; - } - - public Detail addDetail() throws SOAPException { - if (detail == null) - initializeDetail(); - if (detail == null) { - detail = createDetail(); - addNode(detail); - return detail; - } else { - // Log - throw new SOAPExceptionImpl("Error: Detail already exists"); - } - } - - public boolean hasDetail() { - return (getDetail() != null); - } - - public abstract void setFaultActor(String faultActor) throws SOAPException; - - public String getFaultActor() { - if (this.faultActorElement == null) - findFaultActorElement(); - if (this.faultActorElement != null) { - return this.faultActorElement.getValue(); - } - return null; - } - - public SOAPElement setElementQName(QName newName) throws SOAPException { - - log.log( - Level.SEVERE, - "SAAJ0146.impl.invalid.name.change.requested", - new Object[] {elementQName.getLocalPart(), newName.getLocalPart()}); - throw new SOAPException( - "Cannot change name for " + elementQName.getLocalPart() + " to " + newName.getLocalPart()); - } - - protected SOAPElement convertToSoapElement(Element element) { - if (element instanceof SOAPFaultElement) { - return (SOAPElement) element; - } else if (element instanceof SOAPElement) { - SOAPElement soapElement = (SOAPElement) element; - if (getDetailName().equals(soapElement.getElementName())) { - return replaceElementWithSOAPElement(element, createDetail()); - } else { - String localName = - soapElement.getElementName().getLocalName(); - if (isStandardFaultElement(localName)) - return replaceElementWithSOAPElement( - element, - createSOAPFaultElement(soapElement.getElementQName())); - return soapElement; - } - } else { - Name elementName = NameImpl.copyElementName(element); - ElementImpl newElement; - if (getDetailName().equals(elementName)) { - newElement = (ElementImpl) createDetail(); - } else { - String localName = elementName.getLocalName(); - if (isStandardFaultElement(localName)) - newElement = - (ElementImpl) createSOAPFaultElement(elementName); - else - newElement = (ElementImpl) createElement(elementName); - } - return replaceElementWithSOAPElement(element, newElement); - } - } - - protected SOAPFaultElement addFaultCodeElement() throws SOAPException { - if (this.faultCodeElement == null) - findFaultCodeElement(); - if (this.faultCodeElement == null) { - this.faultCodeElement = - addSOAPFaultElement(getFaultCodeName().getLocalName()); - return this.faultCodeElement; - } else { - throw new SOAPExceptionImpl("Error: Faultcode already exists"); - } - } - - private SOAPFaultElement addFaultStringElement() throws SOAPException { - if (this.faultStringElement == null) - findFaultStringElement(); - if (this.faultStringElement == null) { - this.faultStringElement = - addSOAPFaultElement(getFaultStringName().getLocalName()); - return this.faultStringElement; - } else { - // Log - throw new SOAPExceptionImpl("Error: Faultstring already exists"); - } - } - - private SOAPFaultElement addFaultActorElement() throws SOAPException { - if (this.faultActorElement == null) - findFaultActorElement(); - if (this.faultActorElement == null) { - this.faultActorElement = - addSOAPFaultElement(getFaultActorName().getLocalName()); - return this.faultActorElement; - } else { - // Log - throw new SOAPExceptionImpl("Error: Faultactor already exists"); - } - } - - protected SOAPElement addElement(Name name) throws SOAPException { - if (getDetailName().equals(name)) { - return addDetail(); - } else if(getFaultCodeName().equals(name)) { - return addFaultCodeElement(); - } else if(getFaultStringName().equals(name)) { - return addFaultStringElement(); - } else if(getFaultActorName().equals(name)) { - return addFaultActorElement(); - } - return super.addElement(name); - } - - protected SOAPElement addElement(QName name) throws SOAPException { - return addElement(NameImpl.convertToName(name)); - } - - protected FaultElementImpl addSOAPFaultElement(String localName) - throws SOAPException { - - FaultElementImpl faultElem = createSOAPFaultElement(localName); - addNode(faultElem); - return faultElem; - } - - /** - * Convert an xml:lang attribute value into a Locale object - */ - protected static Locale xmlLangToLocale(String xmlLang) { - if (xmlLang == null) { - return null; - } - - // Spec uses hyphen as separator - int index = xmlLang.indexOf("-"); - - // Accept underscore as separator as well - if (index == -1) { - index = xmlLang.indexOf("_"); - } - - if (index == -1) { - // No separator so assume only a language component - return new Locale(xmlLang, ""); - } - - String language = xmlLang.substring(0, index); - String country = xmlLang.substring(index + 1); - return new Locale(language, country); - } - - protected static String localeToXmlLang(Locale locale) { - String xmlLang = locale.getLanguage(); - String country = locale.getCountry(); - if (!"".equals(country)) { - xmlLang += "-" + country; - } - return xmlLang; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderElementImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderElementImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,135 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.impl; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public abstract class HeaderElementImpl - extends ElementImpl - implements SOAPHeaderElement { - - protected static Name RELAY_ATTRIBUTE_LOCAL_NAME = - NameImpl.createFromTagName("relay"); - protected static Name MUST_UNDERSTAND_ATTRIBUTE_LOCAL_NAME = - NameImpl.createFromTagName("mustUnderstand"); - - public HeaderElementImpl(SOAPDocumentImpl ownerDoc, Name qname) { - super(ownerDoc, qname); - } - public HeaderElementImpl(SOAPDocumentImpl ownerDoc, QName qname) { - super(ownerDoc, qname); - } - - protected abstract NameImpl getActorAttributeName(); - protected abstract NameImpl getRoleAttributeName(); - protected abstract NameImpl getMustunderstandAttributeName(); - protected abstract boolean getMustunderstandAttributeValue(String str); - protected abstract String getMustunderstandLiteralValue(boolean mu); - protected abstract NameImpl getRelayAttributeName(); - protected abstract boolean getRelayAttributeValue(String str); - protected abstract String getRelayLiteralValue(boolean mu); - protected abstract String getActorOrRole(); - - - public void setParentElement(SOAPElement element) throws SOAPException { - if (!(element instanceof SOAPHeader)) { - log.severe("SAAJ0130.impl.header.elem.parent.mustbe.header"); - throw new SOAPException("Parent of a SOAPHeaderElement has to be a SOAPHeader"); - } - - super.setParentElement(element); - } - - public void setActor(String actorUri) { - try { - removeAttribute(getActorAttributeName()); - addAttribute((Name) getActorAttributeName(), actorUri); - } catch (SOAPException ex) { - } - } - - //SOAP 1.2 supports Role - public void setRole(String roleUri) throws SOAPException { - // runtime exception thrown if called for SOAP 1.1 - removeAttribute(getRoleAttributeName()); - addAttribute((Name) getRoleAttributeName(), roleUri); - } - - - Name actorAttNameWithoutNS = NameImpl.createFromTagName("actor"); - - public String getActor() { - String actor = getAttributeValue(getActorAttributeName()); - return actor; - } - - Name roleAttNameWithoutNS = NameImpl.createFromTagName("role"); - - public String getRole() { - // runtime exception thrown for 1.1 - String role = getAttributeValue(getRoleAttributeName()); - return role; - } - - public void setMustUnderstand(boolean mustUnderstand) { - try { - removeAttribute(getMustunderstandAttributeName()); - addAttribute( - (Name) getMustunderstandAttributeName(), - getMustunderstandLiteralValue(mustUnderstand)); - } catch (SOAPException ex) { - } - } - - public boolean getMustUnderstand() { - String mu = getAttributeValue(getMustunderstandAttributeName()); - - if (mu != null) - return getMustunderstandAttributeValue(mu); - - return false; - } - - public void setRelay(boolean relay) throws SOAPException { - // runtime exception thrown for 1.1 - removeAttribute(getRelayAttributeName()); - addAttribute( - (Name) getRelayAttributeName(), - getRelayLiteralValue(relay)); - } - - public boolean getRelay() { - String mu = getAttributeValue(getRelayAttributeName()); - if (mu != null) - return getRelayAttributeValue(mu); - - return false; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,306 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.impl; - -import java.util.*; -import java.util.logging.Level; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import org.w3c.dom.Element; -import org.w3c.dom.Node; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public abstract class HeaderImpl extends ElementImpl implements SOAPHeader { - protected static final boolean MUST_UNDERSTAND_ONLY = false; - - protected HeaderImpl(SOAPDocumentImpl ownerDoc, NameImpl name) { - super(ownerDoc, name); - } - - protected abstract SOAPHeaderElement createHeaderElement(Name name) - throws SOAPException; - protected abstract SOAPHeaderElement createHeaderElement(QName name) - throws SOAPException; - protected abstract NameImpl getNotUnderstoodName(); - protected abstract NameImpl getUpgradeName(); - protected abstract NameImpl getSupportedEnvelopeName(); - - public SOAPHeaderElement addHeaderElement(Name name) throws SOAPException { - SOAPElement newHeaderElement = - ElementFactory.createNamedElement( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name.getLocalName(), - name.getPrefix(), - name.getURI()); - if (newHeaderElement == null - || !(newHeaderElement instanceof SOAPHeaderElement)) { - newHeaderElement = createHeaderElement(name); - } - - // header elements must be namespace qualified - // check that URI is not empty, ensuring that the element is NS qualified. - String uri = newHeaderElement.getElementQName().getNamespaceURI(); - if ((uri == null) || ("").equals(uri)) { - log.severe("SAAJ0131.impl.header.elems.ns.qualified"); - throw new SOAPExceptionImpl("HeaderElements must be namespace qualified"); - } - addNode(newHeaderElement); - return (SOAPHeaderElement) newHeaderElement; - } - - public SOAPHeaderElement addHeaderElement(QName name) throws SOAPException { - SOAPElement newHeaderElement = - ElementFactory.createNamedElement( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name.getLocalPart(), - name.getPrefix(), - name.getNamespaceURI()); - if (newHeaderElement == null - || !(newHeaderElement instanceof SOAPHeaderElement)) { - newHeaderElement = createHeaderElement(name); - } - - // header elements must be namespace qualified - // check that URI is not empty, ensuring that the element is NS qualified. - String uri = newHeaderElement.getElementQName().getNamespaceURI(); - if ((uri == null) || ("").equals(uri)) { - log.severe("SAAJ0131.impl.header.elems.ns.qualified"); - throw new SOAPExceptionImpl("HeaderElements must be namespace qualified"); - } - addNode(newHeaderElement); - return (SOAPHeaderElement) newHeaderElement; - } - - protected SOAPElement addElement(Name name) throws SOAPException { - return addHeaderElement(name); - } - - protected SOAPElement addElement(QName name) throws SOAPException { - return addHeaderElement(name); - } - - public Iterator examineHeaderElements(String actor) { - return getHeaderElementsForActor(actor, false, false); - } - - public Iterator extractHeaderElements(String actor) { - return getHeaderElementsForActor(actor, true, false); - } - - protected Iterator getHeaderElementsForActor( - String actor, - boolean detach, - boolean mustUnderstand) { - if (actor == null || actor.equals("")) { - log.severe("SAAJ0132.impl.invalid.value.for.actor.or.role"); - throw new IllegalArgumentException("Invalid value for actor or role"); - } - return getHeaderElements(actor, detach, mustUnderstand); - } - - protected Iterator getHeaderElements( - String actor, - boolean detach, - boolean mustUnderstand) { - List elementList = new ArrayList(); - - Iterator eachChild = getChildElements(); - - Object currentChild = iterate(eachChild); - while (currentChild != null) { - if (!(currentChild instanceof SOAPHeaderElement)) { - currentChild = iterate(eachChild); - } else { - HeaderElementImpl currentElement = - (HeaderElementImpl) currentChild; - currentChild = iterate(eachChild); - - boolean isMustUnderstandMatching = - (!mustUnderstand || currentElement.getMustUnderstand()); - boolean doAdd = false; - if (actor == null && isMustUnderstandMatching) { - doAdd = true; - } else { - String currentActor = currentElement.getActorOrRole(); - if (currentActor == null) { - currentActor = ""; - } - - if (currentActor.equalsIgnoreCase(actor) - && isMustUnderstandMatching) { - doAdd = true; - } - } - - if (doAdd) { - elementList.add(currentElement); - if (detach) { - currentElement.detachNode(); - } - } - } - } - - return elementList.listIterator(); - } - - private Object iterate(Iterator each) { - return each.hasNext() ? each.next() : null; - } - - public void setParentElement(SOAPElement element) throws SOAPException { - if (!(element instanceof SOAPEnvelope)) { - log.severe("SAAJ0133.impl.header.parent.mustbe.envelope"); - throw new SOAPException("Parent of SOAPHeader has to be a SOAPEnvelope"); - } - super.setParentElement(element); - } - - // overriding ElementImpl's method to ensure that HeaderElements are - // namespace qualified. Holds for both SOAP versions. - // TODO - This check needs to be made for other addChildElement() methods - // as well. - public SOAPElement addChildElement(String localName) throws SOAPException { - - SOAPElement element = super.addChildElement(localName); - // check that URI is not empty, ensuring that the element is NS qualified. - String uri = element.getElementName().getURI(); - if ((uri == null) || ("").equals(uri)) { - log.severe("SAAJ0134.impl.header.elems.ns.qualified"); - throw new SOAPExceptionImpl("HeaderElements must be namespace qualified"); - } - return element; - } - - public Iterator examineAllHeaderElements() { - return getHeaderElements(null, false, MUST_UNDERSTAND_ONLY); - } - - public Iterator examineMustUnderstandHeaderElements(String actor) { - return getHeaderElements(actor, false, true); - - } - - public Iterator extractAllHeaderElements() { - return getHeaderElements(null, true, false); - } - - public SOAPHeaderElement addUpgradeHeaderElement(Iterator supportedSoapUris) - throws SOAPException { - if (supportedSoapUris == null) { - log.severe("SAAJ0411.ver1_2.no.null.supportedURIs"); - throw new SOAPException("Argument cannot be null; iterator of supportedURIs cannot be null"); - } - if (!supportedSoapUris.hasNext()) { - log.severe("SAAJ0412.ver1_2.no.empty.list.of.supportedURIs"); - throw new SOAPException("List of supported URIs cannot be empty"); - } - Name upgradeName = getUpgradeName(); - SOAPHeaderElement upgradeHeaderElement = - (SOAPHeaderElement) addChildElement(upgradeName); - Name supportedEnvelopeName = getSupportedEnvelopeName(); - int i = 0; - while (supportedSoapUris.hasNext()) { - SOAPElement subElement = - upgradeHeaderElement.addChildElement(supportedEnvelopeName); - String ns = "ns" + Integer.toString(i); - subElement.addAttribute( - NameImpl.createFromUnqualifiedName("qname"), - ns + ":Envelope"); - subElement.addNamespaceDeclaration( - ns, - (String) supportedSoapUris.next()); - i ++; - } - return upgradeHeaderElement; - } - - public SOAPHeaderElement addUpgradeHeaderElement(String supportedSoapUri) - throws SOAPException { - return addUpgradeHeaderElement(new String[] {supportedSoapUri}); - } - - public SOAPHeaderElement addUpgradeHeaderElement(String[] supportedSoapUris) - throws SOAPException { - - if (supportedSoapUris == null) { - log.severe("SAAJ0411.ver1_2.no.null.supportedURIs"); - throw new SOAPException("Argument cannot be null; array of supportedURIs cannot be null"); - } - if (supportedSoapUris.length == 0) { - log.severe("SAAJ0412.ver1_2.no.empty.list.of.supportedURIs"); - throw new SOAPException("List of supported URIs cannot be empty"); - } - Name upgradeName = getUpgradeName(); - SOAPHeaderElement upgradeHeaderElement = - (SOAPHeaderElement) addChildElement(upgradeName); - Name supportedEnvelopeName = getSupportedEnvelopeName(); - for (int i = 0; i < supportedSoapUris.length; i ++) { - SOAPElement subElement = - upgradeHeaderElement.addChildElement(supportedEnvelopeName); - String ns = "ns" + Integer.toString(i); - subElement.addAttribute( - NameImpl.createFromUnqualifiedName("qname"), - ns + ":Envelope"); - subElement.addNamespaceDeclaration(ns, supportedSoapUris[i]); - } - return upgradeHeaderElement; - } - - protected SOAPElement convertToSoapElement(Element element) { - if (element instanceof SOAPHeaderElement) { - return (SOAPElement) element; - } else { - SOAPHeaderElement headerElement; - try { - headerElement = - createHeaderElement(NameImpl.copyElementName(element)); - } catch (SOAPException e) { - throw new ClassCastException("Could not convert Element to SOAPHeaderElement: " + e.getMessage()); - } - return replaceElementWithSOAPElement( - element, - (ElementImpl) headerElement); - } - } - - public SOAPElement setElementQName(QName newName) throws SOAPException { - log.log(Level.SEVERE, - "SAAJ0146.impl.invalid.name.change.requested", - new Object[] {elementQName.getLocalPart(), - newName.getLocalPart()}); - throw new SOAPException("Cannot change name for " - + elementQName.getLocalPart() + " to " - + newName.getLocalPart()); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for impl -# Error messages -SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: Parent of a SOAPBodyElement has to be a SOAPBody -SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Unable to locate namespace for prefix {0} -SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Cannot add fragments which contain elements which are in the SOAP namespace -SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Encoding style {0} should be a valid URI -SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: Cannot pass NULL to setParentElement -SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Cannot setValue on an Element that does not have an only child of type Text - -SAAJ0110.impl.fault.already.exists=SAAJ0110: Error: Fault already exists -SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: Parent of SOAPBody has to be a SOAPEnvelope - -SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: Cannot pass NULL to setParentElement -SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Cannot split text from a Comment Node -SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Cannot replace whole text from a Comment Node - -SAAJ0120.impl.header.already.exists=SAAJ0120: Can't add a header when one is already present -SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: First child of Envelope must be either a Header or Body -SAAJ0122.impl.body.already.exists=SAAJ0122: Can't add a body when one is already present -SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Cannot declare reserved xmlns prefix -SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Qualified name cannot be xmlns -#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null -SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Unable to locate namespace for prefix {0} -SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: Cannot pass NULL to setParentElement - -SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: Parent of a SOAPHeaderElement has to be a SOAPHeader -SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements must be namespace qualified -SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Invalid value for actor or role -SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: Parent of SOAPHeader has to be a SOAPEnvelope -SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements must be namespace qualified - -SAAJ0140.impl.no.ns.URI=SAAJ0140: Empty/Null NamespaceURI specified for faultCode {0} -SAAJ0141.impl.detail.exists=SAAJ0141: Detail already exists -SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Reason/Text not supported by this SOAP version, try SOAP 1.2 or later -SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Node not supported by this SOAP version, try SOAP 1.2 or later -SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Role not supported by this SOAP version, try SOAP 1.2 or later -SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: Cannot pass NULL to setParentElement -SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Cannot change name of element {0} to {1} -SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Cannot change the URI for prefix {0} from {1} to {2} in setElementQName -SAAJ0148.impl.invalid.prefix.for.uri=Non-empty namespace URI: {0} for an empty prefix in SetElementQName -SAAJ0149.impl.null.prefix=SAAJ0149: prefix cannot be "null" when creating a QName - -SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Cannot extract Document from body -SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Unable to extract Document from body - -# Debug messages -SAAJ0150.impl.added.attr=SAAJ0150: Added attribute {0} -SAAJ0151.impl.no.children=SAAJ0151: Cannot find node containing value: there are no children -SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Cannot find node containing value: first child is not a Text node -SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Cannot find node containing value: There is more than one child node -SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: A SOAPFault element can only be added as a child of SOAPBody -SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: A Detail element can only be added as a child of a SOAPFault -SAAJ0156.impl.adding.fault.error=SAAJ0156: Cannot add SOAPFault, a SOAPFault should be the only child of a SOAPBody -SAAJ0157.impl.detail.exists.error=SAAJ0157: Cannot add Detail, Detail already exists -SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAP Version mismatch encountered when trying to add SOAPFault to SOAPBody -SAAJ0159.impl.version.mismatch.detail=SAAJ0159: SOAP Version mismatch encountered when trying to add Detail to SOAPFault - -# Info messages -SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omit XML declaration set to {0} -SAAJ0191.impl.set.encoding=SAAJ0191: Encoding is set to {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_de.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_de.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for impl -# Error messages -SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: \u00DCbergeordnetes Element von SOAPBodyElement muss ein SOAPBody sein -SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Namespace f\u00FCr Pr\u00E4fix {0} kann nicht gefunden werden -SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Es k\u00F6nnen keine Fragmente hinzugef\u00FCgt werden, die Elemente enthalten, die im SOAP-Namespace enthalten sind -SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Codierungsstil {0} muss ein g\u00FCltiger URI sein -SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: NULL kann nicht an setParentElement \u00FCbergeben werden -SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: setValue ist bei einem Element nicht m\u00F6glich, das nicht ein einziges untergeordnetes Element vom Typ Text hat - -SAAJ0110.impl.fault.already.exists=SAAJ0110: Fehler: Fault ist bereits vorhanden -SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: \u00DCbergeordnetes Element von SOAPBody muss SOAPEnvelope sein - -SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: NULL kann nicht an setParentElement \u00FCbergeben werden -SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Text aus einem Kommentarknoten kann nicht geteilt werden -SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Gesamter Text aus einem Kommentarknoten kann nicht ersetzt werden - -SAAJ0120.impl.header.already.exists=SAAJ0120: Es kann kein Header hinzugef\u00FCgt werden, wenn bereits ein Header vorhanden ist -SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Erstes untergeordnetes Element von Envelope muss "Header" oder "Body" sein -SAAJ0122.impl.body.already.exists=SAAJ0122: Es kann kein Nachrichtentext hinzugef\u00FCgt werden, wenn bereits ein Nachrichtentext vorhanden ist -SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Reserviertes xmlns-Pr\u00E4fix kann nicht deklariert werden -SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Vollst\u00E4ndiger Name darf nicht xmlns sein -#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null -SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Namespace f\u00FCr Pr\u00E4fix {0} kann nicht gefunden werden -SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: NULL kann nicht an setParentElement \u00FCbergeben werden - -SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: \u00DCbergeordnetes Element von SOAPHeaderElement muss ein SOAPHeader sein -SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements muss mit Namespace angegeben werden -SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Ung\u00FCltiger Wert f\u00FCr Actor oder Rolle -SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: \u00DCbergeordnetes Element von SOAPHeader muss SOAPEnvelope sein -SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements muss mit Namespace angegeben werden - -SAAJ0140.impl.no.ns.URI=SAAJ0140: Leerer/Null-NamespaceURI f\u00FCr faultCode {0} angegeben -SAAJ0141.impl.detail.exists=SAAJ0141: Detail ist bereits vorhanden -SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Ursache/Text wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her -SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Knoten wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her -SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Rolle wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her -SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: NULL kann nicht an setParentElement \u00FCbergeben werden -SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Name des Elements {0} kann nicht in {1} ge\u00E4ndert werden -SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Der URI f\u00FCr Pr\u00E4fix {0} kann nicht von {1} in {2} in setElementQName ge\u00E4ndert werden -SAAJ0148.impl.invalid.prefix.for.uri=Nicht-leerer Namespace-URI: {0} f\u00FCr ein leeres Pr\u00E4fix in SetElementQName -SAAJ0149.impl.null.prefix=SAAJ0149: Pr\u00E4fix darf bei der Erstellung eines QName nicht "null" sein - -SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Dokument kann nicht aus Nachrichtentext extrahiert werden -SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Dokument kann nicht aus Nachrichtentext extrahiert werden - -# Debug messages -SAAJ0150.impl.added.attr=SAAJ0150: Attribut {0} hinzugef\u00FCgt -SAAJ0151.impl.no.children=SAAJ0151: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: es sind keine untergeordneten Elemente vorhanden -SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: erstes untergeordnetes Element ist kein Textknoten -SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: Es ist mehr als ein untergeordneter Knoten vorhanden -SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: Ein SOAPFault-Element kann nur als untergeordnetes Element von SOAPBody hinzugef\u00FCgt werden -SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Ein "Detail"-Element kann nur als untergeordnetes Element von SOAPFault hinzugef\u00FCgt werden -SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault kann nicht hinzugef\u00FCgt werden, SOAPFault muss das einzige untergeordnete Element von SOAPBody sein -SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden -SAAJ0158.impl.version.mismatch.fault=SAAJ0158: Nicht \u00FCbereinstimmende SOAP-Version beim Versuch aufgetreten, SOAPFault zu SOAPBody hinzuzuf\u00FCgen -SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Nicht \u00FCbereinstimmende SOAP-Version beim Versuch aufgetreten, Detail zu SOAPBody hinzuzuf\u00FCgen - -# Info messages -SAAJ0190.impl.set.xml.declaration=SAAJ0190: Deklaration "Omit XML" auf {0} gesetzt -SAAJ0191.impl.set.encoding=SAAJ0191: Codierung ist auf {0} gesetzt diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_es.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_es.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for impl -# Error messages -SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: el principal de un SOAPBodyElement tiene que ser un SOAPBody -SAAJ0102.impl.cannot.locate.ns=SAAJ0102: no se ha encontrado el espacio de nombres para el prefijo {0} -SAAJ0103.impl.cannot.add.fragements=SAAJ0103: no se pueden agregar fragmentos que contengan elementos que se encuentren en el espacio de nombres de SOAP -SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: el estilo de codificaci\u00F3n {0} debe ser un URI v\u00E1lido -SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: no se puede transferir NULL a setParentElement -SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: no se puede definir un valor en un elemento que no tenga un \u00FAnico secundario de tipo Text - -SAAJ0110.impl.fault.already.exists=SAAJ0110: Error: ya existe el fallo -SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: el principal de SOAPBody tiene que ser SOAPEnvelope - -SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: no se puede transferir NULL a setParentElement -SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: no se puede dividir el texto de un nodo de comentarios -SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: no se puede sustituir el texto completo de un nodo de comentarios - -SAAJ0120.impl.header.already.exists=SAAJ0120: no se puede agregar una cabecera si ya hay una -SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: el primer secundario de Envelope debe ser Header o Body -SAAJ0122.impl.body.already.exists=SAAJ0120: no se puede agregar un cuerpo si ya hay uno -SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: no se puede declarar el prefijo xmlns reservado -SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: el nombre cualificado no puede ser xmlns -#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null -SAAJ0126.impl.cannot.locate.ns=SAAJ0126: no se ha encontrado el espacio de nombres para el prefijo {0} -SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: no se puede transferir NULL a setParentElement - -SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: el principal de SOAPHeaderElement tiene que ser SOAPHeader -SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements debe estar cualificado por espacio de nombres -SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: valor no v\u00E1lido para actor o rol -SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: el principal de SOAPHeader tiene que ser SOAPEnvelope -SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements debe estar cualificado por espacio de nombres - -SAAJ0140.impl.no.ns.URI=SAAJ0140: se ha especificado un URI de espacio de nombres vac\u00EDo o nulo para el c\u00F3digo de fallo {0} -SAAJ0141.impl.detail.exists=SAAJ0141: ya existe el detalle -SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: el fallo/motivo/texto no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior -SAAJ0143.impl.node.not.supported=SAAJ0143: El fallo/nodo no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior -SAAJ0144.impl.role.not.supported=SAAJ0143: el fallo/rol no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior -SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: no se puede transferir NULL a setParentElement -SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: no se puede cambiar el nombre del elemento {0} por {1} -SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: no se puede cambiar el URI del prefijo {0} de {1} a {2} en setElementQName -SAAJ0148.impl.invalid.prefix.for.uri=URI de espacio de nombres no vac\u00EDo: {0} para un prefijo vac\u00EDo en SetElementQName -SAAJ0149.impl.null.prefix=SAAJ0149: el prefijo no puede ser "null" al crear un QName - -SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: no se puede extraer el documento del cuerpo -SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: no se ha podido extraer el documento del cuerpo - -# Debug messages -SAAJ0150.impl.added.attr=SAAJ0150: se ha agregado el atributo {0} -SAAJ0151.impl.no.children=SAAJ0151: no se ha encontrado el nodo que contiene el valor: no hay secundarios -SAAJ0152.impl.first.child.not.text.node=SAAJ0152: no se ha encontrado el nodo que contiene el valor: el primer secundario no es un nodo de texto -SAAJ0153.impl.multiple.children.same.value=SAAJ0153: no se ha encontrado el nodo que contiene el valor: hay m\u00E1s de un nodo secundario -SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: un elemento SOAPFault s\u00F3lo se puede agregar como secundario de SOAPBody -SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: un elemento Detail s\u00F3lo se puede agregar como secundario de SOAPFault -SAAJ0156.impl.adding.fault.error=SAAJ0156: no se puede agregar SOAPFault; SOAPFault debe ser el \u00FAnico secundario de SOAPBody -SAAJ0157.impl.detail.exists.error=SAAJ0157: no se puede agregar el detalle. El detalle ya existe -SAAJ0158.impl.version.mismatch.fault=SAAJ0158: se ha encontrado un error de coincidencia de la versi\u00F3n de SOAP al intentar agregar SOAPFault a SOAPBody -SAAJ0159.impl.version.mismatch.detail=SAAJ0159: se ha encontrado un error de coincidencia de la versi\u00F3n de SOAP al intentar agregar Detail a SOAPFault - -# Info messages -SAAJ0190.impl.set.xml.declaration=SAAJ0190: omita la declaraci\u00F3n XML definida en {0} -SAAJ0191.impl.set.encoding=SAAJ0191: la codificaci\u00F3n se ha definido en {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_fr.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_fr.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for impl -# Error messages -SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101 : le parent d'un \u00E9l\u00E9ment SOAPBodyElement doit \u00EAtre un \u00E9l\u00E9ment SOAPBody -SAAJ0102.impl.cannot.locate.ns=SAAJ0102 : impossible de localiser l''espace de noms pour le pr\u00E9fixe {0} -SAAJ0103.impl.cannot.add.fragements=SAAJ0103 : impossible d'ajouter les fragments qui contiennent les \u00E9l\u00E9ments figurant dans l'espace de noms SOAP -SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105 : le style d''encodage {0} doit \u00EAtre un URI valide -SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106 : impossible de transmettre la valeur NULL \u00E0 setParentElement -SAAJ0107.impl.elem.child.not.single.text=SAAJ0107 : impossible de d\u00E9finir la valeur sur un \u00E9l\u00E9ment qui ne comporte aucun enfant unique de type Text - -SAAJ0110.impl.fault.already.exists=SAAJ0110 : erreur : l'erreur existe d\u00E9j\u00E0 -SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111 : le parent de SOAPBody doit \u00EAtre un \u00E9l\u00E9ment SOAPEnvelope - -SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112 : impossible de transmettre la valeur NULL \u00E0 setParentElement -SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113 : impossible de s\u00E9parer le texte d'un noeud de commentaire -SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114 : impossible de remplacer l'ensemble du texte \u00E0 partir d'un noeud de commentaire - -SAAJ0120.impl.header.already.exists=SAAJ0120 : impossible d'ajouter un en-t\u00EAte lorsqu'il en existe d\u00E9j\u00E0 un -SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121 : le premier enfant de Envelope doit \u00EAtre un \u00E9l\u00E9ment Header ou Body -SAAJ0122.impl.body.already.exists=SAAJ0122 : impossible d'ajouter un corps lorsqu'il en existe d\u00E9j\u00E0 un -SAAJ0123.impl.no.reserved.xmlns=SAAJ0123 : impossible de d\u00E9clarer le pr\u00E9fixe xmlns r\u00E9serv\u00E9 -SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124 : le nom qualifi\u00E9 ne peut pas \u00EAtre xmlns -#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null -SAAJ0126.impl.cannot.locate.ns=SAAJ0126 : impossible de localiser l''espace de noms pour le pr\u00E9fixe {0} -SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127 : impossible de transmettre la valeur NULL \u00E0 setParentElement - -SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130 : le parent d'un \u00E9l\u00E9ment SOAPHeaderElement doit \u00EAtre un \u00E9l\u00E9ment SOAPHeader -SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131 : les \u00E9l\u00E9ments Header doivent \u00EAtre des espaces de noms qualifi\u00E9s -SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132 : valeur non valide pour l'acteur ou le r\u00F4le -SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133 : le parent de SOAPHeader doit \u00EAtre un \u00E9l\u00E9ment SOAPEnvelope -SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134 : les \u00E9l\u00E9ments Header doivent \u00EAtre des espaces de noms qualifi\u00E9s - -SAAJ0140.impl.no.ns.URI=SAAJ0140 : NamespaceURI vide/NULL indiqu\u00E9 pour faultCode {0} -SAAJ0141.impl.detail.exists=SAAJ0141 : l'\u00E9l\u00E9ment Detail existe d\u00E9j\u00E0 -SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Reason/Text non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur -SAAJ0143.impl.node.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Node non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur -SAAJ0144.impl.role.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Role non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur -SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145 : impossible de transmettre la valeur NULL \u00E0 setParentElement -SAAJ0146.impl.invalid.name.change.requested=SAAJ0146 : impossible de modifier le nom de l''\u00E9l\u00E9ment {0} en {1} -SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147 : impossible de modifier l''URI pour le pr\u00E9fixe {0} de {1} en {2} dans setElementQName -SAAJ0148.impl.invalid.prefix.for.uri=URI d''espace de noms non vide : {0} pour un pr\u00E9fixe vide dans SetElementQName -SAAJ0149.impl.null.prefix=SAAJ0149 : le pr\u00E9fixe ne peut pas \u00EAtre "NULL" lors de la cr\u00E9ation d'un QName - -SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250 : impossible d'extraire le document du corps -SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251 : impossible d'extraire le document du corps - -# Debug messages -SAAJ0150.impl.added.attr=SAAJ0150 : attribut {0} ajout\u00E9 -SAAJ0151.impl.no.children=SAAJ0151 : noeud contenant la valeur introuvable : il n'existe aucun enfant -SAAJ0152.impl.first.child.not.text.node=SAAJ0151 : noeud contenant la valeur introuvable : le premier enfant n'est pas un noeud Text -SAAJ0153.impl.multiple.children.same.value=SAAJ0151 : noeud contenant la valeur introuvable : il existe plusieurs noeuds enfant -SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154 : un \u00E9l\u00E9ment SOAPFault peut \u00EAtre ajout\u00E9 uniquement en tant qu'enfant de SOAPBody -SAAJ0155.impl.adding.detail.nonfault=SAAJ0155 : un \u00E9l\u00E9ment Detail peut \u00EAtre ajout\u00E9 uniquement en tant qu'enfant d'un \u00E9l\u00E9ment SOAPFault -SAAJ0156.impl.adding.fault.error=SAAJ0156 : impossible d'ajouter SOAPFault ; un \u00E9l\u00E9ment SOAPFault doit \u00EAtre le seul enfant d'un \u00E9l\u00E9ment SOAPBody -SAAJ0157.impl.detail.exists.error=SAAJ0157 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0 -SAAJ0158.impl.version.mismatch.fault=SAAJ0158 : non-concordance de versions SOAP d\u00E9tect\u00E9e lors de la tentative d'ajout de SOAPFault \u00E0 SOAPBody -SAAJ0159.impl.version.mismatch.detail=SAAJ0158 : non-concordance de versions SOAP d\u00E9tect\u00E9e lors de la tentative d'ajout de Detail \u00E0 SOAPFault - -# Info messages -SAAJ0190.impl.set.xml.declaration=SAAJ0190 : omettre la d\u00E9claration XML d\u00E9finie sur {0} -SAAJ0191.impl.set.encoding=SAAJ0191 : l''encodage est d\u00E9fini sur {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_it.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_it.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for impl -# Error messages -SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: L'elemento padre di un SOAPBodyElement deve essere un SOAPBody -SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Impossibile trovare lo spazio di nomi per il prefisso {0} -SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Impossibile aggiungere frammenti che contengono elementi presenti nello spazio di nomi SOAP -SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Lo stile di codifica {0} deve essere un URI valido -SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: Impossibile passare NULL a setParentElement -SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Impossibile usare setValue su un elemento che non ha solo un elemento figlio di tipo Text - -SAAJ0110.impl.fault.already.exists=SAAJ0110: Errore: Fault esiste gi\u00E0 -SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: L'elemento padre di SOAPBody deve essere un SOAPEnvelope - -SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: Impossibile passare NULL a setParentElement -SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Impossibile dividere il testo di un Comment Node -SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Impossibile sostituire tutto il testo di un Comment Node - -SAAJ0120.impl.header.already.exists=SAAJ0120: Impossibile aggiungere un'intestazione quando ne \u00E8 gi\u00E0 presente una -SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Il primo elemento figlio di Envelope deve essere Header o Body -SAAJ0122.impl.body.already.exists=SAAJ0122: Impossibile aggiungere un corpo quando ne \u00E8 gi\u00E0 presente uno -SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Impossibile dichiarare riservato il prefisso xmlns -SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Il nome qualificato non pu\u00F2 essere xmlns -#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null -SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Impossibile trovare lo spazio di nomi per il prefisso {0} -SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: Impossibile passare NULL a setParentElement - -SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: L'elemento padre di un SOAPHeaderElement deve essere un SSOAPHeader -SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements deve essere qualificato per lo spazio di nomi -SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Valore non valido per l'attore o il ruolo -SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: L'elemento padre di SOAPHeader deve essere un SOAPEnvelope -SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements deve essere qualificato per lo spazio di nomi - -SAAJ0140.impl.no.ns.URI=SAAJ0140: URI dello spazio di nomi vuoto/nullo specificato per faultCode {0} -SAAJ0141.impl.detail.exists=SAAJ0141: Detail esiste gi\u00E0 -SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Reason/Text non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva -SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Node non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva -SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Role non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva -SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: Impossibile passare NULL a setParentElement -SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Impossibile modificare il nome dell''elemento {0} in {1} -SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Impossibile modificare l''URI per il prefisso {0} da {1} a {2} in setElementQName -SAAJ0148.impl.invalid.prefix.for.uri=URI dello spazio di nomi non vuoto: {0} per un prefisso vuoto in SetElementQName -SAAJ0149.impl.null.prefix=SAAJ0149: Il prefisso non pu\u00F2 essere "null" durante la creazione di un QName - -SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Impossibile estrarre Document dal corpo -SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Impossibile estrarre Document dal corpo - -# Debug messages -SAAJ0150.impl.added.attr=SAAJ0150: Attributo {0} aggiunto -SAAJ0151.impl.no.children=SAAJ0151: Impossibile trovare il nodo contenente il valore: non sono presenti elementi figlio -SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Impossibile trovare il nodo contenente il valore: il primo elemento figlio non \u00E8 un nodo testo -SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Impossibile trovare il nodo contenente il valore: sono presenti pi\u00F9 nodi figlio -SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: Un elemento SOAPFault pu\u00F2 essere aggiunto solo come elemento figlio di SOAPBody -SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Un elemento Detail pu\u00F2 essere aggiunto solo come elemento figlio di un SOAPFault -SAAJ0156.impl.adding.fault.error=SAAJ0156: Impossibile aggiungere SOAPFault. SOAPFault deve essere l'unico elemento figlio di SOAPBody -SAAJ0157.impl.detail.exists.error=SAAJ0157: Impossibile aggiungere Detail. Detail esiste gi\u00E0. -SAAJ0158.impl.version.mismatch.fault=SAAJ0158: Mancata corrispondenza della versione SOAP rilevata durante il tentativo di aggiungere SOAPFault a SOAPBody -SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Mancata corrispondenza della versione SOAP rilevata durante il tentativo di aggiungere il dettaglio a SOAPFault - -# Info messages -SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omettere la dichiarazione XML impostata su {0} -SAAJ0191.impl.set.encoding=SAAJ0191: La codifica \u00E8 impostata su {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ja.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ja.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for impl -# Error messages -SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement\u306E\u89AA\u306FSOAPBody\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u63A5\u982D\u8F9E{0}\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 -SAAJ0103.impl.cannot.add.fragements=SAAJ0103: SOAP\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306B\u5B58\u5728\u3059\u308B\u8981\u7D20\u3092\u542B\u3080\u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 -SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u30FB\u30B9\u30BF\u30A4\u30EB{0}\u306F\u6709\u52B9\u306AURI\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u30BF\u30A4\u30D7\u304C\u30C6\u30AD\u30B9\u30C8\u306E\u552F\u4E00\u306E\u5B50\u304C\u306A\u3044\u8981\u7D20\u306B\u5024\u3092\u8A2D\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 - -SAAJ0110.impl.fault.already.exists=SAAJ0110: \u30A8\u30E9\u30FC: \u30D5\u30A9\u30EB\u30C8\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059 -SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody\u306E\u89AA\u306FSOAPEnvelope\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 - -SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u30B3\u30E1\u30F3\u30C8\u30FB\u30CE\u30FC\u30C9\u304B\u3089\u30C6\u30AD\u30B9\u30C8\u3092\u5206\u5272\u3067\u304D\u307E\u305B\u3093 -SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u30B3\u30E1\u30F3\u30C8\u30FB\u30CE\u30FC\u30C9\u304B\u3089\u30C6\u30AD\u30B9\u30C8\u5168\u4F53\u3092\u7F6E\u63DB\u3067\u304D\u307E\u305B\u3093 - -SAAJ0120.impl.header.already.exists=SAAJ0120: \u30D8\u30C3\u30C0\u30FC\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 -SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\u306E\u6700\u521D\u306E\u5B50\u306FHeader\u307E\u305F\u306FBody\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -SAAJ0122.impl.body.already.exists=SAAJ0122: \u672C\u6587\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 -SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u4E88\u7D04\u6E08\u306Exmlns\u63A5\u982D\u8F9E\u3092\u5BA3\u8A00\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u4FEE\u98FE\u540D\u3092xmlns\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null -SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u63A5\u982D\u8F9E{0}\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 -SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 - -SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement\u306E\u89AA\u306FSOAPHeader\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \u30A2\u30AF\u30BF\u30FC\u307E\u305F\u306F\u30ED\u30FC\u30EB\u306E\u5024\u304C\u7121\u52B9\u3067\u3059 -SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader\u306E\u89AA\u306FSOAPEnvelope\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 - -SAAJ0140.impl.no.ns.URI=SAAJ0140: faultCode {0}\u306B\u6307\u5B9A\u3055\u308C\u305FNamespaceURI\u304C\u7A7A/Null\u3067\u3059 -SAAJ0141.impl.detail.exists=SAAJ0141: Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059 -SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u7406\u7531/\u30C6\u30AD\u30B9\u30C8\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044 -SAAJ0143.impl.node.not.supported=SAAJ0143: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u30CE\u30FC\u30C9\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044 -SAAJ0144.impl.role.not.supported=SAAJ0144: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u30ED\u30FC\u30EB\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044 -SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u8981\u7D20{0}\u306E\u540D\u524D\u3092{1}\u306B\u5909\u66F4\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: setElementQName\u306E\u63A5\u982D\u8F9E{0}\u306EURI\u3092{1}\u304B\u3089{2}\u306B\u5909\u66F4\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName\u306E\u7A7A\u306E\u63A5\u982D\u8F9E\u306B\u7A7A\u767D\u4EE5\u5916\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9URI: {0}\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 -SAAJ0149.impl.null.prefix=SAAJ0149: QName\u3092\u4F5C\u6210\u3059\u308B\u5834\u5408\u3001\u63A5\u982D\u8F9E\u3092\u300Cnull\u300D\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 - -SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u672C\u6587\u304B\u3089\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093 -SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u672C\u6587\u304B\u3089\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093 - -# Debug messages -SAAJ0150.impl.added.attr=SAAJ0150: \u5C5E\u6027{0}\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F -SAAJ0151.impl.no.children=SAAJ0151: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u5B50\u304C\u3042\u308A\u307E\u305B\u3093 -SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u6700\u521D\u306E\u5B50\u304C\u30C6\u30AD\u30B9\u30C8\u30FB\u30CE\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093 -SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u8907\u6570\u306E\u5B50\u30CE\u30FC\u30C9\u304C\u3042\u308A\u307E\u3059 -SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault\u8981\u7D20\u306FSOAPBody\u306E\u5B50\u3068\u3057\u3066\u306E\u307F\u8FFD\u52A0\u3067\u304D\u307E\u3059 -SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail\u8981\u7D20\u306FSOAPFault\u306E\u5B50\u3068\u3057\u3066\u306E\u307F\u8FFD\u52A0\u3067\u304D\u307E\u3059 -SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002SOAPFault\u306FSOAPBody\u306E\u552F\u4E00\u306E\u5B50\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059 -SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAPFault\u3092SOAPBody\u306B\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306BSOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F -SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Detail\u3092SOAPFault\u306B\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306BSOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F - -# Info messages -SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omit XML\u5BA3\u8A00\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 -SAAJ0191.impl.set.encoding=SAAJ0191: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ko.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ko.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for impl -# Error messages -SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement\uC758 \uC0C1\uC704\uB294 SOAPBody\uC5EC\uC57C \uD569\uB2C8\uB2E4. -SAAJ0102.impl.cannot.locate.ns=SAAJ0102: {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0103.impl.cannot.add.fragements=SAAJ0103: SOAP \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC788\uB294 \uC694\uC18C\uAC00 \uD3EC\uD568\uB41C \uB2E8\uD3B8\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \uC778\uCF54\uB529 \uC2A4\uD0C0\uC77C {0}\uC740(\uB294) \uC801\uD569\uD55C URI\uC5EC\uC57C \uD569\uB2C8\uB2E4. -SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Text \uC720\uD615\uC758 \uC720\uC77C\uD55C \uD558\uC704\uAC00 \uD3EC\uD568\uB418\uC9C0 \uC54A\uC740 \uC694\uC18C\uC5D0 \uB300\uD574 \uAC12\uC744 \uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. - -SAAJ0110.impl.fault.already.exists=SAAJ0110: \uC624\uB958: Fault\uAC00 \uC874\uC7AC\uD569\uB2C8\uB2E4. -SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody\uC758 \uC0C1\uC704\uB294 SOAPEnvelope\uC5EC\uC57C \uD569\uB2C8\uB2E4. - -SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \uC8FC\uC11D \uB178\uB4DC\uC5D0\uC11C \uD14D\uC2A4\uD2B8\uB97C \uBD84\uD560\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \uC8FC\uC11D \uB178\uB4DC\uC758 \uC804\uCCB4 \uD14D\uC2A4\uD2B8\uB97C \uBC14\uAFC0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. - -SAAJ0120.impl.header.already.exists=SAAJ0120: Header\uAC00 \uC874\uC7AC\uD558\uB294 \uACBD\uC6B0 Header\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\uC758 \uCCAB\uBC88\uC9F8 \uD558\uC704\uB294 Header \uB610\uB294 Body\uC5EC\uC57C \uD569\uB2C8\uB2E4. -SAAJ0122.impl.body.already.exists=SAAJ0122: Body\uAC00 \uC874\uC7AC\uD558\uB294 \uACBD\uC6B0 Body\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \uC608\uC57D\uB41C xmlns \uC811\uB450\uC5B4\uB97C \uC120\uC5B8\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \uC815\uADDC\uD654\uB41C \uC774\uB984\uC740 xmlns\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null -SAAJ0126.impl.cannot.locate.ns=SAAJ0126: {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. - -SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement\uC758 \uC0C1\uC704\uB294 SOAPHeader\uC5EC\uC57C \uD569\uB2C8\uB2E4. -SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4. -SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \uC791\uC5C5\uC790 \uB610\uB294 \uB864\uC5D0 \uB300\uD55C \uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. -SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader\uC758 \uC0C1\uC704\uB294 SOAPEnvelope\uC5EC\uC57C \uD569\uB2C8\uB2E4. -SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4. - -SAAJ0140.impl.no.ns.URI=SAAJ0140: faultCode {0}\uC5D0 \uB300\uD574 \uBE48/\uB110 NamespaceURI\uAC00 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0141.impl.detail.exists=SAAJ0141: Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. -SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Reason/Text\uAC00 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624. -SAAJ0143.impl.node.not.supported=SAAJ0143: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Node\uAC00 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624. -SAAJ0144.impl.role.not.supported=SAAJ0144: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Role\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624. -SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: {0} \uC694\uC18C\uC758 \uC774\uB984\uC744 {1}(\uC73C)\uB85C \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: setElementQName\uC5D0\uC11C {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C URI\uB97C {1}\uC5D0\uC11C {2}(\uC73C)\uB85C \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName\uC5D0 \uBE48 \uC811\uB450\uC5B4\uC5D0 \uB300\uD574 \uBE44\uC5B4 \uC788\uC9C0 \uC54A\uC740 \uB124\uC784\uC2A4\uD398\uC774\uC2A4 URI {0}\uC774(\uAC00) \uC788\uC2B5\uB2C8\uB2E4. -SAAJ0149.impl.null.prefix=SAAJ0149: QName\uC744 \uC0DD\uC131\uD558\uB294 \uACBD\uC6B0 \uC811\uB450\uC5B4\uB294 "null"\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. - -SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \uBCF8\uBB38\uC5D0\uC11C \uBB38\uC11C\uB97C \uCD94\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \uBCF8\uBB38\uC5D0\uC11C \uBB38\uC11C\uB97C \uCD94\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. - -# Debug messages -SAAJ0150.impl.added.attr=SAAJ0150: {0} \uC18D\uC131\uC744 \uCD94\uAC00\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0151.impl.no.children=SAAJ0151: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uD558\uC704 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uCCAB\uBC88\uC9F8 \uD558\uC704\uAC00 \uD14D\uC2A4\uD2B8 \uB178\uB4DC\uAC00 \uC544\uB2D9\uB2C8\uB2E4. -SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uD558\uC704 \uB178\uB4DC\uAC00 \uB450 \uAC1C \uC774\uC0C1 \uC788\uC2B5\uB2C8\uB2E4. -SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \uC694\uC18C\uB294 SOAPBody\uC758 \uD558\uC704\uB85C\uB9CC \uCD94\uAC00\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. -SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail \uC694\uC18C\uB294 SOAPFault\uC758 \uD558\uC704\uB85C\uB9CC \uCD94\uAC00\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. -SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. SOAPFault\uB294 SOAPBody\uC758 \uC720\uC77C\uD55C \uD558\uC704\uC5EC\uC57C \uD569\uB2C8\uB2E4. -SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. -SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAPBody\uC5D0 SOAPFault\uB97C \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 SOAP \uBC84\uC804 \uBD88\uC77C\uCE58\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. -SAAJ0159.impl.version.mismatch.detail=SAAJ0159: SOAPFault\uC5D0 Detail\uC744 \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 SOAP \uBC84\uC804 \uBD88\uC77C\uCE58\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. - -# Info messages -SAAJ0190.impl.set.xml.declaration=SAAJ0190: XML \uC120\uC5B8 \uC0DD\uB7B5\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. -SAAJ0191.impl.set.encoding=SAAJ0191: \uC778\uCF54\uB529\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_pt_BR.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_pt_BR.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for impl -# Error messages -SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: o pai de um SOAPBodyElement deve ser um SOAPBody -SAAJ0102.impl.cannot.locate.ns=SAAJ0102: n\u00E3o \u00E9 poss\u00EDvel localizar o namespace do prefixo {0} -SAAJ0103.impl.cannot.add.fragements=SAAJ0103: n\u00E3o \u00E9 poss\u00EDvel adicionar fragmentos que cont\u00EAm elementos que est\u00E3o no namespace de SOAP -SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: estilo {0} de codifica\u00E7\u00E3o deve ser um URI v\u00E1lido -SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement -SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: n\u00E3o \u00E9 poss\u00EDvel setValue em um Elemento que n\u00E3o tem um s\u00F3 filho do tipo Texto - -SAAJ0110.impl.fault.already.exists=SAAJ0110: erro: j\u00E1 existe falha -SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: o pai de SOAPBody deve ser um SOAPEnvelope - -SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement -SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: n\u00E3o \u00E9 poss\u00EDvel dividir o texto de um N\u00F3 do Coment\u00E1rio -SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: n\u00E3o \u00E9 poss\u00EDvel substituir todo o texto de um N\u00F3 de Coment\u00E1rio - -SAAJ0120.impl.header.already.exists=SAAJ0120: n\u00E3o \u00E9 poss\u00EDvel adicionar um cabe\u00E7alho quando h\u00E1 houver um -SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: o primeiro filho do Envelope deve ser um Cabe\u00E7alho ou um Corpo -SAAJ0122.impl.body.already.exists=SAAJ0122: n\u00E3o \u00E9 poss\u00EDvel adicionar um corpo quando j\u00E1 houver um -SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: n\u00E3o \u00E9 poss\u00EDvel declarar o prefixo xmlns reservado -SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: o nome qualificado n\u00E3o pode ser xmlns -#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null -SAAJ0126.impl.cannot.locate.ns=SAAJ0126: n\u00E3o \u00E9 poss\u00EDvel localizar namespace para o prefixo {0} -SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement - -SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: o pai de um SOAPHeaderElement deve ser um SOAPHeader -SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements deve ser um namespace qualificado -SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: valor inv\u00E1lido para ator ou atribui\u00E7\u00E3o -SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: o pai de um SOAPHeader deve ser um SOAPEnvelope -SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements deve ser um namespace qualificado - -SAAJ0140.impl.no.ns.URI=SAAJ0140: NamespaceURI Vazio/Nulo especificado para faultCode {0} -SAAJ0141.impl.detail.exists=SAAJ0141: o detalhe j\u00E1 existe -SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: falha/motivo/texto n\u00E3o suportado por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior -SAAJ0143.impl.node.not.supported=SAAJ0143: falha/n\u00F3 n\u00E3o suportados por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior -SAAJ0144.impl.role.not.supported=SAAJ0144: falha/atribui\u00E7\u00E3o n\u00E3o suportada por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior -SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement -SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: n\u00E3o \u00E9 poss\u00EDvel alterar o nome do elemento {0} para {1} -SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: n\u00E3o \u00E9 poss\u00EDvel alterar o URI do prefixo {0} de {1} para {2} no setElementQName -SAAJ0148.impl.invalid.prefix.for.uri=URI de namespace n\u00E3o vazio: {0} para um prefixo vazio no SetElementQName -SAAJ0149.impl.null.prefix=SAAJ0149: o prefixo n\u00E3o pode ser "nulo" ao criar um QName - -SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: n\u00E3o \u00E9 poss\u00EDvel extrair o Documento do corpo -SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: n\u00E3o \u00E9 poss\u00EDvel extrair o documento do corpo - -# Debug messages -SAAJ0150.impl.added.attr=SAAJ0150: atributo {0} adicionado -SAAJ0151.impl.no.children=SAAJ0151: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: n\u00E3o h\u00E1 filhos -SAAJ0152.impl.first.child.not.text.node=SAAJ0152: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: o primeiro filho n\u00E3o \u00E9 um n\u00F3 de Texto -SAAJ0153.impl.multiple.children.same.value=SAAJ0153: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: h\u00E1 mais de um n\u00F3 filho -SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: um elemento de SOAPFault s\u00F3 pode ser adicionado como filho de SOAPBody -SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: um elemento de Detalhe s\u00F3 pode ser adicionado como um filho de um SOAPFault -SAAJ0156.impl.adding.fault.error=SAAJ0156: n\u00E3o \u00E9 poss\u00EDvel adicionar SOAPFault, um SOAPFault deve ser filho s\u00F3 de um SOAPBody -SAAJ0157.impl.detail.exists.error=SAAJ0157: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe -SAAJ0158.impl.version.mismatch.fault=SAAJ0158: incompatibilidade da vers\u00E3o SOAP encontrada ao tentar adicionar SOAPFault ao SOAPBody -SAAJ0159.impl.version.mismatch.detail=SAAJ0159: incompatibilidade da vers\u00E3o SOAP encontrada ao tentar adicionar Detalhes \u00E0 SOAPFault - -# Info messages -SAAJ0190.impl.set.xml.declaration=SAAJ0190: omitir conjunto de declara\u00E7\u00F5es de XML para {0} -SAAJ0191.impl.set.encoding=SAAJ0191: codifica\u00E7\u00E3o definida como {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_CN.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_CN.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for impl -# Error messages -SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPBody -SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u627E\u4E0D\u5230\u524D\u7F00{0}\u7684\u540D\u79F0\u7A7A\u95F4 -SAAJ0103.impl.cannot.add.fragements=SAAJ0103: \u65E0\u6CD5\u6DFB\u52A0\u5305\u542B\u4F4D\u4E8E SOAP \u540D\u79F0\u7A7A\u95F4\u4E2D\u7684\u5143\u7D20\u7684\u7247\u6BB5 -SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u7F16\u7801\u6837\u5F0F{0}\u5E94\u8BE5\u662F\u6709\u6548\u7684 URI -SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement -SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u5BF9\u4E8E\u5E76\u975E\u53EA\u5177\u6709\u6587\u672C\u7C7B\u578B\u5B50\u7EA7\u7684\u5143\u7D20, \u4E0D\u80FD\u6267\u884C setValue - -SAAJ0110.impl.fault.already.exists=SAAJ0110: \u9519\u8BEF: \u6545\u969C\u5DF2\u5B58\u5728 -SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPEnvelope - -SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement -SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u65E0\u6CD5\u62C6\u5206\u6765\u81EA\u6CE8\u91CA\u8282\u70B9\u7684\u6587\u672C -SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u65E0\u6CD5\u66FF\u6362\u6765\u81EA\u6CE8\u91CA\u8282\u70B9\u7684\u5168\u90E8\u6587\u672C - -SAAJ0120.impl.header.already.exists=SAAJ0120: \u5F53\u6807\u5934\u5DF2\u5B58\u5728\u65F6, \u65E0\u6CD5\u6DFB\u52A0\u6807\u5934 -SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: \u4FE1\u5C01\u7684\u7B2C\u4E00\u4E2A\u5B50\u7EA7\u5FC5\u987B\u662F\u6807\u5934\u6216\u6B63\u6587 -SAAJ0122.impl.body.already.exists=SAAJ0122: \u5F53\u6B63\u6587\u5DF2\u5B58\u5728\u65F6, \u65E0\u6CD5\u6DFB\u52A0\u6B63\u6587 -SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u65E0\u6CD5\u58F0\u660E\u4FDD\u7559\u7684 xmlns \u524D\u7F00 -SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u9650\u5B9A\u540D\u4E0D\u80FD\u662F xmlns -#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null -SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u627E\u4E0D\u5230\u524D\u7F00{0}\u7684\u540D\u79F0\u7A7A\u95F4 -SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement - -SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPHeader -SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4 -SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \u64CD\u4F5C\u8005\u6216\u89D2\u8272\u7684\u503C\u65E0\u6548 -SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPEnvelope -SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4 - -SAAJ0140.impl.no.ns.URI=SAAJ0140: \u4E3A faultCode {0} \u6307\u5B9A\u7684 NamespaceURI \u5FC5\u987B\u4E3A\u7A7A/\u7A7A\u503C -SAAJ0141.impl.detail.exists=SAAJ0141: \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728 -SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u539F\u56E0/\u6587\u672C, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C -SAAJ0143.impl.node.not.supported=SAAJ0143: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u8282\u70B9, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C -SAAJ0144.impl.role.not.supported=SAAJ0144: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u89D2\u8272, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C -SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement -SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u65E0\u6CD5\u5C06\u5143\u7D20{0}\u7684\u540D\u79F0\u66F4\u6539\u4E3A{1} -SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: \u65E0\u6CD5\u5C06 setElementQName \u4E2D\u524D\u7F00{0}\u7684 URI \u4ECE {1} \u66F4\u6539\u4E3A {2} -SAAJ0148.impl.invalid.prefix.for.uri=\u975E\u7A7A\u540D\u79F0\u7A7A\u95F4 URI: {0} \u7528\u4E8E SetElementQName \u4E2D\u7684\u7A7A\u524D\u7F00 -SAAJ0149.impl.null.prefix=SAAJ0149: \u521B\u5EFA QName \u65F6, \u524D\u7F00\u4E0D\u80FD\u4E3A "\u7A7A\u503C" - -SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u65E0\u6CD5\u4ECE\u6B63\u6587\u4E2D\u63D0\u53D6\u6587\u6863 -SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u65E0\u6CD5\u4ECE\u6B63\u6587\u4E2D\u63D0\u53D6\u6587\u6863 - -# Debug messages -SAAJ0150.impl.added.attr=SAAJ0150: \u5DF2\u6DFB\u52A0\u5C5E\u6027{0} -SAAJ0151.impl.no.children=SAAJ0151: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u6CA1\u6709\u4EFB\u4F55\u5B50\u7EA7 -SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u7B2C\u4E00\u4E2A\u5B50\u7EA7\u4E0D\u662F\u6587\u672C\u8282\u70B9 -SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u5B58\u5728\u591A\u4E2A\u5B50\u8282\u70B9 -SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \u5143\u7D20\u53EA\u80FD\u4F5C\u4E3A SOAPBody \u7684\u5B50\u7EA7\u6DFB\u52A0 -SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: \u8BE6\u7EC6\u4FE1\u606F\u5143\u7D20\u53EA\u80FD\u4F5C\u4E3A SOAPFault \u7684\u5B50\u7EA7\u6DFB\u52A0 -SAAJ0156.impl.adding.fault.error=SAAJ0156: \u65E0\u6CD5\u6DFB\u52A0 SOAPFault, SOAPFault \u53EA\u5E94\u8BE5\u662F SOAPBody \u7684\u5B50\u7EA7 -SAAJ0157.impl.detail.exists.error=SAAJ0157: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728 -SAAJ0158.impl.version.mismatch.fault=SAAJ0158: \u5C1D\u8BD5\u5C06 SOAPFault \u6DFB\u52A0\u5230 SOAPBody \u65F6\u9047\u5230 SOAP \u7248\u672C\u4E0D\u5339\u914D\u60C5\u51B5 -SAAJ0159.impl.version.mismatch.detail=SAAJ0159: \u5C1D\u8BD5\u5C06\u8BE6\u7EC6\u4FE1\u606F\u6DFB\u52A0\u5230 SOAPFault \u65F6\u9047\u5230 SOAP \u7248\u672C\u4E0D\u5339\u914D\u60C5\u51B5 - -# Info messages -SAAJ0190.impl.set.xml.declaration=SAAJ0190: \u9057\u6F0F XML \u58F0\u660E\u8BBE\u7F6E\u4E3A{0} -SAAJ0191.impl.set.encoding=SAAJ0191: \u7F16\u7801\u8BBE\u7F6E\u4E3A{0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_TW.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_TW.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,86 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for impl -# Error messages -SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPBody -SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u627E\u4E0D\u5230\u524D\u7F6E\u78BC {0} \u7684\u547D\u540D\u7A7A\u9593 -SAAJ0103.impl.cannot.add.fragements=SAAJ0103: \u7121\u6CD5\u65B0\u589E\u5305\u542B SOAP \u547D\u540D\u7A7A\u9593\u4E2D\u4E4B\u5143\u7D20\u7684\u7247\u6BB5 -SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u7DE8\u78BC\u6A23\u5F0F {0} \u61C9\u662F\u6709\u6548\u7684 URI -SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement -SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u7121\u6CD5\u5728\u4E0D\u542B\u552F\u4E00 Text \u985E\u578B\u5B50\u9805\u7684\u300C\u5143\u7D20\u300D\u4E0A\u4F7F\u7528 setValue - -SAAJ0110.impl.fault.already.exists=SAAJ0110: \u932F\u8AA4: Fault \u5DF2\u7D93\u5B58\u5728 -SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPEnvelope - -SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement -SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u4E0D\u80FD\u5F9E\u300CComment \u7BC0\u9EDE\u300D\u5206\u5272\u6587\u5B57 -SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u4E0D\u80FD\u5F9E\u300CComment \u7BC0\u9EDE\u300D\u53D6\u4EE3\u6574\u500B\u6587\u5B57 - -SAAJ0120.impl.header.already.exists=SAAJ0120: \u6A19\u982D\u5DF2\u7D93\u5B58\u5728\u6642\u4E0D\u80FD\u65B0\u589E\u6A19\u982D -SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\u7684\u7B2C\u4E00\u500B\u5B50\u9805\u5FC5\u9808\u662F Header \u6216 Body -SAAJ0122.impl.body.already.exists=SAAJ0122: \u4E3B\u9AD4\u5DF2\u7D93\u5B58\u5728\u6642\u4E0D\u80FD\u65B0\u589E\u4E3B\u9AD4 -SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u4E0D\u80FD\u5BA3\u544A\u4FDD\u7559\u7684 xmlns \u524D\u7F6E\u78BC -SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u5B8C\u6574\u540D\u7A31\u4E0D\u80FD\u662F xmlns -#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null -SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u627E\u4E0D\u5230\u524D\u7F6E\u78BC {0} \u7684\u547D\u540D\u7A7A\u9593 -SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement - -SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPHeader -SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593 -SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: actor \u6216 role \u7684\u503C\u7121\u6548 -SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPEnvelope -SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593 - -SAAJ0140.impl.no.ns.URI=SAAJ0140: \u70BA faultCode {0} \u6307\u5B9A\u7684\u662F\u7A7A\u7684/\u7A7A\u503C NamespaceURI -SAAJ0141.impl.detail.exists=SAAJ0141: Detail \u5DF2\u7D93\u5B58\u5728 -SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Reason/Text, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C -SAAJ0143.impl.node.not.supported=SAAJ0143: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Node, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C -SAAJ0144.impl.role.not.supported=SAAJ0144: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Role, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C -SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement -SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u4E0D\u80FD\u5C07\u5143\u7D20 {0} \u7684\u540D\u7A31\u8B8A\u66F4\u70BA {1} -SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: \u4E0D\u80FD\u5C07 setElementQName \u4E2D\u524D\u7F6E\u78BC {0} \u7684 URI \u5F9E {1} \u8B8A\u66F4\u70BA {2} -SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName \u4E2D\u7684\u7A7A\u524D\u7F6E\u78BC\u6709\u975E\u7A7A\u767D\u7684\u547D\u540D\u7A7A\u9593 URI: {0} -SAAJ0149.impl.null.prefix=SAAJ0149: \u5EFA\u7ACB QName \u6642, \u524D\u7F6E\u78BC\u4E0D\u80FD\u662F "null" - -SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u4E0D\u80FD\u5F9E\u4E3B\u9AD4\u64F7\u53D6 Document -SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u7121\u6CD5\u5F9E\u4E3B\u9AD4\u64F7\u53D6 Document - -# Debug messages -SAAJ0150.impl.added.attr=SAAJ0150: \u5DF2\u65B0\u589E\u5C6C\u6027 {0} -SAAJ0151.impl.no.children=SAAJ0151: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u6C92\u6709\u5B50\u9805 -SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u7B2C\u4E00\u500B\u5B50\u9805\u4E0D\u662F Text \u7BC0\u9EDE -SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u6709\u4E00\u500B\u4EE5\u4E0A\u7684\u5B50\u7BC0\u9EDE -SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \u5143\u7D20\u53EA\u80FD\u65B0\u589E\u6210\u70BA SOAPBody \u7684\u5B50\u9805 -SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail \u5143\u7D20\u53EA\u80FD\u65B0\u589E\u6210\u70BA SOAPFault \u7684\u5B50\u9805 -SAAJ0156.impl.adding.fault.error=SAAJ0156: \u7121\u6CD5\u65B0\u589E SOAPFault, SOAPFault \u61C9\u70BA SOAPBody \u7684\u552F\u4E00\u5B50\u9805 -SAAJ0157.impl.detail.exists.error=SAAJ0157: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728 -SAAJ0158.impl.version.mismatch.fault=SAAJ0158: \u5617\u8A66\u65B0\u589E SOAPFault \u81F3 SOAPBody \u6642, \u767C\u751F SOAP \u7248\u672C\u4E0D\u7B26 -SAAJ0159.impl.version.mismatch.detail=SAAJ0159: \u5617\u8A66\u65B0\u589E Detail \u81F3 SOAPFault \u6642, \u767C\u751F SOAP \u7248\u672C\u4E0D\u7B26 - -# Info messages -SAAJ0190.impl.set.xml.declaration=SAAJ0190: \u7701\u7565\u8A2D\u70BA {0} \u7684 XML \u5BA3\u544A -SAAJ0191.impl.set.encoding=SAAJ0191: \u7DE8\u78BC\u5DF2\u8A2D\u70BA {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPCommentImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPCommentImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.impl; - -import java.util.ResourceBundle; -import java.util.logging.Logger; - -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPException; - -import org.w3c.dom.DOMException; -import org.w3c.dom.Text; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - -public class SOAPCommentImpl - extends com.sun.org.apache.xerces.internal.dom.CommentImpl - implements javax.xml.soap.Text, org.w3c.dom.Comment { - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings"); - protected static ResourceBundle rb = - log.getResourceBundle(); - - public SOAPCommentImpl(SOAPDocumentImpl ownerDoc, String text) { - super(ownerDoc, text); - } - - public String getValue() { - String nodeValue = getNodeValue(); - return (nodeValue.equals("") ? null : nodeValue); - } - - public void setValue(String text) { - setNodeValue(text); - } - - - public void setParentElement(SOAPElement element) throws SOAPException { - if (element == null) { - log.severe("SAAJ0112.impl.no.null.to.parent.elem"); - throw new SOAPException("Cannot pass NULL to setParentElement"); - } - ((ElementImpl) element).addNode(this); - } - - public SOAPElement getParentElement() { - return (SOAPElement) getParentNode(); - } - - public void detachNode() { - org.w3c.dom.Node parent = getParentNode(); - if (parent != null) { - parent.removeChild(this); - } - } - - public void recycleNode() { - detachNode(); - // TBD - // - add this to the factory so subsequent - // creations can reuse this object. - } - - public boolean isComment() { - return true; - } - - public Text splitText(int offset) throws DOMException { - log.severe("SAAJ0113.impl.cannot.split.text.from.comment"); - throw new UnsupportedOperationException("Cannot split text from a Comment Node."); - } - - public Text replaceWholeText(String content) throws DOMException { - log.severe("SAAJ0114.impl.cannot.replace.wholetext.from.comment"); - throw new UnsupportedOperationException("Cannot replace Whole Text from a Comment Node."); - } - - public String getWholeText() { - //TODO: maybe we have to implement this in future. - throw new UnsupportedOperationException("Not Supported"); - } - - public boolean isElementContentWhitespace() { - //TODO: maybe we have to implement this in future. - throw new UnsupportedOperationException("Not Supported"); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPTextImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPTextImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.impl; - -import java.util.logging.Logger; - -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPException; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - -public class SOAPTextImpl - extends com.sun.org.apache.xerces.internal.dom.TextImpl - implements javax.xml.soap.Text, org.w3c.dom.Text { - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings"); - - public SOAPTextImpl(SOAPDocumentImpl ownerDoc, String text) { - super(ownerDoc, text); - } - - public String getValue() { - String nodeValue = getNodeValue(); - return (nodeValue.equals("") ? null : nodeValue); - } - - public void setValue(String text) { - setNodeValue(text); - } - - public void setParentElement(SOAPElement parent) throws SOAPException { - if (parent == null) { - log.severe("SAAJ0126.impl.cannot.locate.ns"); - throw new SOAPException("Cannot pass NULL to setParentElement"); - } - ((ElementImpl) parent).addNode(this); - } - - public SOAPElement getParentElement() { - return (SOAPElement) getParentNode(); - } - - - public void detachNode() { - org.w3c.dom.Node parent = getParentNode(); - if (parent != null) { - parent.removeChild(this); - } - } - - public void recycleNode() { - detachNode(); - // TBD - // - add this to the factory so subsequent - // creations can reuse this object. - } - - public boolean isComment() { - String txt = getNodeValue(); - if (txt == null) { - return false; - } - return txt.startsWith(""); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/TreeException.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/TreeException.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,32 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.impl; - -public class TreeException extends RuntimeException { - public TreeException(String reason) { - super(reason); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for name pkg -# Error messages -SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Cannot create a name from a null tag -SAAJ0202.name.invalid.arg.format=SAAJ0202: Argument "{0}" must be of the form: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_de.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_de.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for name pkg -# Error messages -SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Name kann nicht aus einem Null-Tag erstellt werden -SAAJ0202.name.invalid.arg.format=SAAJ0202: Argument "{0}" muss folgende Form aufweisen: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_es.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_es.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for name pkg -# Error messages -SAAJ0201.name.not.created.from.null.tag=SAAJ0201: no se puede crear un nombre desde una etiqueta nula -SAAJ0202.name.invalid.arg.format=SAAJ0202: El argumento "{0}" debe tener el formato: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_fr.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_fr.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for name pkg -# Error messages -SAAJ0201.name.not.created.from.null.tag=SAAJ0201 : impossible de cr\u00E9er un nom \u00E0 partir d'une balise NULL -SAAJ0202.name.invalid.arg.format=SAAJ0202 : l''argument "{0}" doit avoir le format suivant : prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_it.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_it.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for name pkg -# Error messages -SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Impossibile creare un nome da una tag nulla -SAAJ0202.name.invalid.arg.format=SAAJ0202: L''argomento "{0}" deve avere il formato: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ja.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ja.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for name pkg -# Error messages -SAAJ0201.name.not.created.from.null.tag=SAAJ0201: null\u306E\u30BF\u30B0\u304B\u3089\u540D\u524D\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 -SAAJ0202.name.invalid.arg.format=SAAJ0202: \u5F15\u6570"{0}"\u306Fprefix:localName\u306E\u5F62\u5F0F\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ko.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ko.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for name pkg -# Error messages -SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \uB110 \uD0DC\uADF8\uC5D0\uC11C \uC774\uB984\uC744 \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0202.name.invalid.arg.format=SAAJ0202: "{0}" \uC778\uC218\uB294 prefix:localName \uD615\uC2DD\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_pt_BR.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_pt_BR.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for name pkg -# Error messages -SAAJ0201.name.not.created.from.null.tag=SAAJ0201: n\u00E3o \u00E9 poss\u00EDvel criar um nome a partir de uma tag nula -SAAJ0202.name.invalid.arg.format=SAAJ0202: o argumento "{0}" deve estar no formato: prefix.localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_CN.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_CN.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for name pkg -# Error messages -SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \u65E0\u6CD5\u4ECE\u7A7A\u503C\u6807\u8BB0\u521B\u5EFA\u540D\u79F0 -SAAJ0202.name.invalid.arg.format=SAAJ0202: \u53C2\u6570 "{0}" \u5FC5\u987B\u91C7\u7528\u4EE5\u4E0B\u5F62\u5F0F: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_TW.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_TW.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,30 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for name pkg -# Error messages -SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \u7121\u6CD5\u5F9E\u7A7A\u503C\u6A19\u8A18\u5EFA\u7ACB\u540D\u7A31 -SAAJ0202.name.invalid.arg.format=SAAJ0202: \u5F15\u6578 "{0}" \u7684\u683C\u5F0F\u5FC5\u9808\u662F: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/NameImpl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/NameImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,561 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.soap.name; - -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.xml.namespace.QName; -import javax.xml.soap.Name; -import javax.xml.soap.SOAPConstants; - -//import com.sun.org.apache.xerces.internal.xni.NamespaceContext; -import org.w3c.dom.Element; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - -public class NameImpl implements Name { - public static final String XML_NAMESPACE_PREFIX = "xml"; - public static final String XML_SCHEMA_NAMESPACE_PREFIX = "xs"; - public static final String SOAP_ENVELOPE_PREFIX = "SOAP-ENV"; - - public static final String XML_NAMESPACE = - "http://www.w3.org/XML/1998/namespace"; - public static final String SOAP11_NAMESPACE = - SOAPConstants.URI_NS_SOAP_ENVELOPE; - public static final String SOAP12_NAMESPACE = - SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE; - public static final String XML_SCHEMA_NAMESPACE = - "http://www.w3.org/2001/XMLSchema"; - - protected String uri = ""; - protected String localName = ""; - protected String prefix = ""; - private String qualifiedName = null; - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.NAMING_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.name.LocalStrings"); - - /** - * XML Information Set REC - * all namespace attributes (including those named xmlns, - * whose [prefix] property has no value) have a namespace URI of http://www.w3.org/2000/xmlns/ - */ - public final static String XMLNS_URI = "http://www.w3.org/2000/xmlns/".intern(); - - protected NameImpl(String name) { - this.localName = name == null ? "" : name; - } - - protected NameImpl(String name, String prefix, String uri) { - this.uri = uri == null ? "" : uri; - this.localName = name == null ? "" : name; - this.prefix = prefix == null ? "" : prefix; - - if (this.prefix.equals("xmlns") && this.uri.equals("")) { - this.uri = XMLNS_URI; - } - if (this.uri.equals(XMLNS_URI) && this.prefix.equals("")) { - this.prefix = "xmlns"; - } - } - - public static Name convertToName(QName qname) { - return new NameImpl(qname.getLocalPart(), - qname.getPrefix(), - qname.getNamespaceURI()); - } - - public static QName convertToQName(Name name) { - return new QName(name.getURI(), - name.getLocalName(), - name.getPrefix()); - } - - public static NameImpl createFromUnqualifiedName(String name) { - return new NameImpl(name); - } - - public static Name createFromTagName(String tagName) { - return createFromTagAndUri(tagName, ""); - } - - public static Name createFromQualifiedName( - String qualifiedName, - String uri) { - return createFromTagAndUri(qualifiedName, uri); - } - - protected static Name createFromTagAndUri(String tagName, String uri) { - if (tagName == null) { - log.severe("SAAJ0201.name.not.created.from.null.tag"); - throw new IllegalArgumentException("Cannot create a name from a null tag."); - } - int index = tagName.indexOf(':'); - if (index < 0) { - return new NameImpl(tagName, "", uri); - } else { - return new NameImpl( - tagName.substring(index + 1), - tagName.substring(0, index), - uri); - } - } - - protected static int getPrefixSeparatorIndex(String qualifiedName) { - int index = qualifiedName.indexOf(':'); - if (index < 0) { - log.log( - Level.SEVERE, - "SAAJ0202.name.invalid.arg.format", - new String[] { qualifiedName }); - throw new IllegalArgumentException( - "Argument \"" - + qualifiedName - + "\" must be of the form: \"prefix:localName\""); - } - return index; - } - - public static String getPrefixFromQualifiedName(String qualifiedName) { - return qualifiedName.substring( - 0, - getPrefixSeparatorIndex(qualifiedName)); - } - - public static String getLocalNameFromQualifiedName(String qualifiedName) { - return qualifiedName.substring( - getPrefixSeparatorIndex(qualifiedName) + 1); - } - - public static String getPrefixFromTagName(String tagName) { - if (isQualified(tagName)) { - return getPrefixFromQualifiedName(tagName); - } - return ""; - } - - public static String getLocalNameFromTagName(String tagName) { - if (isQualified(tagName)) { - return getLocalNameFromQualifiedName(tagName); - } - return tagName; - } - - public static boolean isQualified(String tagName) { - return tagName.indexOf(':') >= 0; - } - - public static NameImpl create(String name, String prefix, String uri) { - if (prefix == null) - prefix = ""; - if (uri == null) - uri = ""; - if (name == null) - name = ""; - - if (!uri.equals("") && !name.equals("")) { - if (uri.equals(NameImpl.SOAP11_NAMESPACE)) { - if (name.equalsIgnoreCase("Envelope")) - return createEnvelope1_1Name(prefix); - else if (name.equalsIgnoreCase("Header")) - return createHeader1_1Name(prefix); - else if (name.equalsIgnoreCase("Body")) - return createBody1_1Name(prefix); - else if (name.equalsIgnoreCase("Fault")) - return createFault1_1Name(prefix); - else - return new SOAP1_1Name(name, prefix); - } else if (uri.equals(SOAP12_NAMESPACE)) { - if (name.equalsIgnoreCase("Envelope")) - return createEnvelope1_2Name(prefix); - else if (name.equalsIgnoreCase("Header")) - return createHeader1_2Name(prefix); - else if (name.equalsIgnoreCase("Body")) - return createBody1_2Name(prefix); - else if ( - name.equals("Fault") - || name.equals("Reason") - || name.equals("Detail")) - return createFault1_2Name(name, prefix); - else if (name.equals("Code") || name.equals("Subcode")) - return createCodeSubcode1_2Name(prefix, name); - else - return new SOAP1_2Name(name, prefix); - } - - } - return new NameImpl(name, prefix, uri); - } - - public static String createQName(String prefix, String localName) { - if (prefix == null || prefix.equals("")) { - return localName; - } - return prefix + ":" + localName; - } - - public boolean equals(Object obj) { - if (!(obj instanceof Name)) { - return false; - } - - Name otherName = (Name) obj; - - if (!uri.equals(otherName.getURI())) { - return false; - } - - if (!localName.equals(otherName.getLocalName())) { - return false; - } - - return true; - } - - public int hashCode() { - return localName.hashCode(); - } - - /** - * Get the local name part of this XML Name. - * - * @return a string for the local name. - */ - public String getLocalName() { - return localName; - } - - /* getQualifiedName is inherited from QName */ - - /** - * Returns the prefix associated with the namespace of the name. - * - * @return the prefix as a string. - */ - public String getPrefix() { - return prefix; - } - - /** - * Returns the URI associated of the namespace. - * - * @return the uri as a string. - */ - public String getURI() { - return uri; - } - - /** - * Returns a String version of the name suitable for use in an XML document. - */ - public String getQualifiedName() { - if (qualifiedName == null) { - if (prefix != null && prefix.length() > 0) { - qualifiedName = prefix + ":" + localName; - } else { - qualifiedName = localName; - } - } - return qualifiedName; - } - - /** - * Create a name object for a SOAP1.1 Envelope. - */ - public static NameImpl createEnvelope1_1Name(String prefix) { - return new Envelope1_1Name(prefix); - } - - /** - * Create a name object for a SOAP1.2 Envelope. - */ - public static NameImpl createEnvelope1_2Name(String prefix) { - return new Envelope1_2Name(prefix); - } - - /** - * Create a name object for a SOAP1.1 Header. - */ - public static NameImpl createHeader1_1Name(String prefix) { - return new Header1_1Name(prefix); - } - - /** - * Create a name object for a SOAP1.2 Header. - */ - public static NameImpl createHeader1_2Name(String prefix) { - return new Header1_2Name(prefix); - } - - /** - * Create a name object for a SOAP1.1 Body. - */ - public static NameImpl createBody1_1Name(String prefix) { - return new Body1_1Name(prefix); - } - - /** - * Create a name object for a SOAP1.2 Body. - */ - public static NameImpl createBody1_2Name(String prefix) { - return new Body1_2Name(prefix); - } - - /** - * Create a name object for a SOAP1.1 Fault. - */ - public static NameImpl createFault1_1Name(String prefix) { - return new Fault1_1Name(prefix); - } - - /** - * Create a name object for a SOAP1.2 NotUnderstood element. - */ - public static NameImpl createNotUnderstood1_2Name(String prefix) { - return new NotUnderstood1_2Name(prefix); - } - - /** - * Create a name object for a SOAP1.2 Upgrade element. - */ - public static NameImpl createUpgrade1_2Name(String prefix) { - return new Upgrade1_2Name(prefix); - } - - /** - * Create a name object for a SOAP1.2 SupportedEnvelope Upgrade element. - */ - public static NameImpl createSupportedEnvelope1_2Name(String prefix) { - return new SupportedEnvelope1_2Name(prefix); - } - - /** - * Create a name object for a SOAP1.2 - * Fault, Reason or Detail. - * - * @param localName Local Name of element - */ - public static NameImpl createFault1_2Name( - String localName, - String prefix) { - return new Fault1_2Name(localName, prefix); - } - - /** - * Create a name object for a SOAP1.2 Fault/Code or Subcode. - * - * @param localName Either "Code" or "Subcode" - */ - public static NameImpl createCodeSubcode1_2Name( - String prefix, - String localName) { - return new CodeSubcode1_2Name(localName, prefix); - } - - /** - * Create a name object for a SOAP1.1 Fault Detail. - */ - public static NameImpl createDetail1_1Name() { - return new Detail1_1Name(); - } - - public static NameImpl createDetail1_1Name(String prefix) { - return new Detail1_1Name(prefix); - } - - public static NameImpl createFaultElement1_1Name(String localName) { - return new FaultElement1_1Name(localName); - } - - public static NameImpl createFaultElement1_1Name(String localName, - String prefix) { - return new FaultElement1_1Name(localName, prefix); - } - - public static NameImpl createSOAP11Name(String string) { - return new SOAP1_1Name(string, null); - } - public static NameImpl createSOAP12Name(String string) { - return new SOAP1_2Name(string, null); - } - - public static NameImpl createSOAP12Name(String localName, String prefix) { - return new SOAP1_2Name(localName, prefix); - } - - public static NameImpl createXmlName(String localName) { - return new NameImpl(localName, XML_NAMESPACE_PREFIX, XML_NAMESPACE); - } - - public static Name copyElementName(Element element) { - String localName = element.getLocalName(); - String prefix = element.getPrefix(); - String uri = element.getNamespaceURI(); - return create(localName, prefix, uri); - } - - -static class SOAP1_1Name extends NameImpl { - SOAP1_1Name(String name, String prefix) { - super( - name, - (prefix == null || prefix.equals("")) - ? NameImpl.SOAP_ENVELOPE_PREFIX - : prefix, - NameImpl.SOAP11_NAMESPACE); - } -} - -static class Envelope1_1Name extends SOAP1_1Name { - Envelope1_1Name(String prefix) { - super("Envelope", prefix); - } -} - -static class Header1_1Name extends SOAP1_1Name { - Header1_1Name(String prefix) { - super("Header", prefix); - } -} - -static class Body1_1Name extends SOAP1_1Name { - Body1_1Name(String prefix) { - super("Body", prefix); - } -} - -static class Fault1_1Name extends NameImpl { - Fault1_1Name(String prefix) { - super( - "Fault", - (prefix == null || prefix.equals("")) - ? SOAP_ENVELOPE_PREFIX - : prefix, - SOAP11_NAMESPACE); - } -} - -static class Detail1_1Name extends NameImpl { - Detail1_1Name() { - super("detail"); - } - - Detail1_1Name(String prefix) { - super("detail", prefix, ""); - } -} - -static class FaultElement1_1Name extends NameImpl { - FaultElement1_1Name(String localName) { - super(localName); - } - - FaultElement1_1Name(String localName, String prefix) { - super(localName, prefix, ""); - } -} - -static class SOAP1_2Name extends NameImpl { - SOAP1_2Name(String name, String prefix) { - super( - name, - (prefix == null || prefix.equals("")) - ? SOAPConstants.SOAP_ENV_PREFIX - : prefix, - SOAP12_NAMESPACE); - } -} - -static class Envelope1_2Name extends SOAP1_2Name { - Envelope1_2Name(String prefix) { - super("Envelope", prefix); - } -} - -static class Header1_2Name extends SOAP1_2Name { - Header1_2Name(String prefix) { - super("Header", prefix); - } -} - -static class Body1_2Name extends SOAP1_2Name { - Body1_2Name(String prefix) { - super("Body", prefix); - } -} - -static class Fault1_2Name extends NameImpl { - Fault1_2Name(String name, String prefix) { - super( - (name == null || name.equals("")) ? "Fault" : name, - (prefix == null || prefix.equals("")) - ? SOAPConstants.SOAP_ENV_PREFIX - : prefix, - SOAP12_NAMESPACE); - } -} - -static class NotUnderstood1_2Name extends NameImpl { - NotUnderstood1_2Name(String prefix) { - super( - "NotUnderstood", - (prefix == null || prefix.equals("")) - ? SOAPConstants.SOAP_ENV_PREFIX - : prefix, - SOAP12_NAMESPACE); - } -} - -static class Upgrade1_2Name extends NameImpl { - Upgrade1_2Name(String prefix) { - super( - "Upgrade", - (prefix == null || prefix.equals("")) - ? SOAPConstants.SOAP_ENV_PREFIX - : prefix, - SOAP12_NAMESPACE); - } -} - -static class SupportedEnvelope1_2Name extends NameImpl { - SupportedEnvelope1_2Name(String prefix) { - super( - "SupportedEnvelope", - (prefix == null || prefix.equals("")) - ? SOAPConstants.SOAP_ENV_PREFIX - : prefix, - SOAP12_NAMESPACE); - } -} - -static class CodeSubcode1_2Name extends SOAP1_2Name { - CodeSubcode1_2Name(String prefix, String localName) { - super(prefix, localName); - } -} - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Body1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Body1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,83 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import java.util.Locale; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public class Body1_1Impl extends BodyImpl { - public Body1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) { - super(ownerDocument, NameImpl.createBody1_1Name(prefix)); - } - - public SOAPFault addSOAP12Fault(QName faultCode, String faultReason, Locale locale) { - // log message here - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - protected NameImpl getFaultName(String name) { - // Ignore name - return NameImpl.createFault1_1Name(null); - } - - protected SOAPBodyElement createBodyElement(Name name) { - return new BodyElement1_1Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name); - } - - protected SOAPBodyElement createBodyElement(QName name) { - return new BodyElement1_1Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name); - } - - protected QName getDefaultFaultCode() { - return new QName(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE, "Server"); - } - - protected boolean isFault(SOAPElement child) { - // SOAP 1.1 faults always use the default name - return child.getElementName().equals(getFaultName(null)); - } - - protected SOAPFault createFaultElement() { - return new Fault1_1Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), getPrefix()); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/BodyElement1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/BodyElement1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import javax.xml.namespace.QName; -import javax.xml.soap.Name; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPException; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.BodyElementImpl; - -public class BodyElement1_1Impl extends BodyElementImpl { - - public BodyElement1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) { - super(ownerDoc, qname); - } - public BodyElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) { - super(ownerDoc, qname); - } - public SOAPElement setElementQName(QName newName) throws SOAPException { - BodyElementImpl copy = - new BodyElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName); - return replaceElementWithSOAPElement(this,copy); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Detail1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Detail1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,59 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import javax.xml.namespace.QName; -import javax.xml.soap.DetailEntry; -import javax.xml.soap.Name; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.DetailImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public class Detail1_1Impl extends DetailImpl { - - public Detail1_1Impl(SOAPDocumentImpl ownerDoc, String prefix) { - super(ownerDoc, NameImpl.createDetail1_1Name(prefix)); - } - public Detail1_1Impl(SOAPDocumentImpl ownerDoc) { - super(ownerDoc, NameImpl.createDetail1_1Name()); - } - protected DetailEntry createDetailEntry(Name name) { - return new DetailEntry1_1Impl( - (SOAPDocumentImpl) getOwnerDocument(), - name); - } - protected DetailEntry createDetailEntry(QName name) { - return new DetailEntry1_1Impl( - (SOAPDocumentImpl) getOwnerDocument(), - name); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/DetailEntry1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/DetailEntry1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,53 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import javax.xml.namespace.QName; -import javax.xml.soap.Name; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPException; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.DetailEntryImpl; - -public class DetailEntry1_1Impl extends DetailEntryImpl { - - public DetailEntry1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) { - super(ownerDoc, qname); - } - public DetailEntry1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) { - super(ownerDoc, qname); - } - public SOAPElement setElementQName(QName newName) throws SOAPException { - DetailEntryImpl copy = - new DetailEntry1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName); - return replaceElementWithSOAPElement(this,copy); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Envelope1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Envelope1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,63 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import javax.xml.soap.SOAPException; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public class Envelope1_1Impl extends EnvelopeImpl { - - public Envelope1_1Impl(SOAPDocumentImpl ownerDoc, String prefix){ - super(ownerDoc, NameImpl.createEnvelope1_1Name(prefix)); - } - Envelope1_1Impl( - SOAPDocumentImpl ownerDoc, - String prefix, - boolean createHeader, - boolean createBody) - throws SOAPException { - super( - ownerDoc, - NameImpl.createEnvelope1_1Name(prefix), - createHeader, - createBody); - } - protected NameImpl getBodyName(String prefix) { - return NameImpl.createBody1_1Name(prefix); - } - - protected NameImpl getHeaderName(String prefix) { - return NameImpl.createHeader1_1Name(prefix); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Fault1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Fault1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,387 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import java.util.Iterator; -import java.util.Locale; -import java.util.logging.Logger; -import java.util.logging.Level; - -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPFaultElement; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPConstants; -import javax.xml.soap.Name; -import javax.xml.soap.Name; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.*; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; - - -public class Fault1_1Impl extends FaultImpl { - - protected static final Logger log = - Logger.getLogger( - LogDomainConstants.SOAP_VER1_1_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings"); - - public Fault1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) { - super(ownerDocument, NameImpl.createFault1_1Name(prefix)); - } - - protected NameImpl getDetailName() { - return NameImpl.createDetail1_1Name(); - } - - protected NameImpl getFaultCodeName() { - return NameImpl.createFromUnqualifiedName("faultcode"); - } - - protected NameImpl getFaultStringName() { - return NameImpl.createFromUnqualifiedName("faultstring"); - } - - protected NameImpl getFaultActorName() { - return NameImpl.createFromUnqualifiedName("faultactor"); - } - - protected DetailImpl createDetail() { - return new Detail1_1Impl( - ((SOAPDocument) getOwnerDocument()).getDocument()); - } - - protected FaultElementImpl createSOAPFaultElement(String localName) { - return new FaultElement1_1Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - localName); - } - - protected void checkIfStandardFaultCode(String faultCode, String uri) - throws SOAPException { - // SOAP 1.1 doesn't seem to mandate using faultcode from a particular - // set of values. - // Also need to be backward compatible. - } - - protected void finallySetFaultCode(String faultcode) throws SOAPException { - this.faultCodeElement.addTextNode(faultcode); - } - - public String getFaultCode() { - if (this.faultCodeElement == null) - findFaultCodeElement(); - return this.faultCodeElement.getValue(); - } - - public Name getFaultCodeAsName() { - - String faultcodeString = getFaultCode(); - if (faultcodeString == null) { - return null; - } - int prefixIndex = faultcodeString.indexOf(':'); - if (prefixIndex == -1) { - // Not a valid SOAP message, but we return the unqualified name - // anyway since some apps do not strictly conform to SOAP - // specs. A message that does not contain a - // element itself is also not valid in which case we return - // null instead of throwing an exception so this is consistent. - return NameImpl.createFromUnqualifiedName(faultcodeString); - } - - // Get the prefix and map it to a namespace name (AKA namespace URI) - String prefix = faultcodeString.substring(0, prefixIndex); - if (this.faultCodeElement == null) - findFaultCodeElement(); - String nsName = this.faultCodeElement.getNamespaceURI(prefix); - return NameImpl.createFromQualifiedName(faultcodeString, nsName); - } - - public QName getFaultCodeAsQName() { - String faultcodeString = getFaultCode(); - if (faultcodeString == null) { - return null; - } - if (this.faultCodeElement == null) - findFaultCodeElement(); - return convertCodeToQName(faultcodeString, this.faultCodeElement); - } - - public void setFaultString(String faultString) throws SOAPException { - - if (this.faultStringElement == null) - findFaultStringElement(); - - if (this.faultStringElement == null) - this.faultStringElement = addSOAPFaultElement("faultstring"); - else { - this.faultStringElement.removeContents(); - //this.faultStringElement.removeAttributeNS("http://www.w3.org/XML/1998/namespace", "lang"); - this.faultStringElement.removeAttribute("xml:lang"); - } - - this.faultStringElement.addTextNode(faultString); - } - - public String getFaultString() { - if (this.faultStringElement == null) - findFaultStringElement(); - return this.faultStringElement.getValue(); - - } - - public Locale getFaultStringLocale() { - if (this.faultStringElement == null) - findFaultStringElement(); - if (this.faultStringElement != null) { - String xmlLangAttr = - this.faultStringElement.getAttributeValue( - NameImpl.createFromUnqualifiedName("xml:lang")); - if (xmlLangAttr != null) - return xmlLangToLocale(xmlLangAttr); - } - return null; - } - - public void setFaultString(String faultString, Locale locale) - throws SOAPException { - setFaultString(faultString); - this.faultStringElement.addAttribute( - NameImpl.createFromTagName("xml:lang"), - localeToXmlLang(locale)); - } - - protected boolean isStandardFaultElement(String localName) { - if (localName.equalsIgnoreCase("detail") || - localName.equalsIgnoreCase("faultcode") || - localName.equalsIgnoreCase("faultstring") || - localName.equalsIgnoreCase("faultactor")) { - return true; - } - return false; - } - - public void appendFaultSubcode(QName subcode) { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - "appendFaultSubcode"); - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - public void removeAllFaultSubcodes() { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - "removeAllFaultSubcodes"); - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - public Iterator getFaultSubcodes() { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - "getFaultSubcodes"); - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - public String getFaultReasonText(Locale locale) { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - "getFaultReasonText"); - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - public Iterator getFaultReasonTexts() { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - "getFaultReasonTexts"); - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - public Iterator getFaultReasonLocales() { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - "getFaultReasonLocales"); - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - public void addFaultReasonText(String text, java.util.Locale locale) - throws SOAPException { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - "addFaultReasonText"); - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - public String getFaultRole() { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - "getFaultRole"); - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - public void setFaultRole(String uri) { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - "setFaultRole"); - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - public String getFaultNode() { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - "getFaultNode"); - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - public void setFaultNode(String uri) { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - "setFaultNode"); - throw new UnsupportedOperationException("Not supported in SOAP 1.1"); - } - - protected QName getDefaultFaultCode() { - return new QName(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE, "Server"); - } - - public SOAPElement addChildElement(SOAPElement element) - throws SOAPException { - String localName = element.getLocalName(); - if ("Detail".equalsIgnoreCase(localName)) { - if (hasDetail()) { - log.severe("SAAJ0305.ver1_2.detail.exists.error"); - throw new SOAPExceptionImpl("Cannot add Detail, Detail already exists"); - } - } - return super.addChildElement(element); - } - - protected FaultElementImpl createSOAPFaultElement(QName qname) { - return new FaultElement1_1Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - qname); - } - - protected FaultElementImpl createSOAPFaultElement(Name qname) { - return new FaultElement1_1Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - (NameImpl)qname); - } - - public void setFaultCode(String faultCode, String prefix, String uri) - throws SOAPException { - if (prefix == null || "".equals(prefix)) { - if (uri != null && !"".equals(uri)) { - prefix = getNamespacePrefix(uri); - if (prefix == null || "".equals(prefix)) { - prefix = "ns0"; - } - } - } - - if (this.faultCodeElement == null) - findFaultCodeElement(); - - if (this.faultCodeElement == null) - this.faultCodeElement = addFaultCodeElement(); - else - this.faultCodeElement.removeContents(); - - if (uri == null || "".equals(uri)) { - if (prefix != null && !"".equals("prefix")) { - uri = this.faultCodeElement.getNamespaceURI(prefix); - } - } - - if (uri == null || "".equals(uri)) { - if (prefix != null && !"".equals(prefix)) { - //cannot allow an empty URI for a non-Empty prefix - log.log(Level.SEVERE, "SAAJ0307.impl.no.ns.URI", new Object[]{prefix + ":" + faultCode}); - throw new SOAPExceptionImpl("Empty/Null NamespaceURI specified for faultCode \"" + prefix + ":" + faultCode + "\""); - } else { - uri = ""; - } - } - - checkIfStandardFaultCode(faultCode, uri); - ((FaultElementImpl) this.faultCodeElement).ensureNamespaceIsDeclared(prefix, uri); - - if (prefix == null || "".equals(prefix)) { - finallySetFaultCode(faultCode); - } else { - finallySetFaultCode(prefix + ":" + faultCode); - } - } - - private boolean standardFaultCode(String faultCode) { - if (faultCode.equals("VersionMismatch") || faultCode.equals("MustUnderstand") - || faultCode.equals("Client") || faultCode.equals("Server")) { - return true; - } - if (faultCode.startsWith("VersionMismatch.") || faultCode.startsWith("MustUnderstand.") - || faultCode.startsWith("Client.") || faultCode.startsWith("Server.")) { - return true; - } - return false; - } - - public void setFaultActor(String faultActor) throws SOAPException { - if (this.faultActorElement == null) - findFaultActorElement(); - if (this.faultActorElement != null) - this.faultActorElement.detachNode(); - if (faultActor == null) - return; - this.faultActorElement = - createSOAPFaultElement(getFaultActorName()); - this.faultActorElement.addTextNode(faultActor); - if (hasDetail()) { - insertBefore(this.faultActorElement, this.detail); - return; - } - addNode(this.faultActorElement); - - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/FaultElement1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/FaultElement1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,81 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPException; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.FaultElementImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public class FaultElement1_1Impl extends FaultElementImpl { - - public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, NameImpl qname) { - super(ownerDoc, qname); - } - - public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) { - super(ownerDoc, qname); - } - - public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, - String localName) { - super(ownerDoc, NameImpl.createFaultElement1_1Name(localName)); - } - - public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, - String localName, - String prefix) { - super(ownerDoc, - NameImpl.createFaultElement1_1Name(localName, prefix)); - } - - protected boolean isStandardFaultElement() { - String localName = elementQName.getLocalPart(); - if (localName.equalsIgnoreCase("faultcode") || - localName.equalsIgnoreCase("faultstring") || - localName.equalsIgnoreCase("faultactor")) { - return true; - } - return false; - } - - public SOAPElement setElementQName(QName newName) throws SOAPException { - if (!isStandardFaultElement()) { - FaultElement1_1Impl copy = - new FaultElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName); - return replaceElementWithSOAPElement(this,copy); - } else { - return super.setElementQName(newName); - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Header1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Header1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import java.util.List; -import java.util.Iterator; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - -public class Header1_1Impl extends HeaderImpl { - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings"); - - public Header1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) { - super(ownerDocument, NameImpl.createHeader1_1Name(prefix)); - } - - protected NameImpl getNotUnderstoodName() { - log.log( - Level.SEVERE, - "SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1", - new String[] { "getNotUnderstoodName" }); - throw new UnsupportedOperationException("Not supported by SOAP 1.1"); - } - - protected NameImpl getUpgradeName() { - return NameImpl.create( - "Upgrade", - getPrefix(), - SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE); - } - - protected NameImpl getSupportedEnvelopeName() { - return NameImpl.create( - "SupportedEnvelope", - getPrefix(), - SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE); - } - - public SOAPHeaderElement addNotUnderstoodHeaderElement(QName name) - throws SOAPException { - log.log( - Level.SEVERE, - "SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1", - new String[] { "addNotUnderstoodHeaderElement" }); - throw new UnsupportedOperationException("Not supported by SOAP 1.1"); - } - - protected SOAPHeaderElement createHeaderElement(Name name) { - return new HeaderElement1_1Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name); - } - protected SOAPHeaderElement createHeaderElement(QName name) { - return new HeaderElement1_1Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/HeaderElement1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/HeaderElement1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,121 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.xml.namespace.QName; -import javax.xml.soap.Name; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPElement; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - -public class HeaderElement1_1Impl extends HeaderElementImpl { - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings"); - - public HeaderElement1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) { - super(ownerDoc, qname); - } - public HeaderElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) { - super(ownerDoc, qname); - } - - public SOAPElement setElementQName(QName newName) throws SOAPException { - HeaderElementImpl copy = - new HeaderElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName); - return replaceElementWithSOAPElement(this,copy); - } - - protected NameImpl getActorAttributeName() { - return NameImpl.create("actor", null, NameImpl.SOAP11_NAMESPACE); - } - - // role not supported by SOAP 1.1 - protected NameImpl getRoleAttributeName() { - log.log( - Level.SEVERE, - "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1", - new String[] { "Role" }); - throw new UnsupportedOperationException("Role not supported by SOAP 1.1"); - } - - protected NameImpl getMustunderstandAttributeName() { - return NameImpl.create("mustUnderstand", null, NameImpl.SOAP11_NAMESPACE); - } - - // mustUnderstand attribute has literal value "1" or "0" - protected String getMustunderstandLiteralValue(boolean mustUnderstand) { - return (mustUnderstand == true ? "1" : "0"); - } - - protected boolean getMustunderstandAttributeValue(String mu) { - if ("1".equals(mu) || "true".equalsIgnoreCase(mu)) - return true; - return false; - } - - // relay not supported by SOAP 1.1 - protected NameImpl getRelayAttributeName() { - log.log( - Level.SEVERE, - "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1", - new String[] { "Relay" }); - throw new UnsupportedOperationException("Relay not supported by SOAP 1.1"); - } - - protected String getRelayLiteralValue(boolean relayAttr) { - log.log( - Level.SEVERE, - "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1", - new String[] { "Relay" }); - throw new UnsupportedOperationException("Relay not supported by SOAP 1.1"); - } - - protected boolean getRelayAttributeValue(String mu) { - log.log( - Level.SEVERE, - "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1", - new String[] { "Relay" }); - throw new UnsupportedOperationException("Relay not supported by SOAP 1.1"); - } - - protected String getActorOrRole() { - return getActor(); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_1 pkg - -# Error messages -SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Operation {0} not supported by SOAP 1.1 -SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attribute {0} not supported by SOAP 1.1 -SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Operation {0} not supported by SOAP 1.1 -SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream does not represent a valid SOAP 1.1 Message -SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Cannot add Detail, Detail already exists -SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Namespace Warning, Standard Faultcode {0}, should ideally be in SOAP 1.1 Namespace -SAAJ0307.impl.no.ns.URI=SAAJ0307: Empty/Null NamespaceURI specified for faultCode {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_de.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_de.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_1 pkg - -# Error messages -SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Vorgang {0} von SOAP 1.1 nicht unterst\u00FCtzt -SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attribut {0} von SOAP 1.1 nicht unterst\u00FCtzt -SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Vorgang {0} von SOAP 1.1 nicht unterst\u00FCtzt -SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream stellt keine g\u00FCltige SOAP 1.1-Nachricht dar -SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden -SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Namespace-Warnung, Standard-Faultcode {0}, sollte im Idealfall in SOAP 1.1 Namespace enthalten sein -SAAJ0307.impl.no.ns.URI=SAAJ0307: Leerer/Null-NamespaceURI f\u00FCr faultCode {0} angegeben diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_es.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_es.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_1 pkg - -# Error messages -SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: la operaci\u00F3n {0} no est\u00E1 soportada en SOAP 1.1 -SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: el atributo {0} no est\u00E1 soportado en SOAP 1.1 -SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: la operaci\u00F3n {0} no est\u00E1 soportada en SOAP 1.1 -SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream no representa un mensaje de SOAP 1.1 v\u00E1lido -SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: no se puede agregar el detalle. El detalle ya existe -SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: advertencia de espacio de nombres; lo recomendable es que el c\u00F3digo de fallo est\u00E1ndar {0} est\u00E9 en un espacio de nombres de SOAP 1.1 -SAAJ0307.impl.no.ns.URI=SAAJ0307: se ha especificado un URI de espacio de nombres vac\u00EDo o nulo para el c\u00F3digo de fallo {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_fr.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_fr.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_1 pkg - -# Error messages -SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301 : op\u00E9ration {0} non prise en charge par SOAP 1.1 -SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302 : attribut {0} non pris en charge par SOAP 1.1 -SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303 : op\u00E9ration {0} non prise en charge par SOAP 1.1 -SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304 : InputStream ne repr\u00E9sente pas un message SOAP 1.1 valide -SAAJ0305.ver1_2.detail.exists.error=SAAJ0157 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0 -SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306 : avertissement d''espace de noms, Faultcode standard {0}, doit id\u00E9alement \u00EAtre dans l''espace de noms SOAP 1.1 -SAAJ0307.impl.no.ns.URI=SAAJ0307 : NamespaceURI vide/NULL indiqu\u00E9 pour faultCode {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_it.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_it.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_1 pkg - -# Error messages -SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Operazione {0} non supportata da SOAP 1.1 -SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attributo {0} non supportato da SOAP 1.1 -SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Operazione {0} non supportata da SOAP 1.1 -SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream non rappresenta un messaggio SOAP 1.1 valido -SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Impossibile aggiungere Detail. Detail esiste gi\u00E0. -SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: L''avvertenza dello spazio di nomi, codice di errore standard {0}, dovrebbe trovarsi nello spazio di nomi SOAP 1.1 -SAAJ0307.impl.no.ns.URI=SAAJ0307: NamespaceURI nomi vuoto/nullo specificato per faultCode {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ja.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ja.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_1 pkg - -# Error messages -SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: \u64CD\u4F5C{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: \u5C5E\u6027{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: \u64CD\u4F5C{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 -SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream\u306F\u6709\u52B9\u306ASOAP 1.1\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u3057\u3066\u3044\u307E\u305B\u3093 -SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059 -SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u8B66\u544A\u3001\u6A19\u6E96\u306EFaultcode {0}\u3001SOAP 1.1\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -SAAJ0307.impl.no.ns.URI=SAAJ0307: faultCode {0}\u306B\u6307\u5B9A\u3055\u308C\u305FNamespaceURI\u304C\u7A7A/Null\u3067\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ko.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ko.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_1 pkg - -# Error messages -SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC791\uC5C5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC18D\uC131\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC791\uC5C5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream\uC774 \uC801\uD569\uD55C SOAP 1.1 \uBA54\uC2DC\uC9C0\uB97C \uB098\uD0C0\uB0B4\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. -SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \uB124\uC784\uC2A4\uD398\uC774\uC2A4 \uACBD\uACE0\uC785\uB2C8\uB2E4. \uD45C\uC900 Faultcode {0}\uC740(\uB294) SOAP 1.1 \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4. -SAAJ0307.impl.no.ns.URI=SAAJ0307: faultCode {0}\uC5D0 \uB300\uD574 \uBE48/\uB110 NamespaceURI\uAC00 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_pt_BR.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_pt_BR.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_1 pkg - -# Error messages -SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: opera\u00E7\u00E3o {0} n\u00E3o suportada por SOAP 1.1 -SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: o atributo {0} n\u00E3o \u00E9 suportado por SOAP 1.1 -SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: opera\u00E7\u00E3o {0} n\u00E3o suportada por SOAP 1.1 -SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: o InputStream n\u00E3o representa uma Mensagem SOAP 1.2 v\u00E1lida -SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe -SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Advert\u00EAncia de Namespace, C\u00F3digo de falha Padr\u00E3o {0}, devem estar no Namespace SOAP 1.1 -SAAJ0307.impl.no.ns.URI=SAAJ0307: NamespaceURI Vazio/Nulo especificado para faultCode {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_CN.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_CN.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_1 pkg - -# Error messages -SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1 \u4E0D\u652F\u6301\u64CD\u4F5C{0} -SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1 \u4E0D\u652F\u6301\u5C5E\u6027{0} -SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1 \u4E0D\u652F\u6301\u64CD\u4F5C{0} -SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream \u4E0D\u8868\u793A\u6709\u6548\u7684 SOAP 1.1 \u6D88\u606F -SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728 -SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u540D\u79F0\u7A7A\u95F4\u8B66\u544A, \u6807\u51C6\u6545\u969C\u4EE3\u7801 {0} \u6700\u9002\u5408\u5728 SOAP 1.1 \u540D\u79F0\u7A7A\u95F4\u4E2D\u4F7F\u7528 -SAAJ0307.impl.no.ns.URI=SAAJ0307: \u4E3A faultCode {0} \u6307\u5B9A\u7684 NamespaceURI \u5FC5\u987B\u4E3A\u7A7A/\u7A7A\u503C diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_TW.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_TW.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,36 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_1 pkg - -# Error messages -SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1 \u4E0D\u652F\u63F4\u4F5C\u696D {0} -SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1 \u4E0D\u652F\u63F4\u5C6C\u6027 {0} -SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1 \u4E0D\u652F\u63F4\u4F5C\u696D {0} -SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream \u4E0D\u4EE3\u8868\u6709\u6548\u7684 SOAP 1.1 \u8A0A\u606F -SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728 -SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u547D\u540D\u7A7A\u9593\u8B66\u544A, \u6A19\u6E96 Faultcode {0}, \u61C9\u8A72\u4F4D\u65BC SOAP 1.1 \u547D\u540D\u7A7A\u9593\u4E2D -SAAJ0307.impl.no.ns.URI=SAAJ0307: \u70BA faultCode {0} \u6307\u5B9A\u7684\u662F\u7A7A\u7684/\u7A7A\u503C NamespaceURI diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Message1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Message1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,131 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import java.io.IOException; -import java.io.InputStream; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.xml.soap.*; -import javax.xml.stream.XMLStreamReader; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType; -import com.sun.xml.internal.messaging.saaj.soap.MessageImpl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - -public class Message1_1Impl extends MessageImpl implements SOAPConstants { - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings"); - - public Message1_1Impl() { - super(); - } - - public Message1_1Impl(boolean isFastInfoset, boolean acceptFastInfoset) { - super(isFastInfoset, acceptFastInfoset); - } - - public Message1_1Impl(SOAPMessage msg) { - super(msg); - } - - // unused. can we delete this? - Kohsuke - public Message1_1Impl(MimeHeaders headers, InputStream in) - throws IOException, SOAPExceptionImpl { - super(headers, in); - } - - public Message1_1Impl(MimeHeaders headers, ContentType ct, int stat, InputStream in) - throws SOAPExceptionImpl { - super(headers,ct,stat,in); - } - - public Message1_1Impl(MimeHeaders headers, ContentType ct, int stat, XMLStreamReader reader) - throws SOAPExceptionImpl { - super(headers,ct,stat,reader); - } - - public SOAPPart getSOAPPart() { - if (soapPartImpl == null) { - soapPartImpl = new SOAPPart1_1Impl(this); - } - return soapPartImpl; - } - - protected boolean isCorrectSoapVersion(int contentTypeId) { - return (contentTypeId & SOAP1_1_FLAG) != 0; - } - - public String getAction() { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - new String[] { "Action" }); - throw new UnsupportedOperationException("Operation not supported by SOAP 1.1"); - } - - public void setAction(String type) { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - new String[] { "Action" }); - throw new UnsupportedOperationException("Operation not supported by SOAP 1.1"); - } - - public String getCharset() { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - new String[] { "Charset" }); - throw new UnsupportedOperationException("Operation not supported by SOAP 1.1"); - } - - public void setCharset(String charset) { - log.log( - Level.SEVERE, - "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", - new String[] { "Charset" }); - throw new UnsupportedOperationException("Operation not supported by SOAP 1.1"); - } - - protected String getExpectedContentType() { - return isFastInfoset ? "application/fastinfoset" : "text/xml"; - } - - protected String getExpectedAcceptHeader() { - String accept = "text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"; - return acceptFastInfoset ? ("application/fastinfoset, " + accept) : accept; - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPFactory1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPFactory1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,70 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import javax.xml.soap.Detail; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPFault; - -import javax.xml.namespace.QName; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl; - -public class SOAPFactory1_1Impl extends SOAPFactoryImpl { - protected SOAPDocumentImpl createDocument() { - return (new SOAPPart1_1Impl()).getDocument(); - } - - public Detail createDetail() throws SOAPException { - return new Detail1_1Impl(createDocument()); - } - - public SOAPFault createFault(String reasonText, QName faultCode) - throws SOAPException { - if (faultCode == null) { - throw new IllegalArgumentException("faultCode argument for createFault was passed NULL"); - } - if (reasonText == null) { - throw new IllegalArgumentException("reasonText argument for createFault was passed NULL"); - } - Fault1_1Impl fault = new Fault1_1Impl(createDocument(), null); - fault.setFaultCode(faultCode); - fault.setFaultString(reasonText); - return fault; - } - - public SOAPFault createFault() throws SOAPException { - Fault1_1Impl fault = new Fault1_1Impl(createDocument(), null); - fault.setFaultCode(fault.getDefaultFaultCode()); - fault.setFaultString("Fault string, and possibly fault code, not set"); - return fault; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPMessageFactory1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPMessageFactory1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import java.io.IOException; -import java.io.InputStream; - -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl; -import com.sun.xml.internal.messaging.saaj.soap.MessageImpl; - -public class SOAPMessageFactory1_1Impl extends MessageFactoryImpl { - - public SOAPMessage createMessage() throws SOAPException { - return new Message1_1Impl(); - } - - public SOAPMessage createMessage(boolean isFastInfoset, - boolean acceptFastInfoset) throws SOAPException - { - return new Message1_1Impl(isFastInfoset, acceptFastInfoset); - } - - public SOAPMessage createMessage(MimeHeaders headers, InputStream in) throws IOException, SOAPExceptionImpl { - - if (headers == null) { - headers = new MimeHeaders(); - } - - if (getContentType(headers) == null) { - headers.setHeader("Content-Type", SOAPConstants.SOAP_1_1_CONTENT_TYPE); - } - - MessageImpl msg = new Message1_1Impl(headers, in); - msg.setLazyAttachments(lazyAttachments); - return msg; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPPart1_1Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPPart1_1Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_1; - -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.xml.soap.SOAPConstants; -import javax.xml.soap.SOAPException; -import javax.xml.transform.Source; - -import com.sun.xml.internal.messaging.saaj.soap.*; -import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; -import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser; - -public class SOAPPart1_1Impl extends SOAPPartImpl implements SOAPConstants { - - protected static final Logger log = - Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings"); - - public SOAPPart1_1Impl() { - super(); - } - - public SOAPPart1_1Impl(MessageImpl message) { - super(message); - } - - protected String getContentType() { - return isFastInfoset() ? "application/fastinfoset" : "text/xml"; - } - - protected Envelope createEnvelopeFromSource() throws SOAPException { - // Record the presence of xml declaration before the envelope gets - // created. - XMLDeclarationParser parser = lookForXmlDecl(); - Source tmp = source; - source = null; - EnvelopeImpl envelope = - (EnvelopeImpl) EnvelopeFactory.createEnvelope(tmp, this); - - if (!envelope.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE)) { - log.severe("SAAJ0304.ver1_1.msg.invalid.SOAP1.1"); - throw new SOAPException("InputStream does not represent a valid SOAP 1.1 Message"); - } - - if (parser != null && !omitXmlDecl) { - envelope.setOmitXmlDecl("no"); - envelope.setXmlDecl(parser.getXmlDeclaration()); - envelope.setCharsetEncoding(parser.getEncoding()); - } - return envelope; - } - - protected Envelope createEmptyEnvelope(String prefix) - throws SOAPException { - return new Envelope1_1Impl(getDocument(), prefix, true, true); - } - - protected SOAPPartImpl duplicateType() { - return new SOAPPart1_1Impl(); - } - - @Override - public String getSOAPNamespace() { - return SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE; - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Body1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Body1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,197 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import java.util.logging.Logger; -import java.util.Locale; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import org.w3c.dom.Node; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public class Body1_2Impl extends BodyImpl { - - protected static final Logger log = - Logger.getLogger(Body1_2Impl.class.getName(), - "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); - - public Body1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) { - super(ownerDocument, NameImpl.createBody1_2Name(prefix)); - } - - protected NameImpl getFaultName(String name) { - return NameImpl.createFault1_2Name(name, null); - } - - protected SOAPBodyElement createBodyElement(Name name) { - return new BodyElement1_2Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name); - } - protected SOAPBodyElement createBodyElement(QName name) { - return new BodyElement1_2Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name); - } - - protected QName getDefaultFaultCode() { - return SOAPConstants.SOAP_RECEIVER_FAULT; - } - - public SOAPFault addFault() throws SOAPException { - if (hasAnyChildElement()) { - log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); - throw new SOAPExceptionImpl( - "No other element except Fault allowed in SOAPBody"); - } - return super.addFault(); - } - - /* - * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle - * attribute to SOAP Body (SOAP 1.2 spec, part 1, section 5.1.1) - */ - public void setEncodingStyle(String encodingStyle) throws SOAPException { - log.severe("SAAJ0401.ver1_2.no.encodingstyle.in.body"); - throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Body"); - } - - /* - * Override addAttribute of ElementImpl to restrict adding encodingStyle - * attribute to SOAP Body (SOAP 1.2 spec, part 1, section 5.1.1) - */ - public SOAPElement addAttribute(Name name, String value) - throws SOAPException { - if (name.getLocalName().equals("encodingStyle") - && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) { - - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } - - public SOAPElement addAttribute(QName name, String value) - throws SOAPException { - if (name.getLocalPart().equals("encodingStyle") - && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) { - - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } - - protected boolean isFault(SOAPElement child) { - return (child.getElementName().getURI().equals( - SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE) && - child.getElementName().getLocalName().equals( - "Fault")); - } - - protected SOAPFault createFaultElement() { - return new Fault1_2Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), getPrefix()); - } - - /* - * section 5.4 of SOAP1.2 candidate recommendation says that a - * SOAP message MUST contain a single Fault element as the only - * child element of the SOAP Body. - */ - public SOAPBodyElement addBodyElement(Name name) throws SOAPException { - if (hasFault()) { - log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); - throw new SOAPExceptionImpl( - "No other element except Fault allowed in SOAPBody"); - } - return super.addBodyElement(name); - } - - public SOAPBodyElement addBodyElement(QName name) throws SOAPException { - if (hasFault()) { - log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); - throw new SOAPExceptionImpl( - "No other element except Fault allowed in SOAPBody"); - } - return super.addBodyElement(name); - } - - protected SOAPElement addElement(Name name) throws SOAPException { - if (hasFault()) { - log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); - throw new SOAPExceptionImpl( - "No other element except Fault allowed in SOAPBody"); - } - return super.addElement(name); - } - - protected SOAPElement addElement(QName name) throws SOAPException { - if (hasFault()) { - log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); - throw new SOAPExceptionImpl( - "No other element except Fault allowed in SOAPBody"); - } - return super.addElement(name); - } - - public SOAPElement addChildElement(Name name) throws SOAPException { - if (hasFault()) { - log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); - throw new SOAPExceptionImpl( - "No other element except Fault allowed in SOAPBody"); - } - return super.addChildElement(name); - } - - public SOAPElement addChildElement(QName name) throws SOAPException { - if (hasFault()) { - log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); - throw new SOAPExceptionImpl( - "No other element except Fault allowed in SOAPBody"); - } - return super.addChildElement(name); - } - - private boolean hasAnyChildElement() { - Node currentNode = getFirstChild(); - while (currentNode != null) { - if (currentNode.getNodeType() == Node.ELEMENT_NODE) - return true; - currentNode = currentNode.getNextSibling(); - } - return false; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/BodyElement1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/BodyElement1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import javax.xml.namespace.QName; -import javax.xml.soap.Name; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPElement; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.BodyElementImpl; - -public class BodyElement1_2Impl extends BodyElementImpl { - - public BodyElement1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) { - super(ownerDoc, qname); - } - - public BodyElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) { - super(ownerDoc, qname); - } - - public SOAPElement setElementQName(QName newName) throws SOAPException { - BodyElementImpl copy = - new BodyElement1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName); - return replaceElementWithSOAPElement(this,copy); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Detail1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Detail1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import java.util.logging.Logger; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.DetailImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public class Detail1_2Impl extends DetailImpl { - - protected static final Logger log = - Logger.getLogger(Detail1_2Impl.class.getName(), - "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); - - public Detail1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) { - super(ownerDocument, NameImpl.createSOAP12Name("Detail", prefix)); - } - - public Detail1_2Impl(SOAPDocumentImpl ownerDocument) { - super(ownerDocument, NameImpl.createSOAP12Name("Detail")); - } - - protected DetailEntry createDetailEntry(Name name) { - return new DetailEntry1_2Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name); - } - - protected DetailEntry createDetailEntry(QName name) { - return new DetailEntry1_2Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name); - } - - /* - * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle - * attribute to SOAP Detail (SOAP 1.2 spec, part 1, section 5.1.1) - */ - public void setEncodingStyle(String encodingStyle) throws SOAPException { - log.severe("SAAJ0403.ver1_2.no.encodingStyle.in.detail"); - throw new SOAPExceptionImpl("EncodingStyle attribute cannot appear in Detail"); - } - - public SOAPElement addAttribute(Name name, String value) - throws SOAPException { - if (name.getLocalName().equals("encodingStyle") - && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) { - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } - - public SOAPElement addAttribute(QName name, String value) - throws SOAPException { - if (name.getLocalPart().equals("encodingStyle") - && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) { - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/DetailEntry1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/DetailEntry1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import javax.xml.namespace.QName; -import javax.xml.soap.Name; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPElement; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.DetailEntryImpl; - -public class DetailEntry1_2Impl extends DetailEntryImpl { - - public DetailEntry1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) { - super(ownerDoc, qname); - } - - public DetailEntry1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) { - super(ownerDoc, qname); - } - - public SOAPElement setElementQName(QName newName) throws SOAPException { - DetailEntryImpl copy = - new DetailEntry1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName); - return replaceElementWithSOAPElement(this,copy); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Envelope1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Envelope1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import java.util.logging.Logger; -import java.util.logging.Level; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public class Envelope1_2Impl extends EnvelopeImpl { - - protected static final Logger log = - Logger.getLogger(Envelope1_2Impl.class.getName(), - "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); - - public Envelope1_2Impl(SOAPDocumentImpl ownerDoc, String prefix) { - super(ownerDoc, NameImpl.createEnvelope1_2Name(prefix)); - } - - public Envelope1_2Impl( - SOAPDocumentImpl ownerDoc, - String prefix, - boolean createHeader, - boolean createBody) - throws SOAPException { - super( - ownerDoc, - NameImpl.createEnvelope1_2Name(prefix), - createHeader, - createBody); - } - - protected NameImpl getBodyName(String prefix) { - return NameImpl.createBody1_2Name(prefix); - } - - protected NameImpl getHeaderName(String prefix) { - return NameImpl.createHeader1_2Name(prefix); - } - - /* - * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle - * attribute to SOAP Envelope (SOAP 1.2 spec, part 1, section 5.1.1) - */ - public void setEncodingStyle(String encodingStyle) throws SOAPException { - log.severe("SAAJ0404.ver1_2.no.encodingStyle.in.envelope"); - throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Envelope"); - } - - /* - * Override addAttribute of ElementImpl to restrict adding encodingStyle - * attribute to SOAP Envelope (SOAP 1.2 spec, part 1, section 5.1.1) - */ - public SOAPElement addAttribute(Name name, String value) - throws SOAPException { - if (name.getLocalName().equals("encodingStyle") - && name.getURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) { - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } - - public SOAPElement addAttribute(QName name, String value) - throws SOAPException { - if (name.getLocalPart().equals("encodingStyle") - && name.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) { - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } - - - /* - * Override addChildElement method to ensure that no element - * is added after body in SOAP 1.2. - */ - public SOAPElement addChildElement(Name name) throws SOAPException { - // check if body already exists - if (getBody() != null) { - log.severe("SAAJ0405.ver1_2.body.must.last.in.envelope"); - throw new SOAPExceptionImpl( - "Body must be the last element in" + " SOAP Envelope"); - } - return super.addChildElement(name); - } - - public SOAPElement addChildElement(QName name) throws SOAPException { - // check if body already exists - if (getBody() != null) { - log.severe("SAAJ0405.ver1_2.body.must.last.in.envelope"); - throw new SOAPExceptionImpl( - "Body must be the last element in" + " SOAP Envelope"); - } - return super.addChildElement(name); - } - - - /* - * Ideally we should be overriding other addChildElement() methods as well - * but we are not adding them here since internally all those call the - * method addChildElement(Name name). - * In future, if this behaviour changes, then we would need to override - * all the rest of them as well. - * - */ - - public SOAPElement addTextNode(String text) throws SOAPException { - log.log( - Level.SEVERE, - "SAAJ0416.ver1_2.adding.text.not.legal", - getElementQName()); - throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Envelope is not legal"); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Fault1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Fault1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,562 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import java.util.*; -import java.util.logging.Logger; -import java.util.logging.Level; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.*; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - - -public class Fault1_2Impl extends FaultImpl { - - protected static final Logger log = - Logger.getLogger( - LogDomainConstants.SOAP_VER1_2_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); - - private static final QName textName = - new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Text"); - private final QName valueName = - new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Value", getPrefix()); - private final QName subcodeName = - new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Subcode", getPrefix()); - - private SOAPElement innermostSubCodeElement = null; - - public Fault1_2Impl(SOAPDocumentImpl ownerDoc, String name, String prefix) { - super(ownerDoc, NameImpl.createFault1_2Name(name, prefix)); - } - - public Fault1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) { - super(ownerDocument, NameImpl.createFault1_2Name(null, prefix)); - } - - protected NameImpl getDetailName() { - return NameImpl.createSOAP12Name("Detail", getPrefix()); - } - - protected NameImpl getFaultCodeName() { - return NameImpl.createSOAP12Name("Code", getPrefix()); - } - - protected NameImpl getFaultStringName() { - return getFaultReasonName(); - } - - protected NameImpl getFaultActorName() { - return getFaultRoleName(); - } - - private NameImpl getFaultRoleName() { - return NameImpl.createSOAP12Name("Role", getPrefix()); - } - - private NameImpl getFaultReasonName() { - return NameImpl.createSOAP12Name("Reason", getPrefix()); - } - - private NameImpl getFaultReasonTextName() { - return NameImpl.createSOAP12Name("Text", getPrefix()); - } - - private NameImpl getFaultNodeName() { - return NameImpl.createSOAP12Name("Node", getPrefix()); - } - - private static NameImpl getXmlLangName() { - return NameImpl.createXmlName("lang"); - } - - protected DetailImpl createDetail() { - return new Detail1_2Impl( - ((SOAPDocument) getOwnerDocument()).getDocument()); - } - - protected FaultElementImpl createSOAPFaultElement(String localName) { - return new FaultElement1_2Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - localName); - } - - protected void checkIfStandardFaultCode(String faultCode, String uri) - throws SOAPException { - QName qname = new QName(uri, faultCode); - if (SOAPConstants.SOAP_DATAENCODINGUNKNOWN_FAULT.equals(qname) || - SOAPConstants.SOAP_MUSTUNDERSTAND_FAULT.equals(qname) || - SOAPConstants.SOAP_RECEIVER_FAULT.equals(qname) || - SOAPConstants.SOAP_SENDER_FAULT.equals(qname) || - SOAPConstants.SOAP_VERSIONMISMATCH_FAULT.equals(qname)) - return; - log.log( - Level.SEVERE, - "SAAJ0435.ver1_2.code.not.standard", - qname); - throw new SOAPExceptionImpl(qname + " is not a standard Code value"); - } - - protected void finallySetFaultCode(String faultcode) throws SOAPException { - SOAPElement value = this.faultCodeElement.addChildElement(valueName); - value.addTextNode(faultcode); - } - - private void findReasonElement() { - findFaultStringElement(); - } - - public Iterator getFaultReasonTexts() throws SOAPException { - // Fault Reason has similar semantics as faultstring - if (this.faultStringElement == null) - findReasonElement(); - Iterator eachTextElement = - this.faultStringElement.getChildElements(textName); - List texts = new ArrayList(); - while (eachTextElement.hasNext()) { - SOAPElement textElement = (SOAPElement) eachTextElement.next(); - Locale thisLocale = getLocale(textElement); - if (thisLocale == null) { - log.severe("SAAJ0431.ver1_2.xml.lang.missing"); - throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element"); - } - texts.add(textElement.getValue()); - } - if (texts.isEmpty()) { - log.severe("SAAJ0434.ver1_2.text.element.not.present"); - throw new SOAPExceptionImpl("env:Text must be present inside env:Reason"); - } - return texts.iterator(); - } - - public void addFaultReasonText(String text, java.util.Locale locale) - throws SOAPException { - - if (locale == null) { - log.severe("SAAJ0430.ver1_2.locale.required"); - throw new SOAPException("locale is required and must not be null"); - } - - // Fault Reason has similar semantics as faultstring - if (this.faultStringElement == null) - findReasonElement(); - SOAPElement reasonText; - - if (this.faultStringElement == null) { - this.faultStringElement = addSOAPFaultElement("Reason"); - reasonText = - this.faultStringElement.addChildElement( - getFaultReasonTextName()); - } else { - removeDefaultFaultString(); - reasonText = getFaultReasonTextElement(locale); - if (reasonText != null) { - reasonText.removeContents(); - } else { - reasonText = - this.faultStringElement.addChildElement( - getFaultReasonTextName()); - } - } - - String xmlLang = localeToXmlLang(locale); - reasonText.addAttribute(getXmlLangName(), xmlLang); - reasonText.addTextNode(text); - } - - private void removeDefaultFaultString() throws SOAPException { - SOAPElement reasonText = getFaultReasonTextElement(Locale.getDefault()); - if (reasonText != null) { - String defaultFaultString = - "Fault string, and possibly fault code, not set"; - if (defaultFaultString.equals(reasonText.getValue())) { - reasonText.detachNode(); - } - } - } - - public String getFaultReasonText(Locale locale) throws SOAPException { - - if (locale == null) - return null; - - // Fault Reason has similar semantics as faultstring - if (this.faultStringElement == null) - findReasonElement(); - - if (this.faultStringElement != null) { - SOAPElement textElement = getFaultReasonTextElement(locale); - if (textElement != null) { - textElement.normalize(); - return textElement.getFirstChild().getNodeValue(); - } - } - - return null; - } - - public Iterator getFaultReasonLocales() throws SOAPException { - // Fault Reason has similar semantics as faultstring - if (this.faultStringElement == null) - findReasonElement(); - Iterator eachTextElement = - this.faultStringElement.getChildElements(textName); - List localeSet = new ArrayList(); - while (eachTextElement.hasNext()) { - SOAPElement textElement = (SOAPElement) eachTextElement.next(); - Locale thisLocale = getLocale(textElement); - if (thisLocale == null) { - log.severe("SAAJ0431.ver1_2.xml.lang.missing"); - throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element"); - } - localeSet.add(thisLocale); - } - if (localeSet.isEmpty()) { - log.severe("SAAJ0434.ver1_2.text.element.not.present"); - throw new SOAPExceptionImpl("env:Text elements with mandatory xml:lang attributes must be present inside env:Reason"); - } - return localeSet.iterator(); - } - - public Locale getFaultStringLocale() { - Locale locale = null; - try { - locale = (Locale) getFaultReasonLocales().next(); - } catch (SOAPException e) {} - return locale; - } - - /* - * This method assumes that locale and faultStringElement are non-null - */ - private SOAPElement getFaultReasonTextElement(Locale locale) - throws SOAPException { - - // Fault Reason has similar semantics as faultstring - Iterator eachTextElement = - this.faultStringElement.getChildElements(textName); - while (eachTextElement.hasNext()) { - SOAPElement textElement = (SOAPElement) eachTextElement.next(); - Locale thisLocale = getLocale(textElement); - if (thisLocale == null) { - log.severe("SAAJ0431.ver1_2.xml.lang.missing"); - throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element"); - } - if (thisLocale.equals(locale)) { - return textElement; - } - } - return null; - } - - public String getFaultNode() { - SOAPElement faultNode = findAndConvertChildElement(getFaultNodeName()); - if (faultNode == null) { - return null; - } - return faultNode.getValue(); - } - - public void setFaultNode(String uri) throws SOAPException { - SOAPElement faultNode = findAndConvertChildElement(getFaultNodeName()); - if (faultNode != null) { - faultNode.detachNode(); - } - faultNode = createSOAPFaultElement(getFaultNodeName()); - faultNode = faultNode.addTextNode(uri); - if (getFaultRole() != null) { - insertBefore(faultNode, this.faultActorElement); - return; - } - if (hasDetail()) { - insertBefore(faultNode, this.detail); - return; - } - addNode(faultNode); - } - - public String getFaultRole() { - return getFaultActor(); - } - - public void setFaultRole(String uri) throws SOAPException { - if (this.faultActorElement == null) - findFaultActorElement(); - if (this.faultActorElement != null) - this.faultActorElement.detachNode(); - this.faultActorElement = - createSOAPFaultElement(getFaultActorName()); - this.faultActorElement.addTextNode(uri); - if (hasDetail()) { - insertBefore(this.faultActorElement, this.detail); - return; - } - addNode(this.faultActorElement); - } - - public String getFaultCode() { - if (this.faultCodeElement == null) - findFaultCodeElement(); - Iterator codeValues = - this.faultCodeElement.getChildElements(valueName); - return ((SOAPElement) codeValues.next()).getValue(); - } - - public QName getFaultCodeAsQName() { - String faultcode = getFaultCode(); - if (faultcode == null) { - return null; - } - if (this.faultCodeElement == null) - findFaultCodeElement(); - Iterator valueElements = - this.faultCodeElement.getChildElements(valueName); - return convertCodeToQName( - faultcode, - (SOAPElement) valueElements.next()); - } - - public Name getFaultCodeAsName() { - String faultcode = getFaultCode(); - if (faultcode == null) { - return null; - } - if (this.faultCodeElement == null) - findFaultCodeElement(); - Iterator valueElements = - this.faultCodeElement.getChildElements(valueName); - return NameImpl.convertToName( - convertCodeToQName( - faultcode, - (SOAPElement) valueElements.next())); - } - - public String getFaultString() { - String reason = null; - try { - //reason = getFaultReasonText(Locale.getDefault()); - //if (reason == null) - reason = (String) getFaultReasonTexts().next(); - } catch (SOAPException e) {} - return reason; - } - - public void setFaultString(String faultString) throws SOAPException { - addFaultReasonText(faultString, Locale.getDefault()); - } - - public void setFaultString( - String faultString, - Locale locale) - throws SOAPException { - addFaultReasonText(faultString, locale); - } - - public void appendFaultSubcode(QName subcode) throws SOAPException { - if (subcode == null) { - return; - } - if (subcode.getNamespaceURI() == null || - "".equals(subcode.getNamespaceURI())) { - - log.severe("SAAJ0432.ver1_2.subcode.not.ns.qualified"); - throw new SOAPExceptionImpl("A Subcode must be namespace-qualified"); - } - if (innermostSubCodeElement == null) { - if (faultCodeElement == null) - findFaultCodeElement(); - innermostSubCodeElement = faultCodeElement; - } - String prefix = null; - if (subcode.getPrefix() == null || "".equals(subcode.getPrefix())) { - prefix = - ((ElementImpl) innermostSubCodeElement).getNamespacePrefix( - subcode.getNamespaceURI()); - } else - prefix = subcode.getPrefix(); - if (prefix == null || "".equals(prefix)) { - prefix = "ns1"; - } - innermostSubCodeElement = - innermostSubCodeElement.addChildElement(subcodeName); - SOAPElement subcodeValueElement = - innermostSubCodeElement.addChildElement(valueName); - ((ElementImpl) subcodeValueElement).ensureNamespaceIsDeclared( - prefix, - subcode.getNamespaceURI()); - subcodeValueElement.addTextNode(prefix + ":" + subcode.getLocalPart()); - } - - public void removeAllFaultSubcodes() { - if (this.faultCodeElement == null) - findFaultCodeElement(); - Iterator subcodeElements = - this.faultCodeElement.getChildElements(subcodeName); - if (subcodeElements.hasNext()) { - SOAPElement subcode = (SOAPElement) subcodeElements.next(); - subcode.detachNode(); - } - } - - public Iterator getFaultSubcodes() { - if (this.faultCodeElement == null) - findFaultCodeElement(); - final List subcodeList = new ArrayList(); - SOAPElement currentCodeElement = this.faultCodeElement; - Iterator subcodeElements = - currentCodeElement.getChildElements(subcodeName); - while (subcodeElements.hasNext()) { - currentCodeElement = (ElementImpl) subcodeElements.next(); - Iterator valueElements = - currentCodeElement.getChildElements(valueName); - SOAPElement valueElement = (SOAPElement) valueElements.next(); - String code = valueElement.getValue(); - subcodeList.add(convertCodeToQName(code, valueElement)); - subcodeElements = currentCodeElement.getChildElements(subcodeName); - } - //return subcodeList.iterator(); - return new Iterator() { - Iterator subCodeIter = subcodeList.iterator(); - - public boolean hasNext() { - return subCodeIter.hasNext(); - } - - public Object next() { - return subCodeIter.next(); - } - - public void remove() { - throw new UnsupportedOperationException( - "Method remove() not supported on SubCodes Iterator"); - } - }; - } - - private static Locale getLocale(SOAPElement reasonText) { - return xmlLangToLocale(reasonText.getAttributeValue(getXmlLangName())); - } - - /* - * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle - * attribute to SOAP Fault (SOAP 1.2 spec, part 1, section 5.1.1) - */ - public void setEncodingStyle(String encodingStyle) throws SOAPException { - log.severe("SAAJ0407.ver1_2.no.encodingStyle.in.fault"); - throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Fault"); - } - - public SOAPElement addAttribute(Name name, String value) - throws SOAPException { - if (name.getLocalName().equals("encodingStyle") - && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) { - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } - - public SOAPElement addAttribute(QName name, String value) - throws SOAPException { - if (name.getLocalPart().equals("encodingStyle") - && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) { - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } - - public SOAPElement addTextNode(String text) throws SOAPException { - log.log( - Level.SEVERE, - "SAAJ0416.ver1_2.adding.text.not.legal", - getElementQName()); - throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Fault is not legal"); - } - - public SOAPElement addChildElement(SOAPElement element) - throws SOAPException { - String localName = element.getLocalName(); - if ("Detail".equalsIgnoreCase(localName)) { - if (hasDetail()) { - log.severe("SAAJ0436.ver1_2.detail.exists.error"); - throw new SOAPExceptionImpl("Cannot add Detail, Detail already exists"); - } - String uri = element.getElementQName().getNamespaceURI(); - if (!uri.equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) { - log.severe("SAAJ0437.ver1_2.version.mismatch.error"); - throw new SOAPExceptionImpl("Cannot add Detail, Incorrect SOAP version specified for Detail element"); - } - } - if (element instanceof Detail1_2Impl) { - ElementImpl importedElement = (ElementImpl) importElement(element); - addNode(importedElement); - return convertToSoapElement(importedElement); - } else - return super.addChildElement(element); - } - - protected boolean isStandardFaultElement(String localName) { - if (localName.equalsIgnoreCase("code") || - localName.equalsIgnoreCase("reason") || - localName.equalsIgnoreCase("node") || - localName.equalsIgnoreCase("role") || - localName.equalsIgnoreCase("detail")) { - return true; - } - return false; - } - - protected QName getDefaultFaultCode() { - return SOAPConstants.SOAP_SENDER_FAULT; - } - - protected FaultElementImpl createSOAPFaultElement(QName qname) { - return new FaultElement1_2Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - qname); - } - - protected FaultElementImpl createSOAPFaultElement(Name qname) { - return new FaultElement1_2Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - (NameImpl)qname); - } - - public void setFaultActor(String faultActor) throws SOAPException { - this.setFaultRole(faultActor); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/FaultElement1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/FaultElement1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,99 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.Name; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.FaultElementImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; - -public class FaultElement1_2Impl extends FaultElementImpl { - - public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, NameImpl qname) { - super(ownerDoc, qname); - } - - public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) { - super(ownerDoc, qname); - } - - public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, String localName) { - super(ownerDoc, NameImpl.createSOAP12Name(localName)); - } - - protected boolean isStandardFaultElement() { - String localName = elementQName.getLocalPart(); - if (localName.equalsIgnoreCase("code") || - localName.equalsIgnoreCase("reason") || - localName.equalsIgnoreCase("node") || - localName.equalsIgnoreCase("role")) { - return true; - } - return false; - } - - public SOAPElement setElementQName(QName newName) throws SOAPException { - if (!isStandardFaultElement()) { - FaultElement1_2Impl copy = - new FaultElement1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName); - return replaceElementWithSOAPElement(this,copy); - } else { - return super.setElementQName(newName); - } - } - - public void setEncodingStyle(String encodingStyle) throws SOAPException { - log.severe("SAAJ0408.ver1_2.no.encodingStyle.in.fault.child"); - throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on a Fault child element"); - } - - public SOAPElement addAttribute(Name name, String value) - throws SOAPException { - if (name.getLocalName().equals("encodingStyle") - && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) { - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } - - public SOAPElement addAttribute(QName name, String value) - throws SOAPException { - if (name.getLocalPart().equals("encodingStyle") - && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) { - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Header1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Header1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,159 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import java.util.List; -import java.util.Iterator; -import java.util.logging.Logger; -import java.util.logging.Level; - -import javax.xml.namespace.QName; -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; -import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; - - -public class Header1_2Impl extends HeaderImpl { - - protected static final Logger log = - Logger.getLogger( - LogDomainConstants.SOAP_VER1_2_DOMAIN, - "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); - - public Header1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) { - super(ownerDocument, NameImpl.createHeader1_2Name(prefix)); - } - - protected NameImpl getNotUnderstoodName() { - return NameImpl.createNotUnderstood1_2Name(null); - } - - protected NameImpl getUpgradeName() { - return NameImpl.createUpgrade1_2Name(null); - } - - protected NameImpl getSupportedEnvelopeName() { - return NameImpl.createSupportedEnvelope1_2Name(null); - } - - public SOAPHeaderElement addNotUnderstoodHeaderElement(final QName sourceName) - throws SOAPException { - - if (sourceName == null) { - log.severe("SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader"); - throw new SOAPException("Cannot pass NULL to addNotUnderstoodHeaderElement"); - } - if ("".equals(sourceName.getNamespaceURI())) { - log.severe("SAAJ0417.ver1_2.qname.not.ns.qualified"); - throw new SOAPException("The qname passed to addNotUnderstoodHeaderElement must be namespace-qualified"); - } - String prefix = sourceName.getPrefix(); - if ("".equals(prefix)) { - prefix = "ns1"; - } - Name notunderstoodName = getNotUnderstoodName(); - SOAPHeaderElement notunderstoodHeaderElement = - (SOAPHeaderElement) addChildElement(notunderstoodName); - notunderstoodHeaderElement.addAttribute( - NameImpl.createFromUnqualifiedName("qname"), - getQualifiedName( - new QName( - sourceName.getNamespaceURI(), - sourceName.getLocalPart(), - prefix))); - notunderstoodHeaderElement.addNamespaceDeclaration( - prefix, - sourceName.getNamespaceURI()); - return notunderstoodHeaderElement; - } - - public SOAPElement addTextNode(String text) throws SOAPException { - log.log( - Level.SEVERE, - "SAAJ0416.ver1_2.adding.text.not.legal", - getElementQName()); - throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Header is not legal"); - } - - protected SOAPHeaderElement createHeaderElement(Name name) - throws SOAPException { - String uri = name.getURI(); - if (uri == null || uri.equals("")) { - log.severe("SAAJ0413.ver1_2.header.elems.must.be.ns.qualified"); - throw new SOAPExceptionImpl("SOAP 1.2 header elements must be namespace qualified"); - } - return new HeaderElement1_2Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name); - } - - protected SOAPHeaderElement createHeaderElement(QName name) - throws SOAPException { - String uri = name.getNamespaceURI(); - if (uri == null || uri.equals("")) { - log.severe("SAAJ0413.ver1_2.header.elems.must.be.ns.qualified"); - throw new SOAPExceptionImpl("SOAP 1.2 header elements must be namespace qualified"); - } - return new HeaderElement1_2Impl( - ((SOAPDocument) getOwnerDocument()).getDocument(), - name); - } - - public void setEncodingStyle(String encodingStyle) throws SOAPException { - log.severe("SAAJ0409.ver1_2.no.encodingstyle.in.header"); - throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Header"); - } - - public SOAPElement addAttribute(Name name, String value) - throws SOAPException { - if (name.getLocalName().equals("encodingStyle") - && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) { - - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } - - public SOAPElement addAttribute(QName name, String value) - throws SOAPException { - if (name.getLocalPart().equals("encodingStyle") - && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) { - - setEncodingStyle(value); - } - return super.addAttribute(name, value); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/HeaderElement1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/HeaderElement1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,104 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import java.util.logging.Logger; - -import javax.xml.namespace.QName; -import javax.xml.soap.Name; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPException; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl; -import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; - -public class HeaderElement1_2Impl extends HeaderElementImpl { - - private static final Logger log = - Logger.getLogger(HeaderElement1_2Impl.class.getName(), - "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); - - public HeaderElement1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) { - super(ownerDoc, qname); - } - public HeaderElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) { - super(ownerDoc, qname); - } - - public SOAPElement setElementQName(QName newName) throws SOAPException { - HeaderElementImpl copy = - new HeaderElement1_2Impl((SOAPDocumentImpl)getOwnerDocument(), newName); - return replaceElementWithSOAPElement(this,copy); - } - - protected NameImpl getRoleAttributeName() { - return NameImpl.create("role", null, NameImpl.SOAP12_NAMESPACE); - } - - // Actor equivalent to Role in SOAP 1.2 - protected NameImpl getActorAttributeName() { - return getRoleAttributeName(); - } - - protected NameImpl getMustunderstandAttributeName() { - return NameImpl.create("mustUnderstand", null, NameImpl.SOAP12_NAMESPACE); - } - - // mustUnderstand attribute has literal value "true" or "false" - protected String getMustunderstandLiteralValue(boolean mustUnderstand) { - return (mustUnderstand == true ? "true" : "false"); - } - - protected boolean getMustunderstandAttributeValue(String mu) { - if (mu.equals("true") || mu.equals("1")) - return true; - return false; - } - - protected NameImpl getRelayAttributeName() { - return NameImpl.create("relay", null, NameImpl.SOAP12_NAMESPACE); - } - - //relay attribute has literal value "true" or "false" - protected String getRelayLiteralValue(boolean relay) { - return (relay == true ? "true" : "false"); - } - - protected boolean getRelayAttributeValue(String relay) { - if (relay.equals("true") || relay.equals("1")) - return true; - return false; - } - - protected String getActorOrRole() { - return getRole(); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_2 pkg - -SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle attribute cannot appear on Body -SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: No other element except Fault allowed in SOAPBody -SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle attribute cannot appear on Detail -SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle attribute cannot appear on Envelope -SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body must be last element in SOAPEnvelope -SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope cannot contain anything other than Header and Body -SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle attribute cannot appear on Fault -SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle attribute cannot appear on a Fault child element -SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle attribute cannot appear on Header -SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: Cannot pass NULL to addNotUnderstoodHeaderElement -SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: Argument cannot be null; supportedURIs cannot be null -SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: List of supported URIs cannot be empty -SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 header elements must be namespace qualified -#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 -SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream does not represent a valid SOAP 1.2 Message -# {0} - element qname -SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: Adding text to {0} is not legal -SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: The QName passed to addNotUnderstoodHeaderElement must be namespace-qualified - -#SOAPFault related errors -SAAJ0430.ver1_2.locale.required=SAAJ0430: locale is required and must not be null -SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang" attribute is not present on the Text element -SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: A Subcode must be namespace-qualified -#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} -SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text must be present inside env:Reason -SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} is not a standard Code value -SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Cannot add Detail, Detail already exists -SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Incorrect SOAP version for Detail element, expected SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_de.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_de.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_2 pkg - -SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle-Attribut darf nicht in Nachrichtentext enthalten sein -SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: Kein anderes Element au\u00DFer Fault in SOAPBody zul\u00E4ssig -SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle-Attribut darf nicht in Detail enthalten sein -SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle-Attribut darf nicht in Envelope enthalten sein -SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: "Body" muss letztes Element in SOAPEnvelope sein -SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope darf nur "Header" und "Body" enthalten -SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle-Attribut darf nicht in Fault enthalten sein -SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle-Attribut darf nicht in einem untergeordneten "Fault"-Element enthalten sein -SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle-Attribut darf nicht in "Header" enthalten sein -SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: NULL kann nicht an addNotUnderstoodHeaderElement \u00FCbergeben werden -SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: Argument darf nicht null sein; supportedURIs d\u00FCrfen nicht null sein -SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: Liste der unterst\u00FCtzten URIs darf nicht leer sein -SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 Header-Elemente m\u00FCssen namespace-f\u00E4hig sein -#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 -SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream stellt keine g\u00FCltige SOAP 1.2-Nachricht dar -# {0} - element qname -SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: Hinzuf\u00FCgen von Text zu {0} ist nicht zul\u00E4ssig -SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: Der QName, der an addNotUnderstoodHeaderElement \u00FCbergeben wird, muss namespace-f\u00E4hig sein - -#SOAPFault related errors -SAAJ0430.ver1_2.locale.required=SAAJ0430: Gebietsschema ist erforderlich und darf nicht null sein -SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang"-Attribut ist in "Text"-Element nicht vorhanden -SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Ein Subcode muss namespace-f\u00E4hig sein -#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} -SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text muss innerhalb von env:Reason vorhanden sein -SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} ist kein Standardcodewert -SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden -SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Falsche SOAP-Version f\u00FCr Detail-Element, SOAP 1.2 erwartet diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_es.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_es.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_2 pkg - -SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: el atributo encodingStyle no puede aparecer en el cuerpo -SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: no se permite ning\u00FAn otro elemento, aparte de Fault, en SOAPBody -SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: el atributo encodingStyle no puede aparecer en Detail -SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: el atributo encodingStyle no puede aparecer en Envelope -SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: el cuerpo debe ser el \u00FAltimo elemento en SOAPEnvelope -SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: el elemento Envelope no puede contener nada que no sea Header y Body -SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: el atributo encodingStyle no puede aparecer en Fault -SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: el atributo encodingStyle no puede aparecer en un elemento secundario Fault -SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: el atributo encodingStyle no puede aparecer en Header -SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: no se puede transferir NULL a addNotUnderstoodHeaderElement -SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: el argumento no puede ser nulo y las URI soportadas no pueden ser nulas -SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: la lista de URI soportadas no puede estar vac\u00EDa -SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: los elementos de la cabecera de SOAP 1.2 deben estar cualificados por espacio de nombres -#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 -SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream no representa un mensaje de SOAP 1.2 v\u00E1lido -# {0} - element qname -SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: no es v\u00E1lido agregar texto a {0} -SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: el QName que se ha transferido a addNotUnderstoodHeaderElement debe estar cualificado por espacio de nombres - -#SOAPFault related errors -SAAJ0430.ver1_2.locale.required=SAAJ0430: la configuraci\u00F3n regional es necesaria y no debe ser nula -SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: el atributo "xml:lang" no se encuentra en el elemento de texto -SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: el subc\u00F3digo debe estar cualificado por espacio de nombres -#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} -SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:text debe encontrarse dentro de env:Reason -SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} no es un valor de c\u00F3digo est\u00E1ndar -SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: no se puede agregar el detalle. El detalle ya existe -SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: versi\u00F3n de SOAP incorrecta para el elemento Detail; se esperaba SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_fr.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_fr.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_2 pkg - -SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Body -SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402 : aucun autre \u00E9l\u00E9ment que Fault n'est autoris\u00E9 dans SOAPBody -SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Detail -SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Envelope -SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405 : Body doit \u00EAtre le dernier \u00E9l\u00E9ment de SOAPEnvelope -SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406 : Envelope peut contenir uniquement les \u00E9l\u00E9ments Header et Body -SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Fault -SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur un \u00E9l\u00E9ment enfant Fault -SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Header -SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410 : impossible de transmettre la valeur NULL \u00E0 addNotUnderstoodHeaderElement -SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411 : l'argument ne peut pas \u00EAtre NULL, supportedURIs ne peut pas \u00EAtre NULL -SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412 : la liste des URI pris en charge ne peut pas \u00EAtre vide -SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413 : les \u00E9l\u00E9ments d'en-t\u00EAte SOAP 1.2 ne doivent pas \u00EAtre un espace de noms qualifi\u00E9 -#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 -SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415 : InputStream ne repr\u00E9sente pas un message SOAP 1.2 valide -# {0} - element qname -SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416 : l''ajout de texte \u00E0 {0} est interdit -SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417 : le QName transmis \u00E0 addNotUnderstoodHeaderElement doit \u00EAtre un espace de noms qualifi\u00E9 - -#SOAPFault related errors -SAAJ0430.ver1_2.locale.required=SAAJ0430 : l'environnement local est requis et ne doit pas \u00EAtre NULL -SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431 : l'attribut "xml:lang" ne figure pas sur l'\u00E9l\u00E9ment Text -SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432 : un sous-code doit \u00EAtre un espace de noms qualifi\u00E9 -#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} -SAAJ0434.ver1_2.text.element.not.present=SAAJ0434 : env:Text doit \u00EAtre pr\u00E9sent dans env:Reason -SAAJ0435.ver1_2.code.not.standard=SAAJ0435 : {0} n''est pas une valeur Code standard -SAAJ0436.ver1_2.detail.exists.error=SAAJ0436 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0 -SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437 : version SOAP incorrecte pour l'\u00E9l\u00E9ment Detail, SOAP 1.2 attendu diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_it.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_it.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_2 pkg - -SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: l'attributo encodingStyle non pu\u00F2 essere presente in Body -SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: In SOAPBody non sono consentiti elementi diversi da Fault -SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: l'attributo encodingStyle non pu\u00F2 essere presente in Detail -SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: l'attributo encodingStyle non pu\u00F2 essere presente in Envelope -SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body deve essere l'ultimo elemento in SOAPEnvelope -SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope non pu\u00F2 contenere elementi diversi da Header e Body -SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: l'attributo encodingStyle non pu\u00F2 essere presente in Fault -SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: l'attributo encodingStyle non pu\u00F2 essere presente in un elemento figlio di Fault -SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: l'attributo encodingStyle non pu\u00F2 essere presente in Header -SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: Impossibile passare NULL a addNotUnderstoodHeaderElement -SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: L'argomento non pu\u00F2 essere nullo. Gli URI supportati non possono essere nulli -SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: La lista di URI supportati non pu\u00F2 essere vuota -SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: Gli elementi dell'intestazione SOAP 1.2 devono essere qualificati per lo spazio di nomi -#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 -SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream non rappresenta un messaggio SOAP 1.2 valido -# {0} - element qname -SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: L''aggiunta di testo a {0} non \u00E8 valida -SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: Il QName passato a addNotUnderstoodHeaderElement deve essere qualificato per lo spazio di nomi - -#SOAPFault related errors -SAAJ0430.ver1_2.locale.required=SAAJ0430: Le impostazioni nazionali sono obbligatorie e non devono essere nulle -SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: L'attributo "xml:lang" non \u00E8 presente nell'elemento Text -SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Un codice secondario deve essere qualificato per lo spazio di nomi -#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} -SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text deve essere presente in env:Reason -SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} non \u00E8 un valore di codice standard -SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Impossibile aggiungere Detail. Detail esiste gi\u00E0. -SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Versione SOAP errata per l'elemento Detail. Prevista SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ja.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ja.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_2 pkg - -SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle\u5C5E\u6027\u3092Body\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: Fault\u4EE5\u5916\u306E\u4ED6\u306E\u8981\u7D20\u306FSOAPBody\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 -SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle\u5C5E\u6027\u3092Detail\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle\u5C5E\u6027\u3092Envelope\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body\u306FSOAPEnvelope\u306E\u6700\u5F8C\u306E\u8981\u7D20\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope\u306BHeader\u304A\u3088\u3073Body\u4EE5\u5916\u306E\u3082\u306E\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle\u5C5E\u6027\u3092Fault\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle\u5C5E\u6027\u3092Fault\u5B50\u8981\u7D20\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle\u5C5E\u6027\u3092Header\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: NULL\u3092addNotUnderstoodHeaderElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 -SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u5F15\u6570\u306Fnull\u306B\u3067\u304D\u307E\u305B\u3093\u3002supportedURIs\u306Fnull\u306B\u3067\u304D\u307E\u305B\u3093 -SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308BURI\u306E\u30EA\u30B9\u30C8\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 -SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2\u306E\u30D8\u30C3\u30C0\u30FC\u8981\u7D20\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 -SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream\u306F\u6709\u52B9\u306ASOAP 1.2\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u3057\u3066\u3044\u307E\u305B\u3093 -# {0} - element qname -SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: {0}\u3078\u306E\u30C6\u30AD\u30B9\u30C8\u306E\u8FFD\u52A0\u306F\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093 -SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: addNotUnderstoodHeaderElement\u306B\u6E21\u3055\u308C\u308BQName\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 - -#SOAPFault related errors -SAAJ0430.ver1_2.locale.required=SAAJ0430: \u30ED\u30B1\u30FC\u30EB\u306F\u5FC5\u9808\u3067\u3042\u308A\u3001null\u306B\u3067\u304D\u307E\u305B\u3093 -SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang"\u5C5E\u6027\u304CText\u8981\u7D20\u306B\u5B58\u5728\u3057\u307E\u305B\u3093 -SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Subcode\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} -SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text\u306Fenv:Reason\u5185\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 -SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\u306F\u6A19\u6E96\u306E\u30B3\u30FC\u30C9\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093 -SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059 -SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail\u8981\u7D20\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u7121\u52B9\u3067\u3059\u3002SOAP 1.2\u304C\u4E88\u671F\u3055\u308C\u307E\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ko.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ko.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_2 pkg - -SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle \uC18D\uC131\uC740 Body\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody\uC5D0\uC11C\uB294 Fault\uB97C \uC81C\uC678\uD55C \uB2E4\uB978 \uC694\uC18C\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle \uC18D\uC131\uC740 Detail\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle \uC18D\uC131\uC740 Envelope\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body\uB294 SOAPEnvelope\uC758 \uB9C8\uC9C0\uB9C9 \uC694\uC18C\uC5EC\uC57C \uD569\uB2C8\uB2E4. -SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope\uC5D0\uB294 Header\uC640 Body \uC774\uC678\uC758 \uB2E4\uB978 \uC694\uC18C\uAC00 \uD3EC\uD568\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle \uC18D\uC131\uC740 Fault\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle \uC18D\uC131\uC740 Fault \uD558\uC704 \uC694\uC18C\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle \uC18D\uC131\uC740 Header\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: addNotUnderstoodHeaderElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \uC778\uC218\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. supportedURIs\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \uC9C0\uC6D0\uB418\uB294 URI \uBAA9\uB85D\uC740 \uBE44\uC6CC \uB458 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 Header \uC694\uC18C\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4. -#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 -SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream\uC774 \uC801\uD569\uD55C SOAP 1.2 \uBA54\uC2DC\uC9C0\uB97C \uB098\uD0C0\uB0B4\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. -# {0} - element qname -SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: {0}\uC5D0 \uD14D\uC2A4\uD2B8\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: addNotUnderstoodHeaderElement\uC5D0 \uC804\uB2EC\uB41C QName\uC740 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4. - -#SOAPFault related errors -SAAJ0430.ver1_2.locale.required=SAAJ0430: \uB85C\uCF00\uC77C\uC774 \uD544\uC694\uD558\uBA70 \uB110\uC774 \uC544\uB2C8\uC5B4\uC57C \uD569\uB2C8\uB2E4. -SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang" \uC18D\uC131\uC774 Text \uC694\uC18C\uC5D0 \uC5C6\uC2B5\uB2C8\uB2E4. -SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: \uD558\uC704 \uCF54\uB4DC\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4. -#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} -SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text\uB294 env:Reason\uC5D0 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4. -SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\uC740(\uB294) \uD45C\uC900 \uCF54\uB4DC \uAC12\uC774 \uC544\uB2D9\uB2C8\uB2E4. -SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. -SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail \uC694\uC18C\uC5D0 \uB300\uD55C SOAP \uBC84\uC804\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_pt_BR.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_pt_BR.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_2 pkg - -SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: o atributo encodingStyle n\u00E3o pode aparecer no Corpo -SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: nenhum outro elemento, exceto Falha permitido no SOAPBody -SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: o atributo encodingStyle n\u00E3o pode aparecer no Detalhe -SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: o atributo encodingStyle n\u00E3o pode aparecer no Envelope -SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: o Corpo deve ser o \u00FAltimo elemento no SOAPEnvelope -SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: o envelope n\u00E3o pode conter nada diferente de Cabe\u00E7alho e Corpo -SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: o atributo encodingStyle n\u00E3o pode aparecer na Falha -SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: o atributo encodingStyle n\u00E3o pode aparecer em um elemento-filho Falha -SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: o atributo encodingStyle n\u00E3o pode aparecer no Cabe\u00E7alho -SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: n\u00E3o \u00E9 poss\u00EDvel informar NULL para addNotUnderstoodHeaderElement -SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: o argumento n\u00E3o pode ser nulo; supportedURIs n\u00E3o pode ser nulo -SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: lista de URIs suportados n\u00E3o pode ficar vazia -SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: os elementos do cabe\u00E7alho SOAP 1.2 devem ser namespace qualificado -#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 -SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: o InputStream n\u00E3o representa uma Mensagem SOAP 1.2 v\u00E1lida -# {0} - element qname -SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: adicionar texto a {0} n\u00E3o \u00E9 v\u00E1lido -SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: o QName informado ao addNotUnderstoodHeaderElement deve ser qualificado por namespace - -#SOAPFault related errors -SAAJ0430.ver1_2.locale.required=SAAJ0430: a localidade \u00E9 obrigat\u00F3rio e n\u00E3o deve ser nula -SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: o atributo "xml:lang" n\u00E3o est\u00E1 presente no elemento Texto -SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: um subc\u00F3digo deve ser qualificado por namespace -#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} -SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text deve estar presente em env:Reason -SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} n\u00E3o \u00E9 um valor de C\u00F3digo padr\u00E3o -SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe -SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: vers\u00E3o de SOAP incorreta para o elemento Detalhe, esperava SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_CN.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_CN.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_2 pkg - -SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: \u6B63\u6587\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 -SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody \u4E2D\u4E0D\u5141\u8BB8\u9664\u6545\u969C\u4E4B\u5916\u7684\u4EFB\u4F55\u5176\u4ED6\u5143\u7D20 -SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: \u8BE6\u7EC6\u4FE1\u606F\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 -SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: \u4FE1\u5C01\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 -SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: \u6B63\u6587\u5FC5\u987B\u662F SOAPEnvelope \u4E2D\u7684\u6700\u540E\u4E00\u4E2A\u5143\u7D20 -SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: \u4FE1\u5C01\u4E0D\u80FD\u5305\u542B\u9664\u6807\u5934\u548C\u6B63\u6587\u5916\u7684\u5176\u4ED6\u5185\u5BB9 -SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: \u6545\u969C\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 -SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: \u6545\u969C\u5B50\u5143\u7D20\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 -SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: \u6807\u5934\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 -SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 addNotUnderstoodHeaderElement -SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u53C2\u6570\u4E0D\u80FD\u4E3A\u7A7A\u503C; supportedURIs \u4E0D\u80FD\u4E3A\u7A7A\u503C -SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u652F\u6301\u7684 URI \u7684\u5217\u8868\u4E0D\u80FD\u4E3A\u7A7A -SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 \u6807\u5934\u5143\u7D20\u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4 -#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 -SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream \u4E0D\u8868\u793A\u6709\u6548\u7684 SOAP 1.2 \u6D88\u606F -# {0} - element qname -SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: \u5C06\u6587\u672C\u6DFB\u52A0\u5230{0}\u7684\u64CD\u4F5C\u662F\u975E\u6CD5\u7684 -SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: \u4F20\u9012\u5230 addNotUnderstoodHeaderElement \u7684 QName \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4 - -#SOAPFault related errors -SAAJ0430.ver1_2.locale.required=SAAJ0430: \u533A\u57DF\u8BBE\u7F6E\u662F\u5FC5\u9700\u7684, \u4E0D\u80FD\u4E3A\u7A7A\u503C -SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: \u6587\u672C\u5143\u7D20\u4E0D\u5B58\u5728 "xml:lang" \u5C5E\u6027 -SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: \u5B50\u4EE3\u7801\u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4 -#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} -SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Reason \u5185\u90E8\u5FC5\u987B\u5B58\u5728 env:Text -SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\u4E0D\u662F\u6807\u51C6\u4EE3\u7801\u503C -SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728 -SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: \u8BE6\u7EC6\u4FE1\u606F\u5143\u7D20\u7684 SOAP \u7248\u672C\u4E0D\u6B63\u786E, \u5E94\u4E3A SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_TW.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_TW.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,56 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for ver1_2 pkg - -SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Body \u4E2D -SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody \u4E2D\u9664\u4E86 Fault \u4EE5\u5916\u4E0D\u5141\u8A31\u5176\u4ED6\u5143\u7D20 -SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Detail \u4E2D -SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Envelope \u4E2D -SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body \u5FC5\u9808\u662F SOAPEnvelope \u4E2D\u7684\u6700\u5F8C\u4E00\u500B\u5143\u7D20 -SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope \u4E0D\u80FD\u5305\u542B Header \u548C Body \u4EE5\u5916\u7684\u4EFB\u4F55\u5167\u5BB9 -SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Fault \u4E2D -SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Fault \u5B50\u5143\u7D20\u4E2D -SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Header \u4E2D -SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 addNotUnderstoodHeaderElement -SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u5F15\u6578\u4E0D\u80FD\u662F\u7A7A\u503C; supportedURIs \u4E0D\u80FD\u662F\u7A7A\u503C -SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u652F\u63F4\u7684 URI \u6E05\u55AE\u4E0D\u80FD\u7A7A\u767D -SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 \u6A19\u982D\u5143\u7D20\u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593 -#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 -SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream \u4E0D\u4EE3\u8868\u6709\u6548\u7684 SOAP 1.2 \u8A0A\u606F -# {0} - element qname -SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: \u65B0\u589E\u6587\u5B57\u81F3 {0} \u7121\u6548 -SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: \u50B3\u9001\u81F3 addNotUnderstoodHeaderElement \u7684 QName \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593 - -#SOAPFault related errors -SAAJ0430.ver1_2.locale.required=SAAJ0430: \u5FC5\u9808\u6709\u5730\u5340\u8A2D\u5B9A\u4E14\u4E0D\u5F97\u70BA\u7A7A\u503C -SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: Text \u5143\u7D20\u4E0A\u6C92\u6709 "xml:lang" \u5C6C\u6027 -SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Subcode \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593 -#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} -SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text \u5FC5\u9808\u4F4D\u65BC env:Reason \u5167 -SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} \u4E0D\u662F\u6A19\u6E96 Code \u503C -SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728 -SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail \u5143\u7D20\u7684 SOAP \u7248\u672C\u4E0D\u6B63\u78BA, \u61C9\u8A72\u662F SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Message1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Message1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import java.io.IOException; -import java.io.InputStream; - -import javax.xml.soap.*; -import javax.xml.stream.XMLStreamReader; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType; -import com.sun.xml.internal.messaging.saaj.soap.MessageImpl; - -public class Message1_2Impl extends MessageImpl implements SOAPConstants{ - - public Message1_2Impl() { - super(); - } - - public Message1_2Impl(SOAPMessage msg) { - super(msg); - } - - public Message1_2Impl(boolean isFastInfoset, boolean acceptFastInfoset) { - super(isFastInfoset, acceptFastInfoset); - } - - // unused. can we delete this? - Kohsuke - public Message1_2Impl(MimeHeaders headers, InputStream in) - throws IOException, SOAPExceptionImpl { - super(headers, in); - } - - public Message1_2Impl(MimeHeaders headers, ContentType ct, int stat, InputStream in) - throws SOAPExceptionImpl { - super(headers,ct,stat,in); - } - - public Message1_2Impl(MimeHeaders headers, ContentType ct, int stat, XMLStreamReader reader) - throws SOAPExceptionImpl { - super(headers,ct,stat,reader); - } - - public SOAPPart getSOAPPart() { - if (soapPartImpl == null) - soapPartImpl = new SOAPPart1_2Impl(this); - - return soapPartImpl; - } - - protected boolean isCorrectSoapVersion(int contentTypeId) { - return (contentTypeId & SOAP1_2_FLAG) != 0; - } - - protected String getExpectedContentType() { - return isFastInfoset ? "application/soap+fastinfoset" : "application/soap+xml"; - } - - protected String getExpectedAcceptHeader() { - String accept = "application/soap+xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"; - return acceptFastInfoset ? ("application/soap+fastinfoset, " + accept) : accept; - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPFactory1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPFactory1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import javax.xml.soap.Detail; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPFault; - -import javax.xml.namespace.QName; - -import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; -import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl; - -public class SOAPFactory1_2Impl extends SOAPFactoryImpl { - protected SOAPDocumentImpl createDocument() { - return (new SOAPPart1_2Impl()).getDocument(); - } - - public Detail createDetail() throws SOAPException { - return new Detail1_2Impl(createDocument()); - } - - public SOAPFault createFault(String reasonText, QName faultCode) - throws SOAPException { - if (faultCode == null) { - throw new IllegalArgumentException("faultCode argument for createFault was passed NULL"); - } - if (reasonText == null) { - throw new IllegalArgumentException("reasonText argument for createFault was passed NULL"); - } - Fault1_2Impl fault = new Fault1_2Impl(createDocument(), null); - fault.setFaultCode(faultCode); - fault.setFaultString(reasonText); - return fault; - } - - public SOAPFault createFault() throws SOAPException { - Fault1_2Impl fault = new Fault1_2Impl(createDocument(), null); - fault.setFaultCode(fault.getDefaultFaultCode()); - fault.setFaultString("Fault string, and possibly fault code, not set"); - return fault; - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPMessageFactory1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPMessageFactory1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author JAX-RPC RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import java.io.IOException; -import java.io.InputStream; - -import javax.xml.soap.*; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl; -import com.sun.xml.internal.messaging.saaj.soap.MessageImpl; - -public class SOAPMessageFactory1_2Impl extends MessageFactoryImpl { - - public SOAPMessage createMessage() throws SOAPException { - return new Message1_2Impl(); - } - - public SOAPMessage createMessage(boolean isFastInfoset, - boolean acceptFastInfoset) throws SOAPException - { - return new Message1_2Impl(isFastInfoset, acceptFastInfoset); - } - - public SOAPMessage createMessage(MimeHeaders headers, InputStream in) throws IOException, SOAPExceptionImpl { - - if (headers == null) { - headers = new MimeHeaders(); - } - - if (getContentType(headers) == null) { - headers.setHeader("Content-Type", SOAPConstants.SOAP_1_2_CONTENT_TYPE); - } - - MessageImpl msg = new Message1_2Impl(headers, in); - msg.setLazyAttachments(lazyAttachments); - return msg; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPPart1_2Impl.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPPart1_2Impl.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,95 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.soap.ver1_2; - -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.xml.soap.SOAPConstants; -import javax.xml.soap.SOAPException; -import javax.xml.transform.Source; - -import com.sun.xml.internal.messaging.saaj.soap.*; -import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; -import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser; - -public class SOAPPart1_2Impl extends SOAPPartImpl implements SOAPConstants{ - - protected static final Logger log = - Logger.getLogger(SOAPPart1_2Impl.class.getName(), - "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); - - public SOAPPart1_2Impl() { - super(); - } - - public SOAPPart1_2Impl(MessageImpl message) { - super(message); - } - - protected String getContentType() { - return "application/soap+xml"; - } - - protected Envelope createEmptyEnvelope(String prefix) throws SOAPException { - return new Envelope1_2Impl(getDocument(), prefix, true, true); - } - - protected Envelope createEnvelopeFromSource() throws SOAPException { - XMLDeclarationParser parser = lookForXmlDecl(); - Source tmp = source; - source = null; - EnvelopeImpl envelope = (EnvelopeImpl)EnvelopeFactory.createEnvelope(tmp, this); - if (!envelope.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) { - log.severe("SAAJ0415.ver1_2.msg.invalid.soap1.2"); - throw new SOAPException("InputStream does not represent a valid SOAP 1.2 Message"); - } - - if (parser != null) { //can be null if source was a DomSource and not StreamSource - if (!omitXmlDecl) { - envelope.setOmitXmlDecl("no"); - envelope.setXmlDecl(parser.getXmlDeclaration()); - envelope.setCharsetEncoding(parser.getEncoding()); - } - } - return envelope; - - } - - protected SOAPPartImpl duplicateType() { - return new SOAPPart1_2Impl(); - } - - @Override - public String getSOAPNamespace() { - return SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE; - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/Base64.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/Base64.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,272 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - - -// Cut & paste from tomcat - -/** - * This class provides encode/decode for RFC 2045 Base64 as - * defined by RFC 2045, N. Freed and N. Borenstein. - * RFC 2045: Multipurpose Internet Mail Extensions (MIME) - * Part One: Format of Internet Message Bodies. Reference - * 1996 Available at: http://www.ietf.org/rfc/rfc2045.txt - * This class is used by XML Schema binary format validation - * - * @author Jeffrey Rodriguez - * @version - */ -public final class Base64 { - - - static private final int BASELENGTH = 255; - static private final int LOOKUPLENGTH = 63; - static private final int TWENTYFOURBITGROUP = 24; - static private final int EIGHTBIT = 8; - static private final int SIXTEENBIT = 16; - static private final int SIXBIT = 6; - static private final int FOURBYTE = 4; - - - static private final byte PAD = ( byte ) '='; - static private byte [] base64Alphabet = new byte[BASELENGTH]; - static private byte [] lookUpBase64Alphabet = new byte[LOOKUPLENGTH]; - - static { - - for (int i = 0; i= 'A'; i-- ) { - base64Alphabet[i] = (byte) (i-'A'); - } - for ( int i = 'z'; i>= 'a'; i--) { - base64Alphabet[i] = (byte) ( i-'a' + 26); - } - - for ( int i = '9'; i >= '0'; i--) { - base64Alphabet[i] = (byte) (i-'0' + 52); - } - - base64Alphabet['+'] = 62; - base64Alphabet['/'] = 63; - - for (int i = 0; i<=25; i++ ) - lookUpBase64Alphabet[i] = (byte) ('A'+i ); - - for (int i = 26, j = 0; i<=51; i++, j++ ) - lookUpBase64Alphabet[i] = (byte) ('a'+ j ); - - for (int i = 52, j = 0; i<=61; i++, j++ ) - lookUpBase64Alphabet[i] = (byte) ('0' + j ); - - } - - - static boolean isBase64( byte octect ) { - //shall we ignore white space? JEFF?? - return(octect == PAD || base64Alphabet[octect] != -1 ); - } - - - static boolean isArrayByteBase64( byte[] arrayOctect ) { - int length = arrayOctect.length; - if ( length == 0 ) - return false; - for ( int i=0; i < length; i++ ) { - if ( Base64.isBase64( arrayOctect[i] ) == false) - return false; - } - return true; - } - - /** - * Encodes hex octects into Base64 - * - * @param binaryData Array containing binaryData - * @return Encoded Base64 array - */ - public static byte[] encode( byte[] binaryData ) { - int lengthDataBits = binaryData.length*EIGHTBIT; - int fewerThan24bits = lengthDataBits%TWENTYFOURBITGROUP; - int numberTriplets = lengthDataBits/TWENTYFOURBITGROUP; - byte encodedData[] = null; - - - if ( fewerThan24bits != 0 ) //data not divisible by 24 bit - encodedData = new byte[ (numberTriplets + 1 )*4 ]; - else // 16 or 8 bit - encodedData = new byte[ numberTriplets*4 ]; - - byte k=0, l=0, b1=0,b2=0,b3=0; - - int encodedIndex = 0; - int dataIndex = 0; - int i = 0; - for ( i = 0; i>2 ]; - encodedData[encodedIndex+1] = lookUpBase64Alphabet[(b2 >>4 ) | -( k<<4 )]; - encodedData[encodedIndex+2] = lookUpBase64Alphabet[ (l <<2 ) | -( b3>>6)]; - encodedData[encodedIndex+3] = lookUpBase64Alphabet[ b3 & 0x3f ]; - } - - // form integral number of 6-bit groups - dataIndex = i*3; - encodedIndex = i*4; - if (fewerThan24bits == EIGHTBIT ) { - b1 = binaryData[dataIndex]; - k = (byte) ( b1 &0x03 ); - encodedData[encodedIndex] = lookUpBase64Alphabet[ b1 >>2 ]; - encodedData[encodedIndex + 1] = lookUpBase64Alphabet[ k<<4 ]; - encodedData[encodedIndex + 2] = PAD; - encodedData[encodedIndex + 3] = PAD; - } else if ( fewerThan24bits == SIXTEENBIT ) { - - b1 = binaryData[dataIndex]; - b2 = binaryData[dataIndex +1 ]; - l = ( byte ) ( b2 &0x0f ); - k = ( byte ) ( b1 &0x03 ); - encodedData[encodedIndex] = lookUpBase64Alphabet[ b1 >>2 ]; - encodedData[encodedIndex + 1] = lookUpBase64Alphabet[ (b2 >>4 ) -| ( k<<4 )]; - encodedData[encodedIndex + 2] = lookUpBase64Alphabet[ l<<2 ]; - encodedData[encodedIndex + 3] = PAD; - } - return encodedData; - } - - - /** - * Decodes Base64 data into octects - * - * @param binaryData Byte array containing Base64 data - * @return Array containind decoded data. - */ - public byte[] decode( byte[] base64Data ) { - int numberQuadruple = base64Data.length/FOURBYTE; - byte decodedData[] = null; - byte b1=0,b2=0,b3=0, b4=0, marker0=0, marker1=0; - - // Throw away anything not in base64Data - // Adjust size - - int encodedIndex = 0; - int dataIndex = 0; - decodedData = new byte[ numberQuadruple*3 + 1 ]; - - for (int i = 0; i>4 ) ; - decodedData[encodedIndex+1] = (byte)(((b2 & 0xf)<<4 ) |( -(b3>>2) & 0xf) ); - decodedData[encodedIndex+2] = (byte)( b3<<6 | b4 ); - } else if ( marker0 == PAD ) { //Two PAD e.g. 3c[Pad][Pad] - decodedData[encodedIndex] = (byte)( b1 <<2 | b2>>4 ) ; - decodedData[encodedIndex+1] = (byte)((b2 & 0xf)<<4 ); - decodedData[encodedIndex+2] = (byte) 0; - } else if ( marker1 == PAD ) { //One PAD e.g. 3cQ[Pad] - b3 = base64Alphabet[ marker0 ]; - - decodedData[encodedIndex] = (byte)( b1 <<2 | b2>>4 ); - decodedData[encodedIndex+1] = (byte)(((b2 & 0xf)<<4 ) |( -(b3>>2) & 0xf) ); - decodedData[encodedIndex+2] = (byte)( b3<<6); - } - encodedIndex += 3; - } - return decodedData; - - } - - static final int base64[]= { - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, - 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64, - 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, - 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, - 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, - 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 - }; - - public static String base64Decode( String orig ) { - char chars[]=orig.toCharArray(); - StringBuffer sb=new StringBuffer(); - int i=0; - - int shift = 0; // # of excess bits stored in accum - int acc = 0; - - for (i=0; i= 64 ) { - if( chars[i] != '=' ) - System.out.println("Wrong char in base64: " + chars[i]); - } else { - acc= ( acc << 6 ) | v; - shift += 6; - if ( shift >= 8 ) { - shift -= 8; - sb.append( (char) ((acc >> shift) & 0xff)); - } - } - } - return sb.toString(); - } - - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteInputStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteInputStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,65 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - -import java.io.ByteArrayInputStream; -import java.io.IOException; - -// This class just gives access to the underlying buffer without copying. - -public class ByteInputStream extends ByteArrayInputStream { - private static final byte[] EMPTY_ARRAY = new byte[0]; - - public ByteInputStream() { - this(EMPTY_ARRAY, 0); - } - - public ByteInputStream(byte buf[], int length) { - super(buf, 0, length); - } - - public ByteInputStream(byte buf[], int offset, int length) { - super(buf, offset, length); - } - - public byte[] getBytes() { - return buf; - } - - public int getCount() { - return count; - } - - public void close() throws IOException { - reset(); - } - - public void setBuf(byte[] buf) { - this.buf = buf; - this.pos = 0; - this.count = buf.length; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteOutputStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteOutputStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,180 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - -import java.io.BufferedOutputStream; -import java.io.IOException; -import java.io.OutputStream; -import java.io.InputStream; -import java.io.ByteArrayInputStream; - -/** - * Customized {@link BufferedOutputStream}. - * - *

- * Compared to {@link BufferedOutputStream}, - * this class: - * - *

    - *
  1. doesn't do synchronization - *
  2. allows access to the raw buffer - *
  3. almost no parameter check - */ -public final class ByteOutputStream extends OutputStream { - /** - * The buffer where data is stored. - */ - protected byte[] buf; - - /** - * The number of valid bytes in the buffer. - */ - protected int count = 0; - - public ByteOutputStream() { - this(1024); - } - - public ByteOutputStream(int size) { - buf = new byte[size]; - } - - /** - * Copies all the bytes from this input into this buffer. - */ - public void write(InputStream in) throws IOException { - if (in instanceof ByteArrayInputStream) { - int size = in.available(); - ensureCapacity(size); - count += in.read(buf,count,size); - return; - } - while(true) { - int cap = buf.length-count; - int sz = in.read(buf,count,cap); - if(sz<0) return; // hit EOS - - count += sz; - if(cap==sz) - // the buffer filled up. double the buffer - ensureCapacity(count); - } - } - - public void write(int b) { - ensureCapacity(1); - buf[count] = (byte) b; - count++; - } - - /** - * Ensure that the buffer has at least this much space. - */ - private void ensureCapacity(int space) { - int newcount = space + count; - if (newcount > buf.length) { - byte[] newbuf = new byte[Math.max(buf.length << 1, newcount)]; - System.arraycopy(buf, 0, newbuf, 0, count); - buf = newbuf; - } - } - - public void write(byte[] b, int off, int len) { - ensureCapacity(len); - System.arraycopy(b, off, buf, count, len); - count += len; - } - - public void write(byte[] b) { - write(b, 0, b.length); - } - - /** - * Writes a string as ASCII string. - */ - public void writeAsAscii(String s) { - int len = s.length(); - - ensureCapacity(len); - - int ptr = count; - for( int i=0; iDOMDocumentParser.parse() method via reflection. - */ - static Method fiDOMDocumentParser_parse; - - /** - * FI DOMDocumentSerializer constructor using reflection. - */ - static Constructor fiDOMDocumentSerializer_new; - - /** - * FI FastInfosetSource.serialize(Document) method via reflection. - */ - static Method fiDOMDocumentSerializer_serialize; - - /** - * FI FastInfosetSource.setOutputStream(OutputStream) method via reflection. - */ - static Method fiDOMDocumentSerializer_setOutputStream; - - /** - * FI FastInfosetSource constructor using reflection. - */ - static Class fiFastInfosetSource_class; - - /** - * FI FastInfosetSource constructor using reflection. - */ - static Constructor fiFastInfosetSource_new; - - /** - * FI FastInfosetSource.getInputStream() method via reflection. - */ - static Method fiFastInfosetSource_getInputStream; - - /** - * FI FastInfosetSource.setInputSTream() method via reflection. - */ - static Method fiFastInfosetSource_setInputStream; - - /** - * FI FastInfosetResult constructor using reflection. - */ - static Constructor fiFastInfosetResult_new; - - /** - * FI FastInfosetResult.getOutputSTream() method via reflection. - */ - static Method fiFastInfosetResult_getOutputStream; - - static { - try { - Class clazz = Class.forName("com.sun.xml.internal.fastinfoset.dom.DOMDocumentParser"); - fiDOMDocumentParser_new = clazz.getConstructor((Class[]) null); - fiDOMDocumentParser_parse = clazz.getMethod("parse", - new Class[] { org.w3c.dom.Document.class, java.io.InputStream.class }); - - clazz = Class.forName("com.sun.xml.internal.fastinfoset.dom.DOMDocumentSerializer"); - fiDOMDocumentSerializer_new = clazz.getConstructor((Class[])null); - fiDOMDocumentSerializer_serialize = clazz.getMethod("serialize", - new Class[] { org.w3c.dom.Node.class }); - fiDOMDocumentSerializer_setOutputStream = clazz.getMethod("setOutputStream", - new Class[] { java.io.OutputStream.class }); - - fiFastInfosetSource_class = clazz = Class.forName("com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource"); - fiFastInfosetSource_new = clazz.getConstructor( - new Class[] { java.io.InputStream.class }); - fiFastInfosetSource_getInputStream = clazz.getMethod("getInputStream", (Class[]) null); - fiFastInfosetSource_setInputStream = clazz.getMethod("setInputStream", - new Class[] { java.io.InputStream.class }); - - clazz = Class.forName("com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetResult"); - fiFastInfosetResult_new = clazz.getConstructor( - new Class[] { java.io.OutputStream.class }); - fiFastInfosetResult_getOutputStream = clazz.getMethod("getOutputStream", (Class[]) null); - } - catch (Exception e) { - // falls through - } - } - - // -- DOMDocumentParser ---------------------------------------------- - - public static Object DOMDocumentParser_new() throws Exception { - if (fiDOMDocumentParser_new == null) { - throw new RuntimeException("Unable to locate Fast Infoset implementation"); - } - return fiDOMDocumentParser_new.newInstance((Object[])null); - } - - public static void DOMDocumentParser_parse(Object parser, - Document d, InputStream s) throws Exception - { - if (fiDOMDocumentParser_parse == null) { - throw new RuntimeException("Unable to locate Fast Infoset implementation"); - } - fiDOMDocumentParser_parse.invoke(parser, new Object[] { d, s }); - } - - // -- DOMDocumentSerializer------------------------------------------- - - public static Object DOMDocumentSerializer_new() throws Exception { - if (fiDOMDocumentSerializer_new == null) { - throw new RuntimeException("Unable to locate Fast Infoset implementation"); - } - return fiDOMDocumentSerializer_new.newInstance((Object[])null); - } - - public static void DOMDocumentSerializer_serialize(Object serializer, Node node) - throws Exception - { - if (fiDOMDocumentSerializer_serialize == null) { - throw new RuntimeException("Unable to locate Fast Infoset implementation"); - } - fiDOMDocumentSerializer_serialize.invoke(serializer, new Object[] { node }); - } - - public static void DOMDocumentSerializer_setOutputStream(Object serializer, - OutputStream os) throws Exception - { - if (fiDOMDocumentSerializer_setOutputStream == null) { - throw new RuntimeException("Unable to locate Fast Infoset implementation"); - } - fiDOMDocumentSerializer_setOutputStream.invoke(serializer, new Object[] { os }); - } - - // -- FastInfosetSource ---------------------------------------------- - - public static boolean isFastInfosetSource(Source source) { - return source.getClass().getName().equals( - "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource"); - } - - public static Class getFastInfosetSource_class() { - if (fiFastInfosetSource_class == null) { - throw new RuntimeException("Unable to locate Fast Infoset implementation"); - } - - return fiFastInfosetSource_class; - } - public static Source FastInfosetSource_new(InputStream is) - throws Exception - { - if (fiFastInfosetSource_new == null) { - throw new RuntimeException("Unable to locate Fast Infoset implementation"); - } - return (Source) fiFastInfosetSource_new.newInstance(new Object[] { is }); - } - - public static InputStream FastInfosetSource_getInputStream(Source source) - throws Exception - { - if (fiFastInfosetSource_getInputStream == null) { - throw new RuntimeException("Unable to locate Fast Infoset implementation"); - } - return (InputStream) fiFastInfosetSource_getInputStream.invoke(source, (Object[])null); - } - - public static void FastInfosetSource_setInputStream(Source source, - InputStream is) throws Exception - { - if (fiFastInfosetSource_setInputStream == null) { - throw new RuntimeException("Unable to locate Fast Infoset implementation"); - } - fiFastInfosetSource_setInputStream.invoke(source, new Object[] { is }); - } - - // -- FastInfosetResult ---------------------------------------------- - - public static boolean isFastInfosetResult(Result result) { - return result.getClass().getName().equals( - "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetResult"); - } - - public static Result FastInfosetResult_new(OutputStream os) - throws Exception - { - if (fiFastInfosetResult_new == null) { - throw new RuntimeException("Unable to locate Fast Infoset implementation"); - } - return (Result) fiFastInfosetResult_new.newInstance(new Object[] { os }); - } - - public static OutputStream FastInfosetResult_getOutputStream(Result result) - throws Exception - { - if (fiFastInfosetResult_getOutputStream == null) { - throw new RuntimeException("Unable to locate Fast Infoset implementation"); - } - return (OutputStream) fiFastInfosetResult_getOutputStream.invoke(result, (Object[])null); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/FinalArrayList.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/FinalArrayList.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,47 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - -import java.util.ArrayList; -import java.util.Collection; - -/** - * {@link ArrayList} with a final marker to help JIT. - * @author Kohsuke Kawaguchi - */ -public final class FinalArrayList extends ArrayList { - public FinalArrayList(int initialCapacity) { - super(initialCapacity); - } - - public FinalArrayList() { - } - - public FinalArrayList(Collection collection) { - super(collection); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/JAXMStreamSource.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/JAXMStreamSource.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - -import java.io.*; - -import javax.xml.transform.stream.StreamSource; - - -/** - * - * @author Anil Vijendran - */ -public class JAXMStreamSource extends StreamSource { - InputStream in; - Reader reader; - private static final boolean lazyContentLength; - static { - lazyContentLength = SAAJUtil.getSystemBoolean("saaj.lazy.contentlength"); - } - public JAXMStreamSource(InputStream is) throws IOException { - if (lazyContentLength) { - in = is; - } else if (is instanceof ByteInputStream) { - this.in = (ByteInputStream) is; - } else { - ByteOutputStream bout = null; - try { - bout = new ByteOutputStream(); - bout.write(is); - this.in = bout.newInputStream(); - } finally { - if (bout != null) - bout.close(); - } - } - } - - public JAXMStreamSource(Reader rdr) throws IOException { - - if (lazyContentLength) { - this.reader = rdr; - return; - } - CharWriter cout = new CharWriter(); - char[] temp = new char[1024]; - int len; - - while (-1 != (len = rdr.read(temp))) - cout.write(temp, 0, len); - - this.reader = new CharReader(cout.getChars(), cout.getCount()); - } - - public InputStream getInputStream() { - return in; - } - - public Reader getReader() { - return reader; - } - - public void reset() throws IOException { - if (in != null) - in.reset(); - if (reader != null) - reader.reset(); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/JaxmURI.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/JaxmURI.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1380 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - -// Imported from: org.apache.xerces.util -// Needed to work around differences in JDK1.2 and 1.3 and deal with userInfo - -import java.io.IOException; -import java.io.Serializable; - - -/********************************************************************** -* A class to represent a Uniform Resource Identifier (URI). This class -* is designed to handle the parsing of URIs and provide access to -* the various components (scheme, host, port, userinfo, path, query -* string and fragment) that may constitute a URI. -*

    -* Parsing of a URI specification is done according to the URI -* syntax described in RFC 2396 -* . Every URI consists -* of a scheme, followed by a colon (':'), followed by a scheme-specific -* part. For URIs that follow the "generic URI" syntax, the scheme- -* specific part begins with two slashes ("//") and may be followed -* by an authority segment (comprised of user information, host, and -* port), path segment, query segment and fragment. Note that RFC 2396 -* no longer specifies the use of the parameters segment and excludes -* the "user:password" syntax as part of the authority segment. If -* "user:password" appears in a URI, the entire user/password string -* is stored as userinfo. -*

    -* For URIs that do not follow the "generic URI" syntax (e.g. mailto), -* the entire scheme-specific part is treated as the "path" portion -* of the URI. -*

    -* Note that, unlike the java.net.URL class, this class does not provide -* any built-in network access functionality nor does it provide any -* scheme-specific functionality (for example, it does not know a -* default port for a specific scheme). Rather, it only knows the -* grammar and basic set of operations that can be applied to a URI. -* -* @version -* -**********************************************************************/ - public class JaxmURI implements Serializable { - - /******************************************************************* - * MalformedURIExceptions are thrown in the process of building a URI - * or setting fields on a URI when an operation would result in an - * invalid URI specification. - * - ********************************************************************/ - public static class MalformedURIException extends IOException { - - /****************************************************************** - * Constructs a MalformedURIException with no specified - * detail message. - ******************************************************************/ - public MalformedURIException() { - super(); - } - - /***************************************************************** - * Constructs a MalformedURIException with the - * specified detail message. - * - * @param p_msg the detail message. - ******************************************************************/ - public MalformedURIException(String p_msg) { - super(p_msg); - } - } - - /** reserved characters */ - private static final String RESERVED_CHARACTERS = ";/?:@&=+$,"; - - /** URI punctuation mark characters - these, combined with - alphanumerics, constitute the "unreserved" characters */ - private static final String MARK_CHARACTERS = "-_.!~*'() "; - - /** scheme can be composed of alphanumerics and these characters */ - private static final String SCHEME_CHARACTERS = "+-."; - - /** userinfo can be composed of unreserved, escaped and these - characters */ - private static final String USERINFO_CHARACTERS = ";:&=+$,"; - - /** Stores the scheme (usually the protocol) for this URI. */ - private String m_scheme = null; - - /** If specified, stores the userinfo for this URI; otherwise null */ - private String m_userinfo = null; - - /** If specified, stores the host for this URI; otherwise null */ - private String m_host = null; - - /** If specified, stores the port for this URI; otherwise -1 */ - private int m_port = -1; - - /** If specified, stores the path for this URI; otherwise null */ - private String m_path = null; - - /** If specified, stores the query string for this URI; otherwise - null. */ - private String m_queryString = null; - - /** If specified, stores the fragment for this URI; otherwise null */ - private String m_fragment = null; - - private static boolean DEBUG = false; - - /** - * Construct a new and uninitialized URI. - */ - public JaxmURI() { - } - - /** - * Construct a new URI from another URI. All fields for this URI are - * set equal to the fields of the URI passed in. - * - * @param p_other the URI to copy (cannot be null) - */ - public JaxmURI(JaxmURI p_other) { - initialize(p_other); - } - - /** - * Construct a new URI from a URI specification string. If the - * specification follows the "generic URI" syntax, (two slashes - * following the first colon), the specification will be parsed - * accordingly - setting the scheme, userinfo, host,port, path, query - * string and fragment fields as necessary. If the specification does - * not follow the "generic URI" syntax, the specification is parsed - * into a scheme and scheme-specific part (stored as the path) only. - * - * @param p_uriSpec the URI specification string (cannot be null or - * empty) - * - * @exception MalformedURIException if p_uriSpec violates any syntax - * rules - */ - public JaxmURI(String p_uriSpec) throws MalformedURIException { - this((JaxmURI)null, p_uriSpec); - } - - /** - * Construct a new URI from a base URI and a URI specification string. - * The URI specification string may be a relative URI. - * - * @param p_base the base URI (cannot be null if p_uriSpec is null or - * empty) - * @param p_uriSpec the URI specification string (cannot be null or - * empty if p_base is null) - * - * @exception MalformedURIException if p_uriSpec violates any syntax - * rules - */ - public JaxmURI(JaxmURI p_base, String p_uriSpec) throws MalformedURIException { - initialize(p_base, p_uriSpec); - } - - /** - * Construct a new URI that does not follow the generic URI syntax. - * Only the scheme and scheme-specific part (stored as the path) are - * initialized. - * - * @param p_scheme the URI scheme (cannot be null or empty) - * @param p_schemeSpecificPart the scheme-specific part (cannot be - * null or empty) - * - * @exception MalformedURIException if p_scheme violates any - * syntax rules - */ - public JaxmURI(String p_scheme, String p_schemeSpecificPart) - throws MalformedURIException { - if (p_scheme == null || p_scheme.trim().length() == 0) { - throw new MalformedURIException( - "Cannot construct URI with null/empty scheme!"); - } - if (p_schemeSpecificPart == null || - p_schemeSpecificPart.trim().length() == 0) { - throw new MalformedURIException( - "Cannot construct URI with null/empty scheme-specific part!"); - } - setScheme(p_scheme); - setPath(p_schemeSpecificPart); - } - - /** - * Construct a new URI that follows the generic URI syntax from its - * component parts. Each component is validated for syntax and some - * basic semantic checks are performed as well. See the individual - * setter methods for specifics. - * - * @param p_scheme the URI scheme (cannot be null or empty) - * @param p_host the hostname or IPv4 address for the URI - * @param p_path the URI path - if the path contains '?' or '#', - * then the query string and/or fragment will be - * set from the path; however, if the query and - * fragment are specified both in the path and as - * separate parameters, an exception is thrown - * @param p_queryString the URI query string (cannot be specified - * if path is null) - * @param p_fragment the URI fragment (cannot be specified if path - * is null) - * - * @exception MalformedURIException if any of the parameters violates - * syntax rules or semantic rules - */ - public JaxmURI(String p_scheme, String p_host, String p_path, - String p_queryString, String p_fragment) - throws MalformedURIException { - this(p_scheme, null, p_host, -1, p_path, p_queryString, p_fragment); - } - - /** - * Construct a new URI that follows the generic URI syntax from its - * component parts. Each component is validated for syntax and some - * basic semantic checks are performed as well. See the individual - * setter methods for specifics. - * - * @param p_scheme the URI scheme (cannot be null or empty) - * @param p_userinfo the URI userinfo (cannot be specified if host - * is null) - * @param p_host the hostname or IPv4 address for the URI - * @param p_port the URI port (may be -1 for "unspecified"; cannot - * be specified if host is null) - * @param p_path the URI path - if the path contains '?' or '#', - * then the query string and/or fragment will be - * set from the path; however, if the query and - * fragment are specified both in the path and as - * separate parameters, an exception is thrown - * @param p_queryString the URI query string (cannot be specified - * if path is null) - * @param p_fragment the URI fragment (cannot be specified if path - * is null) - * - * @exception MalformedURIException if any of the parameters violates - * syntax rules or semantic rules - */ - public JaxmURI(String p_scheme, String p_userinfo, - String p_host, int p_port, String p_path, - String p_queryString, String p_fragment) - throws MalformedURIException { - if (p_scheme == null || p_scheme.trim().length() == 0) { - throw new MalformedURIException("Scheme is required!"); - } - - if (p_host == null) { - if (p_userinfo != null) { - throw new MalformedURIException( - "Userinfo may not be specified if host is not specified!"); - } - if (p_port != -1) { - throw new MalformedURIException( - "Port may not be specified if host is not specified!"); - } - } - - if (p_path != null) { - if (p_path.indexOf('?') != -1 && p_queryString != null) { - throw new MalformedURIException( - "Query string cannot be specified in path and query string!"); - } - - if (p_path.indexOf('#') != -1 && p_fragment != null) { - throw new MalformedURIException( - "Fragment cannot be specified in both the path and fragment!"); - } - } - - setScheme(p_scheme); - setHost(p_host); - setPort(p_port); - setUserinfo(p_userinfo); - setPath(p_path); - setQueryString(p_queryString); - setFragment(p_fragment); - } - - /** - * Initialize all fields of this URI from another URI. - * - * @param p_other the URI to copy (cannot be null) - */ - private void initialize(JaxmURI p_other) { - m_scheme = p_other.getScheme(); - m_userinfo = p_other.getUserinfo(); - m_host = p_other.getHost(); - m_port = p_other.getPort(); - m_path = p_other.getPath(); - m_queryString = p_other.getQueryString(); - m_fragment = p_other.getFragment(); - } - - /** - * Initializes this URI from a base URI and a URI specification string. - * See RFC 2396 Section 4 and Appendix B for specifications on parsing - * the URI and Section 5 for specifications on resolving relative URIs - * and relative paths. - * - * @param p_base the base URI (may be null if p_uriSpec is an absolute - * URI) - * @param p_uriSpec the URI spec string which may be an absolute or - * relative URI (can only be null/empty if p_base - * is not null) - * - * @exception MalformedURIException if p_base is null and p_uriSpec - * is not an absolute URI or if - * p_uriSpec violates syntax rules - */ - private void initialize(JaxmURI p_base, String p_uriSpec) - throws MalformedURIException { - if (p_base == null && - (p_uriSpec == null || p_uriSpec.trim().length() == 0)) { - throw new MalformedURIException( - "Cannot initialize URI with empty parameters."); - } - - // just make a copy of the base if spec is empty - if (p_uriSpec == null || p_uriSpec.trim().length() == 0) { - initialize(p_base); - return; - } - - String uriSpec = p_uriSpec.trim(); - int uriSpecLen = uriSpec.length(); - int index = 0; - - // Check for scheme, which must be before `/'. Also handle names with - // DOS drive letters ('D:'), so 1-character schemes are not allowed. - int colonIdx = uriSpec.indexOf(':'); - int slashIdx = uriSpec.indexOf('/'); - if ((colonIdx < 2) || (colonIdx > slashIdx && slashIdx != -1)) { - int fragmentIdx = uriSpec.indexOf('#'); - // A standalone base is a valid URI according to spec - if (p_base == null && fragmentIdx != 0 ) { - throw new MalformedURIException("No scheme found in URI."); - } - } - else { - initializeScheme(uriSpec); - index = m_scheme.length()+1; - } - - // two slashes means generic URI syntax, so we get the authority - if (((index+1) < uriSpecLen) && - (uriSpec.substring(index).startsWith("//"))) { - index += 2; - int startPos = index; - - // get authority - everything up to path, query or fragment - char testChar = '\0'; - while (index < uriSpecLen) { - testChar = uriSpec.charAt(index); - if (testChar == '/' || testChar == '?' || testChar == '#') { - break; - } - index++; - } - - // if we found authority, parse it out, otherwise we set the - // host to empty string - if (index > startPos) { - initializeAuthority(uriSpec.substring(startPos, index)); - } - else { - m_host = ""; - } - } - - initializePath(uriSpec.substring(index)); - - // Resolve relative URI to base URI - see RFC 2396 Section 5.2 - // In some cases, it might make more sense to throw an exception - // (when scheme is specified is the string spec and the base URI - // is also specified, for example), but we're just following the - // RFC specifications - if (p_base != null) { - - // check to see if this is the current doc - RFC 2396 5.2 #2 - // note that this is slightly different from the RFC spec in that - // we don't include the check for query string being null - // - this handles cases where the urispec is just a query - // string or a fragment (e.g. "?y" or "#s") - - // see which - // identified this as a bug in the RFC - if (m_path.length() == 0 && m_scheme == null && - m_host == null) { - m_scheme = p_base.getScheme(); - m_userinfo = p_base.getUserinfo(); - m_host = p_base.getHost(); - m_port = p_base.getPort(); - m_path = p_base.getPath(); - - if (m_queryString == null) { - m_queryString = p_base.getQueryString(); - } - return; - } - - // check for scheme - RFC 2396 5.2 #3 - // if we found a scheme, it means absolute URI, so we're done - if (m_scheme == null) { - m_scheme = p_base.getScheme(); - } - else { - return; - } - - // check for authority - RFC 2396 5.2 #4 - // if we found a host, then we've got a network path, so we're done - if (m_host == null) { - m_userinfo = p_base.getUserinfo(); - m_host = p_base.getHost(); - m_port = p_base.getPort(); - } - else { - return; - } - - // check for absolute path - RFC 2396 5.2 #5 - if (m_path.length() > 0 && - m_path.startsWith("/")) { - return; - } - - // if we get to this point, we need to resolve relative path - // RFC 2396 5.2 #6 - String path = ""; - String basePath = p_base.getPath(); - - // 6a - get all but the last segment of the base URI path - if (basePath != null) { - int lastSlash = basePath.lastIndexOf('/'); - if (lastSlash != -1) { - path = basePath.substring(0, lastSlash+1); - } - } - - // 6b - append the relative URI path - path = path.concat(m_path); - - // 6c - remove all "./" where "." is a complete path segment - index = -1; - while ((index = path.indexOf("/./")) != -1) { - path = path.substring(0, index+1).concat(path.substring(index+3)); - } - - // 6d - remove "." if path ends with "." as a complete path segment - if (path.endsWith("/.")) { - path = path.substring(0, path.length()-1); - } - - // 6e - remove all "/../" where "" is a complete - // path segment not equal to ".." - index = 1; - int segIndex = -1; - String tempString = null; - - while ((index = path.indexOf("/../", index)) > 0) { - tempString = path.substring(0, path.indexOf("/../")); - segIndex = tempString.lastIndexOf('/'); - if (segIndex != -1) { - if (!tempString.substring(segIndex++).equals("..")) { - path = path.substring(0, segIndex).concat(path.substring(index+4)); - } - else - index += 4; - } - else - index += 4; - } - - // 6f - remove ending "/.." where "" is a - // complete path segment - if (path.endsWith("/..")) { - tempString = path.substring(0, path.length()-3); - segIndex = tempString.lastIndexOf('/'); - if (segIndex != -1) { - path = path.substring(0, segIndex+1); - } - } - m_path = path; - } - } - - /** - * Initialize the scheme for this URI from a URI string spec. - * - * @param p_uriSpec the URI specification (cannot be null) - * - * @exception MalformedURIException if URI does not have a conformant - * scheme - */ - private void initializeScheme(String p_uriSpec) - throws MalformedURIException { - int uriSpecLen = p_uriSpec.length(); - int index = 0; - String scheme = null; - char testChar = '\0'; - - while (index < uriSpecLen) { - testChar = p_uriSpec.charAt(index); - if (testChar == ':' || testChar == '/' || - testChar == '?' || testChar == '#') { - break; - } - index++; - } - scheme = p_uriSpec.substring(0, index); - - if (scheme.length() == 0) { - throw new MalformedURIException("No scheme found in URI."); - } - else { - setScheme(scheme); - } - } - - /** - * Initialize the authority (userinfo, host and port) for this - * URI from a URI string spec. - * - * @param p_uriSpec the URI specification (cannot be null) - * - * @exception MalformedURIException if p_uriSpec violates syntax rules - */ - private void initializeAuthority(String p_uriSpec) - throws MalformedURIException { - int index = 0; - int start = 0; - int end = p_uriSpec.length(); - char testChar = '\0'; - String userinfo = null; - - // userinfo is everything up @ - if (p_uriSpec.indexOf('@', start) != -1) { - while (index < end) { - testChar = p_uriSpec.charAt(index); - if (testChar == '@') { - break; - } - index++; - } - userinfo = p_uriSpec.substring(start, index); - index++; - } - - // host is everything up to ':' - String host = null; - start = index; - while (index < end) { - testChar = p_uriSpec.charAt(index); - if (testChar == ':') { - break; - } - index++; - } - host = p_uriSpec.substring(start, index); - int port = -1; - if (host.length() > 0) { - // port - if (testChar == ':') { - index++; - start = index; - while (index < end) { - index++; - } - String portStr = p_uriSpec.substring(start, index); - if (portStr.length() > 0) { - for (int i = 0; i < portStr.length(); i++) { - if (!isDigit(portStr.charAt(i))) { - throw new MalformedURIException( - portStr + - " is invalid. Port should only contain digits!"); - } - } - try { - port = Integer.parseInt(portStr); - } - catch (NumberFormatException nfe) { - // can't happen - } - } - } - } - setHost(host); - setPort(port); - setUserinfo(userinfo); - } - - /** - * Initialize the path for this URI from a URI string spec. - * - * @param p_uriSpec the URI specification (cannot be null) - * - * @exception MalformedURIException if p_uriSpec violates syntax rules - */ - private void initializePath(String p_uriSpec) - throws MalformedURIException { - if (p_uriSpec == null) { - throw new MalformedURIException( - "Cannot initialize path from null string!"); - } - - int index = 0; - int start = 0; - int end = p_uriSpec.length(); - char testChar = '\0'; - - // path - everything up to query string or fragment - while (index < end) { - testChar = p_uriSpec.charAt(index); - if (testChar == '?' || testChar == '#') { - break; - } - // check for valid escape sequence - if (testChar == '%') { - if (index+2 >= end || - !isHex(p_uriSpec.charAt(index+1)) || - !isHex(p_uriSpec.charAt(index+2))) { - throw new MalformedURIException( - "Path contains invalid escape sequence!"); - } - } - else if (!isReservedCharacter(testChar) && - !isUnreservedCharacter(testChar)) { - throw new MalformedURIException( - "Path contains invalid character: " + testChar); - } - index++; - } - m_path = p_uriSpec.substring(start, index); - - // query - starts with ? and up to fragment or end - if (testChar == '?') { - index++; - start = index; - while (index < end) { - testChar = p_uriSpec.charAt(index); - if (testChar == '#') { - break; - } - if (testChar == '%') { - if (index+2 >= end || - !isHex(p_uriSpec.charAt(index+1)) || - !isHex(p_uriSpec.charAt(index+2))) { - throw new MalformedURIException( - "Query string contains invalid escape sequence!"); - } - } - else if (!isReservedCharacter(testChar) && - !isUnreservedCharacter(testChar)) { - throw new MalformedURIException( - "Query string contains invalid character:" + testChar); - } - index++; - } - m_queryString = p_uriSpec.substring(start, index); - } - - // fragment - starts with # - if (testChar == '#') { - index++; - start = index; - while (index < end) { - testChar = p_uriSpec.charAt(index); - - if (testChar == '%') { - if (index+2 >= end || - !isHex(p_uriSpec.charAt(index+1)) || - !isHex(p_uriSpec.charAt(index+2))) { - throw new MalformedURIException( - "Fragment contains invalid escape sequence!"); - } - } - else if (!isReservedCharacter(testChar) && - !isUnreservedCharacter(testChar)) { - throw new MalformedURIException( - "Fragment contains invalid character:"+testChar); - } - index++; - } - m_fragment = p_uriSpec.substring(start, index); - } - } - - /** - * Get the scheme for this URI. - * - * @return the scheme for this URI - */ - public String getScheme() { - return m_scheme; - } - - /** - * Get the scheme-specific part for this URI (everything following the - * scheme and the first colon). See RFC 2396 Section 5.2 for spec. - * - * @return the scheme-specific part for this URI - */ - public String getSchemeSpecificPart() { - StringBuffer schemespec = new StringBuffer(); - - if (m_userinfo != null || m_host != null || m_port != -1) { - schemespec.append("//"); - } - - if (m_userinfo != null) { - schemespec.append(m_userinfo); - schemespec.append('@'); - } - - if (m_host != null) { - schemespec.append(m_host); - } - - if (m_port != -1) { - schemespec.append(':'); - schemespec.append(m_port); - } - - if (m_path != null) { - schemespec.append((m_path)); - } - - if (m_queryString != null) { - schemespec.append('?'); - schemespec.append(m_queryString); - } - - if (m_fragment != null) { - schemespec.append('#'); - schemespec.append(m_fragment); - } - - return schemespec.toString(); - } - - /** - * Get the userinfo for this URI. - * - * @return the userinfo for this URI (null if not specified). - */ - public String getUserinfo() { - return m_userinfo; - } - - /** - * Get the host for this URI. - * - * @return the host for this URI (null if not specified). - */ - public String getHost() { - return m_host; - } - - /** - * Get the port for this URI. - * - * @return the port for this URI (-1 if not specified). - */ - public int getPort() { - return m_port; - } - - /** - * Get the path for this URI (optionally with the query string and - * fragment). - * - * @param p_includeQueryString if true (and query string is not null), - * then a "?" followed by the query string - * will be appended - * @param p_includeFragment if true (and fragment is not null), - * then a "#" followed by the fragment - * will be appended - * - * @return the path for this URI possibly including the query string - * and fragment - */ - public String getPath(boolean p_includeQueryString, - boolean p_includeFragment) { - StringBuffer pathString = new StringBuffer(m_path); - - if (p_includeQueryString && m_queryString != null) { - pathString.append('?'); - pathString.append(m_queryString); - } - - if (p_includeFragment && m_fragment != null) { - pathString.append('#'); - pathString.append(m_fragment); - } - return pathString.toString(); - } - - /** - * Get the path for this URI. Note that the value returned is the path - * only and does not include the query string or fragment. - * - * @return the path for this URI. - */ - public String getPath() { - return m_path; - } - - /** - * Get the query string for this URI. - * - * @return the query string for this URI. Null is returned if there - * was no "?" in the URI spec, empty string if there was a - * "?" but no query string following it. - */ - public String getQueryString() { - return m_queryString; - } - - /** - * Get the fragment for this URI. - * - * @return the fragment for this URI. Null is returned if there - * was no "#" in the URI spec, empty string if there was a - * "#" but no fragment following it. - */ - public String getFragment() { - return m_fragment; - } - - /** - * Set the scheme for this URI. The scheme is converted to lowercase - * before it is set. - * - * @param p_scheme the scheme for this URI (cannot be null) - * - * @exception MalformedURIException if p_scheme is not a conformant - * scheme name - */ - public void setScheme(String p_scheme) throws MalformedURIException { - if (p_scheme == null) { - throw new MalformedURIException( - "Cannot set scheme from null string!"); - } - if (!isConformantSchemeName(p_scheme)) { - throw new MalformedURIException("The scheme is not conformant."); - } - - m_scheme = p_scheme.toLowerCase(); - } - - /** - * Set the userinfo for this URI. If a non-null value is passed in and - * the host value is null, then an exception is thrown. - * - * @param p_userinfo the userinfo for this URI - * - * @exception MalformedURIException if p_userinfo contains invalid - * characters - */ - public void setUserinfo(String p_userinfo) throws MalformedURIException { - if (p_userinfo == null) { - m_userinfo = null; - } - else { - if (m_host == null) { - throw new MalformedURIException( - "Userinfo cannot be set when host is null!"); - } - - // userinfo can contain alphanumerics, mark characters, escaped - // and ';',':','&','=','+','$',',' - int index = 0; - int end = p_userinfo.length(); - char testChar = '\0'; - while (index < end) { - testChar = p_userinfo.charAt(index); - if (testChar == '%') { - if (index+2 >= end || - !isHex(p_userinfo.charAt(index+1)) || - !isHex(p_userinfo.charAt(index+2))) { - throw new MalformedURIException( - "Userinfo contains invalid escape sequence!"); - } - } - else if (!isUnreservedCharacter(testChar) && - USERINFO_CHARACTERS.indexOf(testChar) == -1) { - throw new MalformedURIException( - "Userinfo contains invalid character:"+testChar); - } - index++; - } - } - m_userinfo = p_userinfo; - } - - /** - * Set the host for this URI. If null is passed in, the userinfo - * field is also set to null and the port is set to -1. - * - * @param p_host the host for this URI - * - * @exception MalformedURIException if p_host is not a valid IP - * address or DNS hostname. - */ - public void setHost(String p_host) throws MalformedURIException { - if (p_host == null || p_host.trim().length() == 0) { - m_host = p_host; - m_userinfo = null; - m_port = -1; - } - else if (!isWellFormedAddress(p_host)) { - throw new MalformedURIException("Host is not a well formed address!"); - } - m_host = p_host; - } - - /** - * Set the port for this URI. -1 is used to indicate that the port is - * not specified, otherwise valid port numbers are between 0 and 65535. - * If a valid port number is passed in and the host field is null, - * an exception is thrown. - * - * @param p_port the port number for this URI - * - * @exception MalformedURIException if p_port is not -1 and not a - * valid port number - */ - public void setPort(int p_port) throws MalformedURIException { - if (p_port >= 0 && p_port <= 65535) { - if (m_host == null) { - throw new MalformedURIException( - "Port cannot be set when host is null!"); - } - } - else if (p_port != -1) { - throw new MalformedURIException("Invalid port number!"); - } - m_port = p_port; - } - - /** - * Set the path for this URI. If the supplied path is null, then the - * query string and fragment are set to null as well. If the supplied - * path includes a query string and/or fragment, these fields will be - * parsed and set as well. Note that, for URIs following the "generic - * URI" syntax, the path specified should start with a slash. - * For URIs that do not follow the generic URI syntax, this method - * sets the scheme-specific part. - * - * @param p_path the path for this URI (may be null) - * - * @exception MalformedURIException if p_path contains invalid - * characters - */ - public void setPath(String p_path) throws MalformedURIException { - if (p_path == null) { - m_path = null; - m_queryString = null; - m_fragment = null; - } - else { - initializePath(p_path); - } - } - - /** - * Append to the end of the path of this URI. If the current path does - * not end in a slash and the path to be appended does not begin with - * a slash, a slash will be appended to the current path before the - * new segment is added. Also, if the current path ends in a slash - * and the new segment begins with a slash, the extra slash will be - * removed before the new segment is appended. - * - * @param p_addToPath the new segment to be added to the current path - * - * @exception MalformedURIException if p_addToPath contains syntax - * errors - */ - public void appendPath(String p_addToPath) - throws MalformedURIException { - if (p_addToPath == null || p_addToPath.trim().length() == 0) { - return; - } - - if (!isURIString(p_addToPath)) { - throw new MalformedURIException( - "Path contains invalid character!"); - } - - if (m_path == null || m_path.trim().length() == 0) { - if (p_addToPath.startsWith("/")) { - m_path = p_addToPath; - } - else { - m_path = "/" + p_addToPath; - } - } - else if (m_path.endsWith("/")) { - if (p_addToPath.startsWith("/")) { - m_path = m_path.concat(p_addToPath.substring(1)); - } - else { - m_path = m_path.concat(p_addToPath); - } - } - else { - if (p_addToPath.startsWith("/")) { - m_path = m_path.concat(p_addToPath); - } - else { - m_path = m_path.concat("/" + p_addToPath); - } - } - } - - /** - * Set the query string for this URI. A non-null value is valid only - * if this is an URI conforming to the generic URI syntax and - * the path value is not null. - * - * @param p_queryString the query string for this URI - * - * @exception MalformedURIException if p_queryString is not null and this - * URI does not conform to the generic - * URI syntax or if the path is null - */ - public void setQueryString(String p_queryString) throws MalformedURIException { - if (p_queryString == null) { - m_queryString = null; - } - else if (!isGenericURI()) { - throw new MalformedURIException( - "Query string can only be set for a generic URI!"); - } - else if (getPath() == null) { - throw new MalformedURIException( - "Query string cannot be set when path is null!"); - } - else if (!isURIString(p_queryString)) { - throw new MalformedURIException( - "Query string contains invalid character!"); - } - else { - m_queryString = p_queryString; - } - } - - /** - * Set the fragment for this URI. A non-null value is valid only - * if this is a URI conforming to the generic URI syntax and - * the path value is not null. - * - * @param p_fragment the fragment for this URI - * - * @exception MalformedURIException if p_fragment is not null and this - * URI does not conform to the generic - * URI syntax or if the path is null - */ - public void setFragment(String p_fragment) throws MalformedURIException { - if (p_fragment == null) { - m_fragment = null; - } - else if (!isGenericURI()) { - throw new MalformedURIException( - "Fragment can only be set for a generic URI!"); - } - else if (getPath() == null) { - throw new MalformedURIException( - "Fragment cannot be set when path is null!"); - } - else if (!isURIString(p_fragment)) { - throw new MalformedURIException( - "Fragment contains invalid character!"); - } - else { - m_fragment = p_fragment; - } - } - - /** - * Determines if the passed-in Object is equivalent to this URI. - * - * @param p_test the Object to test for equality. - * - * @return true if p_test is a URI with all values equal to this - * URI, false otherwise - */ - public boolean equals(Object p_test) { - if (p_test instanceof JaxmURI) { - JaxmURI testURI = (JaxmURI) p_test; - if (((m_scheme == null && testURI.m_scheme == null) || - (m_scheme != null && testURI.m_scheme != null && - m_scheme.equals(testURI.m_scheme))) && - ((m_userinfo == null && testURI.m_userinfo == null) || - (m_userinfo != null && testURI.m_userinfo != null && - m_userinfo.equals(testURI.m_userinfo))) && - ((m_host == null && testURI.m_host == null) || - (m_host != null && testURI.m_host != null && - m_host.equals(testURI.m_host))) && - m_port == testURI.m_port && - ((m_path == null && testURI.m_path == null) || - (m_path != null && testURI.m_path != null && - m_path.equals(testURI.m_path))) && - ((m_queryString == null && testURI.m_queryString == null) || - (m_queryString != null && testURI.m_queryString != null && - m_queryString.equals(testURI.m_queryString))) && - ((m_fragment == null && testURI.m_fragment == null) || - (m_fragment != null && testURI.m_fragment != null && - m_fragment.equals(testURI.m_fragment)))) { - return true; - } - } - return false; - } - - public int hashCode() { - // No members safe to use, just default to a constant. - return 153214; - } - - /** - * Get the URI as a string specification. See RFC 2396 Section 5.2. - * - * @return the URI string specification - */ - public String toString() { - StringBuffer uriSpecString = new StringBuffer(); - - if (m_scheme != null) { - uriSpecString.append(m_scheme); - uriSpecString.append(':'); - } - uriSpecString.append(getSchemeSpecificPart()); - return uriSpecString.toString(); - } - - /** - * Get the indicator as to whether this URI uses the "generic URI" - * syntax. - * - * @return true if this URI uses the "generic URI" syntax, false - * otherwise - */ - public boolean isGenericURI() { - // presence of the host (whether valid or empty) means - // double-slashes which means generic uri - return (m_host != null); - } - - /** - * Determine whether a scheme conforms to the rules for a scheme name. - * A scheme is conformant if it starts with an alphanumeric, and - * contains only alphanumerics, '+','-' and '.'. - * - * @return true if the scheme is conformant, false otherwise - */ - public static boolean isConformantSchemeName(String p_scheme) { - if (p_scheme == null || p_scheme.trim().length() == 0) { - return false; - } - - if (!isAlpha(p_scheme.charAt(0))) { - return false; - } - - char testChar; - for (int i = 1; i < p_scheme.length(); i++) { - testChar = p_scheme.charAt(i); - if (!isAlphanum(testChar) && - SCHEME_CHARACTERS.indexOf(testChar) == -1) { - return false; - } - } - - return true; - } - - /** - * Determine whether a string is syntactically capable of representing - * a valid IPv4 address or the domain name of a network host. A valid - * IPv4 address consists of four decimal digit groups separated by a - * '.'. A hostname consists of domain labels (each of which must - * begin and end with an alphanumeric but may contain '-') separated - & by a '.'. See RFC 2396 Section 3.2.2. - * - * @return true if the string is a syntactically valid IPv4 address - * or hostname - */ - public static boolean isWellFormedAddress(String p_address) { - if (p_address == null) { - return false; - } - - String address = p_address.trim(); - int addrLength = address.length(); - if (addrLength == 0 || addrLength > 255) { - return false; - } - - if (address.startsWith(".") || address.startsWith("-")) { - return false; - } - - // rightmost domain label starting with digit indicates IP address - // since top level domain label can only start with an alpha - // see RFC 2396 Section 3.2.2 - int index = address.lastIndexOf('.'); - if (address.endsWith(".")) { - index = address.substring(0, index).lastIndexOf('.'); - } - - if (index+1 < addrLength && isDigit(p_address.charAt(index+1))) { - char testChar; - int numDots = 0; - - // make sure that 1) we see only digits and dot separators, 2) that - // any dot separator is preceded and followed by a digit and - // 3) that we find 3 dots - for (int i = 0; i < addrLength; i++) { - testChar = address.charAt(i); - if (testChar == '.') { - if (!isDigit(address.charAt(i-1)) || - (i+1 < addrLength && !isDigit(address.charAt(i+1)))) { - return false; - } - numDots++; - } - else if (!isDigit(testChar)) { - return false; - } - } - if (numDots != 3) { - return false; - } - } - else { - // domain labels can contain alphanumerics and '-" - // but must start and end with an alphanumeric - char testChar; - - for (int i = 0; i < addrLength; i++) { - testChar = address.charAt(i); - if (testChar == '.') { - if (!isAlphanum(address.charAt(i-1))) { - return false; - } - if (i+1 < addrLength && !isAlphanum(address.charAt(i+1))) { - return false; - } - } - else if (!isAlphanum(testChar) && testChar != '-') { - return false; - } - } - } - return true; - } - - - /** - * Determine whether a char is a digit. - * - * @return true if the char is betweeen '0' and '9', false otherwise - */ - private static boolean isDigit(char p_char) { - return p_char >= '0' && p_char <= '9'; - } - - /** - * Determine whether a character is a hexadecimal character. - * - * @return true if the char is betweeen '0' and '9', 'a' and 'f' - * or 'A' and 'F', false otherwise - */ - private static boolean isHex(char p_char) { - return (isDigit(p_char) || - (p_char >= 'a' && p_char <= 'f') || - (p_char >= 'A' && p_char <= 'F')); - } - - /** - * Determine whether a char is an alphabetic character: a-z or A-Z - * - * @return true if the char is alphabetic, false otherwise - */ - private static boolean isAlpha(char p_char) { - return ((p_char >= 'a' && p_char <= 'z') || - (p_char >= 'A' && p_char <= 'Z' )); - } - - /** - * Determine whether a char is an alphanumeric: 0-9, a-z or A-Z - * - * @return true if the char is alphanumeric, false otherwise - */ - private static boolean isAlphanum(char p_char) { - return (isAlpha(p_char) || isDigit(p_char)); - } - - /** - * Determine whether a character is a reserved character: - * ';', '/', '?', ':', '@', '&', '=', '+', '$' or ',' - * - * @return true if the string contains any reserved characters - */ - private static boolean isReservedCharacter(char p_char) { - return RESERVED_CHARACTERS.indexOf(p_char) != -1; - } - - /** - * Determine whether a char is an unreserved character. - * - * @return true if the char is unreserved, false otherwise - */ - private static boolean isUnreservedCharacter(char p_char) { - return (isAlphanum(p_char) || - MARK_CHARACTERS.indexOf(p_char) != -1); - } - - /** - * Determine whether a given string contains only URI characters (also - * called "uric" in RFC 2396). uric consist of all reserved - * characters, unreserved characters and escaped characters. - * - * @return true if the string is comprised of uric, false otherwise - */ - private static boolean isURIString(String p_uric) { - if (p_uric == null) { - return false; - } - int end = p_uric.length(); - char testChar = '\0'; - for (int i = 0; i < end; i++) { - testChar = p_uric.charAt(i); - if (testChar == '%') { - if (i+2 >= end || - !isHex(p_uric.charAt(i+1)) || - !isHex(p_uric.charAt(i+2))) { - return false; - } - else { - i += 2; - continue; - } - } - if (isReservedCharacter(testChar) || - isUnreservedCharacter(testChar)) { - continue; - } - else { - return false; - } - } - return true; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for util pkg -# Error messages -SAAJ0601.util.newSAXParser.exception=SAAJ0601: Can't create RejectDoctypSaxFilter because SAXParserFactory.newSAXParser threw an exception. See stack trace for details -SAAJ0602.util.getXMLReader.exception=SAAJ0602: Can't create RejectDoctypSaxFilter because SAXParser.getXMLReader threw an exception. See stack trace for details -SAAJ0603.util.setProperty.exception=SAAJ0603: Can't create RejectDoctypSaxFilter because XMLReader.setProperty threw an exception. See stack trace for details - -# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_de.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_de.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for util pkg -# Error messages -SAAJ0601.util.newSAXParser.exception=SAAJ0601: RejectDoctypSaxFilter kann nicht erstellt werden, weil SAXParserFactory.newSAXParser eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace -SAAJ0602.util.getXMLReader.exception=SAAJ0602: RejectDoctypSaxFilter kann nicht erstellt werden, weil SAXParser.getXMLReader eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace -SAAJ0603.util.setProperty.exception=SAAJ0603: RejectDoctypSaxFilter kann nicht erstellt werden, weil XMLReader.setProperty eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace - -# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_es.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_es.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for util pkg -# Error messages -SAAJ0601.util.newSAXParser.exception=SAAJ0601: no se puede crear RejectDoctypSaxFilter, porque SAXParserFactory.newSAXParser ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n -SAAJ0602.util.getXMLReader.exception=SAAJ0602: no se puede crear RejectDoctypSaxFilter, porque SAXParser.getXMLReader ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n -SAAJ0603.util.setProperty.exception=SAAJ0603: no se puede crear RejectDoctypSaxFilter porque XMLReader.setProperty ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n - -# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_fr.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_fr.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for util pkg -# Error messages -SAAJ0601.util.newSAXParser.exception=SAAJ0601 : impossible de cr\u00E9er RejectDoctypSaxFilter car SAXParserFactory.newSAXParser a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile -SAAJ0602.util.getXMLReader.exception=SAAJ0602 : impossible de cr\u00E9er RejectDoctypSaxFilter car SAXParser.getXMLReader a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile -SAAJ0603.util.setProperty.exception=SAAJ0603 : impossible de cr\u00E9er RejectDoctypSaxFilter car XMLReader.setProperty a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile - -# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_it.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_it.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for util pkg -# Error messages -SAAJ0601.util.newSAXParser.exception=SAAJ0601: Impossibile creare RejectDoctypSaxFilter poich\u00E9 SAXParserFactory.newSAXParser ha restituito un'eccezione. Vedere lo stack trace per i dettagli. -SAAJ0602.util.getXMLReader.exception=SAAJ0602: Impossibile creare RejectDoctypSaxFilter poich\u00E9 SAXParser.getXMLReader ha restituito un'eccezione. Vedere lo stack trace per i dettagli. -SAAJ0603.util.setProperty.exception=SAAJ0603: Impossibile creare RejectDoctypSaxFilter poich\u00E9 XMLReader.setProperty ha restituito un'eccezione. Vedere lo stack trace per i dettagli. - -# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ja.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ja.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for util pkg -# Error messages -SAAJ0601.util.newSAXParser.exception=SAAJ0601: SAXParserFactory.newSAXParser\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044 -SAAJ0602.util.getXMLReader.exception=SAAJ0602: SAXParser.getXMLReader\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044 -SAAJ0603.util.setProperty.exception=SAAJ0603: XMLReader.setProperty\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044 - -# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ko.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ko.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for util pkg -# Error messages -SAAJ0601.util.newSAXParser.exception=SAAJ0601: SAXParserFactory.newSAXParser\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624. -SAAJ0602.util.getXMLReader.exception=SAAJ0602: SAXParser.getXMLReader\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624. -SAAJ0603.util.setProperty.exception=SAAJ0603: XMLReader.setProperty\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624. - -# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_pt_BR.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_pt_BR.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for util pkg -# Error messages -SAAJ0601.util.newSAXParser.exception=SAAJ0601: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque SAXParserFactory.newSAXParser gerou uma exce\u00E7\u00E3o. Consulte o rastreamento de pilha para obter detalhes -SAAJ0602.util.getXMLReader.exception=SAAJ0602: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque SAXParser.getXMLReader gerou uma exce\u00E7\u00E3o. Consulte a pilha de rastreamento para obter detalhes -SAAJ0603.util.setProperty.exception=SAAJ0603: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque XMLReader.setProperty gerou uma exce\u00E7\u00E3o. Consulte a pilha de rastreamento para obter detalhes - -# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_CN.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_CN.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for util pkg -# Error messages -SAAJ0601.util.newSAXParser.exception=SAAJ0601: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A SAXParserFactory.newSAXParser \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A -SAAJ0602.util.getXMLReader.exception=SAAJ0602: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A SAXParser.getXMLReader \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A -SAAJ0603.util.setProperty.exception=SAAJ0603: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A XMLReader.setProperty \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A - -# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_TW.properties --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_TW.properties Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,33 +0,0 @@ -# -# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. -# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. -# -# This code is free software; you can redistribute it and/or modify it -# under the terms of the GNU General Public License version 2 only, as -# published by the Free Software Foundation. Oracle designates this -# particular file as subject to the "Classpath" exception as provided -# by Oracle in the LICENSE file that accompanied this code. -# -# This code is distributed in the hope that it will be useful, but WITHOUT -# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or -# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License -# version 2 for more details (a copy is included in the LICENSE file that -# accompanied this code). -# -# You should have received a copy of the GNU General Public License version -# 2 along with this work; if not, write to the Free Software Foundation, -# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. -# -# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA -# or visit www.oracle.com if you need additional information or have any -# questions. -# - -# SAAJ ResourceBundle properties file -# Contains Log messages for util pkg -# Error messages -SAAJ0601.util.newSAXParser.exception=SAAJ0601: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA SAXParserFactory.newSAXParser \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A -SAAJ0602.util.getXMLReader.exception=SAAJ0602: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA SAXParser.getXMLReader \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A -SAAJ0603.util.setProperty.exception=SAAJ0603: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA XMLReader.setProperty \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A - -# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LogDomainConstants.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/LogDomainConstants.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,67 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - -/** - * @author Manveen Kaur (manveen.kaur@eng.sun.com) - */ - -/** - * This interface defines a number of constants pertaining to Logging domains. - */ - -public interface LogDomainConstants { - - public static String MODULE_TOPLEVEL_DOMAIN = - "com.sun.xml.internal.messaging.saaj"; - - // First Level Domain - public static String CLIENT_DOMAIN = - MODULE_TOPLEVEL_DOMAIN + ".client"; - - public static String SOAP_DOMAIN = - MODULE_TOPLEVEL_DOMAIN + ".soap"; - - public static String UTIL_DOMAIN = - MODULE_TOPLEVEL_DOMAIN + ".util"; - - // Second Level Domain - public static String HTTP_CONN_DOMAIN = - CLIENT_DOMAIN + ".p2p"; - - public static String NAMING_DOMAIN = - SOAP_DOMAIN + ".name"; - - public static String SOAP_IMPL_DOMAIN = - SOAP_DOMAIN + ".impl"; - - public static String SOAP_VER1_1_DOMAIN = - SOAP_DOMAIN + ".ver1_1"; - - public static String SOAP_VER1_2_DOMAIN = - SOAP_DOMAIN + ".ver1_2"; - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/MimeHeadersUtil.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/MimeHeadersUtil.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,50 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.util; - -import java.util.Iterator; - -import javax.xml.soap.MimeHeader; -import javax.xml.soap.MimeHeaders; - -public class MimeHeadersUtil { - public static MimeHeaders copy(MimeHeaders headers) { - MimeHeaders newHeaders = new MimeHeaders(); - Iterator eachHeader = headers.getAllHeaders(); - while (eachHeader.hasNext()) { - MimeHeader currentHeader = (MimeHeader) eachHeader.next(); - - newHeaders.addHeader( - currentHeader.getName(), - currentHeader.getValue()); - } - return newHeaders; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/NamespaceContextIterator.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/NamespaceContextIterator.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,122 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/** -* -* @author SAAJ RI Development Team -*/ -package com.sun.xml.internal.messaging.saaj.util; - -import java.util.Iterator; -import java.util.NoSuchElementException; - -import org.w3c.dom.*; - -public class NamespaceContextIterator implements Iterator { - Node context; - NamedNodeMap attributes = null; - int attributesLength; - int attributeIndex; - Attr next = null; - Attr last = null; - boolean traverseStack = true; - - public NamespaceContextIterator(Node context) { - this.context = context; - findContextAttributes(); - } - - public NamespaceContextIterator(Node context, boolean traverseStack) { - this(context); - this.traverseStack = traverseStack; - } - - protected void findContextAttributes() { - while (context != null) { - int type = context.getNodeType(); - if (type == Node.ELEMENT_NODE) { - attributes = context.getAttributes(); - attributesLength = attributes.getLength(); - attributeIndex = 0; - return; - } else { - context = null; - } - } - } - - protected void findNext() { - while (next == null && context != null) { - for (; attributeIndex < attributesLength; ++attributeIndex) { - Node currentAttribute = attributes.item(attributeIndex); - String attributeName = currentAttribute.getNodeName(); - if (attributeName.startsWith("xmlns") - && (attributeName.length() == 5 - || attributeName.charAt(5) == ':')) { - next = (Attr) currentAttribute; - ++attributeIndex; - return; - } - } - if (traverseStack) { - context = context.getParentNode(); - findContextAttributes(); - } else { - context = null; - } - } - } - - public boolean hasNext() { - findNext(); - return next != null; - } - - public Object next() { - return getNext(); - } - - public Attr nextNamespaceAttr() { - return getNext(); - } - - protected Attr getNext() { - findNext(); - if (next == null) { - throw new NoSuchElementException(); - } - last = next; - next = null; - return last; - } - - public void remove() { - if (last == null) { - throw new IllegalStateException(); - } - ((Element) context).removeAttributeNode(last); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ParseUtil.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ParseUtil.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - - -// Cut&paste from sun.net.www.ParseUtil: decode, unescape - -public class ParseUtil { - /** - * Un-escape and return the character at position i in string s. - */ - private static char unescape(String s, int i) { - return (char) Integer.parseInt(s.substring(i+1,i+3),16); - } - - /** - * Returns a new String constructed from the specified String by replacing - * the URL escape sequences and UTF8 encoding with the characters they - * represent. - */ - public static String decode(String s) { - StringBuffer sb = new StringBuffer(); - - int i=0; - while (i> 4) { - case 0xC: case 0xD: - c2 = unescape(s, i); - i += 3; - c = (char)(((c & 0x1f) << 6) | (c2 & 0x3f)); - break; - - case 0xE: - c2 = unescape(s, i); - i += 3; - c3 = unescape(s, i); - i += 3; - c = (char)(((c & 0x0f) << 12) | - ((c2 & 0x3f) << 6) | - (c3 & 0x3f)); - break; - - default: - throw new IllegalArgumentException(); - } - } - } catch (NumberFormatException e) { - throw new IllegalArgumentException(); - } - } - - sb.append(c); - } - - return sb.toString(); - } - - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ParserPool.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/ParserPool.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,108 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - - -import org.xml.sax.SAXException; -import java.util.concurrent.ArrayBlockingQueue; -import java.util.concurrent.BlockingQueue; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; -import org.xml.sax.SAXNotRecognizedException; -import org.xml.sax.SAXNotSupportedException; - - -/** - * Pool of SAXParser objects - */ -public class ParserPool { - private final BlockingQueue queue; - private SAXParserFactory factory; - - public ParserPool(int capacity) { - queue = new ArrayBlockingQueue(capacity); - //factory = SAXParserFactory.newInstance(); - factory = new com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl(); - factory.setNamespaceAware(true); - for (int i = 0; i < capacity; i++) { - try { - queue.put(factory.newSAXParser()); - } catch (InterruptedException ex) { - Thread.currentThread().interrupt(); - throw new RuntimeException(ex); - } catch (ParserConfigurationException ex) { - throw new RuntimeException(ex); - } catch (SAXException ex) { - throw new RuntimeException(ex); - } - } - } - - public SAXParser get() throws ParserConfigurationException, - SAXException { - - try { - return (SAXParser) queue.take(); - } catch (InterruptedException ex) { - throw new SAXException(ex); - } - - } - - public boolean put(SAXParser parser) { - return queue.offer(parser); - } - - public void returnParser(SAXParser saxParser) { - saxParser.reset(); - resetSaxParser(saxParser); - put(saxParser); - } - - - /** - * SAAJ Issue 46 :https://saaj.dev.java.net/issues/show_bug.cgi?id=46 - * Xerces does not provide a way to reset the SymbolTable - * So we are trying to reset it using the proprietary code below. - * Temporary Until the bug : https://jaxp.dev.java.net/issues/show_bug.cgi?id=59 - * is fixed. - * @param parser the parser from the pool whose Symbol Table needs to be reset. - */ - private void resetSaxParser(SAXParser parser) { - try { - //Object obj = parser.getProperty("http://apache.org/xml/properties/internal/symbol-table"); - com.sun.org.apache.xerces.internal.util.SymbolTable table = new com.sun.org.apache.xerces.internal.util.SymbolTable(); - parser.setProperty("http://apache.org/xml/properties/internal/symbol-table", table); - //obj = parser.getProperty("http://apache.org/xml/properties/internal/symbol-table"); - } catch (SAXNotRecognizedException ex) { - //nothing to do - } catch (SAXNotSupportedException ex) { - //nothing to do - } - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/RejectDoctypeSaxFilter.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/RejectDoctypeSaxFilter.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,182 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - -import java.util.logging.Logger; - -import javax.xml.parsers.SAXParser; -import javax.xml.soap.SOAPException; - -import org.xml.sax.*; -import org.xml.sax.ext.LexicalHandler; -import org.xml.sax.helpers.XMLFilterImpl; - -import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; -import org.xml.sax.helpers.AttributesImpl; - -/** - * Users of this class see a SAX2 XMLReader (via XMLFilterImpl). This - * class creates a parent XMLReader via JAXP and installs itself as a SAX2 - * extension LexicalHandler which rejects document type declarations - * because they are not legal in SOAP. If the user of this class sets a - * LexicalHandler, then it forwards events to that handler. - * - * - * @author Edwin Goei - */ - -public class RejectDoctypeSaxFilter extends XMLFilterImpl implements XMLReader, LexicalHandler{ - protected static final Logger log = - Logger.getLogger(LogDomainConstants.UTIL_DOMAIN, - "com.sun.xml.internal.messaging.saaj.util.LocalStrings"); - - /** Standard SAX 2.0 ext property */ - static final String LEXICAL_HANDLER_PROP = - "http://xml.org/sax/properties/lexical-handler"; - - static final String WSU_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd".intern(); - static final String SIGNATURE_LNAME = "Signature".intern(); - static final String ENCRYPTED_DATA_LNAME = "EncryptedData".intern(); - static final String DSIG_NS = "http://www.w3.org/2000/09/xmldsig#".intern(); - static final String XENC_NS = "http://www.w3.org/2001/04/xmlenc#".intern(); - static final String ID_NAME = "ID".intern(); - - /** LexicalHandler to forward events to, if any */ - private LexicalHandler lexicalHandler; - - public RejectDoctypeSaxFilter(SAXParser saxParser) throws SOAPException { - XMLReader xmlReader; - try { - xmlReader = saxParser.getXMLReader(); - } catch (Exception e) { - log.severe("SAAJ0602.util.getXMLReader.exception"); - throw new SOAPExceptionImpl( - "Couldn't get an XMLReader while constructing a RejectDoctypeSaxFilter", - e); - } - - // Set ourselves up to be the SAX LexicalHandler - try { - xmlReader.setProperty(LEXICAL_HANDLER_PROP, this); - } catch (Exception e) { - log.severe("SAAJ0603.util.setProperty.exception"); - throw new SOAPExceptionImpl( - "Couldn't set the lexical handler property while constructing a RejectDoctypeSaxFilter", - e); - } - - // Set the parent XMLReader of this SAX filter - setParent(xmlReader); - } - - /* - * Override setProperty() to capture any LexicalHandler that is set for - * forwarding of events. - */ - public void setProperty(String name, Object value) - throws SAXNotRecognizedException, SAXNotSupportedException { - if (LEXICAL_HANDLER_PROP.equals(name)) { - lexicalHandler = (LexicalHandler) value; - } else { - super.setProperty(name, value); - } - } - - // - // Beginning of SAX LexicalHandler callbacks... - // - - public void startDTD(String name, String publicId, String systemId) - throws SAXException { - throw new SAXException("Document Type Declaration is not allowed"); - } - - public void endDTD() throws SAXException { - } - - public void startEntity(String name) throws SAXException { - if (lexicalHandler != null) { - lexicalHandler.startEntity(name); - } - } - - public void endEntity(String name) throws SAXException { - if (lexicalHandler != null) { - lexicalHandler.endEntity(name); - } - } - - public void startCDATA() throws SAXException { - if (lexicalHandler != null) { - lexicalHandler.startCDATA(); - } - } - - public void endCDATA() throws SAXException { - if (lexicalHandler != null) { - lexicalHandler.endCDATA(); - } - } - - public void comment(char[] ch, int start, int length) throws SAXException { - if (lexicalHandler != null) { - lexicalHandler.comment(ch, start, length); - } - } - - // - // End of SAX LexicalHandler callbacks - // - - public void startElement(String namespaceURI, String localName, - String qName, Attributes atts) throws SAXException{ - if(atts != null ){ - boolean eos = false; - if(namespaceURI == DSIG_NS || XENC_NS == namespaceURI){ - eos = true; - } - int length = atts.getLength(); - AttributesImpl attrImpl = new AttributesImpl(); - for(int i=0; i< length;i++){ - String name = atts.getLocalName(i); - if(name!=null && (name.equals("Id"))){ - if(eos || atts.getURI(i) == WSU_NS ){ - attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i), - atts.getQName(i), ID_NAME, atts.getValue(i)); - }else{ - attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i), atts.getQName(i), atts.getType(i), atts.getValue(i)); - } - }else{ - attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i), - atts.getQName(i), atts.getType(i), atts.getValue(i)); - } - } - super.startElement(namespaceURI,localName, qName,attrImpl); - }else{ - super.startElement(namespaceURI,localName, qName, null); - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/SAAJUtil.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/SAAJUtil.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,51 +0,0 @@ -/* - * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - -import java.security.AccessControlException; - -/** - * - * @author vbkumarjayanti - */ -public final class SAAJUtil { - - public static boolean getSystemBoolean(String arg) { - try { - return Boolean.getBoolean(arg); - } catch (AccessControlException ex) { - return false; - } - } - - public static String getSystemProperty(String arg) { - try { - return System.getProperty(arg); - } catch (SecurityException ex) { - return null; - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/TeeInputStream.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/TeeInputStream.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,91 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * Created on Feb 28, 2003 - * - * To change this generated comment go to - * Window>Preferences>Java>Code Generation>Code Template - */ -package com.sun.xml.internal.messaging.saaj.util; - -import java.io.*; - -/** - * @author pgoodwin - */ -public class TeeInputStream extends InputStream { - protected InputStream source; - protected OutputStream copySink; - - public TeeInputStream(InputStream source, OutputStream sink) { - super(); - this.copySink = sink; - this.source = source; - } - - public int read() throws IOException { - int result = source.read(); - copySink.write(result); - return result; - } - - public int available() throws IOException { - return source.available(); - } - - public void close() throws IOException { - source.close(); - } - - public synchronized void mark(int readlimit) { - source.mark(readlimit); - } - - public boolean markSupported() { - return source.markSupported(); - } - - public int read(byte[] b, int off, int len) throws IOException { - int result = source.read(b, off, len); - copySink.write(b, off, len); - return result; - } - - public int read(byte[] b) throws IOException { - int result = source.read(b); - copySink.write(b); - return result; - } - - public synchronized void reset() throws IOException { - source.reset(); - } - - public long skip(long n) throws IOException { - return source.skip(n); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/XMLDeclarationParser.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/XMLDeclarationParser.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,179 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util; - -import java.io.*; - -import javax.xml.transform.TransformerException; - -/* - * Class that parses the very first construct in the document i.e. - * - * - * @author Panos Kougiouris (panos@acm.org) - * @version - */ - -public class XMLDeclarationParser { - private String m_encoding; - private PushbackReader m_pushbackReader; - private boolean m_hasHeader; // preserve the case where no XML Header exists - private String xmlDecl = null; - static String gt16 = null; - static String utf16Decl = null; - static { - try { - gt16 = new String(">".getBytes("utf-16")); - utf16Decl = new String("') { - break; - } - } - int len = index; - - String decl = xmlDeclStr.toString(); - boolean utf16 = false; - boolean utf8 = false; - - int xmlIndex = decl.indexOf(utf16Decl); - if (xmlIndex > -1) { - utf16 = true; - } else { - xmlIndex = decl.indexOf(" -1) { - utf8 = true; - } - } - - // no XML decl - if (!utf16 && !utf8) { - m_pushbackReader.unread(aChar, 0, len); - return; - } - m_hasHeader = true; - - if (utf16) { - xmlDecl = new String(decl.getBytes(), "utf-16"); - xmlDecl = xmlDecl.substring(xmlDecl.indexOf("<")); - } else { - xmlDecl = decl; - } - // do we want to check that there are no other characters preceeding encodingIndex) { - throw new IOException("The 'version' attribute should preceed the 'encoding' attribute in an XML Declaration"); - } - - int stdAloneIndex = xmlDecl.indexOf("standalone"); - if ((stdAloneIndex > -1) && ((stdAloneIndex < versionIndex) || (stdAloneIndex < encodingIndex))) { - throw new IOException("The 'standalone' attribute should be the last attribute in an XML Declaration"); - } - - int eqIndex = xmlDecl.indexOf("=", encodingIndex); - if (eqIndex == -1) { - throw new IOException("Missing '=' character after 'encoding' in XML declaration"); - } - - m_encoding = parseEncoding(xmlDecl, eqIndex); - if(m_encoding.startsWith("\"")){ - m_encoding = m_encoding.substring(m_encoding.indexOf("\"")+1, m_encoding.lastIndexOf("\"")); - } else if(m_encoding.startsWith("\'")){ - m_encoding = m_encoding.substring(m_encoding.indexOf("\'")+1, m_encoding.lastIndexOf("\'")); - } - } - - //-------------------------------------------------------------------- - - public void writeTo(Writer wr) throws IOException { - if (!m_hasHeader) return; - wr.write(xmlDecl.toString()); - } - - private String parseEncoding(String xmlDeclFinal, int eqIndex) throws IOException { - java.util.StringTokenizer strTok = new java.util.StringTokenizer( - xmlDeclFinal.substring(eqIndex + 1)); - if (strTok.hasMoreTokens()) { - String encodingTok = strTok.nextToken(); - int indexofQ = encodingTok.indexOf("?"); - if (indexofQ > -1) { - return encodingTok.substring(0,indexofQ); - } else { - return encodingTok; - } - } else { - throw new IOException("Error parsing 'encoding' attribute in XML declaration"); - } - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/LazyEnvelopeStaxReader.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/LazyEnvelopeStaxReader.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,359 +0,0 @@ -/* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util.stax; - -import javax.xml.namespace.NamespaceContext; -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPException; -import javax.xml.stream.Location; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamReader; - -import org.w3c.dom.Node; - -import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl; -import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; - -/** - * "Hybrid" reader which - * @author desagar - * - */ -public class LazyEnvelopeStaxReader extends com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader { -// EnvelopeImpl env; - XMLStreamReader payloadReader = null; - boolean usePayloadReaderDelegate = false; - private QName bodyQName; - - public LazyEnvelopeStaxReader(EnvelopeImpl env) throws SOAPException, XMLStreamException { - super(env); -// this.env = env; - bodyQName = new QName(env.getNamespaceURI(), "Body"); - payloadReader = env.getStaxBridge().getPayloadReader(); - int eventType = getEventType(); - while (eventType != START_ELEMENT) { - eventType = nextTag(); - } - } - - public Object getProperty(String name) throws IllegalArgumentException { - if (usePayloadReaderDelegate) return payloadReader.getProperty(name); - return super.getProperty(name); - } - - public int next() throws XMLStreamException { -// boolean previouslyUsingPayloadReader = usePayloadReaderDelegate; - //call checkReaderStatus to advance to payloadReader if needed - checkReaderStatus(true); - - if (usePayloadReaderDelegate) return payloadReader.getEventType(); - - //if we just moved to payload reader, don't advance the pointer -// if (usePayloadReaderDelegate && !previouslyUsingPayloadReader) return payloadReader.getEventType(); - -// if (usePayloadReaderDelegate) return payloadReader.next(); - return getEventType(); - } - - public void require(int type, String namespaceURI, String localName) - throws XMLStreamException { - if (usePayloadReaderDelegate) payloadReader.require(type, namespaceURI, localName); - else super.require(type, namespaceURI, localName); - } - - public String getElementText() throws XMLStreamException { - if (usePayloadReaderDelegate) return payloadReader.getElementText(); - return super.getElementText(); - } - - public int nextTag() throws XMLStreamException { - if (usePayloadReaderDelegate) return payloadReader.nextTag(); - return super.nextTag(); - } - - public boolean hasNext() throws XMLStreamException { - checkReaderStatus(false); - boolean hasNext; - if (usePayloadReaderDelegate) { - hasNext = payloadReader.hasNext(); - } else { - hasNext = super.hasNext(); - } - - /*if (!hasNext && payloadReader != null) { - usePayloadReaderDelegate = true; - hasNext = payloadReader.hasNext(); - }*/ - return hasNext; - } - - private void checkReaderStatus(boolean advanceToNext) throws XMLStreamException { - //if we are using payloadReader, make sure it is not exhausted - //if it is, return to DOM based reader for remaining end elements (body and envelope) - if (usePayloadReaderDelegate) { - if (!payloadReader.hasNext()) { - usePayloadReaderDelegate = false; - } - } else if (START_ELEMENT == getEventType()) { - //if not on payload reader, check if we need to switch to payload reader - - //if the current event is the SOAP body element start, - //and the body is lazy, switch to the payload reader - if (bodyQName.equals(getName())) { - //if we are just switching to payload reader, don't advance...payload reader - //will already be on the first payload element - usePayloadReaderDelegate = true; - advanceToNext = false; - } - } - - if (advanceToNext) { - if (usePayloadReaderDelegate) { - payloadReader.next(); - } else { - super.next(); - } - } - } - - public void close() throws XMLStreamException { - if (usePayloadReaderDelegate) payloadReader.close(); - else super.close(); - } - - public String getNamespaceURI(String prefix) { - if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(prefix); - return super.getNamespaceURI(prefix); - } - - public boolean isStartElement() { - if (usePayloadReaderDelegate) return payloadReader.isStartElement(); - return super.isStartElement(); - } - - public boolean isEndElement() { - if (usePayloadReaderDelegate) return payloadReader.isEndElement(); - return super.isEndElement(); - } - - public boolean isCharacters() { - if (usePayloadReaderDelegate) return payloadReader.isCharacters(); - return super.isEndElement(); - } - - public boolean isWhiteSpace() { - if (usePayloadReaderDelegate) return payloadReader.isWhiteSpace(); - return super.isWhiteSpace(); - } - - public String getAttributeValue(String namespaceURI, String localName) { - if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(namespaceURI, localName); - return super.getAttributeValue(namespaceURI, localName); - } - - public int getAttributeCount() { - if (usePayloadReaderDelegate) return payloadReader.getAttributeCount(); - return super.getAttributeCount(); - } - - public QName getAttributeName(int index) { - if (usePayloadReaderDelegate) return payloadReader.getAttributeName(index); - return super.getAttributeName(index); - } - - public String getAttributeNamespace(int index) { - if (usePayloadReaderDelegate) return payloadReader.getAttributeNamespace(index); - return super.getAttributeNamespace(index); - } - - public String getAttributeLocalName(int index) { - if (usePayloadReaderDelegate) return payloadReader.getAttributeLocalName(index); - return super.getAttributeLocalName(index); - } - - public String getAttributePrefix(int index) { - if (usePayloadReaderDelegate) return payloadReader.getAttributePrefix(index); - return super.getAttributePrefix(index); - } - - public String getAttributeType(int index) { - if (usePayloadReaderDelegate) return payloadReader.getAttributeType(index); - return super.getAttributeType(index); - } - - public String getAttributeValue(int index) { - if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(index); - return super.getAttributeValue(index); - } - - public boolean isAttributeSpecified(int index) { - if (usePayloadReaderDelegate) return payloadReader.isAttributeSpecified(index); - return super.isAttributeSpecified(index); - } - - public int getNamespaceCount() { - if (usePayloadReaderDelegate) return payloadReader.getNamespaceCount(); - return super.getNamespaceCount(); - } - - public String getNamespacePrefix(int index) { - if (usePayloadReaderDelegate) return payloadReader.getNamespacePrefix(index); - return super.getNamespacePrefix(index); - } - - public String getNamespaceURI(int index) { - if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(index); - return super.getNamespaceURI(index); - } - - public NamespaceContext getNamespaceContext() { - if (usePayloadReaderDelegate) return payloadReader.getNamespaceContext(); - return super.getNamespaceContext(); - } - - public int getEventType() { - if (usePayloadReaderDelegate) return payloadReader.getEventType(); - return super.getEventType(); - } - - public String getText() { - if (usePayloadReaderDelegate) return payloadReader.getText(); - return super.getText(); - } - - public char[] getTextCharacters() { - if (usePayloadReaderDelegate) return payloadReader.getTextCharacters(); - return super.getTextCharacters(); - } - - public int getTextCharacters(int sourceStart, char[] target, - int targetStart, int length) throws XMLStreamException { - if (usePayloadReaderDelegate) return payloadReader.getTextCharacters(sourceStart, target, targetStart, - length); - return super.getTextCharacters(sourceStart, target, targetStart, length); - } - - public int getTextStart() { - if (usePayloadReaderDelegate) return payloadReader.getTextStart(); - return super.getTextStart(); - } - - public int getTextLength() { - if (usePayloadReaderDelegate) return payloadReader.getTextLength(); - return super.getTextLength(); - } - - public String getEncoding() { - if (usePayloadReaderDelegate) return payloadReader.getEncoding(); - return super.getEncoding(); - } - - public boolean hasText() { - if (usePayloadReaderDelegate) return payloadReader.hasText(); - return super.hasText(); - } - - public Location getLocation() { - if (usePayloadReaderDelegate) return payloadReader.getLocation(); - return super.getLocation(); - } - - public QName getName() { - if (usePayloadReaderDelegate) return payloadReader.getName(); - return super.getName(); - } - - public String getLocalName() { - if (usePayloadReaderDelegate) return payloadReader.getLocalName(); - return super.getLocalName(); - } - - public boolean hasName() { - if (usePayloadReaderDelegate) return payloadReader.hasName(); - return super.hasName(); - } - - public String getNamespaceURI() { - if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(); - return super.getNamespaceURI(); - } - - public String getPrefix() { - if (usePayloadReaderDelegate) return payloadReader.getPrefix(); - return super.getPrefix(); - } - - public String getVersion() { - if (usePayloadReaderDelegate) return payloadReader.getVersion(); - return super.getVersion(); - } - - public boolean isStandalone() { - if (usePayloadReaderDelegate) return payloadReader.isStandalone(); - return super.isStandalone(); - } - - public boolean standaloneSet() { - if (usePayloadReaderDelegate) return payloadReader.standaloneSet(); - return super.standaloneSet(); - } - - public String getCharacterEncodingScheme() { - if (usePayloadReaderDelegate) return payloadReader.getCharacterEncodingScheme(); - return super.getCharacterEncodingScheme(); - } - - public String getPITarget() { - if (usePayloadReaderDelegate) return payloadReader.getPITarget(); - return super.getPITarget(); - } - - public String getPIData() { - if (usePayloadReaderDelegate) return payloadReader.getPIData(); - return super.getPIData(); - } - - //make sure that message is not realized as a result of call - //to getFirstChild - protected Node getFirstChild(Node node) { - if (node instanceof BodyImpl) { - return ((BodyImpl) node).getFirstChildNoMaterialize(); - } else { - return node.getFirstChild(); - } - } - - protected Node getNextSibling(Node node) { - if (node instanceof BodyImpl) { - //body is not expected to have a next sibling - even if it does - //we would have to materialize the node to retrieve it. - //Since we don't want to materialize it right now, just return null - return null; - } - return node.getNextSibling(); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxReaderEx.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxReaderEx.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,147 +0,0 @@ -/* - * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util.stax; - -import com.sun.xml.internal.org.jvnet.staxex.Base64Data; -import com.sun.xml.internal.org.jvnet.staxex.BinaryText; -import com.sun.xml.internal.org.jvnet.staxex.XMLStreamReaderEx; -import com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader; -import org.w3c.dom.Node; -import org.w3c.dom.Text; - -import javax.xml.soap.SOAPElement; -import javax.xml.stream.XMLStreamException; -import java.util.Iterator; - -/** - * SaajStaxReaderEx - * - * @author shih-chang.chen@oracle.com - */ -public class SaajStaxReaderEx extends DOMStreamReader implements XMLStreamReaderEx { - //TODO extends com.sun.xml.internal.ws.streaming.DOMStreamReader - private BinaryText binaryText = null; - private Base64Data base64AttData = null; - - public SaajStaxReaderEx(SOAPElement se) { - super(se); - } - - @Override - public int next() throws XMLStreamException { - binaryText = null; - base64AttData = null; - while(true) { - int r = _next(); - switch (r) { - case CHARACTERS: - if (_current instanceof BinaryText) { - binaryText = (BinaryText) _current; - base64AttData = new Base64Data(); - base64AttData.set(binaryText.getDataHandler()); -//System.out.println("--------------- debug SaajStaxReaderEx binaryText " + binaryText); - } else { - // if we are currently at text node, make sure that this is a meaningful text node. - Node prev = _current.getPreviousSibling(); - if(prev!=null && prev.getNodeType()==Node.TEXT_NODE) - continue; // nope. this is just a continuation of previous text that should be invisible - - Text t = (Text)_current; - wholeText = t.getWholeText(); - if(wholeText.length()==0) - continue; // nope. this is empty text. - } - return CHARACTERS; - case START_ELEMENT: - splitAttributes(); - return START_ELEMENT; - default: - return r; - } - } - } - - @Override - public String getElementTextTrim() throws XMLStreamException { - // TODO Auto-generated method stub - return null; - } - - @Override - public CharSequence getPCDATA() throws XMLStreamException { - return (binaryText != null) ? base64AttData : getText(); - } - - @Override - public com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx getNamespaceContext() { - return new com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx() { - - @Override - public String getNamespaceURI(String prefix) { - return _current.lookupNamespaceURI(prefix); - } - - @Override - public String getPrefix(String uri) { - return _current.lookupPrefix(uri); - } - - @Override - public Iterator getPrefixes(String arg0) { - // TODO Auto-generated method stub - return null; - } - - @Override - public Iterator iterator() { - // TODO Auto-generated method stub - return null; - } - - }; - } - - - @Override - public int getTextLength() { - return (binaryText != null) ? base64AttData.length() : super.getTextLength(); - } - - @Override - public int getTextStart() { - return (binaryText != null) ? 0: super.getTextStart(); - } - - @Override - public char[] getTextCharacters() { - if (binaryText != null) { - char[] chars = new char[base64AttData.length()]; - base64AttData.writeTo(chars, 0); - return chars; - } - return super.getTextCharacters(); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriter.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriter.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,334 +0,0 @@ -/* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util.stax; - -import java.util.Arrays; -import java.util.Iterator; - -import javax.xml.namespace.NamespaceContext; -import javax.xml.namespace.QName; -import javax.xml.soap.SOAPElement; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPMessage; -import javax.xml.stream.XMLStreamException; -import javax.xml.stream.XMLStreamWriter; - -import org.w3c.dom.Comment; -import org.w3c.dom.Node; - -/** - * SaajStaxWriter builds a SAAJ SOAPMessage by using XMLStreamWriter interface. - * - * @author shih-chang.chen@oracle.com - */ -public class SaajStaxWriter implements XMLStreamWriter { - - protected SOAPMessage soap; - protected String envURI; - protected SOAPElement currentElement; - - static final protected String Envelope = "Envelope"; - static final protected String Header = "Header"; - static final protected String Body = "Body"; - static final protected String xmlns = "xmlns"; - - public SaajStaxWriter(final SOAPMessage msg, String uri) throws SOAPException { - soap = msg; - this.envURI = uri; - } - - public SOAPMessage getSOAPMessage() { - return soap; - } - - protected SOAPElement getEnvelope() throws SOAPException { - return soap.getSOAPPart().getEnvelope(); - } - - @Override - public void writeStartElement(final String localName) throws XMLStreamException { - try { - currentElement = currentElement.addChildElement(localName); - } catch (SOAPException e) { - throw new XMLStreamException(e); - } - } - - @Override - public void writeStartElement(final String ns, final String ln) throws XMLStreamException { - writeStartElement(null, ln, ns); - } - - @Override - public void writeStartElement(final String prefix, final String ln, final String ns) throws XMLStreamException { - try { - if (envURI.equals(ns)) { - if (Envelope.equals(ln)) { - currentElement = getEnvelope(); - fixPrefix(prefix); - return; - } else if (Header.equals(ln)) { - currentElement = soap.getSOAPHeader(); - fixPrefix(prefix); - return; - } else if (Body.equals(ln)) { - currentElement = soap.getSOAPBody(); - fixPrefix(prefix); - return; - } - } - currentElement = (prefix == null) ? - currentElement.addChildElement(new QName(ns, ln)) : - currentElement.addChildElement(ln, prefix, ns); - } catch (SOAPException e) { - throw new XMLStreamException(e); - } - } - - private void fixPrefix(final String prfx) throws XMLStreamException { - fixPrefix(prfx, currentElement); - } - - private void fixPrefix(final String prfx, SOAPElement element) throws XMLStreamException { - String oldPrfx = element.getPrefix(); - if (prfx != null && !prfx.equals(oldPrfx)) { - element.setPrefix(prfx); - } - } - - @Override - public void writeEmptyElement(final String uri, final String ln) throws XMLStreamException { - writeStartElement(null, ln, uri); - } - - @Override - public void writeEmptyElement(final String prefix, final String ln, final String uri) throws XMLStreamException { - writeStartElement(prefix, ln, uri); - } - - @Override - public void writeEmptyElement(final String ln) throws XMLStreamException { - writeStartElement(null, ln, null); - } - - @Override - public void writeEndElement() throws XMLStreamException { - if (currentElement != null) currentElement = currentElement.getParentElement(); - } - - @Override - public void writeEndDocument() throws XMLStreamException { - } - - @Override - public void close() throws XMLStreamException { - } - - @Override - public void flush() throws XMLStreamException { - } - - @Override - public void writeAttribute(final String ln, final String val) throws XMLStreamException { - writeAttribute(null, null, ln, val); - } - - @Override - public void writeAttribute(final String prefix, final String ns, final String ln, final String value) throws XMLStreamException { - try { - if (ns == null) { - if (prefix == null && xmlns.equals(ln)) { - currentElement.addNamespaceDeclaration("", value); - } else { - currentElement.setAttributeNS("", ln, value); - } - } else { - QName name = (prefix == null) ? new QName(ns, ln) : new QName(ns, ln, prefix); - currentElement.addAttribute(name, value); - } - } catch (SOAPException e) { - throw new XMLStreamException(e); - } - } - - @Override - public void writeAttribute(final String ns, final String ln, final String val) throws XMLStreamException { - writeAttribute(null, ns, ln, val); - } - - @Override - public void writeNamespace(String prefix, final String uri) throws XMLStreamException { - - // make prefix default if null or "xmlns" (according to javadoc) - if (prefix == null || "xmlns".equals(prefix)) { - prefix = ""; - } - - try { - currentElement.addNamespaceDeclaration(prefix, uri); - } catch (SOAPException e) { - throw new XMLStreamException(e); - } - } - - @Override - public void writeDefaultNamespace(final String uri) throws XMLStreamException { - writeNamespace("", uri); - } - - @Override - public void writeComment(final String data) throws XMLStreamException { - Comment c = soap.getSOAPPart().createComment(data); - currentElement.appendChild(c); - } - - @Override - public void writeProcessingInstruction(final String target) throws XMLStreamException { - Node n = soap.getSOAPPart().createProcessingInstruction(target, ""); - currentElement.appendChild(n); - } - - @Override - public void writeProcessingInstruction(final String target, final String data) throws XMLStreamException { - Node n = soap.getSOAPPart().createProcessingInstruction(target, data); - currentElement.appendChild(n); - } - - @Override - public void writeCData(final String data) throws XMLStreamException { - Node n = soap.getSOAPPart().createCDATASection(data); - currentElement.appendChild(n); - } - - @Override - public void writeDTD(final String dtd) throws XMLStreamException { - //TODO ... Don't do anything here - } - - @Override - public void writeEntityRef(final String name) throws XMLStreamException { - Node n = soap.getSOAPPart().createEntityReference(name); - currentElement.appendChild(n); - } - - @Override - public void writeStartDocument() throws XMLStreamException { - } - - @Override - public void writeStartDocument(final String version) throws XMLStreamException { - if (version != null) soap.getSOAPPart().setXmlVersion(version); - } - - @Override - public void writeStartDocument(final String encoding, final String version) throws XMLStreamException { - if (version != null) soap.getSOAPPart().setXmlVersion(version); - if (encoding != null) { - try { - soap.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, encoding); - } catch (SOAPException e) { - throw new XMLStreamException(e); - } - } - } - - @Override - public void writeCharacters(final String text) throws XMLStreamException { - try { - currentElement.addTextNode(text); - } catch (SOAPException e) { - throw new XMLStreamException(e); - } - } - - @Override - public void writeCharacters(final char[] text, final int start, final int len) throws XMLStreamException { - char[] chr = (start == 0 && len == text.length) ? text : Arrays.copyOfRange(text, start, start + len); - try { - currentElement.addTextNode(new String(chr)); - } catch (SOAPException e) { - throw new XMLStreamException(e); - } - } - - @Override - public String getPrefix(final String uri) throws XMLStreamException { - return currentElement.lookupPrefix(uri); - } - - @Override - public void setPrefix(final String prefix, final String uri) throws XMLStreamException { - try { - this.currentElement.addNamespaceDeclaration(prefix, uri); - } catch (SOAPException e) { - throw new XMLStreamException(e); - } - } - - @Override - public void setDefaultNamespace(final String uri) throws XMLStreamException { - setPrefix("", uri); - } - - @Override - public void setNamespaceContext(final NamespaceContext context)throws XMLStreamException { - throw new UnsupportedOperationException(); - } - - @Override - public Object getProperty(final String name) throws IllegalArgumentException { - //TODO the following line is to make eclipselink happy ... they are aware of this problem - - if (javax.xml.stream.XMLOutputFactory.IS_REPAIRING_NAMESPACES.equals(name)) return Boolean.FALSE; - return null; - } - - @Override - public NamespaceContext getNamespaceContext() { - return new NamespaceContext() { - public String getNamespaceURI(final String prefix) { - return currentElement.getNamespaceURI(prefix); - } - public String getPrefix(final String namespaceURI) { - return currentElement.lookupPrefix(namespaceURI); - } - public Iterator getPrefixes(final String namespaceURI) { - return new Iterator() { - String prefix = getPrefix(namespaceURI); - public boolean hasNext() { - return (prefix != null); - } - public Object next() { - if (!hasNext()) throw new java.util.NoSuchElementException(); - String next = prefix; - prefix = null; - return next; - } - public void remove() {} - }; - } - }; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriterEx.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriterEx.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,245 +0,0 @@ -/* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.xml.internal.messaging.saaj.util.stax; - -import java.io.OutputStream; -import java.util.Arrays; -import java.util.Iterator; -import java.util.UUID; - -import javax.activation.DataHandler; -import javax.xml.bind.attachment.AttachmentMarshaller; -import javax.xml.soap.SOAPException; -import javax.xml.soap.SOAPMessage; -import javax.xml.stream.XMLStreamException; - -import com.sun.xml.internal.org.jvnet.staxex.Base64Data; -import com.sun.xml.internal.org.jvnet.staxex.BinaryText; -import com.sun.xml.internal.org.jvnet.staxex.MtomEnabled; -import com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx; -import com.sun.xml.internal.org.jvnet.staxex.StreamingDataHandler; -import com.sun.xml.internal.org.jvnet.staxex.XMLStreamWriterEx; -import com.sun.xml.internal.org.jvnet.staxex.util.MtomStreamWriter; -// -//import com.sun.xml.internal.ws.api.message.saaj.SaajStaxWriter; -//import com.sun.xml.internal.ws.developer.StreamingDataHandler; -//import com.sun.xml.internal.ws.streaming.MtomStreamWriter; - -/** - * SaajStaxWriterEx converts XMLStreamWriterEx calls to build an orasaaj SOAPMessage with BinaryTextImpl. - * - * @author shih-chang.chen@oracle.com - */ -public class SaajStaxWriterEx extends SaajStaxWriter implements XMLStreamWriterEx, MtomStreamWriter { - - static final protected String xopNS = "http://www.w3.org/2004/08/xop/include"; - static final protected String Include = "Include"; - static final protected String href = "href"; - - private enum State {xopInclude, others}; - private State state = State.others; - private BinaryText binaryText; - - public SaajStaxWriterEx(SOAPMessage msg, String uri) throws SOAPException { - super(msg, uri); - } - - public void writeStartElement(String prefix, String ln, String ns) throws XMLStreamException { - if (xopNS.equals(ns) && Include.equals(ln)) { - state = State.xopInclude; - return; - } else { - super.writeStartElement(prefix, ln, ns); - } - } - - @Override - public void writeEndElement() throws XMLStreamException { - if (state.equals(State.xopInclude)) { - state = State.others; - } else { - super.writeEndElement(); - } - } - - @Override - public void writeAttribute(String prefix, String ns, String ln, String value) throws XMLStreamException { - if (binaryText != null && href.equals(ln)) { - return; - } else { - super.writeAttribute(prefix, ns, ln, value); - } - } - -// @Override -// public void writeComment(String data) throws XMLStreamException { -// ((ElementImpl)currentElement).addCommentNode(data); -// } -// -// @Override -// public void writeCData(String data) throws XMLStreamException { -// CDataTextImpl cdt = new CDataTextImpl(soap.getSOAPPart(), data); -// currentElement.appendChild(cdt); -// } - - @Override - public NamespaceContextEx getNamespaceContext() { - return new NamespaceContextEx() { - public String getNamespaceURI(String prefix) { - return currentElement.getNamespaceURI(prefix); - } - public String getPrefix(String namespaceURI) { - return currentElement.lookupPrefix(namespaceURI); - } - public Iterator getPrefixes(final String namespaceURI) { - return new Iterator() { - String prefix = getPrefix(namespaceURI); - public boolean hasNext() { - return (prefix != null); - } - public Object next() { - if (prefix == null) throw new java.util.NoSuchElementException(); - String next = prefix; - prefix = null; - return next; - } - public void remove() {} - }; - } - public Iterator iterator() { - return new Iterator() { - public boolean hasNext() { return false; } - public Binding next() { return null; } - public void remove() {} - }; - } - }; - } - - @Override - public void writeBinary(DataHandler data) throws XMLStreamException { -// binaryText = BinaryTextImpl.createBinaryTextFromDataHandler((MessageImpl)soap, null, currentElement.getOwnerDocument(), data); -// currentElement.appendChild(binaryText); - addBinaryText(data); - } - - @Override - public OutputStream writeBinary(String arg0) throws XMLStreamException { - return null; - } - - @Override - public void writeBinary(byte[] data, int offset, int length, String contentType) throws XMLStreamException { -// if (mtomThreshold == -1 || mtomThreshold > length) return null; - byte[] bytes = (offset == 0 && length == data.length) ? data : Arrays.copyOfRange(data, offset, offset + length); - if (currentElement instanceof MtomEnabled) { - binaryText = ((MtomEnabled) currentElement).addBinaryText(bytes); - } else { - throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement); - } - } - - @Override - public void writePCDATA(CharSequence arg0) throws XMLStreamException { - if (arg0 instanceof Base64Data) { - // The fix of StreamReaderBufferCreator preserves this dataHandler - addBinaryText(((Base64Data) arg0).getDataHandler()); - } else { - // We should not normally get here as we expect a DataHandler, - // but this is the most general solution. If we do get - // something other than a Data Handler, create a Text node with - // the data. Another alternative would be to throw an exception, - // but in the most general case, we don't know whether this input - // is expected. - try { - currentElement.addTextNode(arg0.toString()); - } catch (SOAPException e) { - throw new XMLStreamException("Cannot add Text node", e); - } - } - } - - static private String encodeCid() { - String cid = "example.jaxws.sun.com"; - String name = UUID.randomUUID() + "@"; - return name + cid; - } - - private String addBinaryText(DataHandler data) { - String hrefOrCid = null; - if (data instanceof StreamingDataHandler) { - hrefOrCid = ((StreamingDataHandler) data).getHrefCid(); - } - if (hrefOrCid == null) hrefOrCid = encodeCid(); - - String prefixedCid = (hrefOrCid.startsWith("cid:")) ? hrefOrCid : "cid:" + hrefOrCid; - // Should we do the threshold processing on DataHandler ? But that would be - // expensive as DataHolder need to read the data again from its source - //binaryText = BinaryTextImpl.createBinaryTextFromDataHandler((MessageImpl) soap, prefixedCid, currentElement.getOwnerDocument(), data); - //currentElement.appendChild(binaryText); - if (currentElement instanceof MtomEnabled) { - binaryText = ((MtomEnabled) currentElement).addBinaryText(prefixedCid, data); - } else { - throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement); - } - return hrefOrCid; - } - - public AttachmentMarshaller getAttachmentMarshaller() { - return new AttachmentMarshaller() { - @Override - public String addMtomAttachment(DataHandler data, String ns, String ln) { -// if (mtomThreshold == -1) return null; - String hrefOrCid = addBinaryText(data); -// return binaryText.getHref(); - return hrefOrCid; - } - - @Override - public String addMtomAttachment(byte[] data, int offset, int length, String mimeType, String ns, String ln) { -// if (mtomThreshold == -1 || mtomThreshold > length) return null; - byte[] bytes = (offset == 0 && length == data.length) ? data : Arrays.copyOfRange(data, offset, offset + length); -// binaryText = (BinaryTextImpl) ((ElementImpl) currentElement).addAsBase64TextNode(bytes); - if (currentElement instanceof MtomEnabled) { - binaryText = ((MtomEnabled) currentElement).addBinaryText(bytes); - } else { - throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement); - } - return binaryText.getHref(); - } - - @Override - public String addSwaRefAttachment(DataHandler data) { - return "cid:"+encodeCid(); - } - - @Override - public boolean isXOPPackage() { - return true; - } - }; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/transform/EfficientStreamingTransformer.java --- a/jaxws/src/java.xml.soap/share/classes/com/sun/xml/internal/messaging/saaj/util/transform/EfficientStreamingTransformer.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,423 +0,0 @@ -/* - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * EfficientStreamingTransformer.java - * - * Created on July 29, 2002, 3:49 PM - */ - -package com.sun.xml.internal.messaging.saaj.util.transform; - -import java.io.*; - -import java.net.URISyntaxException; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.dom.DOMResult; -import javax.xml.transform.stream.StreamResult; -import javax.xml.transform.stream.StreamSource; - -import org.w3c.dom.Document; - -import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser; -import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection; -import java.net.URI; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; - -/** - * This class is a proxy for a Transformer object with optimizations - * for certain cases. If source and result are of type stream, then - * bytes are simply copied whenever possible (note that this assumes - * that the input is well formed). In addition, it provides support for - * FI using native DOM parsers and serializers. - * - * @author Panos Kougiouris panos@acm.org - * @author Santiago.PericasGeertsen@sun.com - * - */ -public class EfficientStreamingTransformer - extends javax.xml.transform.Transformer { - - //static final String version; - //static final String vendor; - // removing static : security issue : CR 6813167Z - private final TransformerFactory transformerFactory = TransformerFactory.newInstance(); - - /** - removing support for Java 1.4 and 1.3 : CR6658158 - static { - version = System.getProperty("java.vm.version"); - vendor = System.getProperty("java.vm.vendor"); - if (vendor.startsWith("Sun") && - (version.startsWith("1.4") || version.startsWith("1.3"))) { - transformerFactory = - new com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl(); - } - }*/ - - /** - * TransformerFactory instance. - */ - - /** - * Underlying XSLT transformer. - */ - private Transformer m_realTransformer = null; - - /** - * Undelying FI DOM parser. - */ - private Object m_fiDOMDocumentParser = null; - - /** - * Underlying FI DOM serializer. - */ - private Object m_fiDOMDocumentSerializer = null; - - private EfficientStreamingTransformer() { - } - - private void materialize() throws TransformerException { - if (m_realTransformer == null) { - m_realTransformer = transformerFactory.newTransformer(); - } - } - - public void clearParameters() { - if (m_realTransformer != null) - m_realTransformer.clearParameters(); - } - - public javax.xml.transform.ErrorListener getErrorListener() { - try { - materialize(); - return m_realTransformer.getErrorListener(); - } catch (TransformerException e) { - // will be caught later - } - return null; - } - - public java.util.Properties getOutputProperties() { - try { - materialize(); - return m_realTransformer.getOutputProperties(); - } catch (TransformerException e) { - // will be caught later - } - return null; - } - - public String getOutputProperty(String str) - throws java.lang.IllegalArgumentException { - try { - materialize(); - return m_realTransformer.getOutputProperty(str); - } catch (TransformerException e) { - // will be caught later - } - return null; - } - - public Object getParameter(String str) { - try { - materialize(); - return m_realTransformer.getParameter(str); - } catch (TransformerException e) { - // will be caught later - } - return null; - } - - public javax.xml.transform.URIResolver getURIResolver() { - try { - materialize(); - return m_realTransformer.getURIResolver(); - } catch (TransformerException e) { - // will be caught later - } - return null; - } - - public void setErrorListener( - javax.xml.transform.ErrorListener errorListener) - throws java.lang.IllegalArgumentException { - try { - materialize(); - m_realTransformer.setErrorListener(errorListener); - } catch (TransformerException e) { - // will be caught later - } - } - - public void setOutputProperties(java.util.Properties properties) - throws java.lang.IllegalArgumentException { - try { - materialize(); - m_realTransformer.setOutputProperties(properties); - } catch (TransformerException e) { - // will be caught later - } - } - - public void setOutputProperty(String str, String str1) - throws java.lang.IllegalArgumentException { - try { - materialize(); - m_realTransformer.setOutputProperty(str, str1); - } catch (TransformerException e) { - // will be caught later - } - } - - public void setParameter(String str, Object obj) { - try { - materialize(); - m_realTransformer.setParameter(str, obj); - } catch (TransformerException e) { - // will be caught later - } - } - - public void setURIResolver(javax.xml.transform.URIResolver uRIResolver) { - try { - materialize(); - m_realTransformer.setURIResolver(uRIResolver); - } catch (TransformerException e) { - // will be caught later - } - } - - private InputStream getInputStreamFromSource(StreamSource s) - throws TransformerException { - - InputStream stream = s.getInputStream(); - if (stream != null) - return stream; - - if (s.getReader() != null) - return null; - - String systemId = s.getSystemId(); - if (systemId != null) { - try { - String fileURL = systemId; - - if (systemId.startsWith("file:///")) - { - /* - systemId is: - file:///:/some/path/file.xml - or - file:///some/path/file.xml - */ - - String absolutePath = systemId.substring(7); - /* - /:/some/path/file.xml - or - /some/path/file.xml - */ - - boolean hasDriveDesignator = absolutePath.indexOf(":") > 0; - if (hasDriveDesignator) { - String driveDesignatedPath = absolutePath.substring(1); - /* - :/some/path/file.xml */ - fileURL = driveDesignatedPath; - } - else { - /* - /some/path/file.xml */ - fileURL = absolutePath; - } - } - //return new FileInputStream(fileURL); - try { - return new FileInputStream(new File(new URI(fileURL))); - } catch (URISyntaxException ex) { - throw new TransformerException(ex); - } - } catch (IOException e) { - throw new TransformerException(e.toString()); - } - } - - throw new TransformerException("Unexpected StreamSource object"); - } - - //------------------------------------------------------------------------ - - public void transform( - javax.xml.transform.Source source, - javax.xml.transform.Result result) - throws javax.xml.transform.TransformerException - { - // StreamSource -> StreamResult - if ((source instanceof StreamSource) - && (result instanceof StreamResult)) { - try { - StreamSource streamSource = (StreamSource) source; - InputStream is = getInputStreamFromSource(streamSource); - - OutputStream os = ((StreamResult) result).getOutputStream(); - if (os == null) - // TODO: We might want to fix this if it were to be used beyond - // XmlDataContentHandler that we know uses only OutputStream - throw new TransformerException("Unexpected StreamResult object contains null OutputStream"); - - if (is != null) { - if (is.markSupported()) - is.mark(Integer.MAX_VALUE); - int num; - byte[] b = new byte[8192]; - while ((num = is.read(b)) != -1) { - os.write(b, 0, num); - } - if (is.markSupported()) - is.reset(); - return; - } - - Reader reader = streamSource.getReader(); - if (reader != null) { - - if (reader.markSupported()) - reader.mark(Integer.MAX_VALUE); - - PushbackReader pushbackReader = new PushbackReader(reader, 4096); - //some size to unread - XMLDeclarationParser ev = - new XMLDeclarationParser(pushbackReader); - try { - ev.parse(); - } catch (Exception ex) { - throw new TransformerException( - "Unable to run the JAXP transformer on a stream " - + ex.getMessage()); - } - Writer writer = - new OutputStreamWriter(os /*, ev.getEncoding()*/); - ev.writeTo(writer); // doesn't write any, if no header - - int num; - char[] ac = new char[8192]; - while ((num = pushbackReader.read(ac)) != -1) { - writer.write(ac, 0, num); - } - writer.flush(); - - if (reader.markSupported()) - reader.reset(); - return; - } - } catch (IOException e) { - e.printStackTrace(); - throw new TransformerException(e.toString()); - } - - throw new TransformerException("Unexpected StreamSource object"); - } - // FastInfosetSource -> DOMResult - else if (FastInfosetReflection.isFastInfosetSource(source) - && (result instanceof DOMResult)) - { - try { - // Use reflection to avoid a static dep with FI - if (m_fiDOMDocumentParser == null) { - m_fiDOMDocumentParser = FastInfosetReflection.DOMDocumentParser_new(); - } - - // m_fiDOMDocumentParser.parse(document, source.getInputStream()) - FastInfosetReflection.DOMDocumentParser_parse( - m_fiDOMDocumentParser, - (Document) ((DOMResult) result).getNode(), - FastInfosetReflection.FastInfosetSource_getInputStream(source)); - - // We're done! - return; - } - catch (Exception e) { - throw new TransformerException(e); - } - } - // DOMSource -> FastInfosetResult - else if ((source instanceof DOMSource) - && FastInfosetReflection.isFastInfosetResult(result)) - { - try { - // Use reflection to avoid a static dep with FI - if (m_fiDOMDocumentSerializer == null) { - m_fiDOMDocumentSerializer = FastInfosetReflection.DOMDocumentSerializer_new(); - } - - // m_fiDOMDocumentSerializer.setOutputStream(result.getOutputStream()) - FastInfosetReflection.DOMDocumentSerializer_setOutputStream( - m_fiDOMDocumentSerializer, - FastInfosetReflection.FastInfosetResult_getOutputStream(result)); - - // m_fiDOMDocumentSerializer.serialize(node) - FastInfosetReflection.DOMDocumentSerializer_serialize( - m_fiDOMDocumentSerializer, - ((DOMSource) source).getNode()); - - // We're done! - return; - } - catch (Exception e) { - throw new TransformerException(e); - } - } - - // All other cases -- use transformer object - - materialize(); - m_realTransformer.transform(source, result); - } - - /** - * Threadlocal to hold a Transformer instance for this thread. - * CR : 6813167 - */ - //private static ThreadLocal effTransformer = new ThreadLocal(); - - /** - * Return Transformer instance for this thread, allocating a new one if - * necessary. Note that this method does not clear global parameters, - * properties or any other data set on a previously used transformer. - */ - public static Transformer newTransformer() { - //CR : 6813167 - /*Transformer tt = (Transformer) effTransformer.get(); - if (tt == null) { - effTransformer.set(tt = new EfficientStreamingTransformer()); - } - return tt;*/ - return new EfficientStreamingTransformer(); - } - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/AttachmentPart.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/AttachmentPart.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,528 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import java.io.InputStream; -import java.io.Reader; -import java.util.Iterator; - -import javax.activation.DataHandler; - -/** - * A single attachment to a SOAPMessage object. A SOAPMessage - * object may contain zero, one, or many AttachmentPart objects. - * Each AttachmentPart object consists of two parts, - * application-specific content and associated MIME headers. The - * MIME headers consists of name/value pairs that can be used to - * identify and describe the content. - *

    - * An AttachmentPart object must conform to certain standards. - *

      - *
    1. It must conform to - * MIME [RFC2045] standards - *
    2. It MUST contain content - *
    3. The header portion MUST include the following header: - *
        - *
      • Content-Type
        - * This header identifies the type of data in the content of an - * AttachmentPart object and MUST conform to [RFC2045]. - * The following is an example of a Content-Type header: - *
        - *       Content-Type:  application/xml
        - *       
        - * The following line of code, in which ap is an - * AttachmentPart object, sets the header shown in - * the previous example. - *
        - *       ap.setMimeHeader("Content-Type", "application/xml");
        - *       
        - *

        - *

      - *
    - *

    - * There are no restrictions on the content portion of an - * AttachmentPart object. The content may be anything from a - * simple plain text object to a complex XML document or image file. - * - *

    - * An AttachmentPart object is created with the method - * SOAPMessage.createAttachmentPart. After setting its MIME headers, - * the AttachmentPart object is added to the message - * that created it with the method SOAPMessage.addAttachmentPart. - * - *

    - * The following code fragment, in which m is a - * SOAPMessage object and contentStringl is a - * String, creates an instance of AttachmentPart, - * sets the AttachmentPart object with some content and - * header information, and adds the AttachmentPart object to - * the SOAPMessage object. - *

    - *     AttachmentPart ap1 = m.createAttachmentPart();
    - *     ap1.setContent(contentString1, "text/plain");
    - *     m.addAttachmentPart(ap1);
    - * 
    - * - * - *

    - * The following code fragment creates and adds a second - * AttachmentPart instance to the same message. jpegData - * is a binary byte buffer representing the jpeg file. - *

    - *     AttachmentPart ap2 = m.createAttachmentPart();
    - *     byte[] jpegData =  ...;
    - *     ap2.setContent(new ByteArrayInputStream(jpegData), "image/jpeg");
    - *     m.addAttachmentPart(ap2);
    - * 
    - *

    - * The getContent method retrieves the contents and header from - * an AttachmentPart object. Depending on the - * DataContentHandler objects present, the returned - * Object can either be a typed Java object corresponding - * to the MIME type or an InputStream object that contains the - * content as bytes. - *

    - *     String content1 = ap1.getContent();
    - *     java.io.InputStream content2 = ap2.getContent();
    - * 
    - * - * The method clearContent removes all the content from an - * AttachmentPart object but does not affect its header information. - *
    - *     ap1.clearContent();
    - * 
    - * - * @since 1.6 - */ - -public abstract class AttachmentPart { - /** - * Returns the number of bytes in this AttachmentPart - * object. - * - * @return the size of this AttachmentPart object in bytes - * or -1 if the size cannot be determined - * @exception SOAPException if the content of this attachment is - * corrupted of if there was an exception while trying - * to determine the size. - */ - public abstract int getSize() throws SOAPException; - - /** - * Clears out the content of this AttachmentPart object. - * The MIME header portion is left untouched. - */ - public abstract void clearContent(); - - /** - * Gets the content of this AttachmentPart object as a Java - * object. The type of the returned Java object depends on (1) the - * DataContentHandler object that is used to interpret the bytes - * and (2) the Content-Type given in the header. - *

    - * For the MIME content types "text/plain", "text/html" and "text/xml", the - * DataContentHandler object does the conversions to and - * from the Java types corresponding to the MIME types. - * For other MIME types,the DataContentHandler object - * can return an InputStream object that contains the content data - * as raw bytes. - *

    - * A SAAJ-compliant implementation must, as a minimum, return a - * java.lang.String object corresponding to any content - * stream with a Content-Type value of - * text/plain, a - * javax.xml.transform.stream.StreamSource object corresponding to a - * content stream with a Content-Type value of - * text/xml, a java.awt.Image object - * corresponding to a content stream with a - * Content-Type value of image/gif or - * image/jpeg. For those content types that an - * installed DataContentHandler object does not understand, the - * DataContentHandler object is required to return a - * java.io.InputStream object with the raw bytes. - * - * @return a Java object with the content of this AttachmentPart - * object - * - * @exception SOAPException if there is no content set into this - * AttachmentPart object or if there was a data - * transformation error - */ - public abstract Object getContent() throws SOAPException; - - /** - * Gets the content of this AttachmentPart object as an - * InputStream as if a call had been made to getContent and no - * DataContentHandler had been registered for the - * content-type of this AttachmentPart. - *

    - * Note that reading from the returned InputStream would result in consuming - * the data in the stream. It is the responsibility of the caller to reset - * the InputStream appropriately before calling a Subsequent API. If a copy - * of the raw attachment content is required then the {@link #getRawContentBytes} API - * should be used instead. - * - * @return an InputStream from which the raw data contained by - * the AttachmentPart can be accessed. - * - * @throws SOAPException if there is no content set into this - * AttachmentPart object or if there was a data - * transformation error. - * - * @since 1.6, SAAJ 1.3 - * @see #getRawContentBytes - */ - public abstract InputStream getRawContent() throws SOAPException; - - /** - * Gets the content of this AttachmentPart object as a - * byte[] array as if a call had been made to getContent and no - * DataContentHandler had been registered for the - * content-type of this AttachmentPart. - * - * @return a byte[] array containing the raw data of the - * AttachmentPart. - * - * @throws SOAPException if there is no content set into this - * AttachmentPart object or if there was a data - * transformation error. - * - * @since 1.6, SAAJ 1.3 - */ - public abstract byte[] getRawContentBytes() throws SOAPException; - - /** - * Returns an InputStream which can be used to obtain the - * content of AttachmentPart as Base64 encoded - * character data, this method would base64 encode the raw bytes - * of the attachment and return. - * - * @return an InputStream from which the Base64 encoded - * AttachmentPart can be read. - * - * @throws SOAPException if there is no content set into this - * AttachmentPart object or if there was a data - * transformation error. - * - * @since 1.6, SAAJ 1.3 - */ - public abstract InputStream getBase64Content() throws SOAPException; - - /** - * Sets the content of this attachment part to that of the given - * Object and sets the value of the Content-Type - * header to the given type. The type of the - * Object should correspond to the value given for the - * Content-Type. This depends on the particular - * set of DataContentHandler objects in use. - * - * - * @param object the Java object that makes up the content for - * this attachment part - * @param contentType the MIME string that specifies the type of - * the content - * - * @exception IllegalArgumentException may be thrown if the contentType - * does not match the type of the content object, or if there - * was no DataContentHandler object for this - * content object - * - * @see #getContent - */ - public abstract void setContent(Object object, String contentType); - - /** - * Sets the content of this attachment part to that contained by the - * InputStream content and sets the value of the - * Content-Type header to the value contained in - * contentType. - *

    - * A subsequent call to getSize() may not be an exact measure - * of the content size. - * - * @param content the raw data to add to the attachment part - * @param contentType the value to set into the Content-Type - * header - * - * @exception SOAPException if an there is an error in setting the content - * @exception NullPointerException if content is null - * @since 1.6, SAAJ 1.3 - */ - public abstract void setRawContent(InputStream content, String contentType) throws SOAPException; - - /** - * Sets the content of this attachment part to that contained by the - * byte[] array content and sets the value of the - * Content-Type header to the value contained in - * contentType. - * - * @param content the raw data to add to the attachment part - * @param contentType the value to set into the Content-Type - * header - * @param offset the offset in the byte array of the content - * @param len the number of bytes that form the content - * - * @exception SOAPException if an there is an error in setting the content - * or content is null - * @since 1.6, SAAJ 1.3 - */ - public abstract void setRawContentBytes( - byte[] content, int offset, int len, String contentType) - throws SOAPException; - - - /** - * Sets the content of this attachment part from the Base64 source - * InputStream and sets the value of the - * Content-Type header to the value contained in - * contentType, This method would first decode the base64 - * input and write the resulting raw bytes to the attachment. - *

    - * A subsequent call to getSize() may not be an exact measure - * of the content size. - * - * @param content the base64 encoded data to add to the attachment part - * @param contentType the value to set into the Content-Type - * header - * - * @exception SOAPException if an there is an error in setting the content - * @exception NullPointerException if content is null - * - * @since 1.6, SAAJ 1.3 - */ - public abstract void setBase64Content( - InputStream content, String contentType) throws SOAPException; - - - /** - * Gets the DataHandler object for this AttachmentPart - * object. - * - * @return the DataHandler object associated with this - * AttachmentPart object - * - * @exception SOAPException if there is no data in - * this AttachmentPart object - */ - public abstract DataHandler getDataHandler() - throws SOAPException; - - /** - * Sets the given DataHandler object as the data handler - * for this AttachmentPart object. Typically, on an incoming - * message, the data handler is automatically set. When - * a message is being created and populated with content, the - * setDataHandler method can be used to get data from - * various data sources into the message. - * - * @param dataHandler the DataHandler object to be set - * - * @exception IllegalArgumentException if there was a problem with - * the specified DataHandler object - */ - public abstract void setDataHandler(DataHandler dataHandler); - - - /** - * Gets the value of the MIME header whose name is "Content-ID". - * - * @return a String giving the value of the - * "Content-ID" header or null if there - * is none - * @see #setContentId - */ - public String getContentId() { - String[] values = getMimeHeader("Content-ID"); - if (values != null && values.length > 0) - return values[0]; - return null; - } - - /** - * Gets the value of the MIME header whose name is "Content-Location". - * - * @return a String giving the value of the - * "Content-Location" header or null if there - * is none - */ - public String getContentLocation() { - String[] values = getMimeHeader("Content-Location"); - if (values != null && values.length > 0) - return values[0]; - return null; - } - - /** - * Gets the value of the MIME header whose name is "Content-Type". - * - * @return a String giving the value of the - * "Content-Type" header or null if there - * is none - */ - public String getContentType() { - String[] values = getMimeHeader("Content-Type"); - if (values != null && values.length > 0) - return values[0]; - return null; - } - - /** - * Sets the MIME header whose name is "Content-ID" with the given value. - * - * @param contentId a String giving the value of the - * "Content-ID" header - * - * @exception IllegalArgumentException if there was a problem with - * the specified contentId value - * @see #getContentId - */ - public void setContentId(String contentId) - { - setMimeHeader("Content-ID", contentId); - } - - - /** - * Sets the MIME header whose name is "Content-Location" with the given value. - * - * - * @param contentLocation a String giving the value of the - * "Content-Location" header - * @exception IllegalArgumentException if there was a problem with - * the specified content location - */ - public void setContentLocation(String contentLocation) - { - setMimeHeader("Content-Location", contentLocation); - } - - /** - * Sets the MIME header whose name is "Content-Type" with the given value. - * - * @param contentType a String giving the value of the - * "Content-Type" header - * - * @exception IllegalArgumentException if there was a problem with - * the specified content type - */ - public void setContentType(String contentType) - { - setMimeHeader("Content-Type", contentType); - } - - /** - * Removes all MIME headers that match the given name. - * - * @param header the string name of the MIME header/s to - * be removed - */ - public abstract void removeMimeHeader(String header); - - /** - * Removes all the MIME header entries. - */ - public abstract void removeAllMimeHeaders(); - - - /** - * Gets all the values of the header identified by the given - * String. - * - * @param name the name of the header; example: "Content-Type" - * @return a String array giving the value for the - * specified header - * @see #setMimeHeader - */ - public abstract String[] getMimeHeader(String name); - - - /** - * Changes the first header entry that matches the given name - * to the given value, adding a new header if no existing header - * matches. This method also removes all matching headers but the first.

    - * - * Note that RFC822 headers can only contain US-ASCII characters. - * - * @param name a String giving the name of the header - * for which to search - * @param value a String giving the value to be set for - * the header whose name matches the given name - * - * @exception IllegalArgumentException if there was a problem with - * the specified mime header name or value - */ - public abstract void setMimeHeader(String name, String value); - - - /** - * Adds a MIME header with the specified name and value to this - * AttachmentPart object. - *

    - * Note that RFC822 headers can contain only US-ASCII characters. - * - * @param name a String giving the name of the header - * to be added - * @param value a String giving the value of the header - * to be added - * - * @exception IllegalArgumentException if there was a problem with - * the specified mime header name or value - */ - public abstract void addMimeHeader(String name, String value); - - /** - * Retrieves all the headers for this AttachmentPart object - * as an iterator over the MimeHeader objects. - * - * @return an Iterator object with all of the Mime - * headers for this AttachmentPart object - */ - public abstract Iterator getAllMimeHeaders(); - - /** - * Retrieves all MimeHeader objects that match a name in - * the given array. - * - * @param names a String array with the name(s) of the - * MIME headers to be returned - * @return all of the MIME headers that match one of the names in the - * given array as an Iterator object - */ - public abstract Iterator getMatchingMimeHeaders(String[] names); - - /** - * Retrieves all MimeHeader objects whose name does - * not match a name in the given array. - * - * @param names a String array with the name(s) of the - * MIME headers not to be returned - * @return all of the MIME headers in this AttachmentPart object - * except those that match one of the names in the - * given array. The nonmatching MIME headers are returned as an - * Iterator object. - */ - public abstract Iterator getNonMatchingMimeHeaders(String[] names); -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Detail.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Detail.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,101 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import java.util.Iterator; - -import javax.xml.namespace.QName; - -/** - * A container for DetailEntry objects. DetailEntry - * objects give detailed error information that is application-specific and - * related to the SOAPBody object that contains it. - *

    - * A Detail object, which is part of a SOAPFault - * object, can be retrieved using the method SOAPFault.getDetail. - * The Detail interface provides two methods. One creates a new - * DetailEntry object and also automatically adds it to - * the Detail object. The second method gets a list of the - * DetailEntry objects contained in a Detail - * object. - *

    - * The following code fragment, in which sf is a SOAPFault - * object, gets its Detail object (d), adds a new - * DetailEntry object to d, and then gets a list of all the - * DetailEntry objects in d. The code also creates a - * Name object to pass to the method addDetailEntry. - * The variable se, used to create the Name object, - * is a SOAPEnvelope object. - *

    - *    Detail d = sf.getDetail();
    - *    Name name = se.createName("GetLastTradePrice", "WOMBAT",
    - *                                "http://www.wombat.org/trader");
    - *    d.addDetailEntry(name);
    - *    Iterator it = d.getDetailEntries();
    - * 
    - * - * @since 1.6 - */ -public interface Detail extends SOAPFaultElement { - - /** - * Creates a new DetailEntry object with the given - * name and adds it to this Detail object. - * - * @param name a Name object identifying the - * new DetailEntry object - * - * @exception SOAPException thrown when there is a problem in adding a - * DetailEntry object to this Detail object. - * - * @see Detail#addDetailEntry(QName qname) - */ - public DetailEntry addDetailEntry(Name name) throws SOAPException; - - /** - * Creates a new DetailEntry object with the given - * QName and adds it to this Detail object. This method - * is the preferred over the one using Name. - * - * @param qname a QName object identifying the - * new DetailEntry object - * - * @exception SOAPException thrown when there is a problem in adding a - * DetailEntry object to this Detail object. - * - * @see Detail#addDetailEntry(Name name) - * @since 1.6, SAAJ 1.3 - */ - public DetailEntry addDetailEntry(QName qname) throws SOAPException; - - /** - * Gets an Iterator over all of the DetailEntrys in this Detail object. - * - * @return an Iterator object over the DetailEntry - * objects in this Detail object - */ - public Iterator getDetailEntries(); -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/DetailEntry.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/DetailEntry.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,38 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -/** - * The content for a Detail object, giving details for - * a SOAPFault object. A DetailEntry object, - * which carries information about errors related to the SOAPBody - * object that contains it, is application-specific. - * - * @since 1.6 - */ -public interface DetailEntry extends SOAPElement { - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/FactoryFinder.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/FactoryFinder.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,236 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import java.io.*; -import java.util.Properties; - - -class FactoryFinder { - - /** - * Creates an instance of the specified class using the specified - * ClassLoader object. - * - * @exception SOAPException if the given class could not be found - * or could not be instantiated - */ - private static Object newInstance(String className, - ClassLoader classLoader) - throws SOAPException - { - try { - Class spiClass = safeLoadClass(className, classLoader); - return spiClass.newInstance(); - - } catch (ClassNotFoundException x) { - throw new SOAPException("Provider " + className + " not found", x); - } catch (Exception x) { - throw new SOAPException("Provider " + className + " could not be instantiated: " + x, x); - } - } - - /** - * Finds the implementation Class object for the given - * factory name, or null if that fails. - *

    - * This method is package private so that this code can be shared. - * - * @return the Class object of the specified message factory; - * or null - * - * @param factoryId the name of the factory to find, which is - * a system property - * @exception SOAPException if there is a SOAP error - */ - static Object find(String factoryId) - throws SOAPException - { - return find(factoryId, null, false); - } - - /** - * Finds the implementation Class object for the given - * factory name, or if that fails, finds the Class object - * for the given fallback class name. The arguments supplied must be - * used in order. If using the first argument is successful, the second - * one will not be used. - *

    - * This method is package private so that this code can be shared. - * - * @return the Class object of the specified message factory; - * may be null - * - * @param factoryId the name of the factory to find, which is - * a system property - * @param fallbackClassName the implementation class name, which is - * to be used only if nothing else - * is found; null to indicate that - * there is no fallback class name - * @exception SOAPException if there is a SOAP error - */ - static Object find(String factoryId, String fallbackClassName) - throws SOAPException - { - return find(factoryId, fallbackClassName, true); - } - - /** - * Finds the implementation Class object for the given - * factory name, or if that fails, finds the Class object - * for the given default class name, but only if tryFallback - * is true. The arguments supplied must be used in order - * If using the first argument is successful, the second one will not - * be used. Note the default class name may be needed even if fallback - * is not to be attempted, so certain error conditions can be handled. - *

    - * This method is package private so that this code can be shared. - * - * @return the Class object of the specified message factory; - * may not be null - * - * @param factoryId the name of the factory to find, which is - * a system property - * @param defaultClassName the implementation class name, which is - * to be used only if nothing else - * is found; null to indicate - * that there is no default class name - * @param tryFallback whether to try the default class as a - * fallback - * @exception SOAPException if there is a SOAP error - */ - static Object find(String factoryId, String defaultClassName, - boolean tryFallback) throws SOAPException { - ClassLoader classLoader; - try { - classLoader = Thread.currentThread().getContextClassLoader(); - } catch (Exception x) { - throw new SOAPException(x.toString(), x); - } - - // Use the system property first - try { - String systemProp = - System.getProperty( factoryId ); - if( systemProp!=null) { - return newInstance(systemProp, classLoader); - } - } catch (SecurityException se) { - } - - // try to read from $java.home/lib/jaxm.properties - try { - String javah=System.getProperty( "java.home" ); - String configFile = javah + File.separator + - "lib" + File.separator + "jaxm.properties"; - File f=new File( configFile ); - if( f.exists()) { - Properties props=new Properties(); - props.load( new FileInputStream(f)); - String factoryClassName = props.getProperty(factoryId); - return newInstance(factoryClassName, classLoader); - } - } catch(Exception ex ) { - } - - String serviceId = "META-INF/services/" + factoryId; - // try to find services in CLASSPATH - try { - InputStream is=null; - if (classLoader == null) { - is=ClassLoader.getSystemResourceAsStream(serviceId); - } else { - is=classLoader.getResourceAsStream(serviceId); - } - - if( is!=null ) { - BufferedReader rd = - new BufferedReader(new InputStreamReader(is, "UTF-8")); - - String factoryClassName = rd.readLine(); - rd.close(); - - if (factoryClassName != null && - ! "".equals(factoryClassName)) { - return newInstance(factoryClassName, classLoader); - } - } - } catch( Exception ex ) { - } - - // If not found and fallback should not be tried, return a null result. - if (!tryFallback) - return null; - - // We didn't find the class through the usual means so try the default - // (built in) factory if specified. - if (defaultClassName == null) { - throw new SOAPException( - "Provider for " + factoryId + " cannot be found", null); - } - return newInstance(defaultClassName, classLoader); - } - - /** - * Loads the class, provided that the calling thread has an access to the - * class being loaded. If this is the specified default factory class and it - * is restricted by package.access we get a SecurityException and can do a - * Class.forName() on it so it will be loaded by the bootstrap class loader. - */ - private static Class safeLoadClass(String className, - ClassLoader classLoader) - throws ClassNotFoundException { - try { - // make sure that the current thread has an access to the package of the given name. - SecurityManager s = System.getSecurityManager(); - if (s != null) { - int i = className.lastIndexOf('.'); - if (i != -1) { - s.checkPackageAccess(className.substring(0, i)); - } - } - - if (classLoader == null) - return Class.forName(className); - else - return classLoader.loadClass(className); - } catch (SecurityException se) { - // (only) default implementation can be loaded - // using bootstrap class loader: - if (isDefaultImplementation(className)) - return Class.forName(className); - - throw se; - } - } - - private static boolean isDefaultImplementation(String className) { - return MessageFactory.DEFAULT_MESSAGE_FACTORY.equals(className) || - SOAPFactory.DEFAULT_SOAP_FACTORY.equals(className) || - SOAPConnectionFactory.DEFAULT_SOAP_CONNECTION_FACTORY.equals(className) || - SAAJMetaFactory.DEFAULT_META_FACTORY_CLASS.equals(className); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MessageFactory.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MessageFactory.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,202 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - - -import java.io.IOException; -import java.io.InputStream; - -/** - * A factory for creating SOAPMessage objects. - *

    - * A SAAJ client can create a MessageFactory object - * using the method newInstance, as shown in the following - * lines of code. - *

    - *       MessageFactory mf = MessageFactory.newInstance();
    - *       MessageFactory mf12 = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
    - * 
    - *

    - * All MessageFactory objects, regardless of how they are - * created, will produce SOAPMessage objects that - * have the following elements by default: - *

      - *
    • A SOAPPart object - *
    • A SOAPEnvelope object - *
    • A SOAPBody object - *
    • A SOAPHeader object - *
    - * In some cases, specialized MessageFactory objects may be obtained that produce messages - * prepopulated with additional entries in the SOAPHeader object and the - * SOAPBody object. - * The content of a new SOAPMessage object depends on which of the two - * MessageFactory methods is used to create it. - *
      - *
    • createMessage()
      - * This is the method clients would normally use to create a request message. - *
    • createMessage(MimeHeaders, java.io.InputStream) -- message has - * content from the InputStream object and headers from the - * MimeHeaders object
      - * This method can be used internally by a service implementation to - * create a message that is a response to a request. - *
    - * - * @since 1.6 - */ -public abstract class MessageFactory { - - static final String DEFAULT_MESSAGE_FACTORY - = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"; - - static private final String MESSAGE_FACTORY_PROPERTY - = "javax.xml.soap.MessageFactory"; - - /** - * Creates a new MessageFactory object that is an instance - * of the default implementation (SOAP 1.1), - * - * This method uses the following ordered lookup procedure to determine the MessageFactory implementation class to load: - *
      - *
    • Use the javax.xml.soap.MessageFactory system property. - *
    • Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard - * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the - * system property defined above. - *
    • Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API - * will look for a classname in the file META-INF/services/javax.xml.soap.MessageFactory in jars available to the runtime. - *
    • Use the SAAJMetaFactory instance to locate the MessageFactory implementation class. - *
    - - * - * @return a new instance of a MessageFactory - * - * @exception SOAPException if there was an error in creating the - * default implementation of the - * MessageFactory. - * @see SAAJMetaFactory - */ - - public static MessageFactory newInstance() throws SOAPException { - - - try { - MessageFactory factory = (MessageFactory) FactoryFinder.find( - MESSAGE_FACTORY_PROPERTY, - DEFAULT_MESSAGE_FACTORY, - false); - - if (factory != null) { - return factory; - } - return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); - - } catch (Exception ex) { - throw new SOAPException( - "Unable to create message factory for SOAP: " - +ex.getMessage()); - } - - } - - /** - * Creates a new MessageFactory object that is an instance - * of the specified implementation. May be a dynamic message factory, - * a SOAP 1.1 message factory, or a SOAP 1.2 message factory. A dynamic - * message factory creates messages based on the MIME headers specified - * as arguments to the createMessage method. - * - * This method uses the SAAJMetaFactory to locate the implementation class - * and create the MessageFactory instance. - * - * @return a new instance of a MessageFactory - * - * @param protocol a string constant representing the class of the - * specified message factory implementation. May be - * either DYNAMIC_SOAP_PROTOCOL, - * DEFAULT_SOAP_PROTOCOL (which is the same - * as) SOAP_1_1_PROTOCOL, or - * SOAP_1_2_PROTOCOL. - * - * @exception SOAPException if there was an error in creating the - * specified implementation of MessageFactory. - * @see SAAJMetaFactory - * @since 1.6, SAAJ 1.3 - */ - public static MessageFactory newInstance(String protocol) throws SOAPException { - return SAAJMetaFactory.getInstance().newMessageFactory(protocol); - } - - /** - * Creates a new SOAPMessage object with the default - * SOAPPart, SOAPEnvelope, SOAPBody, - * and SOAPHeader objects. Profile-specific message factories - * can choose to prepopulate the SOAPMessage object with - * profile-specific headers. - *

    - * Content can be added to this message's SOAPPart object, and - * the message can be sent "as is" when a message containing only a SOAP part - * is sufficient. Otherwise, the SOAPMessage object needs - * to create one or more AttachmentPart objects and - * add them to itself. Any content that is not in XML format must be - * in an AttachmentPart object. - * - * @return a new SOAPMessage object - * @exception SOAPException if a SOAP error occurs - * @exception UnsupportedOperationException if the protocol of this - * MessageFactory instance is DYNAMIC_SOAP_PROTOCOL - */ - public abstract SOAPMessage createMessage() - throws SOAPException; - - /** - * Internalizes the contents of the given InputStream object into a - * new SOAPMessage object and returns the SOAPMessage - * object. - * - * @param in the InputStream object that contains the data - * for a message - * @param headers the transport-specific headers passed to the - * message in a transport-independent fashion for creation of the - * message - * @return a new SOAPMessage object containing the data from - * the given InputStream object - * - * @exception IOException if there is a problem in reading data from - * the input stream - * - * @exception SOAPException may be thrown if the message is invalid - * - * @exception IllegalArgumentException if the MessageFactory - * requires one or more MIME headers to be present in the - * headers parameter and they are missing. - * MessageFactory implementations for - * SOAP_1_1_PROTOCOL or - * SOAP_1_2_PROTOCOL must not throw - * IllegalArgumentException for this reason. - */ - public abstract SOAPMessage createMessage(MimeHeaders headers, - InputStream in) - throws IOException, SOAPException; -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MimeHeader.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MimeHeader.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,71 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - - -/** - * An object that stores a MIME header name and its value. One or more - * MimeHeader objects may be contained in a MimeHeaders - * object. - * - * @see MimeHeaders - * @since 1.6 - */ -public class MimeHeader { - - private String name; - private String value; - - /** - * Constructs a MimeHeader object initialized with the given - * name and value. - * - * @param name a String giving the name of the header - * @param value a String giving the value of the header - */ - public MimeHeader(String name, String value) { - this.name = name; - this.value = value; - } - - /** - * Returns the name of this MimeHeader object. - * - * @return the name of the header as a String - */ - public String getName() { - return name; - } - - /** - * Returns the value of this MimeHeader object. - * - * @return the value of the header as a String - */ - public String getValue() { - return value; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MimeHeaders.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/MimeHeaders.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,270 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import java.util.Iterator; -import java.util.Vector; - -/** - * A container for MimeHeader objects, which represent - * the MIME headers present in a MIME part of a message. - * - *

    This class is used primarily when an application wants to - * retrieve specific attachments based on certain MIME headers and - * values. This class will most likely be used by implementations of - * AttachmentPart and other MIME dependent parts of the SAAJ - * API. - * @see SOAPMessage#getAttachments - * @see AttachmentPart - * @since 1.6 - */ -public class MimeHeaders { - private Vector headers; - - /** - * Constructs a default MimeHeaders object initialized with - * an empty Vector object. - */ - public MimeHeaders() { - headers = new Vector(); - } - - /** - * Returns all of the values for the specified header as an array of - * String objects. - * - * @param name the name of the header for which values will be returned - * @return a String array with all of the values for the - * specified header - * @see #setHeader - */ - public String[] getHeader(String name) { - Vector values = new Vector(); - - for(int i = 0; i < headers.size(); i++) { - MimeHeader hdr = (MimeHeader) headers.elementAt(i); - if (hdr.getName().equalsIgnoreCase(name) - && hdr.getValue() != null) - values.addElement(hdr.getValue()); - } - - if (values.size() == 0) - return null; - - String r[] = new String[values.size()]; - values.copyInto(r); - return r; - } - - /** - * Replaces the current value of the first header entry whose name matches - * the given name with the given value, adding a new header if no existing header - * name matches. This method also removes all matching headers after the first one. - *

    - * Note that RFC822 headers can contain only US-ASCII characters. - * - * @param name a String with the name of the header for - * which to search - * @param value a String with the value that will replace the - * current value of the specified header - * - * @exception IllegalArgumentException if there was a problem in the - * mime header name or the value being set - * @see #getHeader - */ - public void setHeader(String name, String value) - { - boolean found = false; - - if ((name == null) || name.equals("")) - throw new IllegalArgumentException("Illegal MimeHeader name"); - - for(int i = 0; i < headers.size(); i++) { - MimeHeader hdr = (MimeHeader) headers.elementAt(i); - if (hdr.getName().equalsIgnoreCase(name)) { - if (!found) { - headers.setElementAt(new MimeHeader(hdr.getName(), - value), i); - found = true; - } - else - headers.removeElementAt(i--); - } - } - - if (!found) - addHeader(name, value); - } - - /** - * Adds a MimeHeader object with the specified name and value - * to this MimeHeaders object's list of headers. - *

    - * Note that RFC822 headers can contain only US-ASCII characters. - * - * @param name a String with the name of the header to - * be added - * @param value a String with the value of the header to - * be added - * - * @exception IllegalArgumentException if there was a problem in the - * mime header name or value being added - */ - public void addHeader(String name, String value) - { - if ((name == null) || name.equals("")) - throw new IllegalArgumentException("Illegal MimeHeader name"); - - int pos = headers.size(); - - for(int i = pos - 1 ; i >= 0; i--) { - MimeHeader hdr = (MimeHeader) headers.elementAt(i); - if (hdr.getName().equalsIgnoreCase(name)) { - headers.insertElementAt(new MimeHeader(name, value), - i+1); - return; - } - } - headers.addElement(new MimeHeader(name, value)); - } - - /** - * Remove all MimeHeader objects whose name matches the - * given name. - * - * @param name a String with the name of the header for - * which to search - */ - public void removeHeader(String name) { - for(int i = 0; i < headers.size(); i++) { - MimeHeader hdr = (MimeHeader) headers.elementAt(i); - if (hdr.getName().equalsIgnoreCase(name)) - headers.removeElementAt(i--); - } - } - - /** - * Removes all the header entries from this MimeHeaders object. - */ - public void removeAllHeaders() { - headers.removeAllElements(); - } - - - /** - * Returns all the MimeHeaders in this MimeHeaders object. - * - * @return an Iterator object over this MimeHeaders - * object's list of MimeHeader objects - */ - public Iterator getAllHeaders() { - return headers.iterator(); - } - - class MatchingIterator implements Iterator { - private boolean match; - private Iterator iterator; - private String[] names; - private Object nextHeader; - - MatchingIterator(String[] names, boolean match) { - this.match = match; - this.names = names; - this.iterator = headers.iterator(); - } - - private Object nextMatch() { - next: - while (iterator.hasNext()) { - MimeHeader hdr = (MimeHeader) iterator.next(); - - if (names == null) - return match ? null : hdr; - - for(int i = 0; i < names.length; i++) - if (hdr.getName().equalsIgnoreCase(names[i])) - if (match) - return hdr; - else - continue next; - if (!match) - return hdr; - } - return null; - } - - - public boolean hasNext() { - if (nextHeader == null) - nextHeader = nextMatch(); - return nextHeader != null; - } - - public Object next() { - // hasNext should've prefetched the header for us, - // return it. - if (nextHeader != null) { - Object ret = nextHeader; - nextHeader = null; - return ret; - } - if (hasNext()) - return nextHeader; - return null; - } - - public void remove() { - iterator.remove(); - } - } - - - /** - * Returns all the MimeHeader objects whose name matches - * a name in the given array of names. - * - * @param names an array of String objects with the names - * for which to search - * @return an Iterator object over the MimeHeader - * objects whose name matches one of the names in the given list - */ - public Iterator getMatchingHeaders(String[] names) { - return new MatchingIterator(names, true); - } - - /** - * Returns all of the MimeHeader objects whose name does not - * match a name in the given array of names. - * - * @param names an array of String objects with the names - * for which to search - * @return an Iterator object over the MimeHeader - * objects whose name does not match one of the names in the given list - */ - public Iterator getNonMatchingHeaders(String[] names) { - return new MatchingIterator(names, false); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Name.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Name.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,111 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -/** - * A representation of an XML name. This interface provides methods for - * getting the local and namespace-qualified names and also for getting the - * prefix associated with the namespace for the name. It is also possible - * to get the URI of the namespace. - *

    - * The following is an example of a namespace declaration in an element. - *

    - *   <wombat:GetLastTradePrice xmlns:wombat="http://www.wombat.org/trader">
    - * 
    - * ("xmlns" stands for "XML namespace".) - * The following - * shows what the methods in the Name interface will return. - *
      - *
    • getQualifiedName will return "prefix:LocalName" = - * "WOMBAT:GetLastTradePrice" - *
    • getURI will return "http://www.wombat.org/trader" - *
    • getLocalName will return "GetLastTracePrice" - *
    • getPrefix will return "WOMBAT" - *
    - *

    - * XML namespaces are used to disambiguate SOAP identifiers from - * application-specific identifiers. - *

    - * Name objects are created using the method - * SOAPEnvelope.createName, which has two versions. - * One method creates Name objects with - * a local name, a namespace prefix, and a namespace URI. - * and the second creates Name objects with just a local name. - * The following line of - * code, in which se is a SOAPEnvelope object, creates a new - * Name object with all three. - *

    - *     Name name = se.createName("GetLastTradePrice", "WOMBAT",
    - *                                "http://www.wombat.org/trader");
    - * 
    - * The following line of code gives an example of how a Name object - * can be used. The variable element is a SOAPElement object. - * This code creates a new SOAPElement object with the given name and - * adds it to element. - *
    - *     element.addChildElement(name);
    - * 
    - *

    - * The Name interface may be deprecated in a future release of SAAJ - * in favor of javax.xml.namespace.QName - * @see SOAPEnvelope#createName(String, String, String) SOAPEnvelope.createName - * @see SOAPFactory#createName(String, String, String) SOAPFactory.createName - * @since 1.6 - */ -public interface Name { - /** - * Gets the local name part of the XML name that this Name - * object represents. - * - * @return a string giving the local name - */ - String getLocalName(); - - /** - * Gets the namespace-qualified name of the XML name that this - * Name object represents. - * - * @return the namespace-qualified name as a string - */ - String getQualifiedName(); - - /** - * Returns the prefix that was specified when this Name object - * was initialized. This prefix is associated with the namespace for the XML - * name that this Name object represents. - * - * @return the prefix as a string - */ - String getPrefix(); - - /** - * Returns the URI of the namespace for the XML - * name that this Name object represents. - * - * @return the URI as a string - */ - String getURI(); -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Node.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Node.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,114 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -/** - * A representation of a node (element) in an XML document. - * This interface extnends the standard DOM Node interface with methods for - * getting and setting the value of a node, for - * getting and setting the parent of a node, and for removing a node. - * - * @since 1.6 - */ -public interface Node extends org.w3c.dom.Node { - /** - * Returns the value of this node if this is a Text node or the - * value of the immediate child of this node otherwise. - * If there is an immediate child of this Node that it is a - * Text node then it's value will be returned. If there is - * more than one Text node then the value of the first - * Text Node will be returned. - * Otherwise null is returned. - * - * @return a String with the text of this node if this is a - * Text node or the text contained by the first - * immediate child of this Node object that is a - * Text object if such a child exists; - * null otherwise. - */ - public String getValue(); - - /** - * If this is a Text node then this method will set its value, - * otherwise it sets the value of the immediate (Text) child of this node. - * The value of the immediate child of this node can be set only if, there is - * one child node and that node is a Text node, or if - * there are no children in which case a child Text node will be - * created. - * - * @exception IllegalStateException if the node is not a Text - * node and either has more than one child node or has a child - * node that is not a Text node. - * - * @since 1.6, SAAJ 1.2 - */ - public void setValue(String value); - - /** - * Sets the parent of this Node object to the given - * SOAPElement object. - * - * @param parent the SOAPElement object to be set as - * the parent of this Node object - * - * @exception SOAPException if there is a problem in setting the - * parent to the given element - * @see #getParentElement - */ - public void setParentElement(SOAPElement parent) throws SOAPException; - - /** - * Returns the parent element of this Node object. - * This method can throw an UnsupportedOperationException - * if the tree is not kept in memory. - * - * @return the SOAPElement object that is the parent of - * this Node object or null if this - * Node object is root - * - * @exception UnsupportedOperationException if the whole tree is not - * kept in memory - * @see #setParentElement - */ - public SOAPElement getParentElement(); - - /** - * Removes this Node object from the tree. - */ - public void detachNode(); - - /** - * Notifies the implementation that this Node - * object is no longer being used by the application and that the - * implementation is free to reuse this object for nodes that may - * be created later. - *

    - * Calling the method recycleNode implies that the method - * detachNode has been called previously. - */ - public void recycleNode(); - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SAAJMetaFactory.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SAAJMetaFactory.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,113 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -/** -* The access point for the implementation classes of the factories defined in the -* SAAJ API. All of the newInstance methods defined on factories in -* SAAJ 1.3 defer to instances of this class to do the actual object creation. -* The implementations of newInstance() methods (in SOAPFactory and MessageFactory) -* that existed in SAAJ 1.2 have been updated to also delegate to the SAAJMetaFactory when the SAAJ 1.2 -* defined lookup fails to locate the Factory implementation class name. -* -*

    -* SAAJMetaFactory is a service provider interface. There are no public methods on this -* class. -* -* @author SAAJ RI Development Team -* @since 1.6, SAAJ 1.3 -*/ - -public abstract class SAAJMetaFactory { - static private final String META_FACTORY_CLASS_PROPERTY = - "javax.xml.soap.MetaFactory"; - static final String DEFAULT_META_FACTORY_CLASS = - "com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl"; - - /** - * Creates a new instance of a concrete SAAJMetaFactory object. - * The SAAJMetaFactory is an SPI, it pulls the creation of the other factories together into a - * single place. Changing out the SAAJMetaFactory has the effect of changing out the entire SAAJ - * implementation. Service providers provide the name of their SAAJMetaFactory - * implementation. - * - * This method uses the following ordered lookup procedure to determine the SAAJMetaFactory implementation class to load: - *

      - *
    • Use the javax.xml.soap.MetaFactory system property. - *
    • Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard - * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the - * system property defined above. - *
    • Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API - * will look for a classname in the file META-INF/services/javax.xml.soap.MetaFactory in jars available to the runtime. - *
    • Default to com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl. - *
    - * - * @return a concrete SAAJMetaFactory object - * @exception SOAPException if there is an error in creating the SAAJMetaFactory - */ - static SAAJMetaFactory getInstance() throws SOAPException { - try { - SAAJMetaFactory instance = - (SAAJMetaFactory) FactoryFinder.find( - META_FACTORY_CLASS_PROPERTY, - DEFAULT_META_FACTORY_CLASS); - return instance; - } catch (Exception e) { - throw new SOAPException( - "Unable to create SAAJ meta-factory" + e.getMessage()); - } - } - - protected SAAJMetaFactory() { } - - /** - * Creates a MessageFactory object for - * the given String protocol. - * - * @param protocol a String indicating the protocol - * @exception SOAPException if there is an error in creating the - * MessageFactory - * @see SOAPConstants#SOAP_1_1_PROTOCOL - * @see SOAPConstants#SOAP_1_2_PROTOCOL - * @see SOAPConstants#DYNAMIC_SOAP_PROTOCOL - */ - protected abstract MessageFactory newMessageFactory(String protocol) - throws SOAPException; - - /** - * Creates a SOAPFactory object for - * the given String protocol. - * - * @param protocol a String indicating the protocol - * @exception SOAPException if there is an error in creating the - * SOAPFactory - * @see SOAPConstants#SOAP_1_1_PROTOCOL - * @see SOAPConstants#SOAP_1_2_PROTOCOL - * @see SOAPConstants#DYNAMIC_SOAP_PROTOCOL - */ - protected abstract SOAPFactory newSOAPFactory(String protocol) - throws SOAPException; -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SAAJResult.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SAAJResult.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,133 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import javax.xml.transform.dom.DOMResult; - -/** - * Acts as a holder for the results of a JAXP transformation or a JAXB - * marshalling, in the form of a SAAJ tree. These results should be accessed - * by using the {@link #getResult()} method. The {@link DOMResult#getNode()} - * method should be avoided in almost all cases. - * - * @author XWS-Security Development Team - * - * @since 1.6, SAAJ 1.3 - */ -public class SAAJResult extends DOMResult { - - /** - * Creates a SAAJResult that will present results in the form - * of a SAAJ tree that supports the default (SOAP 1.1) protocol. - *

    - * This kind of SAAJResult is meant for use in situations where the - * results will be used as a parameter to a method that takes a parameter - * whose type, such as SOAPElement, is drawn from the SAAJ - * API. When used in a transformation, the results are populated into the - * SOAPPart of a SOAPMessage that is created internally. - * The SOAPPart returned by {@link DOMResult#getNode()} - * is not guaranteed to be well-formed. - * - * @throws SOAPException if there is a problem creating a SOAPMessage - * - * @since 1.6, SAAJ 1.3 - */ - public SAAJResult() throws SOAPException { - this(MessageFactory.newInstance().createMessage()); - } - - /** - * Creates a SAAJResult that will present results in the form - * of a SAAJ tree that supports the specified protocol. The - * DYNAMIC_SOAP_PROTOCOL is ambiguous in this context and will - * cause this constructor to throw an UnsupportedOperationException. - *

    - * This kind of SAAJResult is meant for use in situations where the - * results will be used as a parameter to a method that takes a parameter - * whose type, such as SOAPElement, is drawn from the SAAJ - * API. When used in a transformation the results are populated into the - * SOAPPart of a SOAPMessage that is created - * internally. The SOAPPart returned by {@link DOMResult#getNode()} - * is not guaranteed to be well-formed. - * - * @param protocol - the name of the SOAP protocol that the resulting SAAJ - * tree should support - * - * @throws SOAPException if a SOAPMessage supporting the - * specified protocol cannot be created - * - * @since 1.6, SAAJ 1.3 - */ - public SAAJResult(String protocol) throws SOAPException { - this(MessageFactory.newInstance(protocol).createMessage()); - } - - /** - * Creates a SAAJResult that will write the results into the - * SOAPPart of the supplied SOAPMessage. - * In the normal case these results will be written using DOM APIs and, - * as a result, the finished SOAPPart will not be guaranteed - * to be well-formed unless the data used to create it is also well formed. - * When used in a transformation the validity of the SOAPMessage - * after the transformation can be guaranteed only by means outside SAAJ - * specification. - * - * @param message - the message whose SOAPPart will be - * populated as a result of some transformation or - * marshalling operation - * - * @since 1.6, SAAJ 1.3 - */ - public SAAJResult(SOAPMessage message) { - super(message.getSOAPPart()); - } - - /** - * Creates a SAAJResult that will write the results as a - * child node of the SOAPElement specified. In the normal - * case these results will be written using DOM APIs and as a result may - * invalidate the structure of the SAAJ tree. This kind of - * SAAJResult should only be used when the validity of the - * incoming data can be guaranteed by means outside of the SAAJ - * specification. - * - * @param rootNode - the root to which the results will be appended - * - * @since 1.6, SAAJ 1.3 - */ - public SAAJResult(SOAPElement rootNode) { - super(rootNode); - } - - - /** - * @return the resulting Tree that was created under the specified root Node. - * @since 1.6, SAAJ 1.3 - */ - public javax.xml.soap.Node getResult() { - return (javax.xml.soap.Node)super.getNode().getFirstChild(); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPBody.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPBody.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,298 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import java.util.Locale; - -import org.w3c.dom.Document; - -import javax.xml.namespace.QName; - -/** - * An object that represents the contents of the SOAP body - * element in a SOAP message. A SOAP body element consists of XML data - * that affects the way the application-specific content is processed. - *

    - * A SOAPBody object contains SOAPBodyElement - * objects, which have the content for the SOAP body. - * A SOAPFault object, which carries status and/or - * error information, is an example of a SOAPBodyElement object. - * - * @see SOAPFault - * @since 1.6 - */ -public interface SOAPBody extends SOAPElement { - - /** - * Creates a new SOAPFault object and adds it to - * this SOAPBody object. The new SOAPFault will - * have default values set for the mandatory child elements. The type of - * the SOAPFault will be a SOAP 1.1 or a SOAP 1.2 SOAPFault - * depending on the protocol specified while creating the - * MessageFactory instance. - *

    - * A SOAPBody may contain at most one SOAPFault - * child element. - * - * @return the new SOAPFault object - * @exception SOAPException if there is a SOAP error - */ - public SOAPFault addFault() throws SOAPException; - - - /** - * Creates a new SOAPFault object and adds it to - * this SOAPBody object. The type of the - * SOAPFault will be a SOAP 1.1 or a SOAP 1.2 - * SOAPFault depending on the protocol - * specified while creating the MessageFactory instance. - *

    - * For SOAP 1.2 the faultCode parameter is the value of the - * Fault/Code/Value element and the faultString parameter - * is the value of the Fault/Reason/Text element. For SOAP 1.1 - * the faultCode parameter is the value of the faultcode - * element and the faultString parameter is the value of the faultstring - * element. - *

    - * A SOAPBody may contain at most one SOAPFault - * child element. - * - * @param faultCode a Name object giving the fault - * code to be set; must be one of the fault codes defined in the Version - * of SOAP specification in use - * @param faultString a String giving an explanation of - * the fault - * @param locale a {@link java.util.Locale} object indicating - * the native language of the faultString - * @return the new SOAPFault object - * @exception SOAPException if there is a SOAP error - * @see SOAPFault#setFaultCode - * @see SOAPFault#setFaultString - * @since 1.6, SAAJ 1.2 - */ - public SOAPFault addFault(Name faultCode, String faultString, Locale locale) throws SOAPException; - - /** - * Creates a new SOAPFault object and adds it to this - * SOAPBody object. The type of the SOAPFault - * will be a SOAP 1.1 or a SOAP 1.2 SOAPFault depending on - * the protocol specified while creating the MessageFactory - * instance. - *

    - * For SOAP 1.2 the faultCode parameter is the value of the - * Fault/Code/Value element and the faultString parameter - * is the value of the Fault/Reason/Text element. For SOAP 1.1 - * the faultCode parameter is the value of the faultcode - * element and the faultString parameter is the value of the faultstring - * element. - *

    - * A SOAPBody may contain at most one SOAPFault - * child element. - * - * @param faultCode - * a QName object giving the fault code to be - * set; must be one of the fault codes defined in the version - * of SOAP specification in use. - * @param faultString - * a String giving an explanation of the fault - * @param locale - * a {@link java.util.Locale Locale} object indicating the - * native language of the faultString - * @return the new SOAPFault object - * @exception SOAPException - * if there is a SOAP error - * @see SOAPFault#setFaultCode - * @see SOAPFault#setFaultString - * @see SOAPBody#addFault(Name faultCode, String faultString, Locale locale) - * - * @since 1.6, SAAJ 1.3 - */ - public SOAPFault addFault(QName faultCode, String faultString, Locale locale) - throws SOAPException; - - /** - * Creates a new SOAPFault object and adds it to this - * SOAPBody object. The type of the SOAPFault - * will be a SOAP 1.1 or a SOAP 1.2 SOAPFault depending on - * the protocol specified while creating the MessageFactory - * instance. - *

    - * For SOAP 1.2 the faultCode parameter is the value of the - * Fault/Code/Value element and the faultString parameter - * is the value of the Fault/Reason/Text element. For SOAP 1.1 - * the faultCode parameter is the value of the faultcode - * element and the faultString parameter is the value of the faultstring - * element. - *

    - * In case of a SOAP 1.2 fault, the default value for the mandatory xml:lang - * attribute on the Fault/Reason/Text element will be set to - * java.util.Locale.getDefault() - *

    - * A SOAPBody may contain at most one SOAPFault - * child element. - * - * @param faultCode - * a Name object giving the fault code to be set; - * must be one of the fault codes defined in the version of SOAP - * specification in use - * @param faultString - * a String giving an explanation of the fault - * @return the new SOAPFault object - * @exception SOAPException - * if there is a SOAP error - * @see SOAPFault#setFaultCode - * @see SOAPFault#setFaultString - * @since 1.6, SAAJ 1.2 - */ - public SOAPFault addFault(Name faultCode, String faultString) - throws SOAPException; - - /** - * Creates a new SOAPFault object and adds it to this SOAPBody - * object. The type of the SOAPFault - * will be a SOAP 1.1 or a SOAP 1.2 SOAPFault depending on - * the protocol specified while creating the MessageFactory - * instance. - *

    - * For SOAP 1.2 the faultCode parameter is the value of the - * Fault/Code/Value element and the faultString parameter - * is the value of the Fault/Reason/Text element. For SOAP 1.1 - * the faultCode parameter is the value of the faultcode - * element and the faultString parameter is the value of the faultstring - * element. - *

    - * In case of a SOAP 1.2 fault, the default value for the mandatory xml:lang - * attribute on the Fault/Reason/Text element will be set to - * java.util.Locale.getDefault() - *

    - * A SOAPBody may contain at most one SOAPFault - * child element - * - * @param faultCode - * a QName object giving the fault code to be - * set; must be one of the fault codes defined in the version - * of SOAP specification in use - * @param faultString - * a String giving an explanation of the fault - * @return the new SOAPFault object - * @exception SOAPException - * if there is a SOAP error - * @see SOAPFault#setFaultCode - * @see SOAPFault#setFaultString - * @see SOAPBody#addFault(Name faultCode, String faultString) - * @since 1.6, SAAJ 1.3 - */ - public SOAPFault addFault(QName faultCode, String faultString) - throws SOAPException; - - /** - * Indicates whether a SOAPFault object exists in this - * SOAPBody object. - * - * @return true if a SOAPFault object exists - * in this SOAPBody object; false - * otherwise - */ - public boolean hasFault(); - - /** - * Returns the SOAPFault object in this SOAPBody - * object. - * - * @return the SOAPFault object in this SOAPBody - * object if present, null otherwise. - */ - public SOAPFault getFault(); - - /** - * Creates a new SOAPBodyElement object with the specified - * name and adds it to this SOAPBody object. - * - * @param name - * a Name object with the name for the new SOAPBodyElement - * object - * @return the new SOAPBodyElement object - * @exception SOAPException - * if a SOAP error occurs - * @see SOAPBody#addBodyElement(javax.xml.namespace.QName) - */ - public SOAPBodyElement addBodyElement(Name name) throws SOAPException; - - - /** - * Creates a new SOAPBodyElement object with the specified - * QName and adds it to this SOAPBody object. - * - * @param qname - * a QName object with the qname for the new - * SOAPBodyElement object - * @return the new SOAPBodyElement object - * @exception SOAPException - * if a SOAP error occurs - * @see SOAPBody#addBodyElement(Name) - * @since 1.6, SAAJ 1.3 - */ - public SOAPBodyElement addBodyElement(QName qname) throws SOAPException; - - /** - * Adds the root node of the DOM {@link org.w3c.dom.Document} - * to this SOAPBody object. - *

    - * Calling this method invalidates the document parameter. - * The client application should discard all references to this Document - * and its contents upon calling addDocument. The behavior - * of an application that continues to use such references is undefined. - * - * @param document - * the Document object whose root node will be - * added to this SOAPBody. - * @return the SOAPBodyElement that represents the root node - * that was added. - * @exception SOAPException - * if the Document cannot be added - * @since 1.6, SAAJ 1.2 - */ - public SOAPBodyElement addDocument(org.w3c.dom.Document document) - throws SOAPException; - - /** - * Creates a new DOM {@link org.w3c.dom.Document} and sets - * the first child of this SOAPBody as it's document - * element. The child SOAPElement is removed as part of the - * process. - * - * @return the {@link org.w3c.dom.Document} representation - * of the SOAPBody content. - * - * @exception SOAPException - * if there is not exactly one child SOAPElement of the - * SOAPBody. - * - * @since 1.6, SAAJ 1.3 - */ - public org.w3c.dom.Document extractContentAsDocument() - throws SOAPException; -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPBodyElement.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPBodyElement.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,45 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -/** - * A SOAPBodyElement object represents the contents in - * a SOAPBody object. The SOAPFault interface - * is a SOAPBodyElement object that has been defined. - *

    - * A new SOAPBodyElement object can be created and added - * to a SOAPBody object with the SOAPBody - * method addBodyElement. In the following line of code, - * sb is a SOAPBody object, and - * myName is a Name object. - *

    - *    SOAPBodyElement sbe = sb.addBodyElement(myName);
    - * 
    - * - * @since 1.6 - */ -public interface SOAPBodyElement extends SOAPElement { -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConnection.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConnection.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,97 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - - -/** - * A point-to-point connection that a client can use for sending messages - * directly to a remote party (represented by a URL, for instance). - *

    - * The SOAPConnection class is optional. Some implementations may - * not implement this interface in which case the call to - * SOAPConnectionFactory.newInstance() (see below) will - * throw an UnsupportedOperationException. - *

    - * A client can obtain a SOAPConnection object using a - * {@link SOAPConnectionFactory} object as in the following example: - *

    - *      SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();
    - *      SOAPConnection con = factory.createConnection();
    - * 
    - * A SOAPConnection object can be used to send messages - * directly to a URL following the request/response paradigm. That is, - * messages are sent using the method call, which sends the - * message and then waits until it gets a reply. - * - * @since 1.6 - */ -public abstract class SOAPConnection { - - /** - * Sends the given message to the specified endpoint and blocks until - * it has returned the response. - * - * @param request the SOAPMessage object to be sent - * @param to an Object that identifies - * where the message should be sent. It is required to - * support Objects of type - * java.lang.String, - * java.net.URL, and when JAXM is present - * javax.xml.messaging.URLEndpoint - * - * @return the SOAPMessage object that is the response to the - * message that was sent - * @throws SOAPException if there is a SOAP error - */ - public abstract SOAPMessage call(SOAPMessage request, - Object to) throws SOAPException; - - /** - * Gets a message from a specific endpoint and blocks until it receives, - * - * @param to an Object that identifies where - * the request should be sent. Objects of type - * java.lang.String and - * java.net.URL must be supported. - * - * @return the SOAPMessage object that is the response to the - * get message request - * @throws SOAPException if there is a SOAP error - * @since 1.6, SAAJ 1.3 - */ - public SOAPMessage get(Object to) - throws SOAPException { - throw new UnsupportedOperationException("All subclasses of SOAPConnection must override get()"); - } - - /** - * Closes this SOAPConnection object. - * - * @throws SOAPException if there is a SOAP error - */ - public abstract void close() - throws SOAPException; -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConnectionFactory.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConnectionFactory.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,88 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -/** - * A factory for creating SOAPConnection objects. Implementation of this class - * is optional. If SOAPConnectionFactory.newInstance() throws an - * UnsupportedOperationException then the implementation does not support the - * SAAJ communication infrastructure. Otherwise {@link SOAPConnection} objects - * can be created by calling createConnection() on the newly - * created SOAPConnectionFactory object. - * - * @since 1.6 - */ -public abstract class SOAPConnectionFactory { - /** - * A constant representing the default value for a SOAPConnection - * object. The default is the point-to-point SOAP connection. - */ - static final String DEFAULT_SOAP_CONNECTION_FACTORY - = "com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnectionFactory"; - - /** - * A constant representing the SOAPConnection class. - */ - static private final String SF_PROPERTY - = "javax.xml.soap.SOAPConnectionFactory"; - - /** - * Creates an instance of the default - * SOAPConnectionFactory object. - * - * @return a new instance of a default - * SOAPConnectionFactory object - * - * @exception SOAPException if there was an error creating the - * SOAPConnectionFactory - * - * @exception UnsupportedOperationException if newInstance is not - * supported. - */ - public static SOAPConnectionFactory newInstance() - throws SOAPException, UnsupportedOperationException - { - try { - return (SOAPConnectionFactory) - FactoryFinder.find(SF_PROPERTY, - DEFAULT_SOAP_CONNECTION_FACTORY); - } catch (Exception ex) { - throw new SOAPException("Unable to create SOAP connection factory: " - +ex.getMessage()); - } - } - - /** - * Create a new SOAPConnection. - * - * @return the new SOAPConnection object. - * - * @exception SOAPException if there was an exception creating the - * SOAPConnection object. - */ - public abstract SOAPConnection createConnection() - throws SOAPException; -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConstants.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPConstants.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,203 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import javax.xml.namespace.QName; - -/** - * The definition of constants pertaining to the SOAP protocol. - * - * @since 1.6 - */ -public interface SOAPConstants { - /** - * Used to create MessageFactory instances that create - * SOAPMessages whose concrete type is based on the - * Content-Type MIME header passed to the - * createMessage method. If no Content-Type - * header is passed then the createMessage may throw an - * IllegalArgumentException or, in the case of the no - * argument version of createMessage, an - * UnsupportedOperationException. - * - * @since 1.6, SAAJ 1.3 - */ - public static final String DYNAMIC_SOAP_PROTOCOL = "Dynamic Protocol"; - - /** - * Used to create MessageFactory instances that create - * SOAPMessages whose behavior supports the SOAP 1.1 specification. - * - * @since 1.6, SAAJ 1.3 - */ - public static final String SOAP_1_1_PROTOCOL = "SOAP 1.1 Protocol"; - - /** - * Used to create MessageFactory instances that create - * SOAPMessages whose behavior supports the SOAP 1.2 - * specification - * - * @since 1.6, SAAJ 1.3 - */ - public static final String SOAP_1_2_PROTOCOL = "SOAP 1.2 Protocol"; - - /** - * The default protocol: SOAP 1.1 for backwards compatibility. - * - * @since 1.6, SAAJ 1.3 - */ - public static final String DEFAULT_SOAP_PROTOCOL = SOAP_1_1_PROTOCOL; - - /** - * The namespace identifier for the SOAP 1.1 envelope. - * @since 1.6, SAAJ 1.3 - */ - public static final String - URI_NS_SOAP_1_1_ENVELOPE = "http://schemas.xmlsoap.org/soap/envelope/"; - /** - * The namespace identifier for the SOAP 1.2 envelope. - * @since 1.6, SAAJ 1.3 - */ - public static final String - URI_NS_SOAP_1_2_ENVELOPE = "http://www.w3.org/2003/05/soap-envelope"; - - /** - * The namespace identifier for the SOAP 1.1 envelope, All SOAPElements in this - * namespace are defined by the SOAP 1.1 specification. - */ - public static final String - URI_NS_SOAP_ENVELOPE = URI_NS_SOAP_1_1_ENVELOPE; - - /** - * The namespace identifier for the SOAP 1.1 encoding. - * An attribute named encodingStyle in the - * URI_NS_SOAP_ENVELOPE namespace and set to the value - * URI_NS_SOAP_ENCODING can be added to an element to indicate - * that it is encoded using the rules in section 5 of the SOAP 1.1 - * specification. - */ - public static final String - URI_NS_SOAP_ENCODING = "http://schemas.xmlsoap.org/soap/encoding/"; - - /** - * The namespace identifier for the SOAP 1.2 encoding. - * @since 1.6, SAAJ 1.3 - */ - public static final String - URI_NS_SOAP_1_2_ENCODING = "http://www.w3.org/2003/05/soap-encoding"; - - /** - * The media type of the Content-Type MIME header in SOAP 1.1. - * @since 1.6, SAAJ 1.3 - */ - public static final String - SOAP_1_1_CONTENT_TYPE = "text/xml"; - - /** - * The media type of the Content-Type MIME header in SOAP 1.2. - * @since 1.6, SAAJ 1.3 - */ - public static final String - SOAP_1_2_CONTENT_TYPE = "application/soap+xml"; - - /** - * The URI identifying the next application processing a SOAP request as the intended - * actor for a SOAP 1.1 header entry (see section 4.2.2 of the SOAP 1.1 specification). - *

    - * This value can be passed to - * {@link SOAPHeader#examineMustUnderstandHeaderElements(String)}, - * {@link SOAPHeader#examineHeaderElements(String)} and - * {@link SOAPHeader#extractHeaderElements(String)} - */ - public static final String - URI_SOAP_ACTOR_NEXT = "http://schemas.xmlsoap.org/soap/actor/next"; - - /** - * The URI identifying the next application processing a SOAP request as the intended - * role for a SOAP 1.2 header entry (see section 2.2 of part 1 of the SOAP 1.2 - * specification). - * @since 1.6, SAAJ 1.3 - */ - public static final String - URI_SOAP_1_2_ROLE_NEXT = URI_NS_SOAP_1_2_ENVELOPE + "/role/next"; - - /** - * The URI specifying the role None in SOAP 1.2. - * @since 1.6, SAAJ 1.3 - */ - public static final String - URI_SOAP_1_2_ROLE_NONE = URI_NS_SOAP_1_2_ENVELOPE + "/role/none"; - - /** - * The URI identifying the ultimate receiver of the SOAP 1.2 message. - * @since 1.6, SAAJ 1.3 - */ - public static final String - URI_SOAP_1_2_ROLE_ULTIMATE_RECEIVER = - URI_NS_SOAP_1_2_ENVELOPE + "/role/ultimateReceiver"; - - /** - * The default namespace prefix for http://www.w3.org/2003/05/soap-envelope - * @since 1.6, SAAJ 1.3 - */ - public static final String SOAP_ENV_PREFIX = "env"; - - /** - * SOAP 1.2 VersionMismatch Fault - * @since 1.6, SAAJ 1.3 - */ - public static final QName SOAP_VERSIONMISMATCH_FAULT = - new QName(URI_NS_SOAP_1_2_ENVELOPE, "VersionMismatch", SOAP_ENV_PREFIX); - - /** - * SOAP 1.2 MustUnderstand Fault - * @since 1.6, SAAJ 1.3 - */ - public static final QName SOAP_MUSTUNDERSTAND_FAULT = - new QName(URI_NS_SOAP_1_2_ENVELOPE, "MustUnderstand", SOAP_ENV_PREFIX); - - /** - * SOAP 1.2 DataEncodingUnknown Fault - * @since 1.6, SAAJ 1.3 - */ - public static final QName SOAP_DATAENCODINGUNKNOWN_FAULT = - new QName(URI_NS_SOAP_1_2_ENVELOPE, "DataEncodingUnknown", SOAP_ENV_PREFIX); - - /** - * SOAP 1.2 Sender Fault - * @since 1.6, SAAJ 1.3 - */ - public static final QName SOAP_SENDER_FAULT = - new QName(URI_NS_SOAP_1_2_ENVELOPE, "Sender", SOAP_ENV_PREFIX); - - /** - * SOAP 1.2 Receiver Fault - * @since 1.6, SAAJ 1.3 - */ - public static final QName SOAP_RECEIVER_FAULT = - new QName(URI_NS_SOAP_1_2_ENVELOPE, "Receiver", SOAP_ENV_PREFIX); - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPElement.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPElement.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,526 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import java.util.Iterator; - -import javax.xml.namespace.QName; - -/** - * An object representing an element of a SOAP message that is allowed but not - * specifically prescribed by a SOAP specification. This interface serves as the - * base interface for those objects that are specifically prescribed by a SOAP - * specification. - *

    - * Methods in this interface that are required to return SAAJ specific objects - * may "silently" replace nodes in the tree as required to successfully return - * objects of the correct type. See {@link #getChildElements()} and - * {@link javax.xml.soap} - * for details. - * - * @since 1.6 - */ -public interface SOAPElement extends Node, org.w3c.dom.Element { - - /** - * Creates a new SOAPElement object initialized with the - * given Name object and adds the new element to this - * SOAPElement object. - *

    - * This method may be deprecated in a future release of SAAJ in favor of - * addChildElement(javax.xml.namespace.QName) - * - * @param name a Name object with the XML name for the - * new element - * - * @return the new SOAPElement object that was created - * @exception SOAPException if there is an error in creating the - * SOAPElement object - * @see SOAPElement#addChildElement(javax.xml.namespace.QName) - */ - public SOAPElement addChildElement(Name name) throws SOAPException; - - /** - * Creates a new SOAPElement object initialized with the given - * QName object and adds the new element to this SOAPElement - * object. The namespace, localname and prefix of the new - * SOAPElement are all taken from the qname argument. - * - * @param qname a QName object with the XML name for the - * new element - * - * @return the new SOAPElement object that was created - * @exception SOAPException if there is an error in creating the - * SOAPElement object - * @see SOAPElement#addChildElement(Name) - * @since 1.6, SAAJ 1.3 - */ - public SOAPElement addChildElement(QName qname) throws SOAPException; - - /** - * Creates a new SOAPElement object initialized with the - * specified local name and adds the new element to this - * SOAPElement object. - * The new SOAPElement inherits any in-scope default namespace. - * - * @param localName a String giving the local name for - * the element - * @return the new SOAPElement object that was created - * @exception SOAPException if there is an error in creating the - * SOAPElement object - */ - public SOAPElement addChildElement(String localName) throws SOAPException; - - /** - * Creates a new SOAPElement object initialized with the - * specified local name and prefix and adds the new element to this - * SOAPElement object. - * - * @param localName a String giving the local name for - * the new element - * @param prefix a String giving the namespace prefix for - * the new element - * - * @return the new SOAPElement object that was created - * @exception SOAPException if the prefix is not valid in the - * context of this SOAPElement or if there is an error in creating the - * SOAPElement object - */ - public SOAPElement addChildElement(String localName, String prefix) - throws SOAPException; - - /** - * Creates a new SOAPElement object initialized with the - * specified local name, prefix, and URI and adds the new element to this - * SOAPElement object. - * - * @param localName a String giving the local name for - * the new element - * @param prefix a String giving the namespace prefix for - * the new element - * @param uri a String giving the URI of the namespace - * to which the new element belongs - * - * @return the new SOAPElement object that was created - * @exception SOAPException if there is an error in creating the - * SOAPElement object - */ - public SOAPElement addChildElement(String localName, String prefix, - String uri) - throws SOAPException; - - /** - * Add a SOAPElement as a child of this - * SOAPElement instance. The SOAPElement - * is expected to be created by a - * SOAPFactory. Callers should not rely on the - * element instance being added as is into the XML - * tree. Implementations could end up copying the content - * of the SOAPElement passed into an instance of - * a different SOAPElement implementation. For - * instance if addChildElement() is called on a - * SOAPHeader, element will be copied - * into an instance of a SOAPHeaderElement. - * - *

    The fragment rooted in element is either added - * as a whole or not at all, if there was an error. - * - *

    The fragment rooted in element cannot contain - * elements named "Envelope", "Header" or "Body" and in the SOAP - * namespace. Any namespace prefixes present in the fragment - * should be fully resolved using appropriate namespace - * declarations within the fragment itself. - * - * @param element the SOAPElement to be added as a - * new child - * - * @exception SOAPException if there was an error in adding this - * element as a child - * - * @return an instance representing the new SOAP element that was - * actually added to the tree. - */ - public SOAPElement addChildElement(SOAPElement element) - throws SOAPException; - - /** - * Detaches all children of this SOAPElement. - *

    - * This method is useful for rolling back the construction of partially - * completed SOAPHeaders and SOAPBodys in - * preparation for sending a fault when an error condition is detected. It - * is also useful for recycling portions of a document within a SOAP - * message. - * - * @since 1.6, SAAJ 1.2 - */ - public abstract void removeContents(); - - /** - * Creates a new Text object initialized with the given - * String and adds it to this SOAPElement object. - * - * @param text a String object with the textual content to be added - * - * @return the SOAPElement object into which - * the new Text object was inserted - * @exception SOAPException if there is an error in creating the - * new Text object or if it is not legal to - * attach it as a child to this - * SOAPElement - */ - public SOAPElement addTextNode(String text) throws SOAPException; - - /** - * Adds an attribute with the specified name and value to this - * SOAPElement object. - * - * @param name a Name object with the name of the attribute - * @param value a String giving the value of the attribute - * @return the SOAPElement object into which the attribute was - * inserted - * - * @exception SOAPException if there is an error in creating the - * Attribute, or it is invalid to set - an attribute with Name - name on this SOAPElement. - * @see SOAPElement#addAttribute(javax.xml.namespace.QName, String) - */ - public SOAPElement addAttribute(Name name, String value) - throws SOAPException; - - /** - * Adds an attribute with the specified name and value to this - * SOAPElement object. - * - * @param qname a QName object with the name of the attribute - * @param value a String giving the value of the attribute - * @return the SOAPElement object into which the attribute was - * inserted - * - * @exception SOAPException if there is an error in creating the - * Attribute, or it is invalid to set - an attribute with QName - qname on this SOAPElement. - * @see SOAPElement#addAttribute(Name, String) - * @since 1.6, SAAJ 1.3 - */ - public SOAPElement addAttribute(QName qname, String value) - throws SOAPException; - - /** - * Adds a namespace declaration with the specified prefix and URI to this - * SOAPElement object. - * - * @param prefix a String giving the prefix of the namespace - * @param uri a String giving the uri of the namespace - * @return the SOAPElement object into which this - * namespace declaration was inserted. - * - * @exception SOAPException if there is an error in creating the - * namespace - */ - public SOAPElement addNamespaceDeclaration(String prefix, String uri) - throws SOAPException; - - /** - * Returns the value of the attribute with the specified name. - * - * @param name a Name object with the name of the attribute - * @return a String giving the value of the specified - * attribute, Null if there is no such attribute - * @see SOAPElement#getAttributeValue(javax.xml.namespace.QName) - */ - public String getAttributeValue(Name name); - - /** - * Returns the value of the attribute with the specified qname. - * - * @param qname a QName object with the qname of the attribute - * @return a String giving the value of the specified - * attribute, Null if there is no such attribute - * @see SOAPElement#getAttributeValue(Name) - * @since 1.6, SAAJ 1.3 - */ - public String getAttributeValue(QName qname); - - /** - * Returns an Iterator over all of the attribute - * Name objects in this - * SOAPElement object. The iterator can be used to get - * the attribute names, which can then be passed to the method - * getAttributeValue to retrieve the value of each - * attribute. - * - * @see SOAPElement#getAllAttributesAsQNames() - * @return an iterator over the names of the attributes - */ - public Iterator getAllAttributes(); - - /** - * Returns an Iterator over all of the attributes - * in this SOAPElement as QName objects. - * The iterator can be used to get the attribute QName, which can then - * be passed to the method getAttributeValue to retrieve - * the value of each attribute. - * - * @return an iterator over the QNames of the attributes - * @see SOAPElement#getAllAttributes() - * @since 1.6, SAAJ 1.3 - */ - public Iterator getAllAttributesAsQNames(); - - - /** - * Returns the URI of the namespace that has the given prefix. - * - * @param prefix a String giving the prefix of the namespace - * for which to search - * @return a String with the uri of the namespace that has - * the given prefix - */ - public String getNamespaceURI(String prefix); - - /** - * Returns an Iterator over the namespace prefix - * Strings declared by this element. The prefixes returned by - * this iterator can be passed to the method - * getNamespaceURI to retrieve the URI of each namespace. - * - * @return an iterator over the namespace prefixes in this - * SOAPElement object - */ - public Iterator getNamespacePrefixes(); - - /** - * Returns an Iterator over the namespace prefix - * Strings visible to this element. The prefixes returned by - * this iterator can be passed to the method - * getNamespaceURI to retrieve the URI of each namespace. - * - * @return an iterator over the namespace prefixes are within scope of this - * SOAPElement object - * - * @since 1.6, SAAJ 1.2 - */ - public Iterator getVisibleNamespacePrefixes(); - - /** - * Creates a QName whose namespace URI is the one associated - * with the parameter, prefix, in the context of this - * SOAPElement. The remaining elements of the new - * QName are taken directly from the parameters, - * localName and prefix. - * - * @param localName - * a String containing the local part of the name. - * @param prefix - * a String containing the prefix for the name. - * - * @return a QName with the specified localName - * and prefix, and with a namespace that is associated - * with the prefix in the context of this - * SOAPElement. This namespace will be the same as - * the one that would be returned by - * {@link #getNamespaceURI(String)} if it were given - * prefix as it's parameter. - * - * @exception SOAPException if the QName cannot be created. - * - * @since 1.6, SAAJ 1.3 - */ - public QName createQName(String localName, String prefix) - throws SOAPException; - /** - * Returns the name of this SOAPElement object. - * - * @return a Name object with the name of this - * SOAPElement object - */ - public Name getElementName(); - - /** - * Returns the qname of this SOAPElement object. - * - * @return a QName object with the qname of this - * SOAPElement object - * @see SOAPElement#getElementName() - * @since 1.6, SAAJ 1.3 - */ - public QName getElementQName(); - - /** - * Changes the name of this Element to newName if - * possible. SOAP Defined elements such as SOAPEnvelope, SOAPHeader, SOAPBody - * etc. cannot have their names changed using this method. Any attempt to do - * so will result in a SOAPException being thrown. - *

    - * Callers should not rely on the element instance being renamed as is. - * Implementations could end up copying the content of the - * SOAPElement to a renamed instance. - * - * @param newName the new name for the Element. - * - * @exception SOAPException if changing the name of this Element - * is not allowed. - * @return The renamed Node - * - * @since 1.6, SAAJ 1.3 - */ - public SOAPElement setElementQName(QName newName) throws SOAPException; - - /** - * Removes the attribute with the specified name. - * - * @param name the Name object with the name of the - * attribute to be removed - * @return true if the attribute was - * removed successfully; false if it was not - * @see SOAPElement#removeAttribute(javax.xml.namespace.QName) - */ - public boolean removeAttribute(Name name); - - /** - * Removes the attribute with the specified qname. - * - * @param qname the QName object with the qname of the - * attribute to be removed - * @return true if the attribute was - * removed successfully; false if it was not - * @see SOAPElement#removeAttribute(Name) - * @since 1.6, SAAJ 1.3 - */ - public boolean removeAttribute(QName qname); - - /** - * Removes the namespace declaration corresponding to the given prefix. - * - * @param prefix a String giving the prefix for which - * to search - * @return true if the namespace declaration was - * removed successfully; false if it was not - */ - public boolean removeNamespaceDeclaration(String prefix); - - /** - * Returns an Iterator over all the immediate child - * {@link Node}s of this element. This includes javax.xml.soap.Text - * objects as well as SOAPElement objects. - *

    - * Calling this method may cause child Element, - * SOAPElement and org.w3c.dom.Text nodes to be - * replaced by SOAPElement, SOAPHeaderElement, - * SOAPBodyElement or javax.xml.soap.Text nodes as - * appropriate for the type of this parent node. As a result the calling - * application must treat any existing references to these child nodes that - * have been obtained through DOM APIs as invalid and either discard them or - * refresh them with the values returned by this Iterator. This - * behavior can be avoided by calling the equivalent DOM APIs. See - * {@link javax.xml.soap} - * for more details. - * - * @return an iterator with the content of this SOAPElement - * object - */ - public Iterator getChildElements(); - - /** - * Returns an Iterator over all the immediate child - * {@link Node}s of this element with the specified name. All of these - * children will be SOAPElement nodes. - *

    - * Calling this method may cause child Element, - * SOAPElement and org.w3c.dom.Text nodes to be - * replaced by SOAPElement, SOAPHeaderElement, - * SOAPBodyElement or javax.xml.soap.Text nodes as - * appropriate for the type of this parent node. As a result the calling - * application must treat any existing references to these child nodes that - * have been obtained through DOM APIs as invalid and either discard them or - * refresh them with the values returned by this Iterator. This - * behavior can be avoided by calling the equivalent DOM APIs. See - * {@link javax.xml.soap} - * for more details. - * - * @param name a Name object with the name of the child - * elements to be returned - * - * @return an Iterator object over all the elements - * in this SOAPElement object with the - * specified name - * @see SOAPElement#getChildElements(javax.xml.namespace.QName) - */ - public Iterator getChildElements(Name name); - - /** - * Returns an Iterator over all the immediate child - * {@link Node}s of this element with the specified qname. All of these - * children will be SOAPElement nodes. - *

    - * Calling this method may cause child Element, - * SOAPElement and org.w3c.dom.Text nodes to be - * replaced by SOAPElement, SOAPHeaderElement, - * SOAPBodyElement or javax.xml.soap.Text nodes as - * appropriate for the type of this parent node. As a result the calling - * application must treat any existing references to these child nodes that - * have been obtained through DOM APIs as invalid and either discard them or - * refresh them with the values returned by this Iterator. This - * behavior can be avoided by calling the equivalent DOM APIs. See - * {@link javax.xml.soap} - * for more details. - * - * @param qname a QName object with the qname of the child - * elements to be returned - * - * @return an Iterator object over all the elements - * in this SOAPElement object with the - * specified qname - * @see SOAPElement#getChildElements(Name) - * @since 1.6, SAAJ 1.3 - */ - public Iterator getChildElements(QName qname); - - /** - * Sets the encoding style for this SOAPElement object - * to one specified. - * - * @param encodingStyle a String giving the encoding style - * - * @exception IllegalArgumentException if there was a problem in the - * encoding style being set. - * @exception SOAPException if setting the encodingStyle is invalid for this SOAPElement. - * @see #getEncodingStyle - */ - public void setEncodingStyle(String encodingStyle) - throws SOAPException; - /** - * Returns the encoding style for this SOAPElement object. - * - * @return a String giving the encoding style - * - * @see #setEncodingStyle - */ - public String getEncodingStyle(); -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPElementFactory.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPElementFactory.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,138 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -/** - * SOAPElementFactory is a factory for XML fragments that - * will eventually end up in the SOAP part. These fragments - * can be inserted as children of the SOAPHeader or - * SOAPBody or SOAPEnvelope. - * - *

    Elements created using this factory do not have the properties - * of an element that lives inside a SOAP header document. These - * elements are copied into the XML document tree when they are - * inserted. - * @deprecated - Use javax.xml.soap.SOAPFactory for creating SOAPElements. - * @see javax.xml.soap.SOAPFactory - * @since 1.6 - */ -public class SOAPElementFactory { - - private SOAPFactory soapFactory; - - private SOAPElementFactory(SOAPFactory soapFactory) { - this.soapFactory = soapFactory; - } - - /** - * Create a SOAPElement object initialized with the - * given Name object. - * - * @param name a Name object with the XML name for - * the new element - * - * @return the new SOAPElement object that was - * created - * - * @exception SOAPException if there is an error in creating the - * SOAPElement object - * - * @deprecated Use - * javax.xml.soap.SOAPFactory.createElement(javax.xml.soap.Name) - * instead - * - * @see javax.xml.soap.SOAPFactory#createElement(javax.xml.soap.Name) - * @see javax.xml.soap.SOAPFactory#createElement(javax.xml.namespace.QName) - */ - public SOAPElement create(Name name) throws SOAPException { - return soapFactory.createElement(name); - } - - /** - * Create a SOAPElement object initialized with the - * given local name. - * - * @param localName a String giving the local name for - * the new element - * - * @return the new SOAPElement object that was - * created - * - * @exception SOAPException if there is an error in creating the - * SOAPElement object - * - * @deprecated Use - * javax.xml.soap.SOAPFactory.createElement(String localName) instead - * - * @see javax.xml.soap.SOAPFactory#createElement(java.lang.String) - */ - public SOAPElement create(String localName) throws SOAPException { - return soapFactory.createElement(localName); - } - - /** - * Create a new SOAPElement object with the given - * local name, prefix and uri. - * - * @param localName a String giving the local name - * for the new element - * @param prefix the prefix for this SOAPElement - * @param uri a String giving the URI of the - * namespace to which the new element belongs - * - * @exception SOAPException if there is an error in creating the - * SOAPElement object - * - * @deprecated Use - * javax.xml.soap.SOAPFactory.createElement(String localName, - * String prefix, - * String uri) - * instead - * - * @see javax.xml.soap.SOAPFactory#createElement(java.lang.String, java.lang.String, java.lang.String) - */ - public SOAPElement create(String localName, String prefix, String uri) - throws SOAPException { - return soapFactory.createElement(localName, prefix, uri); - } - - /** - * Creates a new instance of SOAPElementFactory. - * - * @return a new instance of a SOAPElementFactory - * - * @exception SOAPException if there was an error creating the - * default SOAPElementFactory - */ - public static SOAPElementFactory newInstance() throws SOAPException { - try { - return new SOAPElementFactory(SOAPFactory.newInstance()); - } catch (Exception ex) { - throw new SOAPException( - "Unable to create SOAP Element Factory: " + ex.getMessage()); - } - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPEnvelope.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPEnvelope.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,202 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - - -/** - * The container for the SOAPHeader and SOAPBody portions of a - * SOAPPart object. By default, a SOAPMessage - * object is created with a SOAPPart object that has a - * SOAPEnvelope object. The SOAPEnvelope object - * by default has an empty SOAPBody object and an empty - * SOAPHeader object. The SOAPBody object is - * required, and the SOAPHeader object, though - * optional, is used in the majority of cases. If the - * SOAPHeader object is not needed, it can be deleted, - * which is shown later. - *

    - * A client can access the SOAPHeader and SOAPBody - * objects by calling the methods SOAPEnvelope.getHeader and - * SOAPEnvelope.getBody. The - * following lines of code use these two methods after starting with - * the SOAPMessage - * object message to get the SOAPPart object sp, - * which is then used to get the SOAPEnvelope object se. - * - *

    - *     SOAPPart sp = message.getSOAPPart();
    - *     SOAPEnvelope se = sp.getEnvelope();
    - *     SOAPHeader sh = se.getHeader();
    - *     SOAPBody sb = se.getBody();
    - * 
    - *

    - * It is possible to change the body or header of a SOAPEnvelope - * object by retrieving the current one, deleting it, and then adding - * a new body or header. The javax.xml.soap.Node method - * deleteNode deletes the XML element (node) on which it is - * called. For example, the following line of code deletes the - * SOAPBody object that is retrieved by the method getBody. - *

    - *      se.getBody().detachNode();
    - * 
    - * To create a SOAPHeader object to replace the one that was removed, - * a client uses - * the method SOAPEnvelope.addHeader, which creates a new header and - * adds it to the SOAPEnvelope object. Similarly, the method - * addBody creates a new SOAPBody object and adds - * it to the SOAPEnvelope object. The following code fragment - * retrieves the current header, removes it, and adds a new one. Then - * it retrieves the current body, removes it, and adds a new one. - * - *
    - *     SOAPPart sp = message.getSOAPPart();
    - *     SOAPEnvelope se = sp.getEnvelope();
    - *     se.getHeader().detachNode();
    - *     SOAPHeader sh = se.addHeader();
    - *     se.getBody().detachNode();
    - *     SOAPBody sb = se.addBody();
    - * 
    - * It is an error to add a SOAPBody or SOAPHeader - * object if one already exists. - *

    - * The SOAPEnvelope interface provides three methods for creating - * Name objects. One method creates Name objects with - * a local name, a namespace prefix, and a namesapce URI. The second method creates - * Name objects with a local name and a namespace prefix, and the third - * creates Name objects with just a local name. The following line of - * code, in which se is a SOAPEnvelope object, creates a new - * Name object with all three. - *

    - *     Name name = se.createName("GetLastTradePrice", "WOMBAT",
    - *                                "http://www.wombat.org/trader");
    - * 
    - * - * @since 1.6 - */ -public interface SOAPEnvelope extends SOAPElement { - - /** - * Creates a new Name object initialized with the - * given local name, namespace prefix, and namespace URI. - *

    - * This factory method creates Name objects for use in - * the SOAP/XML document. - * - * @param localName a String giving the local name - * @param prefix a String giving the prefix of the namespace - * @param uri a String giving the URI of the namespace - * @return a Name object initialized with the given - * local name, namespace prefix, and namespace URI - * @throws SOAPException if there is a SOAP error - */ - public abstract Name createName(String localName, String prefix, - String uri) - throws SOAPException; - - /** - * Creates a new Name object initialized with the - * given local name. - *

    - * This factory method creates Name objects for use in - * the SOAP/XML document. - * - * @param localName a String giving the local name - * @return a Name object initialized with the given - * local name - * @throws SOAPException if there is a SOAP error - */ - public abstract Name createName(String localName) - throws SOAPException; - - /** - * Returns the SOAPHeader object for - * this SOAPEnvelope object. - *

    - * A new SOAPMessage object is by default created with a - * SOAPEnvelope object that contains an empty - * SOAPHeader object. As a result, the method - * getHeader will always return a SOAPHeader - * object unless the header has been removed and a new one has not - * been added. - * - * @return the SOAPHeader object or null if - * there is none - * @exception SOAPException if there is a problem obtaining the - * SOAPHeader object - */ - public SOAPHeader getHeader() throws SOAPException; - - /** - * Returns the SOAPBody object associated with this - * SOAPEnvelope object. - *

    - * A new SOAPMessage object is by default created with a - * SOAPEnvelope object that contains an empty - * SOAPBody object. As a result, the method - * getBody will always return a SOAPBody - * object unless the body has been removed and a new one has not - * been added. - * - * @return the SOAPBody object for this - * SOAPEnvelope object or null - * if there is none - * @exception SOAPException if there is a problem obtaining the - * SOAPBody object - */ - public SOAPBody getBody() throws SOAPException; - /** - * Creates a SOAPHeader object and sets it as the - * SOAPHeader object for this SOAPEnvelope - * object. - *

    - * It is illegal to add a header when the envelope already - * contains a header. Therefore, this method should be called - * only after the existing header has been removed. - * - * @return the new SOAPHeader object - * - * @exception SOAPException if this - * SOAPEnvelope object already contains a - * valid SOAPHeader object - */ - public SOAPHeader addHeader() throws SOAPException; - /** - * Creates a SOAPBody object and sets it as the - * SOAPBody object for this SOAPEnvelope - * object. - *

    - * It is illegal to add a body when the envelope already - * contains a body. Therefore, this method should be called - * only after the existing body has been removed. - * - * @return the new SOAPBody object - * - * @exception SOAPException if this - * SOAPEnvelope object already contains a - * valid SOAPBody object - */ - public SOAPBody addBody() throws SOAPException; -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPException.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPException.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,165 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -/** - * An exception that signals that a SOAP exception has occurred. A - * SOAPException object may contain a String - * that gives the reason for the exception, an embedded - * Throwable object, or both. This class provides methods - * for retrieving reason messages and for retrieving the embedded - * Throwable object. - * - *

    Typical reasons for throwing a SOAPException - * object are problems such as difficulty setting a header, not being - * able to send a message, and not being able to get a connection with - * the provider. Reasons for embedding a Throwable - * object include problems such as input/output errors or a parsing - * problem, such as an error in parsing a header. - * - * @since 1.6 - */ -public class SOAPException extends Exception { - private Throwable cause; - - /** - * Constructs a SOAPException object with no - * reason or embedded Throwable object. - */ - public SOAPException() { - super(); - this.cause = null; - } - - /** - * Constructs a SOAPException object with the given - * String as the reason for the exception being thrown. - * - * @param reason a description of what caused the exception - */ - public SOAPException(String reason) { - super(reason); - this.cause = null; - } - - /** - * Constructs a SOAPException object with the given - * String as the reason for the exception being thrown - * and the given Throwable object as an embedded - * exception. - * - * @param reason a description of what caused the exception - * @param cause a Throwable object that is to - * be embedded in this SOAPException object - */ - public SOAPException(String reason, Throwable cause) { - super(reason); - initCause(cause); - } - - /** - * Constructs a SOAPException object initialized - * with the given Throwable object. - */ - public SOAPException(Throwable cause) { - super(cause.toString()); - initCause(cause); - } - - /** - * Returns the detail message for this SOAPException - * object. - *

    - * If there is an embedded Throwable object, and if the - * SOAPException object has no detail message of its - * own, this method will return the detail message from the embedded - * Throwable object. - * - * @return the error or warning message for this - * SOAPException or, if it has none, the - * message of the embedded Throwable object, - * if there is one - */ - public String getMessage() { - String message = super.getMessage(); - if (message == null && cause != null) { - return cause.getMessage(); - } else { - return message; - } - } - - /** - * Returns the Throwable object embedded in this - * SOAPException if there is one. Otherwise, this method - * returns null. - * - * @return the embedded Throwable object or null - * if there is none - */ - - public Throwable getCause() { - return cause; - } - - /** - * Initializes the cause field of this SOAPException - * object with the given Throwable object. - *

    - * This method can be called at most once. It is generally called from - * within the constructor or immediately after the constructor has - * returned a new SOAPException object. - * If this SOAPException object was created with the - * constructor {@link #SOAPException(Throwable)} or - * {@link #SOAPException(String,Throwable)}, meaning that its - * cause field already has a value, this method cannot be - * called even once. - * - * @param cause the Throwable object that caused this - * SOAPException object to be thrown. The value of this - * parameter is saved for later retrieval by the - * {@link #getCause()} method. A null value is - * permitted and indicates that the cause is nonexistent or - * unknown. - * @return a reference to this SOAPException instance - * @throws IllegalArgumentException if cause is this - * Throwable object. (A Throwable object - * cannot be its own cause.) - * @throws IllegalStateException if the cause for this SOAPException object - * has already been initialized - */ - public synchronized Throwable initCause(Throwable cause) { - if (this.cause != null) { - throw new IllegalStateException("Can't override cause"); - } - if (cause == this) { - throw new IllegalArgumentException("Self-causation not permitted"); - } - this.cause = cause; - - return this; - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFactory.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFactory.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,300 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import javax.xml.namespace.QName; - -import org.w3c.dom.Element; - -/** - * SOAPFactory is a factory for creating various objects - * that exist in the SOAP XML tree. - - * SOAPFactory can be - * used to create XML fragments that will eventually end up in the - * SOAP part. These fragments can be inserted as children of the - * {@link SOAPHeaderElement} or {@link SOAPBodyElement} or - * {@link SOAPEnvelope} or other {@link SOAPElement} objects. - * - * SOAPFactory also has methods to create - * javax.xml.soap.Detail objects as well as - * java.xml.soap.Name objects. - * - * @since 1.6 - */ -public abstract class SOAPFactory { - - /** - * A constant representing the property used to lookup the name of - * a SOAPFactory implementation class. - */ - static private final String SOAP_FACTORY_PROPERTY = - "javax.xml.soap.SOAPFactory"; - - /** - * Class name of default SOAPFactory implementation. - */ - static final String DEFAULT_SOAP_FACTORY - = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl"; - - /** - * Creates a SOAPElement object from an existing DOM - * Element. If the DOM Element that is passed in - * as an argument is already a SOAPElement then this method - * must return it unmodified without any further work. Otherwise, a new - * SOAPElement is created and a deep copy is made of the - * domElement argument. The concrete type of the return value - * will depend on the name of the domElement argument. If any - * part of the tree rooted in domElement violates SOAP rules, a - * SOAPException will be thrown. - * - * @param domElement - the Element to be copied. - * - * @return a new SOAPElement that is a copy of domElement. - * - * @exception SOAPException if there is an error in creating the - * SOAPElement object - * - * @since 1.6, SAAJ 1.3 - */ - public SOAPElement createElement(Element domElement) throws SOAPException { - throw new UnsupportedOperationException("createElement(org.w3c.dom.Element) must be overridden by all subclasses of SOAPFactory."); - } - - /** - * Creates a SOAPElement object initialized with the - * given Name object. The concrete type of the return value - * will depend on the name given to the new SOAPElement. For - * instance, a new SOAPElement with the name - * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a - * SOAPEnvelope that supports SOAP 1.2 behavior to be created. - * - * @param name a Name object with the XML name for - * the new element - * - * @return the new SOAPElement object that was - * created - * - * @exception SOAPException if there is an error in creating the - * SOAPElement object - * @see SOAPFactory#createElement(javax.xml.namespace.QName) - */ - public abstract SOAPElement createElement(Name name) throws SOAPException; - - /** - * Creates a SOAPElement object initialized with the - * given QName object. The concrete type of the return value - * will depend on the name given to the new SOAPElement. For - * instance, a new SOAPElement with the name - * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a - * SOAPEnvelope that supports SOAP 1.2 behavior to be created. - * - * @param qname a QName object with the XML name for - * the new element - * - * @return the new SOAPElement object that was - * created - * - * @exception SOAPException if there is an error in creating the - * SOAPElement object - * @see SOAPFactory#createElement(Name) - * @since 1.6, SAAJ 1.3 - */ - public SOAPElement createElement(QName qname) throws SOAPException { - throw new UnsupportedOperationException("createElement(QName) must be overridden by all subclasses of SOAPFactory."); - } - - /** - * Creates a SOAPElement object initialized with the - * given local name. - * - * @param localName a String giving the local name for - * the new element - * - * @return the new SOAPElement object that was - * created - * - * @exception SOAPException if there is an error in creating the - * SOAPElement object - */ - public abstract SOAPElement createElement(String localName) - throws SOAPException; - - - /** - * Creates a new SOAPElement object with the given - * local name, prefix and uri. The concrete type of the return value - * will depend on the name given to the new SOAPElement. For - * instance, a new SOAPElement with the name - * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a - * SOAPEnvelope that supports SOAP 1.2 behavior to be created. - * - * @param localName a String giving the local name - * for the new element - * @param prefix the prefix for this SOAPElement - * @param uri a String giving the URI of the - * namespace to which the new element belongs - * - * @exception SOAPException if there is an error in creating the - * SOAPElement object - */ - public abstract SOAPElement createElement( - String localName, - String prefix, - String uri) - throws SOAPException; - - /** - * Creates a new Detail object which serves as a container - * for DetailEntry objects. - *

    - * This factory method creates Detail objects for use in - * situations where it is not practical to use the SOAPFault - * abstraction. - * - * @return a Detail object - * @throws SOAPException if there is a SOAP error - * @throws UnsupportedOperationException if the protocol specified - * for the SOAPFactory was DYNAMIC_SOAP_PROTOCOL - */ - public abstract Detail createDetail() throws SOAPException; - - /** - *Creates a new SOAPFault object initialized with the given reasonText - * and faultCode - *@param reasonText the ReasonText/FaultString for the fault - *@param faultCode the FaultCode for the fault - *@return a SOAPFault object - *@throws SOAPException if there is a SOAP error - *@since 1.6, SAAJ 1.3 - */ - public abstract SOAPFault createFault(String reasonText, QName faultCode) throws SOAPException; - - /** - *Creates a new default SOAPFault object - *@return a SOAPFault object - *@throws SOAPException if there is a SOAP error - *@since 1.6, SAAJ 1.3 - */ - public abstract SOAPFault createFault() throws SOAPException; - - /** - * Creates a new Name object initialized with the - * given local name, namespace prefix, and namespace URI. - *

    - * This factory method creates Name objects for use in - * situations where it is not practical to use the SOAPEnvelope - * abstraction. - * - * @param localName a String giving the local name - * @param prefix a String giving the prefix of the namespace - * @param uri a String giving the URI of the namespace - * @return a Name object initialized with the given - * local name, namespace prefix, and namespace URI - * @throws SOAPException if there is a SOAP error - */ - public abstract Name createName( - String localName, - String prefix, - String uri) - throws SOAPException; - - /** - * Creates a new Name object initialized with the - * given local name. - *

    - * This factory method creates Name objects for use in - * situations where it is not practical to use the SOAPEnvelope - * abstraction. - * - * @param localName a String giving the local name - * @return a Name object initialized with the given - * local name - * @throws SOAPException if there is a SOAP error - */ - public abstract Name createName(String localName) throws SOAPException; - - /** - * Creates a new SOAPFactory object that is an instance of - * the default implementation (SOAP 1.1), - * - * This method uses the following ordered lookup procedure to determine the SOAPFactory implementation class to load: - *

      - *
    • Use the javax.xml.soap.SOAPFactory system property. - *
    • Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard - * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the - * system property defined above. - *
    • Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API - * will look for a classname in the file META-INF/services/javax.xml.soap.SOAPFactory in jars available to the runtime. - *
    • Use the SAAJMetaFactory instance to locate the SOAPFactory implementation class. - *
    - * - * @return a new instance of a SOAPFactory - * - * @exception SOAPException if there was an error creating the - * default SOAPFactory - * @see SAAJMetaFactory - */ - public static SOAPFactory newInstance() - throws SOAPException - { - try { - SOAPFactory factory = (SOAPFactory) FactoryFinder.find( - SOAP_FACTORY_PROPERTY, DEFAULT_SOAP_FACTORY, false); - if (factory != null) - return factory; - return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); - } catch (Exception ex) { - throw new SOAPException( - "Unable to create SOAP Factory: " + ex.getMessage()); - } - - } - - /** - * Creates a new SOAPFactory object that is an instance of - * the specified implementation, this method uses the SAAJMetaFactory to - * locate the implementation class and create the SOAPFactory instance. - * - * @return a new instance of a SOAPFactory - * - * @param protocol a string constant representing the protocol of the - * specified SOAP factory implementation. May be - * either DYNAMIC_SOAP_PROTOCOL, - * DEFAULT_SOAP_PROTOCOL (which is the same - * as) SOAP_1_1_PROTOCOL, or - * SOAP_1_2_PROTOCOL. - * - * @exception SOAPException if there was an error creating the - * specified SOAPFactory - * @see SAAJMetaFactory - * @since 1.6, SAAJ 1.3 - */ - public static SOAPFactory newInstance(String protocol) - throws SOAPException { - return SAAJMetaFactory.getInstance().newSOAPFactory(protocol); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFault.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFault.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,513 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import java.util.Iterator; -import java.util.Locale; - -import javax.xml.namespace.QName; - -/** - * An element in the SOAPBody object that contains - * error and/or status information. This information may relate to - * errors in the SOAPMessage object or to problems - * that are not related to the content in the message itself. Problems - * not related to the message itself are generally errors in - * processing, such as the inability to communicate with an upstream - * server. - *

    - * Depending on the protocol specified while creating the - * MessageFactory instance, a SOAPFault has - * sub-elements as defined in the SOAP 1.1/SOAP 1.2 specification. - * - * @since 1.6 - */ -public interface SOAPFault extends SOAPBodyElement { - - /** - * Sets this SOAPFault object with the given fault code. - * - *

    Fault codes, which give information about the fault, are defined - * in the SOAP 1.1 specification. A fault code is mandatory and must - * be of type Name. This method provides a convenient - * way to set a fault code. For example, - * - *

    -     * SOAPEnvelope se = ...;
    -     * // Create a qualified name in the SOAP namespace with a localName
    -     * // of "Client". Note that prefix parameter is optional and is null
    -     * // here which causes the implementation to use an appropriate prefix.
    -     * Name qname = se.createName("Client", null,
    -     *                            SOAPConstants.URI_NS_SOAP_ENVELOPE);
    -     * SOAPFault fault = ...;
    -     * fault.setFaultCode(qname);
    -     * 
    - * It is preferable to use this method over {@link #setFaultCode(String)}. - * - * @param faultCodeQName a Name object giving the fault - * code to be set. It must be namespace qualified. - * @see #getFaultCodeAsName - * - * @exception SOAPException if there was an error in adding the - * faultcode element to the underlying XML tree. - * - * @since 1.6, SAAJ 1.2 - */ - public void setFaultCode(Name faultCodeQName) throws SOAPException; - - /** - * Sets this SOAPFault object with the given fault code. - * - * It is preferable to use this method over {@link #setFaultCode(Name)}. - * - * @param faultCodeQName a QName object giving the fault - * code to be set. It must be namespace qualified. - * @see #getFaultCodeAsQName - * - * @exception SOAPException if there was an error in adding the - * faultcode element to the underlying XML tree. - * - * @see #setFaultCode(Name) - * @see #getFaultCodeAsQName() - * - * @since 1.6, SAAJ 1.3 - */ - public void setFaultCode(QName faultCodeQName) throws SOAPException; - - /** - * Sets this SOAPFault object with the give fault code. - *

    - * Fault codes, which given information about the fault, are defined in - * the SOAP 1.1 specification. This element is mandatory in SOAP 1.1. - * Because the fault code is required to be a QName it is preferable to - * use the {@link #setFaultCode(Name)} form of this method. - * - * @param faultCode a String giving the fault code to be set. - * It must be of the form "prefix:localName" where the prefix has - * been defined in a namespace declaration. - * @see #setFaultCode(Name) - * @see #getFaultCode - * @see SOAPElement#addNamespaceDeclaration - * - * @exception SOAPException if there was an error in adding the - * faultCode to the underlying XML tree. - */ - public void setFaultCode(String faultCode) throws SOAPException; - - /** - * Gets the mandatory SOAP 1.1 fault code for this - * SOAPFault object as a SAAJ Name object. - * The SOAP 1.1 specification requires the value of the "faultcode" - * element to be of type QName. This method returns the content of the - * element as a QName in the form of a SAAJ Name object. This method - * should be used instead of the getFaultCode method since - * it allows applications to easily access the namespace name without - * additional parsing. - * - * @return a Name representing the faultcode - * @see #setFaultCode(Name) - * - * @since 1.6, SAAJ 1.2 - */ - public Name getFaultCodeAsName(); - - - /** - * Gets the fault code for this - * SOAPFault object as a QName object. - * - * @return a QName representing the faultcode - * - * @see #setFaultCode(QName) - * - * @since 1.6, SAAJ 1.3 - */ - public QName getFaultCodeAsQName(); - - /** - * Gets the Subcodes for this SOAPFault as an iterator over - * QNames. - * - * @return an Iterator that accesses a sequence of - * QNames. This Iterator should not support - * the optional remove method. The order in which the - * Subcodes are returned reflects the hierarchy of Subcodes present - * in the fault from top to bottom. - * - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Subcode. - * - * @since 1.6, SAAJ 1.3 - */ - public Iterator getFaultSubcodes(); - - /** - * Removes any Subcodes that may be contained by this - * SOAPFault. Subsequent calls to - * getFaultSubcodes will return an empty iterator until a call - * to appendFaultSubcode is made. - * - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Subcode. - * - * @since 1.6, SAAJ 1.3 - */ - public void removeAllFaultSubcodes(); - - /** - * Adds a Subcode to the end of the sequence of Subcodes contained by this - * SOAPFault. Subcodes, which were introduced in SOAP 1.2, are - * represented by a recursive sequence of subelements rooted in the - * mandatory Code subelement of a SOAP Fault. - * - * @param subcode a QName containing the Value of the Subcode. - * - * @exception SOAPException if there was an error in setting the Subcode - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Subcode. - * - * @since 1.6, SAAJ 1.3 - */ - public void appendFaultSubcode(QName subcode) throws SOAPException; - - /** - * Gets the fault code for this SOAPFault object. - * - * @return a String with the fault code - * @see #getFaultCodeAsName - * @see #setFaultCode - */ - public String getFaultCode(); - - /** - * Sets this SOAPFault object with the given fault actor. - *

    - * The fault actor is the recipient in the message path who caused the - * fault to happen. - *

    - * If this SOAPFault supports SOAP 1.2 then this call is - * equivalent to {@link #setFaultRole(String)} - * - * @param faultActor a String identifying the actor that - * caused this SOAPFault object - * @see #getFaultActor - * - * @exception SOAPException if there was an error in adding the - * faultActor to the underlying XML tree. - */ - public void setFaultActor(String faultActor) throws SOAPException; - - /** - * Gets the fault actor for this SOAPFault object. - *

    - * If this SOAPFault supports SOAP 1.2 then this call is - * equivalent to {@link #getFaultRole()} - * - * @return a String giving the actor in the message path - * that caused this SOAPFault object - * @see #setFaultActor - */ - public String getFaultActor(); - - /** - * Sets the fault string for this SOAPFault object - * to the given string. - *

    - * If this - * SOAPFault is part of a message that supports SOAP 1.2 then - * this call is equivalent to: - *

    -     *      addFaultReasonText(faultString, Locale.getDefault());
    -     * 
    - * - * @param faultString a String giving an explanation of - * the fault - * @see #getFaultString - * - * @exception SOAPException if there was an error in adding the - * faultString to the underlying XML tree. - */ - public void setFaultString(String faultString) throws SOAPException; - - /** - * Sets the fault string for this SOAPFault object - * to the given string and localized to the given locale. - *

    - * If this - * SOAPFault is part of a message that supports SOAP 1.2 then - * this call is equivalent to: - *

    -     *      addFaultReasonText(faultString, locale);
    -     * 
    - * - * @param faultString a String giving an explanation of - * the fault - * @param locale a {@link java.util.Locale Locale} object indicating - * the native language of the faultString - * @see #getFaultString - * - * @exception SOAPException if there was an error in adding the - * faultString to the underlying XML tree. - * - * @since 1.6, SAAJ 1.2 - */ - public void setFaultString(String faultString, Locale locale) - throws SOAPException; - - /** - * Gets the fault string for this SOAPFault object. - *

    - * If this - * SOAPFault is part of a message that supports SOAP 1.2 then - * this call is equivalent to: - *

    -     *    String reason = null;
    -     *    try {
    -     *        reason = (String) getFaultReasonTexts().next();
    -     *    } catch (SOAPException e) {}
    -     *    return reason;
    -     * 
    - * - * @return a String giving an explanation of - * the fault - * @see #setFaultString(String) - * @see #setFaultString(String, Locale) - */ - public String getFaultString(); - - /** - * Gets the locale of the fault string for this SOAPFault - * object. - *

    - * If this - * SOAPFault is part of a message that supports SOAP 1.2 then - * this call is equivalent to: - *

    -     *    Locale locale = null;
    -     *    try {
    -     *        locale = (Locale) getFaultReasonLocales().next();
    -     *    } catch (SOAPException e) {}
    -     *    return locale;
    -     * 
    - * - * @return a Locale object indicating the native language of - * the fault string or null if no locale was specified - * @see #setFaultString(String, Locale) - * - * @since 1.6, SAAJ 1.2 - */ - public Locale getFaultStringLocale(); - - /** - * Returns true if this SOAPFault has a Detail - * subelement and false otherwise. Equivalent to - * (getDetail()!=null). - * - * @return true if this SOAPFault has a Detail - * subelement and false otherwise. - * - * @since 1.6, SAAJ 1.3 - */ - public boolean hasDetail(); - - /** - * Returns the optional detail element for this SOAPFault - * object. - *

    - * A Detail object carries application-specific error - * information, the scope of the error information is restricted to - * faults in the SOAPBodyElement objects if this is a - * SOAP 1.1 Fault. - * - * @return a Detail object with application-specific - * error information if present, null otherwise - */ - public Detail getDetail(); - - /** - * Creates an optional Detail object and sets it as the - * Detail object for this SOAPFault - * object. - *

    - * It is illegal to add a detail when the fault already - * contains a detail. Therefore, this method should be called - * only after the existing detail has been removed. - * - * @return the new Detail object - * - * @exception SOAPException if this - * SOAPFault object already contains a - * valid Detail object - */ - public Detail addDetail() throws SOAPException; - - /** - * Returns an Iterator over a distinct sequence of - * Locales for which there are associated Reason Text items. - * Any of these Locales can be used in a call to - * getFaultReasonText in order to obtain a localized version - * of the Reason Text string. - * - * @return an Iterator over a sequence of Locale - * objects for which there are associated Reason Text items. - * - * @exception SOAPException if there was an error in retrieving - * the fault Reason locales. - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Fault Reason. - * - * @since 1.6, SAAJ 1.3 - */ - public Iterator getFaultReasonLocales() throws SOAPException; - - /** - * Returns an Iterator over a sequence of - * String objects containing all of the Reason Text items for - * this SOAPFault. - * - * @return an Iterator over env:Fault/env:Reason/env:Text items. - * - * @exception SOAPException if there was an error in retrieving - * the fault Reason texts. - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Fault Reason. - * - * @since 1.6, SAAJ 1.3 - */ - public Iterator getFaultReasonTexts() throws SOAPException; - - /** - * Returns the Reason Text associated with the given Locale. - * If more than one such Reason Text exists the first matching Text is - * returned - * - * @param locale -- the Locale for which a localized - * Reason Text is desired - * - * @return the Reason Text associated with locale - * - * @see #getFaultString - * - * @exception SOAPException if there was an error in retrieving - * the fault Reason text for the specified locale . - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Fault Reason. - * - * @since 1.6, SAAJ 1.3 - */ - public String getFaultReasonText(Locale locale) throws SOAPException; - - /** - * Appends or replaces a Reason Text item containing the specified - * text message and an xml:lang derived from - * locale. If a Reason Text item with this - * xml:lang already exists its text value will be replaced - * with text. - * The locale parameter should not be null - *

    - * Code sample: - * - *

    -     * SOAPFault fault = ...;
    -     * fault.addFaultReasonText("Version Mismatch", Locale.ENGLISH);
    -     * 
    - * - * @param text -- reason message string - * @param locale -- Locale object representing the locale of the message - * - * @exception SOAPException if there was an error in adding the Reason text - * or the locale passed was null. - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Fault Reason. - * - * @since 1.6, SAAJ 1.3 - */ - public void addFaultReasonText(String text, java.util.Locale locale) - throws SOAPException; - - /** - * Returns the optional Node element value for this - * SOAPFault object. The Node element is - * optional in SOAP 1.2. - * - * @return Content of the env:Fault/env:Node element as a String - * or null if none - * - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Fault Node. - * - * @since 1.6, SAAJ 1.3 - */ - public String getFaultNode(); - - /** - * Creates or replaces any existing Node element value for - * this SOAPFault object. The Node element - * is optional in SOAP 1.2. - * - * @exception SOAPException if there was an error in setting the - * Node for this SOAPFault object. - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Fault Node. - * - * - * @since 1.6, SAAJ 1.3 - */ - public void setFaultNode(String uri) throws SOAPException; - - /** - * Returns the optional Role element value for this - * SOAPFault object. The Role element is - * optional in SOAP 1.2. - * - * @return Content of the env:Fault/env:Role element as a String - * or null if none - * - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Fault Role. - * - * @since 1.6, SAAJ 1.3 - */ - public String getFaultRole(); - - /** - * Creates or replaces any existing Role element value for - * this SOAPFault object. The Role element - * is optional in SOAP 1.2. - * - * @param uri - the URI of the Role - * - * @exception SOAPException if there was an error in setting the - * Role for this SOAPFault object. - * - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Fault Role. - * - * @since 1.6, SAAJ 1.3 - */ - public void setFaultRole(String uri) throws SOAPException; - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFaultElement.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPFaultElement.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,39 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -/** - * A representation of the contents in - * a SOAPFault object. The Detail interface - * is a SOAPFaultElement. - *

    - * Content is added to a SOAPFaultElement using the - * SOAPElement method addTextNode. - * - * @since 1.6 - */ -public interface SOAPFaultElement extends SOAPElement { -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPHeader.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPHeader.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,263 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import java.util.Iterator; - -import javax.xml.namespace.QName; - -/** - * A representation of the SOAP header - * element. A SOAP header element consists of XML data that affects - * the way the application-specific content is processed by the message - * provider. For example, transaction semantics, authentication information, - * and so on, can be specified as the content of a SOAPHeader - * object. - *

    - * A SOAPEnvelope object contains an empty - * SOAPHeader object by default. If the SOAPHeader - * object, which is optional, is not needed, it can be retrieved and deleted - * with the following line of code. The variable se is a - * SOAPEnvelope object. - *

    - *      se.getHeader().detachNode();
    - * 
    - * - * A SOAPHeader object is created with the SOAPEnvelope - * method addHeader. This method, which creates a new header and adds it - * to the envelope, may be called only after the existing header has been removed. - * - *
    - *      se.getHeader().detachNode();
    - *      SOAPHeader sh = se.addHeader();
    - * 
    - *

    - * A SOAPHeader object can have only SOAPHeaderElement - * objects as its immediate children. The method addHeaderElement - * creates a new HeaderElement object and adds it to the - * SOAPHeader object. In the following line of code, the - * argument to the method addHeaderElement is a Name - * object that is the name for the new HeaderElement object. - *

    - *      SOAPHeaderElement shElement = sh.addHeaderElement(name);
    - * 
    - * - * @see SOAPHeaderElement - * @since 1.6 - */ -public interface SOAPHeader extends SOAPElement { - /** - * Creates a new SOAPHeaderElement object initialized with the - * specified name and adds it to this SOAPHeader object. - * - * @param name a Name object with the name of the new - * SOAPHeaderElement object - * @return the new SOAPHeaderElement object that was - * inserted into this SOAPHeader object - * @exception SOAPException if a SOAP error occurs - * @see SOAPHeader#addHeaderElement(javax.xml.namespace.QName) - */ - public SOAPHeaderElement addHeaderElement(Name name) - throws SOAPException; - - /** - * Creates a new SOAPHeaderElement object initialized with the - * specified qname and adds it to this SOAPHeader object. - * - * @param qname a QName object with the qname of the new - * SOAPHeaderElement object - * @return the new SOAPHeaderElement object that was - * inserted into this SOAPHeader object - * @exception SOAPException if a SOAP error occurs - * @see SOAPHeader#addHeaderElement(Name) - * @since 1.6, SAAJ 1.3 - */ - public SOAPHeaderElement addHeaderElement(QName qname) - throws SOAPException; - - /** - * Returns an Iterator over all the SOAPHeaderElement objects - * in this SOAPHeader object - * that have the specified actor and that have a MustUnderstand attribute - * whose value is equivalent to true. - *

    - * In SOAP 1.2 the env:actor attribute is replaced by the env:role - * attribute, but with essentially the same semantics. - * - * @param actor a String giving the URI of the actor / role - * for which to search - * @return an Iterator object over all the - * SOAPHeaderElement objects that contain the specified - * actor / role and are marked as MustUnderstand - * @see #examineHeaderElements - * @see #extractHeaderElements - * @see SOAPConstants#URI_SOAP_ACTOR_NEXT - * - * @since 1.6, SAAJ 1.2 - */ - public Iterator examineMustUnderstandHeaderElements(String actor); - - /** - * Returns an Iterator over all the SOAPHeaderElement objects - * in this SOAPHeader object - * that have the specified actor. - * - * An actor is a global attribute that indicates the intermediate - * parties that should process a message before it reaches its ultimate - * receiver. An actor receives the message and processes it before sending - * it on to the next actor. The default actor is the ultimate intended - * recipient for the message, so if no actor attribute is included in a - * SOAPHeader object, it is sent to the ultimate receiver - * along with the message body. - *

    - * In SOAP 1.2 the env:actor attribute is replaced by the env:role - * attribute, but with essentially the same semantics. - * - * @param actor a String giving the URI of the actor / role - * for which to search - * @return an Iterator object over all the - * SOAPHeaderElement objects that contain the specified - * actor / role - * @see #extractHeaderElements - * @see SOAPConstants#URI_SOAP_ACTOR_NEXT - */ - public Iterator examineHeaderElements(String actor); - - /** - * Returns an Iterator over all the SOAPHeaderElement objects - * in this SOAPHeader object - * that have the specified actor and detaches them - * from this SOAPHeader object. - *

    - * This method allows an actor to process the parts of the - * SOAPHeader object that apply to it and to remove - * them before passing the message on to the next actor. - *

    - * In SOAP 1.2 the env:actor attribute is replaced by the env:role - * attribute, but with essentially the same semantics. - * - * @param actor a String giving the URI of the actor / role - * for which to search - * @return an Iterator object over all the - * SOAPHeaderElement objects that contain the specified - * actor / role - * - * @see #examineHeaderElements - * @see SOAPConstants#URI_SOAP_ACTOR_NEXT - */ - public Iterator extractHeaderElements(String actor); - - /** - * Creates a new NotUnderstood SOAPHeaderElement object initialized - * with the specified name and adds it to this SOAPHeader object. - * This operation is supported only by SOAP 1.2. - * - * @param name a QName object with the name of the - * SOAPHeaderElement object that was not understood. - * @return the new SOAPHeaderElement object that was - * inserted into this SOAPHeader object - * @exception SOAPException if a SOAP error occurs. - * @exception UnsupportedOperationException if this is a SOAP 1.1 Header. - * @since 1.6, SAAJ 1.3 - */ - public SOAPHeaderElement addNotUnderstoodHeaderElement(QName name) - throws SOAPException; - - /** - * Creates a new Upgrade SOAPHeaderElement object initialized - * with the specified List of supported SOAP URIs and adds it to this - * SOAPHeader object. - * This operation is supported on both SOAP 1.1 and SOAP 1.2 header. - * - * @param supportedSOAPURIs an Iterator object with the URIs of SOAP - * versions supported. - * @return the new SOAPHeaderElement object that was - * inserted into this SOAPHeader object - * @exception SOAPException if a SOAP error occurs. - * @since 1.6, SAAJ 1.3 - */ - public SOAPHeaderElement addUpgradeHeaderElement(Iterator supportedSOAPURIs) - throws SOAPException; - - /** - * Creates a new Upgrade SOAPHeaderElement object initialized - * with the specified array of supported SOAP URIs and adds it to this - * SOAPHeader object. - * This operation is supported on both SOAP 1.1 and SOAP 1.2 header. - * - * @param supportedSoapUris an array of the URIs of SOAP versions supported. - * @return the new SOAPHeaderElement object that was - * inserted into this SOAPHeader object - * @exception SOAPException if a SOAP error occurs. - * @since 1.6, SAAJ 1.3 - */ - public SOAPHeaderElement addUpgradeHeaderElement(String[] supportedSoapUris) - throws SOAPException; - - /** - * Creates a new Upgrade SOAPHeaderElement object initialized - * with the specified supported SOAP URI and adds it to this - * SOAPHeader object. - * This operation is supported on both SOAP 1.1 and SOAP 1.2 header. - * - * @param supportedSoapUri the URI of SOAP the version that is supported. - * @return the new SOAPHeaderElement object that was - * inserted into this SOAPHeader object - * @exception SOAPException if a SOAP error occurs. - * @since 1.6, SAAJ 1.3 - */ - public SOAPHeaderElement addUpgradeHeaderElement(String supportedSoapUri) - throws SOAPException; - - /** - * Returns an Iterator over all the SOAPHeaderElement objects - * in this SOAPHeader object. - * - * @return an Iterator object over all the - * SOAPHeaderElement objects contained by this - * SOAPHeader - * @see #extractAllHeaderElements - * - * @since 1.6, SAAJ 1.2 - */ - public Iterator examineAllHeaderElements(); - - /** - * Returns an Iterator over all the SOAPHeaderElement objects - * in this SOAPHeader object and detaches them - * from this SOAPHeader object. - * - * @return an Iterator object over all the - * SOAPHeaderElement objects contained by this - * SOAPHeader - * - * @see #examineAllHeaderElements - * - * @since 1.6, SAAJ 1.2 - */ - public Iterator extractAllHeaderElements(); - -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPHeaderElement.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPHeaderElement.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,168 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -/** - * An object representing the contents in the SOAP header part of the - * SOAP envelope. - * The immediate children of a SOAPHeader object can - * be represented only as SOAPHeaderElement objects. - *

    - * A SOAPHeaderElement object can have other - * SOAPElement objects as its children. - * - * @since 1.6 - */ -public interface SOAPHeaderElement extends SOAPElement { - - /** - * Sets the actor associated with this SOAPHeaderElement - * object to the specified actor. The default value of an actor is: - * SOAPConstants.URI_SOAP_ACTOR_NEXT - *

    - * If this SOAPHeaderElement supports SOAP 1.2 then this call is - * equivalent to {@link #setRole(String)} - * - * @param actorURI a String giving the URI of the actor - * to set - * - * @exception IllegalArgumentException if there is a problem in - * setting the actor. - * - * @see #getActor - */ - public void setActor(String actorURI); - - /** - * Sets the Role associated with this SOAPHeaderElement - * object to the specified Role. - * - * @param uri - the URI of the Role - * - * @throws SOAPException if there is an error in setting the role - * - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Fault Role. - * - * @since 1.6, SAAJ 1.3 - */ - public void setRole(String uri) throws SOAPException; - - /** - * Returns the uri of the actor attribute of this - * SOAPHeaderElement. - *

    - * If this SOAPHeaderElement supports SOAP 1.2 then this call is - * equivalent to {@link #getRole()} - * @return a String giving the URI of the actor - * @see #setActor - */ - public String getActor(); - - /** - * Returns the value of the Role attribute of this - * SOAPHeaderElement. - * - * @return a String giving the URI of the Role - * - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Fault Role. - * - * @since 1.6, SAAJ 1.3 - */ - public String getRole(); - - /** - * Sets the mustUnderstand attribute for this SOAPHeaderElement - * object to be either true or false. - *

    - * If the mustUnderstand attribute is on, the actor who receives the - * SOAPHeaderElement must process it correctly. This - * ensures, for example, that if the SOAPHeaderElement - * object modifies the message, that the message is being modified correctly. - * - * @param mustUnderstand true to set the mustUnderstand - * attribute to true; false to set it to false - * - * @exception IllegalArgumentException if there is a problem in - * setting the mustUnderstand attribute - * @see #getMustUnderstand - * @see #setRelay - */ - public void setMustUnderstand(boolean mustUnderstand); - - /** - * Returns the boolean value of the mustUnderstand attribute for this - * SOAPHeaderElement. - * - * @return true if the mustUnderstand attribute of this - * SOAPHeaderElement object is turned on; false - * otherwise - */ - public boolean getMustUnderstand(); - - /** - * Sets the relay attribute for this SOAPHeaderElement to be - * either true or false. - *

    - * The SOAP relay attribute is set to true to indicate that the SOAP header - * block must be relayed by any node that is targeted by the header block - * but not actually process it. This attribute is ignored on header blocks - * whose mustUnderstand attribute is set to true or that are targeted at - * the ultimate reciever (which is the default). The default value of this - * attribute is false. - * - * @param relay the new value of the relay attribute - * - * @exception SOAPException if there is a problem in setting the - * relay attribute. - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Relay attribute. - * - * @see #setMustUnderstand - * @see #getRelay - * - * @since 1.6, SAAJ 1.3 - */ - public void setRelay(boolean relay) throws SOAPException; - - /** - * Returns the boolean value of the relay attribute for this - * SOAPHeaderElement - * - * @return true if the relay attribute is turned on; - * false otherwise - * - * @exception UnsupportedOperationException if this message does not - * support the SOAP 1.2 concept of Relay attribute. - * - * @see #getMustUnderstand - * @see #setRelay - * - * @since 1.6, SAAJ 1.3 - */ - public boolean getRelay(); -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPMessage.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPMessage.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,457 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; -import java.io.OutputStream; -import java.io.IOException; - -import java.util.Iterator; - -import javax.activation.DataHandler; - -/** - * The root class for all SOAP messages. As transmitted on the "wire", a SOAP - * message is an XML document or a MIME message whose first body part is an - * XML/SOAP document. - *

    - * A SOAPMessage object consists of a SOAP part and optionally - * one or more attachment parts. The SOAP part for a SOAPMessage - * object is a SOAPPart object, which contains information used - * for message routing and identification, and which can contain - * application-specific content. All data in the SOAP Part of a message must be - * in XML format. - *

    - * A new SOAPMessage object contains the following by default: - *

      - *
    • A SOAPPart object - *
    • A SOAPEnvelope object - *
    • A SOAPBody object - *
    • A SOAPHeader object - *
    - * The SOAP part of a message can be retrieved by calling the method SOAPMessage.getSOAPPart(). - * The SOAPEnvelope object is retrieved from the SOAPPart - * object, and the SOAPEnvelope object is used to retrieve the - * SOAPBody and SOAPHeader objects. - * - *
    - *     SOAPPart sp = message.getSOAPPart();
    - *     SOAPEnvelope se = sp.getEnvelope();
    - *     SOAPBody sb = se.getBody();
    - *     SOAPHeader sh = se.getHeader();
    - * 
    - * - *

    - * In addition to the mandatory SOAPPart object, a SOAPMessage - * object may contain zero or more AttachmentPart objects, each - * of which contains application-specific data. The SOAPMessage - * interface provides methods for creating AttachmentPart - * objects and also for adding them to a SOAPMessage object. A - * party that has received a SOAPMessage object can examine its - * contents by retrieving individual attachment parts. - *

    - * Unlike the rest of a SOAP message, an attachment is not required to be in - * XML format and can therefore be anything from simple text to an image file. - * Consequently, any message content that is not in XML format must be in an - * AttachmentPart object. - *

    - * A MessageFactory object may create SOAPMessage - * objects with behavior that is specialized to a particular implementation or - * application of SAAJ. For instance, a MessageFactory object - * may produce SOAPMessage objects that conform to a particular - * Profile such as ebXML. In this case a MessageFactory object - * might produce SOAPMessage objects that are initialized with - * ebXML headers. - *

    - * In order to ensure backward source compatibility, methods that are added to - * this class after version 1.1 of the SAAJ specification are all concrete - * instead of abstract and they all have default implementations. Unless - * otherwise noted in the JavaDocs for those methods the default - * implementations simply throw an UnsupportedOperationException - * and the SAAJ implementation code must override them with methods that - * provide the specified behavior. Legacy client code does not have this - * restriction, however, so long as there is no claim made that it conforms to - * some later version of the specification than it was originally written for. - * A legacy class that extends the SOAPMessage class can be compiled and/or run - * against succeeding versions of the SAAJ API without modification. If such a - * class was correctly implemented then it will continue to behave correctly - * relative to the version of the specification against which it was written. - * - * @see MessageFactory - * @see AttachmentPart - * @since 1.6 - */ -public abstract class SOAPMessage { - /** - * Specifies the character type encoding for the SOAP Message. Valid values - * include "utf-8" and "utf-16". See vendor documentation for additional - * supported values. The default is "utf-8". - * - * @see SOAPMessage#setProperty(String, Object) SOAPMessage.setProperty - * @since 1.6, SAAJ 1.2 - */ - public static final String CHARACTER_SET_ENCODING = - "javax.xml.soap.character-set-encoding"; - - /** - * Specifies whether the SOAP Message will contain an XML declaration when - * it is sent. The only valid values are "true" and "false". The default is - * "false". - * - * @see SOAPMessage#setProperty(String, Object) SOAPMessage.setProperty - * @since 1.6, SAAJ 1.2 - */ - public static final String WRITE_XML_DECLARATION = - "javax.xml.soap.write-xml-declaration"; - - /** - * Sets the description of this SOAPMessage object's - * content with the given description. - * - * @param description a String describing the content of this - * message - * @see #getContentDescription - */ - public abstract void setContentDescription(String description); - - /** - * Retrieves a description of this SOAPMessage object's - * content. - * - * @return a String describing the content of this - * message or null if no description has been set - * @see #setContentDescription - */ - public abstract String getContentDescription(); - - /** - * Gets the SOAP part of this SOAPMessage object. - *

    - * SOAPMessage object contains one or more attachments, the - * SOAP Part must be the first MIME body part in the message. - * - * @return the SOAPPart object for this SOAPMessage - * object - */ - public abstract SOAPPart getSOAPPart(); - - /** - * Gets the SOAP Body contained in this SOAPMessage object. - *

    - * - * @return the SOAPBody object contained by this SOAPMessage - * object - * @exception SOAPException - * if the SOAP Body does not exist or cannot be retrieved - * @since 1.6, SAAJ 1.2 - */ - public SOAPBody getSOAPBody() throws SOAPException { - throw new UnsupportedOperationException("getSOAPBody must be overridden by all subclasses of SOAPMessage"); - } - - /** - * Gets the SOAP Header contained in this SOAPMessage - * object. - *

    - * - * @return the SOAPHeader object contained by this SOAPMessage - * object - * @exception SOAPException - * if the SOAP Header does not exist or cannot be retrieved - * @since 1.6, SAAJ 1.2 - */ - public SOAPHeader getSOAPHeader() throws SOAPException { - throw new UnsupportedOperationException("getSOAPHeader must be overridden by all subclasses of SOAPMessage"); - } - - /** - * Removes all AttachmentPart objects that have been added - * to this SOAPMessage object. - *

    - * This method does not touch the SOAP part. - */ - public abstract void removeAllAttachments(); - - /** - * Gets a count of the number of attachments in this message. This count - * does not include the SOAP part. - * - * @return the number of AttachmentPart objects that are - * part of this SOAPMessage object - */ - public abstract int countAttachments(); - - /** - * Retrieves all the AttachmentPart objects that are part of - * this SOAPMessage object. - * - * @return an iterator over all the attachments in this message - */ - public abstract Iterator getAttachments(); - - /** - * Retrieves all the AttachmentPart objects that have header - * entries that match the specified headers. Note that a returned - * attachment could have headers in addition to those specified. - * - * @param headers - * a MimeHeaders object containing the MIME - * headers for which to search - * @return an iterator over all attachments that have a header that matches - * one of the given headers - */ - public abstract Iterator getAttachments(MimeHeaders headers); - - /** - * Removes all the AttachmentPart objects that have header - * entries that match the specified headers. Note that the removed - * attachment could have headers in addition to those specified. - * - * @param headers - * a MimeHeaders object containing the MIME - * headers for which to search - * @since 1.6, SAAJ 1.3 - */ - public abstract void removeAttachments(MimeHeaders headers); - - - /** - * Returns an AttachmentPart object that is associated with an - * attachment that is referenced by this SOAPElement or - * null if no such attachment exists. References can be made - * via an href attribute as described in - * {@link SOAP Messages with Attachments}, - * or via a single Text child node containing a URI as - * described in the WS-I Attachments Profile 1.0 for elements of schema - * type {@link ref:swaRef}. These two mechanisms must be supported. - * The support for references via href attribute also implies that - * this method should also be supported on an element that is an - * xop:Include element ( - * {@link XOP}). - * other reference mechanisms may be supported by individual - * implementations of this standard. Contact your vendor for details. - * - * @param element The SOAPElement containing the reference to an Attachment - * @return the referenced AttachmentPart or null if no such - * AttachmentPart exists or no reference can be - * found in this SOAPElement. - * @throws SOAPException if there is an error in the attempt to access the - * attachment - * - * @since 1.6, SAAJ 1.3 - */ - public abstract AttachmentPart getAttachment(SOAPElement element) throws SOAPException; - - - /** - * Adds the given AttachmentPart object to this SOAPMessage - * object. An AttachmentPart object must be created before - * it can be added to a message. - * - * @param AttachmentPart - * an AttachmentPart object that is to become part - * of this SOAPMessage object - * @exception IllegalArgumentException - */ - public abstract void addAttachmentPart(AttachmentPart AttachmentPart); - - /** - * Creates a new empty AttachmentPart object. Note that the - * method addAttachmentPart must be called with this new - * AttachmentPart object as the parameter in order for it to - * become an attachment to this SOAPMessage object. - * - * @return a new AttachmentPart object that can be populated - * and added to this SOAPMessage object - */ - public abstract AttachmentPart createAttachmentPart(); - - /** - * Creates an AttachmentPart object and populates it using - * the given DataHandler object. - * - * @param dataHandler - * the javax.activation.DataHandler object that - * will generate the content for this SOAPMessage - * object - * @return a new AttachmentPart object that contains data - * generated by the given DataHandler object - * @exception IllegalArgumentException - * if there was a problem with the specified DataHandler - * object - * @see javax.activation.DataHandler - * @see javax.activation.DataContentHandler - */ - public AttachmentPart createAttachmentPart(DataHandler dataHandler) { - AttachmentPart attachment = createAttachmentPart(); - attachment.setDataHandler(dataHandler); - return attachment; - } - - /** - * Returns all the transport-specific MIME headers for this SOAPMessage - * object in a transport-independent fashion. - * - * @return a MimeHeaders object containing the MimeHeader - * objects - */ - public abstract MimeHeaders getMimeHeaders(); - - /** - * Creates an AttachmentPart object and populates it with - * the specified data of the specified content type. The type of the - * Object should correspond to the value given for the - * Content-Type. - * - * @param content - * an Object containing the content for the - * AttachmentPart object to be created - * @param contentType - * a String object giving the type of content; - * examples are "text/xml", "text/plain", and "image/jpeg" - * @return a new AttachmentPart object that contains the - * given data - * @exception IllegalArgumentException - * may be thrown if the contentType does not match the type - * of the content object, or if there was no - * DataContentHandler object for the given - * content object - * @see javax.activation.DataHandler - * @see javax.activation.DataContentHandler - */ - public AttachmentPart createAttachmentPart( - Object content, - String contentType) { - AttachmentPart attachment = createAttachmentPart(); - attachment.setContent(content, contentType); - return attachment; - } - - /** - * Updates this SOAPMessage object with all the changes that - * have been made to it. This method is called automatically when - * {@link SOAPMessage#writeTo(OutputStream)} is called. However, if - * changes are made to a message that was received or to one that has - * already been sent, the method saveChanges needs to be - * called explicitly in order to save the changes. The method saveChanges - * also generates any changes that can be read back (for example, a - * MessageId in profiles that support a message id). All MIME headers in a - * message that is created for sending purposes are guaranteed to have - * valid values only after saveChanges has been called. - *

    - * In addition, this method marks the point at which the data from all - * constituent AttachmentPart objects are pulled into the - * message. - *

    - * - * @exception SOAPException if there was a problem saving - * changes to this message. - */ - public abstract void saveChanges() throws SOAPException; - - /** - * Indicates whether this SOAPMessage object needs to have - * the method saveChanges called on it. - * - * @return true if saveChanges needs to be - * called; false otherwise. - */ - public abstract boolean saveRequired(); - - /** - * Writes this SOAPMessage object to the given output - * stream. The externalization format is as defined by the SOAP 1.1 with - * Attachments specification. - *

    - * If there are no attachments, just an XML stream is written out. For - * those messages that have attachments, writeTo writes a - * MIME-encoded byte stream. - *

    - * Note that this method does not write the transport-specific MIME Headers - * of the Message - * - * @param out - * the OutputStream object to which this SOAPMessage - * object will be written - * @exception IOException - * if an I/O error occurs - * @exception SOAPException - * if there was a problem in externalizing this SOAP message - */ - public abstract void writeTo(OutputStream out) - throws SOAPException, IOException; - - /** - * Associates the specified value with the specified property. If there was - * already a value associated with this property, the old value is - * replaced. - *

    - * The valid property names include - * {@link SOAPMessage#WRITE_XML_DECLARATION} and - * {@link SOAPMessage#CHARACTER_SET_ENCODING}. All of these standard SAAJ - * properties are prefixed by "javax.xml.soap". Vendors may also add - * implementation specific properties. These properties must be prefixed - * with package names that are unique to the vendor. - *

    - * Setting the property WRITE_XML_DECLARATION to "true" - * will cause an XML Declaration to be written out at the start of the SOAP - * message. The default value of "false" suppresses this declaration. - *

    - * The property CHARACTER_SET_ENCODING defaults to the value - * "utf-8" which causes the SOAP message to be encoded using - * UTF-8. Setting CHARACTER_SET_ENCODING to "utf-16" - * causes the SOAP message to be encoded using UTF-16. - *

    - * Some implementations may allow encodings in addition to UTF-8 and - * UTF-16. Refer to your vendor's documentation for details. - * - * @param property - * the property with which the specified value is to be - * associated. - * @param value - * the value to be associated with the specified property - * @exception SOAPException - * if the property name is not recognized. - * @since 1.6, SAAJ 1.2 - */ - public void setProperty(String property, Object value) - throws SOAPException { - throw new UnsupportedOperationException("setProperty must be overridden by all subclasses of SOAPMessage"); - } - - /** - * Retrieves value of the specified property. - * - * @param property - * the name of the property to retrieve - * @return the value associated with the named property or null - * if no such property exists. - * @exception SOAPException - * if the property name is not recognized. - * @since 1.6, SAAJ 1.2 - */ - public Object getProperty(String property) throws SOAPException { - throw new UnsupportedOperationException("getProperty must be overridden by all subclasses of SOAPMessage"); - } -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPPart.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/SOAPPart.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,267 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -import java.util.Iterator; - -import javax.xml.transform.Source; - -/** - * The container for the SOAP-specific portion of a SOAPMessage - * object. All messages are required to have a SOAP part, so when a - * SOAPMessage object is created, it will automatically - * have a SOAPPart object. - *

    - * A SOAPPart object is a MIME part and has the MIME headers - * Content-Id, Content-Location, and Content-Type. Because the value of - * Content-Type must be "text/xml", a SOAPPart object automatically - * has a MIME header of Content-Type with its value set to "text/xml". - * The value must be "text/xml" because content in the SOAP part of a - * message must be in XML format. Content that is not of type "text/xml" - * must be in an AttachmentPart object rather than in the - * SOAPPart object. - *

    - * When a message is sent, its SOAP part must have the MIME header Content-Type - * set to "text/xml". Or, from the other perspective, the SOAP part of any - * message that is received must have the MIME header Content-Type with a - * value of "text/xml". - *

    - * A client can access the SOAPPart object of a - * SOAPMessage object by - * calling the method SOAPMessage.getSOAPPart. The - * following line of code, in which message is a - * SOAPMessage object, retrieves the SOAP part of a message. - *

    - *   SOAPPart soapPart = message.getSOAPPart();
    - * 
    - *

    - * A SOAPPart object contains a SOAPEnvelope object, - * which in turn contains a SOAPBody object and a - * SOAPHeader object. - * The SOAPPart method getEnvelope can be used - * to retrieve the SOAPEnvelope object. - *

    - * - * @since 1.6 - */ -public abstract class SOAPPart implements org.w3c.dom.Document, Node { - - /** - * Gets the SOAPEnvelope object associated with this - * SOAPPart object. Once the SOAP envelope is obtained, it - * can be used to get its contents. - * - * @return the SOAPEnvelope object for this - * SOAPPart object - * @exception SOAPException if there is a SOAP error - */ - public abstract SOAPEnvelope getEnvelope() throws SOAPException; - - /** - * Retrieves the value of the MIME header whose name is "Content-Id". - * - * @return a String giving the value of the MIME header - * named "Content-Id" - * @see #setContentId - */ - public String getContentId() { - String[] values = getMimeHeader("Content-Id"); - if (values != null && values.length > 0) - return values[0]; - return null; - } - - /** - * Retrieves the value of the MIME header whose name is "Content-Location". - * - * @return a String giving the value of the MIME header whose - * name is "Content-Location" - * @see #setContentLocation - */ - public String getContentLocation() { - String[] values = getMimeHeader("Content-Location"); - if (values != null && values.length > 0) - return values[0]; - return null; - } - - /** - * Sets the value of the MIME header named "Content-Id" - * to the given String. - * - * @param contentId a String giving the value of the MIME - * header "Content-Id" - * - * @exception IllegalArgumentException if there is a problem in - * setting the content id - * @see #getContentId - */ - public void setContentId(String contentId) - { - setMimeHeader("Content-Id", contentId); - } - /** - * Sets the value of the MIME header "Content-Location" - * to the given String. - * - * @param contentLocation a String giving the value - * of the MIME - * header "Content-Location" - * @exception IllegalArgumentException if there is a problem in - * setting the content location. - * @see #getContentLocation - */ - public void setContentLocation(String contentLocation) - { - setMimeHeader("Content-Location", contentLocation); - } - /** - * Removes all MIME headers that match the given name. - * - * @param header a String giving the name of the MIME header(s) to - * be removed - */ - public abstract void removeMimeHeader(String header); - - /** - * Removes all the MimeHeader objects for this - * SOAPEnvelope object. - */ - public abstract void removeAllMimeHeaders(); - - /** - * Gets all the values of the MimeHeader object - * in this SOAPPart object that - * is identified by the given String. - * - * @param name the name of the header; example: "Content-Type" - * @return a String array giving all the values for the - * specified header - * @see #setMimeHeader - */ - public abstract String[] getMimeHeader(String name); - - /** - * Changes the first header entry that matches the given header name - * so that its value is the given value, adding a new header with the - * given name and value if no - * existing header is a match. If there is a match, this method clears - * all existing values for the first header that matches and sets the - * given value instead. If more than one header has - * the given name, this method removes all of the matching headers after - * the first one. - *

    - * Note that RFC822 headers can contain only US-ASCII characters. - * - * @param name a String giving the header name - * for which to search - * @param value a String giving the value to be set. - * This value will be substituted for the current value(s) - * of the first header that is a match if there is one. - * If there is no match, this value will be the value for - * a new MimeHeader object. - * - * @exception IllegalArgumentException if there was a problem with - * the specified mime header name or value - * @see #getMimeHeader - */ - public abstract void setMimeHeader(String name, String value); - - /** - * Creates a MimeHeader object with the specified - * name and value and adds it to this SOAPPart object. - * If a MimeHeader with the specified name already - * exists, this method adds the specified value to the already - * existing value(s). - *

    - * Note that RFC822 headers can contain only US-ASCII characters. - * - * @param name a String giving the header name - * @param value a String giving the value to be set - * or added - * @exception IllegalArgumentException if there was a problem with - * the specified mime header name or value - */ - public abstract void addMimeHeader(String name, String value); - - /** - * Retrieves all the headers for this SOAPPart object - * as an iterator over the MimeHeader objects. - * - * @return an Iterator object with all of the Mime - * headers for this SOAPPart object - */ - public abstract Iterator getAllMimeHeaders(); - - /** - * Retrieves all MimeHeader objects that match a name in - * the given array. - * - * @param names a String array with the name(s) of the - * MIME headers to be returned - * @return all of the MIME headers that match one of the names in the - * given array, returned as an Iterator object - */ - public abstract Iterator getMatchingMimeHeaders(String[] names); - - /** - * Retrieves all MimeHeader objects whose name does - * not match a name in the given array. - * - * @param names a String array with the name(s) of the - * MIME headers not to be returned - * @return all of the MIME headers in this SOAPPart object - * except those that match one of the names in the - * given array. The nonmatching MIME headers are returned as an - * Iterator object. - */ - public abstract Iterator getNonMatchingMimeHeaders(String[] names); - - /** - * Sets the content of the SOAPEnvelope object with the data - * from the given Source object. This Source - * must contain a valid SOAP document. - * - * @param source the javax.xml.transform.Source object with the - * data to be set - * - * @exception SOAPException if there is a problem in setting the source - * @see #getContent - */ - public abstract void setContent(Source source) throws SOAPException; - - /** - * Returns the content of the SOAPEnvelope as a JAXP Source - * object. - * - * @return the content as a javax.xml.transform.Source object - * - * @exception SOAPException if the implementation cannot convert - * the specified Source object - * @see #setContent - */ - public abstract Source getContent() throws SOAPException; -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Text.java --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/Text.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,43 +0,0 @@ -/* - * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package javax.xml.soap; - -/** - * A representation of a node whose value is text. A Text object - * may represent text that is content or text that is a comment. - * - * @since 1.6 - */ -public interface Text extends Node, org.w3c.dom.Text { - - /** - * Retrieves whether this Text object represents a comment. - * - * @return true if this Text object is a - * comment; false otherwise - */ - public boolean isComment(); -} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.soap/share/classes/javax/xml/soap/package.html --- a/jaxws/src/java.xml.soap/share/classes/javax/xml/soap/package.html Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,92 +0,0 @@ - - - - - - - - - - - Provides the API for creating and building SOAP messages. This package - is defined in the SOAP with Attachments API for JavaTM (SAAJ) 1.3 specification. -

    The API in the javax.xml.soap package allows you to do the - following:

    - -
      -
    • create a point-to-point connection to a specified endpoint
    • -
    • create a SOAP message
    • -
    • create an XML fragment
    • -
    • add content to the header of a SOAP message
    • -
    • add content to the body of a SOAP message
    • -
    • create attachment parts and add content to them
    • -
    • access/add/modify parts of a SOAP message
    • -
    • create/add/modify SOAP fault information
    • -
    • extract content from a SOAP message
    • -
    • send a SOAP request-response message
    • - -
    - -

    - - - - - - -

    -In addition the APIs in the javax.xml.soap package extend -their counterparts in the org.w3c.dom package. This means that -the SOAPPart of a SOAPMessage is also a DOM Level -2 Document, and can be manipulated as such by applications, -tools and libraries that use DOM (see http://www.w3.org/DOM/ for more information). -It is important to note that, while it is possible to use DOM APIs to add -ordinary DOM nodes to a SAAJ tree, the SAAJ APIs are still required to return -SAAJ types when examining or manipulating the tree. In order to accomplish -this the SAAJ APIs (specifically {@link javax.xml.soap.SOAPElement#getChildElements()}) -are allowed to silently replace objects that are incorrectly typed relative -to SAAJ requirements with equivalent objects of the required type. These -replacements must never cause the logical structure of the tree to change, -so from the perspective of the DOM APIs the tree will remain unchanged. However, -the physical composition of the tree will have changed so that references -to the nodes that were replaced will refer to nodes that are no longer a -part of the tree. The SAAJ APIs are not allowed to make these replacements -if they are not required so the replacement objects will never subsequently -be silently replaced by future calls to the SAAJ API. -

    -What this means in -practical terms is that an application that starts to use SAAJ APIs on a -tree after manipulating it using DOM APIs must assume that the tree has been -translated into an all SAAJ tree and that any references to objects within -the tree that were obtained using DOM APIs are no longer valid. Switching -from SAAJ APIs to DOM APIs is not allowed to cause invalid references and -neither is using SAAJ APIs exclusively. It is only switching from using DOM -APIs on a particular SAAJ tree to using SAAJ APIs that causes the risk of -invalid references.
    - - - diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/LazyEnvelopeSource.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/LazyEnvelopeSource.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj; + +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPException; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +/** + * LazyEnvelopeSource provides the source to create lazy Envelope + * + * @author shih-chang.chen@oracle.com + */ +public interface LazyEnvelopeSource extends javax.xml.transform.Source { + /** + * Retrieve payload qname without materializing its contents + * @return + * @throws SOAPException + */ + public QName getPayloadQName(); + public XMLStreamReader readToBodyStarTag() throws XMLStreamException; + public XMLStreamReader readPayload(); + public void writePayloadTo(XMLStreamWriter writer)throws XMLStreamException; + public boolean isPayloadStreamReader(); +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/SOAPExceptionImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/SOAPExceptionImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,196 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj; + +import java.io.PrintStream; +import java.io.PrintWriter; + +import javax.xml.soap.SOAPException; + +/** + * An exception that signals that a SOAP exception has occurred. A + * SOAPExceptionImpl object may contain a String + * that gives the reason for the exception, an embedded + * Throwable object, or both. This class provides methods + * for retrieving reason messages and for retrieving the embedded + * Throwable object. + * + *

    Typical reasons for throwing a SOAPExceptionImpl + * object are problems such as difficulty setting a header, not being + * able to send a message, and not being able to get a connection with + * the provider. Reasons for embedding a Throwable + * object include problems such as input/output errors or a parsing + * problem, such as an error in parsing a header. + */ +public class SOAPExceptionImpl extends SOAPException { + private Throwable cause; + + /** + * Constructs a SOAPExceptionImpl object with no + * reason or embedded Throwable object. + */ + public SOAPExceptionImpl() { + super(); + this.cause = null; + } + + /** + * Constructs a SOAPExceptionImpl object with the given + * String as the reason for the exception being thrown. + * + * @param reason a description of what caused the exception + */ + public SOAPExceptionImpl(String reason) { + super(reason); + this.cause = null; + } + + /** + * Constructs a SOAPExceptionImpl object with the given + * String as the reason for the exception being thrown + * and the given Throwable object as an embedded + * exception. + * + * @param reason a description of what caused the exception + * @param cause a Throwable object that is to + * be embedded in this SOAPExceptionImpl object + */ + public SOAPExceptionImpl(String reason, Throwable cause) { + super (reason); + initCause(cause); + } + + /** + * Constructs a SOAPExceptionImpl object initialized + * with the given Throwable object. + */ + public SOAPExceptionImpl(Throwable cause) { + super (cause.toString()); + initCause(cause); + } + + /** + * Returns the detail message for this SOAPExceptionImpl + * object. + *

    + * If there is an embedded Throwable object, and if the + * SOAPExceptionImpl object has no detail message of its + * own, this method will return the detail message from the embedded + * Throwable object. + * + * @return the error or warning message for this + * SOAPExceptionImpl or, if it has none, the + * message of the embedded Throwable object, + * if there is one + */ + public String getMessage() { + String message = super.getMessage (); + if (message == null && cause != null) { + return cause.getMessage(); + } else { + return message; + } + } + + /** + * Returns the Throwable object embedded in this + * SOAPExceptionImpl if there is one. Otherwise, this method + * returns null. + * + * @return the embedded Throwable object or null + * if there is none + */ + + public Throwable getCause() { + return cause; + } + + /** + * Initializes the cause field of this SOAPExceptionImpl + * object with the given Throwable object. + *

    + * This method can be called at most once. It is generally called from + * within the constructor or immediately after the constructor has + * returned a new SOAPExceptionImpl object. + * If this SOAPExceptionImpl object was created with the + * constructor {@link #SOAPExceptionImpl(Throwable)} or + * {@link #SOAPExceptionImpl(String,Throwable)}, meaning that its + * cause field already has a value, this method cannot be + * called even once. + * + * @param cause the Throwable object that caused this + * SOAPExceptionImpl object to be thrown. The value of this + * parameter is saved for later retrieval by the + * {@link #getCause()} method. A null value is + * permitted and indicates that the cause is nonexistent or + * unknown. + * @return a reference to this SOAPExceptionImpl instance + * @throws IllegalArgumentException if cause is this + * Throwable object. (A Throwable object + * cannot be its own cause.) + * @throws IllegalStateException if this SOAPExceptionImpl object + * was created with {@link #SOAPExceptionImpl(Throwable)} or + * {@link #SOAPExceptionImpl(String,Throwable)}, or this + * method has already been called on this SOAPExceptionImpl + * object + */ + public synchronized Throwable initCause(Throwable cause) + { + if(this.cause != null) { + throw new IllegalStateException("Can't override cause"); + } + if(cause == this) { + throw new IllegalArgumentException("Self-causation not permitted"); + } + this.cause = cause; + + return this; + } + + public void printStackTrace() { + super.printStackTrace(); + if (cause != null) { + System.err.println("\nCAUSE:\n"); + cause.printStackTrace(); + } + } + + public void printStackTrace(PrintStream s) { + super.printStackTrace(s); + if (cause != null) { + s.println("\nCAUSE:\n"); + cause.printStackTrace(s); + } + } + + public void printStackTrace(PrintWriter s) { + super.printStackTrace(s); + if (cause != null) { + s.println("\nCAUSE:\n"); + cause.printStackTrace(s); + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnection.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnection.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,657 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.client.p2p; + +import java.io.*; +import java.lang.reflect.Method; +import java.net.*; +import java.security.*; +import java.util.Iterator; +import java.util.StringTokenizer; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.util.*; + +/** + * This represents a "connection" to the simple HTTP-based provider. + * + * @author Anil Vijendran (akv@eng.sun.com) + * @author Rajiv Mordani (rajiv.mordani@sun.com) + * @author Manveen Kaur (manveen.kaur@sun.com) + * + */ +class HttpSOAPConnection extends SOAPConnection { + + public static final String vmVendor = SAAJUtil.getSystemProperty("java.vendor.url"); + private static final String sunVmVendor = "http://java.sun.com/"; + private static final String ibmVmVendor = "http://www.ibm.com/"; + private static final boolean isSunVM = sunVmVendor.equals(vmVendor) ? true: false; + private static final boolean isIBMVM = ibmVmVendor.equals(vmVendor) ? true : false; + private static final String JAXM_URLENDPOINT="javax.xml.messaging.URLEndpoint"; + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.HTTP_CONN_DOMAIN, + "com.sun.xml.internal.messaging.saaj.client.p2p.LocalStrings"); + + + MessageFactory messageFactory = null; + + boolean closed = false; + + public HttpSOAPConnection() throws SOAPException { + + try { + messageFactory = MessageFactory.newInstance(SOAPConstants.DYNAMIC_SOAP_PROTOCOL); + } catch (NoSuchMethodError ex) { + //fallback to default SOAP 1.1 in this case for backward compatibility + messageFactory = MessageFactory.newInstance(); + } catch (Exception ex) { + log.log(Level.SEVERE, "SAAJ0001.p2p.cannot.create.msg.factory", ex); + throw new SOAPExceptionImpl("Unable to create message factory", ex); + } + } + + public void close() throws SOAPException { + if (closed) { + log.severe("SAAJ0002.p2p.close.already.closed.conn"); + throw new SOAPExceptionImpl("Connection already closed"); + } + + messageFactory = null; + closed = true; + } + + public SOAPMessage call(SOAPMessage message, Object endPoint) + throws SOAPException { + if (closed) { + log.severe("SAAJ0003.p2p.call.already.closed.conn"); + throw new SOAPExceptionImpl("Connection is closed"); + } + + Class urlEndpointClass = null; + ClassLoader loader = Thread.currentThread().getContextClassLoader(); + try { + if (loader != null) { + urlEndpointClass = loader.loadClass(JAXM_URLENDPOINT); + } else { + urlEndpointClass = Class.forName(JAXM_URLENDPOINT); + } + } catch (ClassNotFoundException ex) { + //Do nothing. URLEndpoint is available only when JAXM is there. + if (log.isLoggable(Level.FINEST)) + log.finest("SAAJ0090.p2p.endpoint.available.only.for.JAXM"); + } + + if (urlEndpointClass != null) { + if (urlEndpointClass.isInstance(endPoint)) { + String url = null; + + try { + Method m = urlEndpointClass.getMethod("getURL", (Class[])null); + url = (String) m.invoke(endPoint, (Object[])null); + } catch (Exception ex) { + // TBD -- exception chaining + log.log(Level.SEVERE,"SAAJ0004.p2p.internal.err",ex); + throw new SOAPExceptionImpl( + "Internal error: " + ex.getMessage()); + } + try { + endPoint = new URL(url); + } catch (MalformedURLException mex) { + log.log(Level.SEVERE,"SAAJ0005.p2p.", mex); + throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); + } + } + } + + if (endPoint instanceof java.lang.String) { + try { + endPoint = new URL((String) endPoint); + } catch (MalformedURLException mex) { + log.log(Level.SEVERE, "SAAJ0006.p2p.bad.URL", mex); + throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); + } + } + + if (endPoint instanceof URL) + try { + SOAPMessage response = post(message, (URL)endPoint); + return response; + } catch (Exception ex) { + // TBD -- chaining? + throw new SOAPExceptionImpl(ex); + } else { + log.severe("SAAJ0007.p2p.bad.endPoint.type"); + throw new SOAPExceptionImpl("Bad endPoint type " + endPoint); + } + } + + SOAPMessage post(SOAPMessage message, URL endPoint) throws SOAPException, IOException { + boolean isFailure = false; + + URL url = null; + HttpURLConnection httpConnection = null; + + int responseCode = 0; + try { + if (endPoint.getProtocol().equals("https")) + //if(!setHttps) + initHttps(); + // Process the URL + URI uri = new URI(endPoint.toString()); + String userInfo = uri.getRawUserInfo(); + + url = endPoint; + + if (dL > 0) + d("uri: " + userInfo + " " + url + " " + uri); + + // TBD + // Will deal with https later. + if (!url.getProtocol().equalsIgnoreCase("http") + && !url.getProtocol().equalsIgnoreCase("https")) { + log.severe("SAAJ0052.p2p.protocol.mustbe.http.or.https"); + throw new IllegalArgumentException( + "Protocol " + + url.getProtocol() + + " not supported in URL " + + url); + } + httpConnection = (HttpURLConnection) createConnection(url); + + httpConnection.setRequestMethod("POST"); + + httpConnection.setDoOutput(true); + httpConnection.setDoInput(true); + httpConnection.setUseCaches(false); + httpConnection.setInstanceFollowRedirects(true); + + if (message.saveRequired()) + message.saveChanges(); + + MimeHeaders headers = message.getMimeHeaders(); + + Iterator it = headers.getAllHeaders(); + boolean hasAuth = false; // true if we find explicit Auth header + while (it.hasNext()) { + MimeHeader header = (MimeHeader) it.next(); + + String[] values = headers.getHeader(header.getName()); + if (values.length == 1) + httpConnection.setRequestProperty( + header.getName(), + header.getValue()); + else { + StringBuffer concat = new StringBuffer(); + int i = 0; + while (i < values.length) { + if (i != 0) + concat.append(','); + concat.append(values[i]); + i++; + } + + httpConnection.setRequestProperty( + header.getName(), + concat.toString()); + } + + if ("Authorization".equals(header.getName())) { + hasAuth = true; + if (log.isLoggable(Level.FINE)) + log.fine("SAAJ0091.p2p.https.auth.in.POST.true"); + } + } + + if (!hasAuth && userInfo != null) { + initAuthUserInfo(httpConnection, userInfo); + } + + OutputStream out = httpConnection.getOutputStream(); + try { + message.writeTo(out); + out.flush(); + } finally { + out.close(); + } + + httpConnection.connect(); + + try { + + responseCode = httpConnection.getResponseCode(); + + // let HTTP_INTERNAL_ERROR (500) through because it is used for SOAP faults + if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { + isFailure = true; + } + //else if (responseCode != HttpURLConnection.HTTP_OK) + //else if (!(responseCode >= HttpURLConnection.HTTP_OK && responseCode < 207)) + else if ((responseCode / 100) != 2) { + log.log(Level.SEVERE, + "SAAJ0008.p2p.bad.response", + new String[] {httpConnection.getResponseMessage()}); + throw new SOAPExceptionImpl( + "Bad response: (" + + responseCode + + httpConnection.getResponseMessage()); + + } + } catch (IOException e) { + // on JDK1.3.1_01, we end up here, but then getResponseCode() succeeds! + responseCode = httpConnection.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { + isFailure = true; + } else { + throw e; + } + + } + + } catch (SOAPException ex) { + throw ex; + } catch (Exception ex) { + log.severe("SAAJ0009.p2p.msg.send.failed"); + throw new SOAPExceptionImpl("Message send failed", ex); + } + + SOAPMessage response = null; + InputStream httpIn = null; + if (responseCode == HttpURLConnection.HTTP_OK || isFailure) { + try { + MimeHeaders headers = new MimeHeaders(); + + String key, value; + + // Header field 0 is the status line so we skip it. + + int i = 1; + + while (true) { + key = httpConnection.getHeaderFieldKey(i); + value = httpConnection.getHeaderField(i); + + if (key == null && value == null) + break; + + if (key != null) { + StringTokenizer values = + new StringTokenizer(value, ","); + while (values.hasMoreTokens()) + headers.addHeader(key, values.nextToken().trim()); + } + i++; + } + + httpIn = + (isFailure + ? httpConnection.getErrorStream() + : httpConnection.getInputStream()); + + byte[] bytes = readFully(httpIn); + + int length = + httpConnection.getContentLength() == -1 + ? bytes.length + : httpConnection.getContentLength(); + + // If no reply message is returned, + // content-Length header field value is expected to be zero. + if (length == 0) { + response = null; + log.warning("SAAJ0014.p2p.content.zero"); + } else { + ByteInputStream in = new ByteInputStream(bytes, length); + response = messageFactory.createMessage(headers, in); + } + + } catch (SOAPException ex) { + throw ex; + } catch (Exception ex) { + log.log(Level.SEVERE,"SAAJ0010.p2p.cannot.read.resp", ex); + throw new SOAPExceptionImpl( + "Unable to read response: " + ex.getMessage()); + } finally { + if (httpIn != null) + httpIn.close(); + httpConnection.disconnect(); + } + } + return response; + } + + // Object identifies where the request should be sent. + // It is required to support objects of type String and java.net.URL. + + public SOAPMessage get(Object endPoint) throws SOAPException { + if (closed) { + log.severe("SAAJ0011.p2p.get.already.closed.conn"); + throw new SOAPExceptionImpl("Connection is closed"); + } + Class urlEndpointClass = null; + + try { + urlEndpointClass = Class.forName("javax.xml.messaging.URLEndpoint"); + } catch (Exception ex) { + //Do nothing. URLEndpoint is available only when JAXM is there. + } + + if (urlEndpointClass != null) { + if (urlEndpointClass.isInstance(endPoint)) { + String url = null; + + try { + Method m = urlEndpointClass.getMethod("getURL", (Class[])null); + url = (String) m.invoke(endPoint, (Object[])null); + } catch (Exception ex) { + log.severe("SAAJ0004.p2p.internal.err"); + throw new SOAPExceptionImpl( + "Internal error: " + ex.getMessage()); + } + try { + endPoint = new URL(url); + } catch (MalformedURLException mex) { + log.severe("SAAJ0005.p2p."); + throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); + } + } + } + + if (endPoint instanceof java.lang.String) { + try { + endPoint = new URL((String) endPoint); + } catch (MalformedURLException mex) { + log.severe("SAAJ0006.p2p.bad.URL"); + throw new SOAPExceptionImpl("Bad URL: " + mex.getMessage()); + } + } + + if (endPoint instanceof URL) + try { + SOAPMessage response = doGet((URL)endPoint); + return response; + } catch (Exception ex) { + throw new SOAPExceptionImpl(ex); + } else + throw new SOAPExceptionImpl("Bad endPoint type " + endPoint); + } + + SOAPMessage doGet(URL endPoint) throws SOAPException, IOException { + boolean isFailure = false; + + URL url = null; + HttpURLConnection httpConnection = null; + + int responseCode = 0; + try { + /// Is https GET allowed?? + if (endPoint.getProtocol().equals("https")) + initHttps(); + // Process the URL + URI uri = new URI(endPoint.toString()); + String userInfo = uri.getRawUserInfo(); + + url = endPoint; + + if (dL > 0) + d("uri: " + userInfo + " " + url + " " + uri); + + // TBD + // Will deal with https later. + if (!url.getProtocol().equalsIgnoreCase("http") + && !url.getProtocol().equalsIgnoreCase("https")) { + log.severe("SAAJ0052.p2p.protocol.mustbe.http.or.https"); + throw new IllegalArgumentException( + "Protocol " + + url.getProtocol() + + " not supported in URL " + + url); + } + httpConnection = (HttpURLConnection) createConnection(url); + + httpConnection.setRequestMethod("GET"); + + httpConnection.setDoOutput(true); + httpConnection.setDoInput(true); + httpConnection.setUseCaches(false); + httpConnection.setFollowRedirects(true); + + httpConnection.connect(); + + try { + + responseCode = httpConnection.getResponseCode(); + + // let HTTP_INTERNAL_ERROR (500) through because it is used for SOAP faults + if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { + isFailure = true; + } else if ((responseCode / 100) != 2) { + log.log(Level.SEVERE, + "SAAJ0008.p2p.bad.response", + new String[] { httpConnection.getResponseMessage()}); + throw new SOAPExceptionImpl( + "Bad response: (" + + responseCode + + httpConnection.getResponseMessage()); + + } + } catch (IOException e) { + // on JDK1.3.1_01, we end up here, but then getResponseCode() succeeds! + responseCode = httpConnection.getResponseCode(); + if (responseCode == HttpURLConnection.HTTP_INTERNAL_ERROR) { + isFailure = true; + } else { + throw e; + } + + } + + } catch (SOAPException ex) { + throw ex; + } catch (Exception ex) { + log.severe("SAAJ0012.p2p.get.failed"); + throw new SOAPExceptionImpl("Get failed", ex); + } + + SOAPMessage response = null; + InputStream httpIn = null; + if (responseCode == HttpURLConnection.HTTP_OK || isFailure) { + try { + MimeHeaders headers = new MimeHeaders(); + + String key, value; + + // Header field 0 is the status line so we skip it. + + int i = 1; + + while (true) { + key = httpConnection.getHeaderFieldKey(i); + value = httpConnection.getHeaderField(i); + + if (key == null && value == null) + break; + + if (key != null) { + StringTokenizer values = + new StringTokenizer(value, ","); + while (values.hasMoreTokens()) + headers.addHeader(key, values.nextToken().trim()); + } + i++; + } + + httpIn = + (isFailure + ? httpConnection.getErrorStream() + : httpConnection.getInputStream()); + // If no reply message is returned, + // content-Length header field value is expected to be zero. + // java SE 6 documentation says : + // available() : an estimate of the number of bytes that can be read + //(or skipped over) from this input stream without blocking + //or 0 when it reaches the end of the input stream. + if ((httpIn == null ) + || (httpConnection.getContentLength() == 0) + || (httpIn.available() == 0)) { + response = null; + log.warning("SAAJ0014.p2p.content.zero"); + } else { + response = messageFactory.createMessage(headers, httpIn); + } + + } catch (SOAPException ex) { + throw ex; + } catch (Exception ex) { + log.log(Level.SEVERE, + "SAAJ0010.p2p.cannot.read.resp", + ex); + throw new SOAPExceptionImpl( + "Unable to read response: " + ex.getMessage()); + } finally { + if (httpIn != null) + httpIn.close(); + httpConnection.disconnect(); + } + } + return response; + } + + private byte[] readFully(InputStream istream) throws IOException { + ByteArrayOutputStream bout = new ByteArrayOutputStream(); + byte[] buf = new byte[1024]; + int num = 0; + + while ((num = istream.read(buf)) != -1) { + bout.write(buf, 0, num); + } + + byte[] ret = bout.toByteArray(); + + return ret; + } + + //private static String SSL_PKG = "com.sun.net.ssl.internal.www.protocol"; + //private static String SSL_PROVIDER = + // "com.sun.net.ssl.internal.ssl.Provider"; + private static final String SSL_PKG; + private static final String SSL_PROVIDER; + + static { + if (isIBMVM) { + SSL_PKG ="com.ibm.net.ssl.internal.www.protocol"; + SSL_PROVIDER ="com.ibm.net.ssl.internal.ssl.Provider"; + } else { + //if not IBM VM default to Sun. + SSL_PKG = "com.sun.net.ssl.internal.www.protocol"; + SSL_PROVIDER ="com.sun.net.ssl.internal.ssl.Provider"; + } + } + + private void initHttps() { + //if(!setHttps) { + String pkgs = SAAJUtil.getSystemProperty("java.protocol.handler.pkgs"); + if (log.isLoggable(Level.FINE)) + log.log(Level.FINE, "SAAJ0053.p2p.providers", new String[] { pkgs }); + + if (pkgs == null || pkgs.indexOf(SSL_PKG) < 0) { + if (pkgs == null) + pkgs = SSL_PKG; + else + pkgs = pkgs + "|" + SSL_PKG; + System.setProperty("java.protocol.handler.pkgs", pkgs); + if (log.isLoggable(Level.FINE)) + log.log(Level.FINE, "SAAJ0054.p2p.set.providers", + new String[] { pkgs }); + try { + Class c = Class.forName(SSL_PROVIDER); + Provider p = (Provider) c.newInstance(); + Security.addProvider(p); + if (log.isLoggable(Level.FINE)) + log.log(Level.FINE, "SAAJ0055.p2p.added.ssl.provider", + new String[] { SSL_PROVIDER }); + //System.out.println("Added SSL_PROVIDER " + SSL_PROVIDER); + //setHttps = true; + } catch (Exception ex) { + } + } + //} + } + + private void initAuthUserInfo(HttpURLConnection conn, String userInfo) { + String user; + String password; + if (userInfo != null) { // get the user and password + //System.out.println("UserInfo= " + userInfo ); + int delimiter = userInfo.indexOf(':'); + if (delimiter == -1) { + user = ParseUtil.decode(userInfo); + password = null; + } else { + user = ParseUtil.decode(userInfo.substring(0, delimiter++)); + password = ParseUtil.decode(userInfo.substring(delimiter)); + } + + String plain = user + ":"; + byte[] nameBytes = plain.getBytes(); + byte[] passwdBytes = (password == null ? new byte[0] : password + .getBytes()); + + // concatenate user name and password bytes and encode them + byte[] concat = new byte[nameBytes.length + passwdBytes.length]; + + System.arraycopy(nameBytes, 0, concat, 0, nameBytes.length); + System.arraycopy( + passwdBytes, + 0, + concat, + nameBytes.length, + passwdBytes.length); + String auth = "Basic " + new String(Base64.encode(concat)); + conn.setRequestProperty("Authorization", auth); + if (dL > 0) + d("Adding auth " + auth); + } + } + + private static final int dL = 0; + private void d(String s) { + log.log(Level.SEVERE, + "SAAJ0013.p2p.HttpSOAPConnection", + new String[] { s }); + System.err.println("HttpSOAPConnection: " + s); + } + + private java.net.HttpURLConnection createConnection(URL endpoint) + throws IOException { + return (HttpURLConnection) endpoint.openConnection(); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnectionFactory.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/HttpSOAPConnectionFactory.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,42 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.client.p2p; + +import javax.xml.soap.*; + +/** + * Implementation of the SOAPConnectionFactory + * + * @author Anil Vijendran (anil@sun.com) + */ +public class HttpSOAPConnectionFactory extends SOAPConnectionFactory { + + public SOAPConnection createConnection() + throws SOAPException + { + return new HttpSOAPConnection(); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,58 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages +# Error messages +SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Unable to create Message Factory +SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Connection already closed (from close method) +SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Connection already closed (from call) +SAAJ0004.p2p.internal.err=SAAJ0004: Internal error +SAAJ0005.p2p.=SAAJ0005: Bad URL (endPoint instance of javax.xml.messaging.URLEndpoint) +# 0005 : getURL failed on javax.xml.messaging.URLEndpoint +SAAJ0006.p2p.bad.URL=SAAJ0006: Bad URL (endPoint instance of String) +SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Bad endPoint type (endPoint instance of URL) +SAAJ0008.p2p.bad.response=SAAJ0008: Bad Response; {0} +SAAJ0009.p2p.msg.send.failed=SAAJ0009: Message send failed +SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Unable to read response +SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Connection already closed (from get) +SAAJ0012.p2p.get.failed=SAAJ0012: Get failed +SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} +SAAJ0014.p2p.content.zero=SAAJ0014: Invalid reply message. Content length of reply was zero. + +# Debug messages +SAAJ0050.p2p.proxy.host=SAAJ0050: Proxy host: {0} +SAAJ0051.p2p.proxy.port=SAAJ0051: Proxy Port: {0} +SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protocol not supported in URL, must be http or https +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0053.p2p.providers=SAAJ0053: Providers {0} +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0054.p2p.set.providers=SAAJ0054: Setting Providers {0} +# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" +SAAJ0055.p2p.added.ssl.provider=SAAJ0055: Added SSL_PROVIDER {0} + +# Trace messages +SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint is available only when JAXM is there +SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: HTTPS Authorization in POST set to true diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_de.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_de.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,58 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages +# Error messages +SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Nachrichten-Factory kann nicht erstellt werden +SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Verbindung ist bereits beendet (mit close-Methode) +SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Verbindung ist bereits beendet (mit call) +SAAJ0004.p2p.internal.err=SAAJ0004: Interner Fehler +SAAJ0005.p2p.=SAAJ0005: Ung\u00FCltige URL (endPoint-Instanz von javax.xml.messaging.URLEndpoint) +# 0005 : getURL failed on javax.xml.messaging.URLEndpoint +SAAJ0006.p2p.bad.URL=SAAJ0006: Ung\u00FCltige URL (endPoint-Instanz von Zeichenfolge) +SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Ung\u00FCltiger endPoint-Typ (endPoint-Instanz von URL) +SAAJ0008.p2p.bad.response=SAAJ0008: Ung\u00FCltige Antwort; {0} +SAAJ0009.p2p.msg.send.failed=SAAJ0009: Nachricht konnte nicht gesendet werden +SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Antwort konnte nicht gelesen werden +SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Verbindung ist bereits beendet (mit get) +SAAJ0012.p2p.get.failed=SAAJ0012: Get-Vorgang nicht erfolgreich +SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} +SAAJ0014.p2p.content.zero=SAAJ0014: Ung\u00FCltige Antwortnachricht. Contentl\u00E4nge von Antwort war null. + +# Debug messages +SAAJ0050.p2p.proxy.host=SAAJ0050: Proxyhost: {0} +SAAJ0051.p2p.proxy.port=SAAJ0051: Proxyport: {0} +SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protokoll in URL nicht unterst\u00FCtzt, muss http oder https sein +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0053.p2p.providers=SAAJ0053: Provider {0} +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0054.p2p.set.providers=SAAJ0054: Provider {0} werden festgelegt +# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" +SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} hinzugef\u00FCgt + +# Trace messages +SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint ist nur verf\u00FCgbar, wenn JAXM vorhanden ist +SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: HTTPS-Autorisierung in POST auf "True" festgelegt diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_es.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_es.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,58 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages +# Error messages +SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: no se ha podido crear la f\u00E1brica de mensajes +SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: la conexi\u00F3n ya est\u00E1 cerrada (desde el m\u00E9todo de cierre) +SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: la conexi\u00F3n ya est\u00E1 cerrada (desde la llamada) +SAAJ0004.p2p.internal.err=SAAJ0004: error interno +SAAJ0005.p2p.=SAAJ0005: URL err\u00F3nea (instancia endPoint de javax.xml.messaging.URLEndpoint) +# 0005 : getURL failed on javax.xml.messaging.URLEndpoint +SAAJ0006.p2p.bad.URL=SAAJ0006: URL err\u00F3nea (instancia endPoint de String) +SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: tipo endPoint err\u00F3neo (instancia endPoint de URL) +SAAJ0008.p2p.bad.response=SAAJ0008: respuesta err\u00F3nea; {0} +SAAJ0009.p2p.msg.send.failed=SAAJ0009: fallo de env\u00EDo de mensaje +SAAJ0010.p2p.cannot.read.resp=SAAJ0010: no se ha podido leer la respuesta +SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: la conexi\u00F3n ya est\u00E1 cerrada (desde la obtenci\u00F3n) +SAAJ0012.p2p.get.failed=SAAJ0012: fallo de obtenci\u00F3n +SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} +SAAJ0014.p2p.content.zero=SAAJ0014: mensaje de respuesta no v\u00E1lido. La longitud del contenido de respuesta es cero. + +# Debug messages +SAAJ0050.p2p.proxy.host=SAAJ0050: Host de proxy: {0} +SAAJ0051.p2p.proxy.port=SAAJ0051: Puerto de proxy: {0} +SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: el protocolo no est\u00E1 soportado en la URL. Debe ser http o https +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0053.p2p.providers=SAAJ0053: proveedores {0} +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0054.p2p.set.providers=SAAJ0054: definici\u00F3n de Proveedores {0} +# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" +SAAJ0055.p2p.added.ssl.provider=SAAJ0055: se ha agregado SSL_PROVIDER {0} + +# Trace messages +SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint s\u00F3lo est\u00E1 disponible cuando JAXM est\u00E1 all\u00ED +SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: la autorizaci\u00F3n de HTTPS en POST se ha definido en true diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_fr.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_fr.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,58 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages +# Error messages +SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001 : impossible de cr\u00E9er une fabrique de messages +SAAJ0002.p2p.close.already.closed.conn=SAAJ0002 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de la m\u00E9thode de fermeture) +SAAJ0003.p2p.call.already.closed.conn=SAAJ0003 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de l'appel) +SAAJ0004.p2p.internal.err=SAAJ0004 : erreur interne +SAAJ0005.p2p.=SAAJ0005 : URL incorrecte (instance d'adresse de javax.xml.messaging.URLEndpoint) +# 0005 : getURL failed on javax.xml.messaging.URLEndpoint +SAAJ0006.p2p.bad.URL=SAAJ0006 : URL incorrecte (instance d'adresse de la cha\u00EEne) +SAAJ0007.p2p.bad.endPoint.type=SAAJ0007 : type d'adresse incorrect (instance d'adresse de l'URL) +SAAJ0008.p2p.bad.response=SAAJ0008 : r\u00E9ponse incorrecte ; {0} +SAAJ0009.p2p.msg.send.failed=SAAJ0009 : \u00E9chec de l'envoi du message +SAAJ0010.p2p.cannot.read.resp=SAAJ0010 : impossible de lire la r\u00E9ponse +SAAJ0011.p2p.get.already.closed.conn=SAAJ0011 : connexion d\u00E9j\u00E0 ferm\u00E9e (\u00E0 partir de la m\u00E9thode get) +SAAJ0012.p2p.get.failed=SAAJ0012 : \u00E9chec de la m\u00E9thode get +SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013 : HttpSOAPConnection : {0} +SAAJ0014.p2p.content.zero=SAAJ0014 : message de r\u00E9ponse non valide. La longueur du contenu de la r\u00E9ponse \u00E9tait de z\u00E9ro. + +# Debug messages +SAAJ0050.p2p.proxy.host=SAAJ0050 : h\u00F4te proxy : {0} +SAAJ0051.p2p.proxy.port=SAAJ0051 : port proxy : {0} +SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052 : protocole non pris en charge dans l'URL, il doit s'agir de http ou https +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0053.p2p.providers=SAAJ0053 : fournisseurs {0} +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0054.p2p.set.providers=SAAJ0054 : d\u00E9finition des fournisseurs {0} +# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" +SAAJ0055.p2p.added.ssl.provider=SAAJ0055 : SSL_PROVIDER {0} ajout\u00E9 + +# Trace messages +SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090 : URLEndpoint est disponible uniquement lorsque JAXM est pr\u00E9sent +SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091 : autorisation HTTPS dans POST d\u00E9finie sur True diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_it.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_it.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,58 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages +# Error messages +SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: Impossibile creare il message factory +SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: Connessione gi\u00E0 chiusa (dal metodo close) +SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: Connessione gi\u00E0 chiusa (dal metodo call) +SAAJ0004.p2p.internal.err=SAAJ0004: Errore interno +SAAJ0005.p2p.=SAAJ0005: URL non valido (istanza endPoint di javax.xml.messaging.URLEndpoint) +# 0005 : getURL failed on javax.xml.messaging.URLEndpoint +SAAJ0006.p2p.bad.URL=SAAJ0006: URL non valido (istanza endPoint di String) +SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: Tipo endPoint non valido (istanza endPoint dell'URL) +SAAJ0008.p2p.bad.response=SAAJ0008: Risposta non valida; {0} +SAAJ0009.p2p.msg.send.failed=SAAJ0009: Invio del messaggio non riuscito +SAAJ0010.p2p.cannot.read.resp=SAAJ0010: Impossibile leggere la risposta +SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: Connessione gi\u00E0 chiusa (dal metodo get) +SAAJ0012.p2p.get.failed=SAAJ0012: Metodo get non riuscito +SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} +SAAJ0014.p2p.content.zero=SAAJ0014: Messaggio di risposta non valido. La lunghezza del contenuto della risposta era pari a zero. + +# Debug messages +SAAJ0050.p2p.proxy.host=SAAJ0050: Host proxy: {0} +SAAJ0051.p2p.proxy.port=SAAJ0051: Porta proxy: {0} +SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: Protocollo non supportato nell'URL, deve essere http o https +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0053.p2p.providers=SAAJ0053: Provider {0} +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0054.p2p.set.providers=SAAJ0054: Impostazione dei provider {0} +# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" +SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} aggiunto + +# Trace messages +SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: L'endpoint dell'URL \u00E8 disponibile solo quando \u00E8 presente JAXM +SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: Autorizzazione HTTPS in POST impostata su true diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ja.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ja.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,58 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages +# Error messages +SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u30E1\u30C3\u30BB\u30FC\u30B8\u30FB\u30D5\u30A1\u30AF\u30C8\u30EA\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 +SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: (close\u30E1\u30BD\u30C3\u30C9\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059 +SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: (call\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059 +SAAJ0004.p2p.internal.err=SAAJ0004: \u5185\u90E8\u30A8\u30E9\u30FC +SAAJ0005.p2p.=SAAJ0005: \u7121\u52B9\u306AURL (javax.xml.messaging.URLEndpoint\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9) +# 0005 : getURL failed on javax.xml.messaging.URLEndpoint +SAAJ0006.p2p.bad.URL=SAAJ0006: \u7121\u52B9\u306AURL (\u6587\u5B57\u5217\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9) +SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \u7121\u52B9\u306AendPoint\u30BF\u30A4\u30D7(URL\u306EendPoint\u30A4\u30F3\u30B9\u30BF\u30F3\u30B9) +SAAJ0008.p2p.bad.response=SAAJ0008: \u4E0D\u6B63\u306A\u30EC\u30B9\u30DD\u30F3\u30B9; {0} +SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u30E1\u30C3\u30BB\u30FC\u30B8\u9001\u4FE1\u306B\u5931\u6557\u3057\u307E\u3057\u305F +SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u30EC\u30B9\u30DD\u30F3\u30B9\u3092\u8AAD\u307F\u53D6\u308C\u307E\u305B\u3093 +SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: (get\u304B\u3089)\u63A5\u7D9A\u306F\u3059\u3067\u306B\u30AF\u30ED\u30FC\u30BA\u3055\u308C\u3066\u3044\u307E\u3059 +SAAJ0012.p2p.get.failed=SAAJ0012: \u53D6\u5F97\u306B\u5931\u6557\u3057\u307E\u3057\u305F +SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} +SAAJ0014.p2p.content.zero=SAAJ0014: \u5FDC\u7B54\u30E1\u30C3\u30BB\u30FC\u30B8\u304C\u7121\u52B9\u3067\u3059\u3002\u5FDC\u7B54\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u9577\u304C\u30BC\u30ED\u3067\u3057\u305F\u3002 + +# Debug messages +SAAJ0050.p2p.proxy.host=SAAJ0050: \u30D7\u30ED\u30AD\u30B7\u30FB\u30DB\u30B9\u30C8: {0} +SAAJ0051.p2p.proxy.port=SAAJ0051: \u30D7\u30ED\u30AD\u30B7\u30FB\u30DD\u30FC\u30C8: {0} +SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL\u3067\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u306A\u3044\u30D7\u30ED\u30C8\u30B3\u30EB\u3067\u3059\u3002http\u307E\u305F\u306Fhttps\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0053.p2p.providers=SAAJ0053: \u30D7\u30ED\u30D0\u30A4\u30C0{0} +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0054.p2p.set.providers=SAAJ0054: \u30D7\u30ED\u30D0\u30A4\u30C0{0}\u3092\u8A2D\u5B9A\u3057\u3066\u3044\u307E\u3059 +# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" +SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0}\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F + +# Trace messages +SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint\u3092\u4F7F\u7528\u3067\u304D\u308B\u306E\u306FJAXM\u304C\u5B58\u5728\u3059\u308B\u5834\u5408\u306E\u307F\u3067\u3059 +SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST\u306EHTTPS\u8A8D\u8A3C\u304Ctrue\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ko.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_ko.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,58 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages +# Error messages +SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \uBA54\uC2DC\uC9C0 \uD329\uD1A0\uB9AC\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: close \uBA54\uC18C\uB4DC\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \uD638\uCD9C\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0004.p2p.internal.err=SAAJ0004: \uB0B4\uBD80 \uC624\uB958 +SAAJ0005.p2p.=SAAJ0005: URL(javax.xml.messaging.URLEndpoint\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +# 0005 : getURL failed on javax.xml.messaging.URLEndpoint +SAAJ0006.p2p.bad.URL=SAAJ0006: URL(\uBB38\uC790\uC5F4\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \uB05D\uC810 \uC720\uD615(URL\uC758 \uB05D\uC810 \uC778\uC2A4\uD134\uC2A4)\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0008.p2p.bad.response=SAAJ0008: \uC798\uBABB\uB41C \uC751\uB2F5: {0} +SAAJ0009.p2p.msg.send.failed=SAAJ0009: \uBA54\uC2DC\uC9C0 \uC804\uC1A1\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \uC751\uB2F5\uC744 \uC77D\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \uAC00\uC838\uC624\uAE30\uC5D0\uC11C \uC811\uC18D\uC774 \uC774\uBBF8 \uD574\uC81C\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0012.p2p.get.failed=SAAJ0012: \uAC00\uC838\uC624\uAE30\uB97C \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} +SAAJ0014.p2p.content.zero=SAAJ0014: \uD68C\uC2E0 \uBA54\uC2DC\uC9C0\uAC00 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. \uD68C\uC2E0\uC758 \uCF58\uD150\uCE20 \uAE38\uC774\uAC00 0\uC785\uB2C8\uB2E4. + +# Debug messages +SAAJ0050.p2p.proxy.host=SAAJ0050: \uD504\uB85D\uC2DC \uD638\uC2A4\uD2B8: {0} +SAAJ0051.p2p.proxy.port=SAAJ0051: \uD504\uB85D\uC2DC \uD3EC\uD2B8: {0} +SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL\uC5D0\uC11C \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uD504\uB85C\uD1A0\uCF5C\uC785\uB2C8\uB2E4. http \uB610\uB294 https\uC5EC\uC57C \uD569\uB2C8\uB2E4. +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0053.p2p.providers=SAAJ0053: {0} \uC81C\uACF5\uC790 +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0054.p2p.set.providers=SAAJ0054: {0} \uC81C\uACF5\uC790\uB97C \uC124\uC815\uD558\uB294 \uC911 +# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" +SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0}\uC744(\uB97C) \uCD94\uAC00\uD588\uC2B5\uB2C8\uB2E4. + +# Trace messages +SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: JAXM\uC774 \uC788\uB294 \uACBD\uC6B0\uC5D0\uB9CC URLEndpoint\uB97C \uC0AC\uC6A9\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. +SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST\uC758 HTTPS \uAD8C\uD55C \uBD80\uC5EC\uAC00 true\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_pt_BR.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_pt_BR.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,58 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages +# Error messages +SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: n\u00E3o \u00E9 poss\u00EDvel criar a factory da mensagem +SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: a conex\u00E3o j\u00E1 foi fechada (do m\u00E9todo de fechamento) +SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: conex\u00E3o j\u00E1 fechada (da chamada) +SAAJ0004.p2p.internal.err=SAAJ0004: erro interno +SAAJ0005.p2p.=SAAJ0005: URL incorreto (a inst\u00E2ncia do endPoint de javax.xml.messaging.URLEndpoint) +# 0005 : getURL failed on javax.xml.messaging.URLEndpoint +SAAJ0006.p2p.bad.URL=SAAJ0006: URL incorreto (inst\u00E2ncia de endPoint da String) +SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: tipo de endPoint incorreto (inst\u00E2ncia de endPoint do URL) +SAAJ0008.p2p.bad.response=SAAJ0008: Resposta Incorreta; {0} +SAAJ0009.p2p.msg.send.failed=SAAJ0009: falha no envio da mensagem +SAAJ0010.p2p.cannot.read.resp=SAAJ0010: n\u00E3o \u00E9 poss\u00EDvel ler a resposta +SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: conex\u00E3o j\u00E1 fechada (de get) +SAAJ0012.p2p.get.failed=SAAJ0012: falha de get +SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} +SAAJ0014.p2p.content.zero=SAAJ0014: mensagem de resposta inv\u00E1lida. O tamanho do conte\u00FAdo da resposta era zero. + +# Debug messages +SAAJ0050.p2p.proxy.host=SAAJ0050: host proxy: {0} +SAAJ0051.p2p.proxy.port=SAAJ0051: porta proxy: {0} +SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: protocolo n\u00E3o suportado no URL, deve ser http ou https +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0053.p2p.providers=SAAJ0053: provedores {0} +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0054.p2p.set.providers=SAAJ0054: definindo provedores {0} +# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" +SAAJ0055.p2p.added.ssl.provider=SAAJ0055: SSL_PROVIDER {0} adicionado + +# Trace messages +SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: URLEndpoint est\u00E1 dispon\u00EDvel s\u00F3 quando JAXM est\u00E1 presente +SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: autoriza\u00E7\u00E3o de HTTPS no POST definida como verdadeira diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_CN.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_CN.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,58 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages +# Error messages +SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F\u5DE5\u5382 +SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE close \u65B9\u6CD5) +SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE\u8C03\u7528) +SAAJ0004.p2p.internal.err=SAAJ0004: \u5185\u90E8\u9519\u8BEF +SAAJ0005.p2p.=SAAJ0005: URL \u9519\u8BEF (javax.xml.messaging.URLEndpoint \u7684 endPoint \u5B9E\u4F8B) +# 0005 : getURL failed on javax.xml.messaging.URLEndpoint +SAAJ0006.p2p.bad.URL=SAAJ0006: URL \u9519\u8BEF (\u5B57\u7B26\u4E32\u7684 endPoint \u5B9E\u4F8B) +SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: endPoint \u7C7B\u578B\u9519\u8BEF (URL \u7684 endPoint \u5B9E\u4F8B) +SAAJ0008.p2p.bad.response=SAAJ0008: \u54CD\u5E94\u9519\u8BEF; {0} +SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u672A\u80FD\u53D1\u9001\u6D88\u606F +SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u65E0\u6CD5\u8BFB\u53D6\u54CD\u5E94 +SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \u8FDE\u63A5\u5DF2\u5173\u95ED (\u4ECE get \u65B9\u6CD5) +SAAJ0012.p2p.get.failed=SAAJ0012: Get \u5931\u8D25 +SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} +SAAJ0014.p2p.content.zero=SAAJ0014: \u56DE\u590D\u6D88\u606F\u65E0\u6548\u3002\u56DE\u590D\u7684\u5185\u5BB9\u957F\u5EA6\u4E3A\u96F6\u3002 + +# Debug messages +SAAJ0050.p2p.proxy.host=SAAJ0050: \u4EE3\u7406\u4E3B\u673A: {0} +SAAJ0051.p2p.proxy.port=SAAJ0051: \u4EE3\u7406\u7AEF\u53E3: {0} +SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: URL \u4E2D\u4E0D\u652F\u6301\u534F\u8BAE, \u5FC5\u987B\u662F http \u6216 https +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0053.p2p.providers=SAAJ0053: \u63D0\u4F9B\u65B9{0} +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0054.p2p.set.providers=SAAJ0054: \u8BBE\u7F6E\u63D0\u4F9B\u65B9{0} +# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" +SAAJ0055.p2p.added.ssl.provider=SAAJ0055: \u5DF2\u6DFB\u52A0 SSL_PROVIDER {0} + +# Trace messages +SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: \u53EA\u6709\u5728\u4F7F\u7528 JAXM \u65F6, URLEndpoint \u624D\u53EF\u7528 +SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST \u4E2D\u7684 HTTPS \u6388\u6743\u8BBE\u7F6E\u4E3A\u201C\u771F\u201D diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_TW.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/client/p2p/LocalStrings_zh_TW.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,58 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages +# Error messages +SAAJ0001.p2p.cannot.create.msg.factory=SAAJ0001: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F\u8655\u7406\u7AD9 +SAAJ0002.p2p.close.already.closed.conn=SAAJ0002: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u95DC\u9589\u65B9\u6CD5) +SAAJ0003.p2p.call.already.closed.conn=SAAJ0003: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u547C\u53EB) +SAAJ0004.p2p.internal.err=SAAJ0004: \u5167\u90E8\u932F\u8AA4 +SAAJ0005.p2p.=SAAJ0005: \u932F\u8AA4\u7684 URL (javax.xml.messaging.URLEndpoint \u7684 endPoint \u57F7\u884C\u8655\u7406) +# 0005 : getURL failed on javax.xml.messaging.URLEndpoint +SAAJ0006.p2p.bad.URL=SAAJ0006: \u932F\u8AA4\u7684 URL (\u5B57\u4E32\u7684 endPoint \u57F7\u884C\u8655\u7406) +SAAJ0007.p2p.bad.endPoint.type=SAAJ0007: \u932F\u8AA4\u7684 endPoint \u985E\u578B (URL \u7684 endPoint \u57F7\u884C\u8655\u7406) +SAAJ0008.p2p.bad.response=SAAJ0008: \u932F\u8AA4\u7684\u56DE\u61C9; {0} +SAAJ0009.p2p.msg.send.failed=SAAJ0009: \u8A0A\u606F\u50B3\u9001\u5931\u6557 +SAAJ0010.p2p.cannot.read.resp=SAAJ0010: \u7121\u6CD5\u8B80\u53D6\u56DE\u61C9 +SAAJ0011.p2p.get.already.closed.conn=SAAJ0011: \u9023\u7DDA\u5DF2\u7D93\u95DC\u9589 (\u5F9E\u53D6\u5F97) +SAAJ0012.p2p.get.failed=SAAJ0012: \u53D6\u5F97\u5931\u6557 +SAAJ0013.p2p.HttpSOAPConnection=SAAJ0013: HttpSOAPConnection: {0} +SAAJ0014.p2p.content.zero=SAAJ0014: \u7121\u6548\u7684\u56DE\u8986\u8A0A\u606F. \u56DE\u8986\u7684\u5167\u5BB9\u9577\u5EA6\u70BA\u96F6. + +# Debug messages +SAAJ0050.p2p.proxy.host=SAAJ0050: \u4EE3\u7406\u4E3B\u6A5F: {0} +SAAJ0051.p2p.proxy.port=SAAJ0051: \u4EE3\u7406\u4E3B\u6A5F\u9023\u63A5\u57E0: {0} +SAAJ0052.p2p.protocol.mustbe.http.or.https=SAAJ0052: \u4E0D\u652F\u63F4 URL \u4E2D\u7684\u5354\u5B9A, \u5FC5\u9808\u662F http \u6216 https +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0053.p2p.providers=SAAJ0053: \u63D0\u4F9B\u8005 {0} +# {0} - list of package name prefixes (e.g. "foo.bar,bar.foo") +SAAJ0054.p2p.set.providers=SAAJ0054: \u8A2D\u5B9A\u63D0\u4F9B\u8005 {0} +# {0} - "com.sun.net.ssl.internal.ssl.Provider"/"com.ibm.net.ssl.internal.ssl.Provider" +SAAJ0055.p2p.added.ssl.provider=SAAJ0055: \u5DF2\u65B0\u589E SSL_PROVIDER {0} + +# Trace messages +SAAJ0090.p2p.endpoint.available.only.for.JAXM=SAAJ0090: \u53EA\u6709\u5728\u6709 JAXM \u6642\u624D\u80FD\u4F7F\u7528 URLEndpoint +SAAJ0091.p2p.https.auth.in.POST.true=SAAJ0091: POST \u4E2D\u7684 HTTPS \u6388\u6B0A\u8A2D\u70BA true diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/Header.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/Header.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)Header.java 1.3 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime; + + +/** + * The Header class stores a name/value pair to represent headers. + * + * @author John Mani + */ + +public interface Header { + + /** + * Returns the name of this header. + * + * @return name of the header + */ + String getName(); + + /** + * Returns the value of this header. + * + * @return value of the header + */ + String getValue(); +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MessagingException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MessagingException.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,147 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)MessagingException.java 1.10 02/06/13 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime; + + +/** + * The base class for all exceptions thrown by the Messaging classes + * + * @author John Mani + * @author Bill Shannon + */ + +public class MessagingException extends Exception { + + /** + * The next exception in the chain. + * + * @serial + */ + private Exception next; + + /** + * Constructs a MessagingException with no detail message. + */ + public MessagingException() { + super(); + } + + /** + * Constructs a MessagingException with the specified detail message. + * @param s the detail message + */ + public MessagingException(String s) { + super(s); + } + + /** + * Constructs a MessagingException with the specified + * Exception and detail message. The specified exception is chained + * to this exception. + * @param s the detail message + * @param e the embedded exception + * @see #getNextException + * @see #setNextException + */ + public MessagingException(String s, Exception e) { + super(s); + next = e; + } + + /** + * Get the next exception chained to this one. If the + * next exception is a MessagingException, the chain + * may extend further. + * + * @return next Exception, null if none. + */ + public synchronized Exception getNextException() { + return next; + } + + /** + * Add an exception to the end of the chain. If the end + * is not a MessagingException, this + * exception cannot be added to the end. + * + * @param ex the new end of the Exception chain + * @return true if the this Exception + * was added, false otherwise. + */ + public synchronized boolean setNextException(Exception ex) { + Exception theEnd = this; + while (theEnd instanceof MessagingException && + ((MessagingException)theEnd).next != null) { + theEnd = ((MessagingException)theEnd).next; + } + // If the end is a MessagingException, we can add this + // exception to the chain. + if (theEnd instanceof MessagingException) { + ((MessagingException)theEnd).next = ex; + return true; + } else + return false; + } + + /** + * Produce the message, include the message from the nested + * exception if there is one. + */ + public String getMessage() { + if (next == null) + return super.getMessage(); + Exception n = next; + String s = super.getMessage(); + StringBuffer sb = new StringBuffer(s == null ? "" : s); + while (n != null) { + sb.append(";\n nested exception is:\n\t"); + if (n instanceof MessagingException) { + MessagingException mex = (MessagingException)n; + sb.append(n.getClass().toString()); + String msg = mex.getSuperMessage(); + if (msg != null) { + sb.append(": "); + sb.append(msg); + } + n = mex.next; + } else { + sb.append(n.toString()); + n = null; + } + } + return sb.toString(); + } + + private String getSuperMessage() { + return super.getMessage(); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MultipartDataSource.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/MultipartDataSource.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)MultipartDataSource.java 1.6 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart; + +import javax.activation.DataSource; + +/** + * MultipartDataSource is a DataSource that contains body + * parts. This allows "mail aware" DataContentHandlers to + * be implemented more efficiently by being aware of such + * DataSources and using the appropriate methods to access + * BodyParts.

    + * + * Note that the data of a MultipartDataSource is also available as + * an input stream.

    + * + * This interface will typically be implemented by providers that + * preparse multipart bodies, for example an IMAP provider. + * + * @version 1.6, 02/03/27 + * @author John Mani + * @see javax.activation.DataSource + */ + +public interface MultipartDataSource extends DataSource { + + /** + * Return the number of enclosed MimeBodyPart objects. + * + * @return number of parts + */ + public int getCount(); + + /** + * Get the specified MimeBodyPart. Parts are numbered starting at 0. + * + * @param index the index of the desired MimeBodyPart + * @return the MimeBodyPart + * @exception IndexOutOfBoundsException if the given index + * is out of range. + * @exception MessagingException + */ + public MimeBodyPart getBodyPart(int index) throws MessagingException; + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/BMMimeMultipart.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/BMMimeMultipart.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,765 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)MimeMultipart.java 1.31 03/01/29 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + +import java.io.*; +import java.util.BitSet; + +import javax.activation.DataSource; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.*; +import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*; + +import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; + +/** + * The MimeMultipart class is an implementation of the abstract Multipart + * class that uses MIME conventions for the multipart data.

    + * + * A MimeMultipart is obtained from a MimePart whose primary type + * is "multipart" (by invoking the part's getContent() method) + * or it can be created by a client as part of creating a new MimeMessage.

    + * + * The default multipart subtype is "mixed". The other multipart + * subtypes, such as "alternative", "related", and so on, can be + * implemented as subclasses of MimeMultipart with additional methods + * to implement the additional semantics of that type of multipart + * content. The intent is that service providers, mail JavaBean writers + * and mail clients will write many such subclasses and their Command + * Beans, and will install them into the JavaBeans Activation + * Framework, so that any JavaMail implementation and its clients can + * transparently find and use these classes. Thus, a MIME multipart + * handler is treated just like any other type handler, thereby + * decoupling the process of providing multipart handlers from the + * JavaMail API. Lacking these additional MimeMultipart subclasses, + * all subtypes of MIME multipart data appear as MimeMultipart objects.

    + * + * An application can directly construct a MIME multipart object of any + * subtype by using the MimeMultipart(String subtype) + * constructor. For example, to create a "multipart/alternative" object, + * use new MimeMultipart("alternative"). + * + */ + +//TODO: cleanup the SharedInputStream handling +public class BMMimeMultipart extends MimeMultipart { + + /* + * When true it indicates parsing hasnt been done at all + */ + private boolean begining = true; + + int[] bcs = new int[256]; + int[] gss = null; + private static final int BUFFER_SIZE = 4096; + private byte[] buffer = new byte[BUFFER_SIZE]; + private byte[] prevBuffer = new byte[BUFFER_SIZE]; + private BitSet lastPartFound = new BitSet(1); + + // cached inputstream which is possibly partially consumed + private InputStream in = null; + private String boundary = null; + // current stream position, set to -1 on EOF + int b = 0; + + // property to indicate if lazyAttachments is ON + private boolean lazyAttachments = false; + + /** + * Default constructor. An empty MimeMultipart object + * is created. Its content type is set to "multipart/mixed". + * A unique boundary string is generated and this string is + * setup as the "boundary" parameter for the + * contentType field.

    + * + * MimeBodyParts may be added later. + */ + public BMMimeMultipart() { + super(); + //this("mixed"); + } + + /** + * Construct a MimeMultipart object of the given subtype. + * A unique boundary string is generated and this string is + * setup as the "boundary" parameter for the + * contentType field.

    + * + * MimeBodyParts may be added later. + */ + public BMMimeMultipart(String subtype) { + super(subtype); + /* + * Compute a boundary string. + String boundary = UniqueValue.getUniqueBoundaryValue(); + ContentType cType = new ContentType("multipart", subtype, null); + contentType.setParameter("boundary", boundary); + */ + } + + /** + * Constructs a MimeMultipart object and its bodyparts from the + * given DataSource.

    + * + * This constructor handles as a special case the situation where the + * given DataSource is a MultipartDataSource object. In this case, this + * method just invokes the superclass (i.e., Multipart) constructor + * that takes a MultipartDataSource object.

    + * + * Otherwise, the DataSource is assumed to provide a MIME multipart + * byte stream. The parsed flag is set to false. When + * the data for the body parts are needed, the parser extracts the + * "boundary" parameter from the content type of this DataSource, + * skips the 'preamble' and reads bytes till the terminating + * boundary and creates MimeBodyParts for each part of the stream. + * + * @param ds DataSource, can be a MultipartDataSource + */ + public BMMimeMultipart(DataSource ds, ContentType ct) + throws MessagingException { + super(ds,ct); + boundary = ct.getParameter("boundary"); + /* + if (ds instanceof MultipartDataSource) { + // ask super to do this for us. + setMultipartDataSource((MultipartDataSource)ds); + return; + } + + // 'ds' was not a MultipartDataSource, we have + // to parse this ourself. + parsed = false; + this.ds = ds; + if (ct==null) + contentType = new ContentType(ds.getContentType()); + else + contentType = ct; + */ + + } + + public InputStream initStream() throws MessagingException { + + if (in == null) { + try { + in = ds.getInputStream(); + if (!(in instanceof ByteArrayInputStream) && + !(in instanceof BufferedInputStream) && + !(in instanceof SharedInputStream)) + in = new BufferedInputStream(in); + } catch (Exception ex) { + throw new MessagingException("No inputstream from datasource"); + } + + if (!in.markSupported()) { + throw new MessagingException( + "InputStream does not support Marking"); + } + } + return in; + } + + /** + * Parse the InputStream from our DataSource, constructing the + * appropriate MimeBodyParts. The parsed flag is + * set to true, and if true on entry nothing is done. This + * method is called by all other methods that need data for + * the body parts, to make sure the data has been parsed. + * + * @since JavaMail 1.2 + */ + protected void parse() throws MessagingException { + if (parsed) + return; + + initStream(); + + SharedInputStream sin = null; + if (in instanceof SharedInputStream) { + sin = (SharedInputStream)in; + } + + String bnd = "--" + boundary; + byte[] bndbytes = ASCIIUtility.getBytes(bnd); + try { + parse(in, bndbytes, sin); + } catch (IOException ioex) { + throw new MessagingException("IO Error", ioex); + } catch (Exception ex) { + throw new MessagingException("Error", ex); + } + + parsed = true; + } + + public boolean lastBodyPartFound() { + return lastPartFound.get(0); + } + + public MimeBodyPart getNextPart( + InputStream stream, byte[] pattern, SharedInputStream sin) + throws Exception { + + if (!stream.markSupported()) { + throw new Exception("InputStream does not support Marking"); + } + + if (begining) { + compile(pattern); + if (!skipPreamble(stream, pattern, sin)) { + throw new Exception( + "Missing Start Boundary, or boundary does not start on a new line"); + } + begining = false; + } + + if (lastBodyPartFound()) { + throw new Exception("No parts found in Multipart InputStream"); + } + + if (sin != null) { + long start = sin.getPosition(); + b = readHeaders(stream); + if (b == -1) { + throw new Exception( + "End of Stream encountered while reading part headers"); + } + long[] v = new long[1]; + v[0] = -1; // just to ensure the code later sets it correctly + b = readBody(stream, pattern, v, null, sin); + // looks like this check has to be disabled + // it is allowed to have Mime Package without closing boundary + if (!ignoreMissingEndBoundary) { + if ((b == -1) && !lastBodyPartFound()) { + throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers"); + } + } + long end = v[0]; + MimeBodyPart mbp = createMimeBodyPart(sin.newStream(start, end)); + addBodyPart(mbp); + return mbp; + + } else { + InternetHeaders headers = createInternetHeaders(stream); + ByteOutputStream baos = new ByteOutputStream(); + b = readBody(stream, pattern, null,baos, null); + // looks like this check has to be disabled + // in the old impl it is allowed to have Mime Package + // without closing boundary + if (!ignoreMissingEndBoundary) { + if ((b == -1) && !lastBodyPartFound()) { + throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers"); + } + } + MimeBodyPart mbp = createMimeBodyPart( + headers, baos.getBytes(), baos.getCount()); + addBodyPart(mbp); + return mbp; + } + + } + + public boolean parse( + InputStream stream, byte[] pattern, SharedInputStream sin) + throws Exception { + + while (!lastPartFound.get(0) && (b != -1)) { + getNextPart(stream, pattern, sin); + } + return true; + } + + private int readHeaders(InputStream is) throws Exception { + // if the headers are to end properly then there has to be CRLF + // actually we just need to mark the start and end positions + int b = is.read(); + while(b != -1) { + // when it is a shared input stream no need to copy + if (b == '\r') { + b = is.read(); + if (b == '\n') { + b = is.read(); + if (b == '\r') { + b = is.read(); + if (b == '\n') { + return b; + } else { + continue; + } + } else { + continue; + } + } else { + continue; + } + } + b = is.read(); + } + if (b == -1) { + throw new Exception( + "End of inputstream while reading Mime-Part Headers"); + } + return b; + } + + private int readBody( + InputStream is, byte[] pattern, long[] posVector, + ByteOutputStream baos, SharedInputStream sin) + throws Exception { + if (!find(is, pattern, posVector, baos, sin)) { + throw new Exception( + "Missing boundary delimitier while reading Body Part"); + } + return b; + } + + private boolean skipPreamble( + InputStream is, byte[] pattern, SharedInputStream sin) + throws Exception { + if (!find(is, pattern, sin)) { + return false; + } + if (lastPartFound.get(0)) { + throw new Exception( + "Found closing boundary delimiter while trying to skip preamble"); + } + return true; + } + + + public int readNext(InputStream is, byte[] buff, int patternLength, + BitSet eof, long[] posVector, SharedInputStream sin) + throws Exception { + + int bufferLength = is.read(buffer, 0, patternLength); + if (bufferLength == -1) { + eof.flip(0); + } else if (bufferLength < patternLength) { + //repeatedly read patternLength - bufferLength + int temp = 0; + long pos = 0; + int i = bufferLength; + for (; i < patternLength; i++) { + if (sin != null) { + pos = sin.getPosition(); + } + temp = is.read(); + if (temp == -1) { + eof.flip(0); + if (sin != null) { + posVector[0] = pos; + } + break; + } + buffer[i] = (byte)temp; + } + bufferLength=i; + } + return bufferLength; + } + + public boolean find(InputStream is, byte[] pattern, SharedInputStream sin) + throws Exception { + int i; + int l = pattern.length; + int lx = l -1; + BitSet eof = new BitSet(1); + long[] posVector = new long[1]; + + while (true) { + is.mark(l); + readNext(is, buffer, l, eof, posVector, sin); + if (eof.get(0)) { + // End of stream + return false; + } + + /* + if (bufferLength < l) { + //is.reset(); + return false; + }*/ + + for(i = lx; i >= 0; i--) { + if (buffer[i] != pattern[i]) { + break; + } + } + + if (i < 0) { + // found the boundary, skip *LWSP-char and CRLF + if (!skipLWSPAndCRLF(is)) { + throw new Exception("Boundary does not terminate with CRLF"); + } + return true; + } + + int s = Math.max(i + 1 - bcs[buffer[i] & 0x7f], gss[i]); + is.reset(); + is.skip(s); + } + } + + public boolean find( + InputStream is, byte[] pattern, long[] posVector, + ByteOutputStream out, SharedInputStream sin) throws Exception { + int i; + int l = pattern.length; + int lx = l -1; + int bufferLength = 0; + int s = 0; + long endPos = -1; + byte[] tmp = null; + + boolean first = true; + BitSet eof = new BitSet(1); + + while (true) { + is.mark(l); + if (!first) { + tmp = prevBuffer; + prevBuffer = buffer; + buffer = tmp; + } + if (sin != null) { + endPos = sin.getPosition(); + } + + bufferLength = readNext(is, buffer, l, eof, posVector, sin); + + if (bufferLength == -1) { + // End of stream + // looks like it is allowed to not have a closing boundary + //return false; + //if (sin != null) { + // posVector[0] = endPos; + //} + b = -1; + if ((s == l) && (sin == null)) { + out.write(prevBuffer, 0, s); + } + return true; + } + + if (bufferLength < l) { + if (sin != null) { + //endPos = sin.getPosition(); + //posVector[0] = endPos; + } else { + // looks like it is allowed to not have a closing boundary + // in the old implementation + out.write(buffer, 0, bufferLength); + } + // looks like it is allowed to not have a closing boundary + // in the old implementation + //return false; + b = -1; + return true; + } + + for(i = lx; i >= 0; i--) { + if (buffer[i] != pattern[i]) { + break; + } + } + + if (i < 0) { + if (s > 0) { + //looks like the earlier impl allowed just an LF + // so if s == 1 : it must be an LF + // if s == 2 : it must be a CR LF + if (s <= 2) { + //it could be "some-char\n" so write some-char + if (s == 2) { + if (prevBuffer[1] == '\n') { + if (prevBuffer[0] != '\r' && prevBuffer[0] != '\n') { + out.write(prevBuffer,0,1); + } + if (sin != null) { + posVector[0] = endPos; + } + + } else { + throw new Exception( + "Boundary characters encountered in part Body " + + "without a preceeding CRLF"); + } + + } else if (s==1) { + if (prevBuffer[0] != '\n') { + throw new Exception( + "Boundary characters encountered in part Body " + + "without a preceeding CRLF"); + }else { + if (sin != null) { + posVector[0] = endPos; + } + } + } + + } else if (s > 2) { + if ((prevBuffer[s-2] == '\r') && (prevBuffer[s-1] == '\n')) { + if (sin != null) { + posVector[0] = endPos - 2; + } else { + out.write(prevBuffer, 0, s - 2); + } + } else if (prevBuffer[s-1] == '\n') { + //old impl allowed just a \n + if (sin != null) { + posVector[0] = endPos - 1; + } else { + out.write(prevBuffer, 0, s - 1); + } + } else { + throw new Exception( + "Boundary characters encountered in part Body " + + "without a preceeding CRLF"); + } + } + } + // found the boundary, skip *LWSP-char and CRLF + if (!skipLWSPAndCRLF(is)) { + //throw new Exception( + // "Boundary does not terminate with CRLF"); + } + return true; + } + + if ((s > 0) && (sin == null)) { + if (prevBuffer[s-1] == (byte)13) { + // if buffer[0] == (byte)10 + if (buffer[0] == (byte)10) { + int j; + for(j = lx-1; j > 0; j--) { + if (buffer[j+1] != pattern[j]) { + break; + } + } + if (j == 0) { + // matched the pattern excluding the last char of the pattern + // so dont write the CR into stream + out.write(prevBuffer,0,s-1); + } else { + out.write(prevBuffer,0,s); + } + } else { + out.write(prevBuffer, 0, s); + } + } else { + out.write(prevBuffer, 0, s); + } + } + + s = Math.max(i + 1 - bcs[buffer[i] & 0x7f], gss[i]); + is.reset(); + is.skip(s); + if (first) { + first = false; + } + } + } + + private boolean skipLWSPAndCRLF(InputStream is) throws Exception { + + b = is.read(); + //looks like old impl allowed just a \n as well + if (b == '\n') { + return true; + } + + if (b == '\r') { + b = is.read(); + //skip any multiple '\r' "\r\n" --> "\r\r\n" on Win2k + if (b == '\r') { + b = is.read(); + } + if (b == '\n') { + return true; + } else { + throw new Exception( + "transport padding after a Mime Boundary should end in a CRLF, found CR only"); + } + } + + if (b == '-') { + b = is.read(); + if (b != '-') { + throw new Exception( + "Unexpected singular '-' character after Mime Boundary"); + } else { + //System.out.println("Last Part Found"); + lastPartFound.flip(0); + // read the next char + b = is.read(); + } + } + + while ((b != -1) && ((b == ' ') || (b == '\t'))) { + b = is.read(); + if (b == '\n') { + return true; + } + if (b == '\r') { + b = is.read(); + //skip any multiple '\r': "\r\n" --> "\r\r\n" on Win2k + if (b == '\r') { + b = is.read(); + } + if (b == '\n') { + return true; + } + } + } + + if (b == -1) { + // the last boundary need not have CRLF + if (!lastPartFound.get(0)) { + throw new Exception( + "End of Multipart Stream before encountering closing boundary delimiter"); + } + return true; + } + return false; + } + + private void compile(byte[] pattern) { + int l = pattern.length; + + int i; + int j; + + // Copied from J2SE 1.4 regex code + // java.util.regex.Pattern.java + + // Initialise Bad Character Shift table + for (i = 0; i < l; i++) { + bcs[pattern[i]] = i + 1; + } + + // Initialise Good Suffix Shift table + gss = new int[l]; + NEXT: for (i = l; i > 0; i--) { + // j is the beginning index of suffix being considered + for (j = l - 1; j >= i; j--) { + // Testing for good suffix + if (pattern[j] == pattern[j - i]) { + // pattern[j..len] is a good suffix + gss[j - 1] = i; + } else { + // No match. The array has already been + // filled up with correct values before. + continue NEXT; + } + } + while (j > 0) { + gss[--j] = i; + } + } + gss[l - 1] = 1; + } + + + /** + * Iterates through all the parts and outputs each Mime part + * separated by a boundary. + */ + + public void writeTo(OutputStream os) + throws IOException, MessagingException { + + // inputStream was not null + if (in != null) { + contentType.setParameter("boundary", this.boundary); + } + + String bnd = "--" + contentType.getParameter("boundary"); + for (int i = 0; i < parts.size(); i++) { + OutputUtil.writeln(bnd, os); // put out boundary + ((MimeBodyPart)parts.get(i)).writeTo(os); + OutputUtil.writeln(os); // put out empty line + } + + if (in != null) { + OutputUtil.writeln(bnd, os); // put out boundary + if ((os instanceof ByteOutputStream) && lazyAttachments) { + ((ByteOutputStream) os).write(in); + } else { + ByteOutputStream baos = null; + try { + baos = new ByteOutputStream(in.available()); + baos.write(in); + baos.writeTo(os); + // reset the inputstream so that we can support a + // getAttachment later + in = baos.newInputStream(); + } finally { + if (baos != null) + baos.close(); + } + } + + // this will endup writing the end boundary + } else { + // put out last boundary + OutputUtil.writeAsAscii(bnd, os); + OutputUtil.writeAsAscii("--", os); + } + } + + public void setInputStream(InputStream is) { + this.in = is; + } + + public InputStream getInputStream() { + return this.in; + } + + public void setBoundary(String bnd) { + this.boundary = bnd; + if (this.contentType != null) { + this.contentType.setParameter("boundary", bnd); + } + } + public String getBoundary() { + return this.boundary; + } + + public boolean isEndOfStream() { + return (b == -1); + } + + public void setLazyAttachments(boolean flag) { + lazyAttachments = flag; + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentDisposition.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentDisposition.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,180 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)ContentDisposition.java 1.6 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + + +/** + * This class represents a MIME ContentDisposition value. It provides + * methods to parse a ContentDisposition string into individual components + * and to generate a MIME style ContentDisposition string. + * + * @version 1.6, 02/03/27 + * @author John Mani + */ + +public class ContentDisposition { + + private String disposition; // disposition + private ParameterList list; // parameter list + + /** + * No-arg Constructor. + */ + public ContentDisposition() { } + + /** + * Constructor. + * + * @param disposition disposition + * @param list ParameterList + * @since JavaMail 1.2 + */ + public ContentDisposition(String disposition, ParameterList list) { + this.disposition = disposition; + this.list = list; + } + + /** + * Constructor that takes a ContentDisposition string. The String + * is parsed into its constituents: dispostion and parameters. + * A ParseException is thrown if the parse fails. + * + * @param s the ContentDisposition string. + * @exception ParseException if the parse fails. + * @since JavaMail 1.2 + */ + public ContentDisposition(String s) throws ParseException { + HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME); + HeaderTokenizer.Token tk; + + // First "disposition" .. + tk = h.next(); + if (tk.getType() != HeaderTokenizer.Token.ATOM) + throw new ParseException(); + disposition = tk.getValue(); + + // Then parameters .. + String rem = h.getRemainder(); + if (rem != null) + list = new ParameterList(rem); + } + + /** + * Return the disposition value. + * @return the disposition + * @since JavaMail 1.2 + */ + public String getDisposition() { + return disposition; + } + + /** + * Return the specified parameter value. Returns null + * if this parameter is absent. + * @return parameter value + * @since JavaMail 1.2 + */ + public String getParameter(String name) { + if (list == null) + return null; + + return list.get(name); + } + + /** + * Return a ParameterList object that holds all the available + * parameters. Returns null if no parameters are available. + * + * @return ParameterList + * @since JavaMail 1.2 + */ + public ParameterList getParameterList() { + return list; + } + + /** + * Set the primary type. Overrides existing primary type. + * @param primaryType primary type + * @since JavaMail 1.2 + */ + public void setDisposition(String disposition) { + this.disposition = disposition; + } + + /** + * Set the specified parameter. If this parameter already exists, + * it is replaced by this new value. + * + * @param name parameter name + * @param value parameter value + * @since JavaMail 1.2 + */ + public void setParameter(String name, String value) { + if (list == null) + list = new ParameterList(); + + list.set(name, value); + } + + /** + * Set a new ParameterList. + * @param list ParameterList + * @since JavaMail 1.2 + */ + public void setParameterList(ParameterList list) { + this.list = list; + } + + /** + * Retrieve a RFC2045 style string representation of + * this ContentDisposition. Returns null if + * the conversion failed. + * + * @return RFC2045 style string + * @since JavaMail 1.2 + */ + public String toString() { + if (disposition == null) + return null; + + if (list == null) + return disposition; + + StringBuffer sb = new StringBuffer(disposition); + + // append the parameter list + // use the length of the string buffer + the length of + // the header name formatted as follows "Content-Disposition: " + sb.append(list.toString(sb.length() + 21)); + return sb.toString(); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentType.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ContentType.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,277 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)ContentType.java 1.7 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + + +/** + * This class represents a MIME ContentType value. It provides + * methods to parse a ContentType string into individual components + * and to generate a MIME style ContentType string. + * + * @version 1.7, 02/03/27 + * @author John Mani + */ +public final class ContentType { + + private String primaryType; // primary type + private String subType; // subtype + private ParameterList list; // parameter list + + /** + * No-arg Constructor. + */ + public ContentType() { } + + /** + * Constructor. + * + * @param primaryType primary type + * @param subType subType + * @param list ParameterList + */ + public ContentType(String primaryType, String subType, + ParameterList list) { + this.primaryType = primaryType; + this.subType = subType; + if (list == null) + list = new ParameterList(); + this.list = list; + } + + /** + * Constructor that takes a Content-Type string. The String + * is parsed into its constituents: primaryType, subType + * and parameters. A ParseException is thrown if the parse fails. + * + * @param s the Content-Type string. + * @exception ParseException if the parse fails. + */ + public ContentType(String s) throws ParseException { + HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME); + HeaderTokenizer.Token tk; + + // First "type" .. + tk = h.next(); + if (tk.getType() != HeaderTokenizer.Token.ATOM) + throw new ParseException(); + primaryType = tk.getValue(); + + // The '/' separator .. + tk = h.next(); + if ((char)tk.getType() != '/') + throw new ParseException(); + + // Then "subType" .. + tk = h.next(); + if (tk.getType() != HeaderTokenizer.Token.ATOM) + throw new ParseException(); + subType = tk.getValue(); + + // Finally parameters .. + String rem = h.getRemainder(); + if (rem != null) + list = new ParameterList(rem); + } + + public ContentType copy() { + return new ContentType(primaryType,subType,list.copy()); + } + + /** + * Return the primary type. + * @return the primary type + */ + public String getPrimaryType() { + return primaryType; + } + + /** + * Return the subType. + * @return the subType + */ + public String getSubType() { + return subType; + } + + /** + * Return the MIME type string, without the parameters. + * The returned value is basically the concatenation of + * the primaryType, the '/' character and the secondaryType. + * + * @return the type + */ + public String getBaseType() { + return primaryType + '/' + subType; + } + + /** + * Return the specified parameter value. Returns null + * if this parameter is absent. + * @return parameter value + */ + public String getParameter(String name) { + if (list == null) + return null; + + return list.get(name); + } + + /** + * Return a ParameterList object that holds all the available + * parameters. Returns null if no parameters are available. + * + * @return ParameterList + */ + public ParameterList getParameterList() { + return list; + } + + /** + * Set the primary type. Overrides existing primary type. + * @param primaryType primary type + */ + public void setPrimaryType(String primaryType) { + this.primaryType = primaryType; + } + + /** + * Set the subType. Overrides existing subType + * @param subType subType + */ + public void setSubType(String subType) { + this.subType = subType; + } + + /** + * Set the specified parameter. If this parameter already exists, + * it is replaced by this new value. + * + * @param name parameter name + * @param value parameter value + */ + public void setParameter(String name, String value) { + if (list == null) + list = new ParameterList(); + + list.set(name, value); + } + + /** + * Set a new ParameterList. + * @param list ParameterList + */ + public void setParameterList(ParameterList list) { + this.list = list; + } + + /** + * Retrieve a RFC2045 style string representation of + * this Content-Type. Returns null if + * the conversion failed. + * + * @return RFC2045 style string + */ + public String toString() { + if (primaryType == null || subType == null) // need both + return null; + + StringBuffer sb = new StringBuffer(); + sb.append(primaryType).append('/').append(subType); + if (list != null) + // Http Binding section of the "SOAP with attachments" specification says, + // "SOAP message senders should send Content-Type headers on a single long line." + // (http://www.w3.org/TR/SOAP-attachments#HTTPBinding) + sb.append(list.toString()); + + return sb.toString(); + } + + /** + * Match with the specified ContentType object. This method + * compares only the primaryType and + * subType . The parameters of both operands + * are ignored.

    + * + * For example, this method will return true when + * comparing the ContentTypes for "text/plain" + * and "text/plain; charset=foobar". + * + * If the subType of either operand is the special + * character '*', then the subtype is ignored during the match. + * For example, this method will return true when + * comparing the ContentTypes for "text/plain" + * and "text/*" + * + * @param cType to compare this against + */ + public boolean match(ContentType cType) { + // Match primaryType + if (!primaryType.equalsIgnoreCase(cType.getPrimaryType())) + return false; + + String sType = cType.getSubType(); + + // If either one of the subTypes is wildcarded, return true + if ((subType.charAt(0) == '*') || (sType.charAt(0) == '*')) + return true; + + // Match subType + if (!subType.equalsIgnoreCase(sType)) + return false; + + return true; + } + + /** + * Match with the specified content-type string. This method + * compares only the primaryType and + * subType . + * The parameters of both operands are ignored.

    + * + * For example, this method will return true when + * comparing the ContentType for "text/plain" + * with "text/plain; charset=foobar". + * + * If the subType of either operand is the special + * character '*', then the subtype is ignored during the match. + * For example, this method will return true when + * comparing the ContentType for "text/plain" + * with "text/*" + */ + public boolean match(String s) { + try { + return match(new ContentType(s)); + } catch (ParseException pex) { + return false; + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/HeaderTokenizer.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/HeaderTokenizer.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,382 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)HeaderTokenizer.java 1.9 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + + +/** + * This class tokenizes RFC822 and MIME headers into the basic + * symbols specified by RFC822 and MIME.

    + * + * This class handles folded headers (ie headers with embedded + * CRLF SPACE sequences). The folds are removed in the returned + * tokens. + * + * @version 1.9, 02/03/27 + * @author John Mani + */ + +public class HeaderTokenizer { + + /** + * The Token class represents tokens returned by the + * HeaderTokenizer. + */ + public static class Token { + + private int type; + private String value; + + /** + * Token type indicating an ATOM. + */ + public static final int ATOM = -1; + + /** + * Token type indicating a quoted string. The value + * field contains the string without the quotes. + */ + public static final int QUOTEDSTRING = -2; + + /** + * Token type indicating a comment. The value field + * contains the comment string without the comment + * start and end symbols. + */ + public static final int COMMENT = -3; + + /** + * Token type indicating end of input. + */ + public static final int EOF = -4; + + /** + * Constructor. + * @param type Token type + * @param value Token value + */ + public Token(int type, String value) { + this.type = type; + this.value = value; + } + + /** + * Return the type of the token. If the token represents a + * delimiter or a control character, the type is that character + * itself, converted to an integer. Otherwise, it's value is + * one of the following: + *

      + *
    • ATOM A sequence of ASCII characters + * delimited by either SPACE, CTL, "(", <"> or the + * specified SPECIALS + *
    • QUOTEDSTRING A sequence of ASCII characters + * within quotes + *
    • COMMENT A sequence of ASCII characters + * within "(" and ")". + *
    • EOF End of header + *
    + */ + public int getType() { + return type; + } + + /** + * Returns the value of the token just read. When the current + * token is a quoted string, this field contains the body of the + * string, without the quotes. When the current token is a comment, + * this field contains the body of the comment. + * + * @return token value + */ + public String getValue() { + return value; + } + } + + private String string; // the string to be tokenized + private boolean skipComments; // should comments be skipped ? + private String delimiters; // delimiter string + private int currentPos; // current parse position + private int maxPos; // string length + private int nextPos; // track start of next Token for next() + private int peekPos; // track start of next Token for peek() + + /** + * RFC822 specials + */ + public final static String RFC822 = "()<>@,;:\\\"\t .[]"; + + /** + * MIME specials + */ + public final static String MIME = "()<>@,;:\\\"\t []/?="; + + // The EOF Token + private final static Token EOFToken = new Token(Token.EOF, null); + + /** + * Constructor that takes a rfc822 style header. + * + * @param header The rfc822 header to be tokenized + * @param delimiters Set of delimiter characters + * to be used to delimit ATOMS. These + * are usually RFC822 or + * MIME + * @param skipComments If true, comments are skipped and + * not returned as tokens + */ + public HeaderTokenizer(String header, String delimiters, + boolean skipComments) { + string = (header == null) ? "" : header; // paranoia ?! + this.skipComments = skipComments; + this.delimiters = delimiters; + currentPos = nextPos = peekPos = 0; + maxPos = string.length(); + } + + /** + * Constructor. Comments are ignored and not returned as tokens + * + * @param header The header that is tokenized + * @param delimiters The delimiters to be used + */ + public HeaderTokenizer(String header, String delimiters) { + this(header, delimiters, true); + } + + /** + * Constructor. The RFC822 defined delimiters - RFC822 - are + * used to delimit ATOMS. Also comments are skipped and not + * returned as tokens + */ + public HeaderTokenizer(String header) { + this(header, RFC822); + } + + /** + * Parses the next token from this String.

    + * + * Clients sit in a loop calling next() to parse successive + * tokens until an EOF Token is returned. + * + * @return the next Token + * @exception ParseException if the parse fails + */ + public Token next() throws ParseException { + Token tk; + + currentPos = nextPos; // setup currentPos + tk = getNext(); + nextPos = peekPos = currentPos; // update currentPos and peekPos + return tk; + } + + /** + * Peek at the next token, without actually removing the token + * from the parse stream. Invoking this method multiple times + * will return successive tokens, until next() is + * called.

    + * + * @return the next Token + * @exception ParseException if the parse fails + */ + public Token peek() throws ParseException { + Token tk; + + currentPos = peekPos; // setup currentPos + tk = getNext(); + peekPos = currentPos; // update peekPos + return tk; + } + + /** + * Return the rest of the Header. + * + * @return String rest of header. null is returned if we are + * already at end of header + */ + public String getRemainder() { + return string.substring(nextPos); + } + + /* + * Return the next token starting from 'currentPos'. After the + * parse, 'currentPos' is updated to point to the start of the + * next token. + */ + private Token getNext() throws ParseException { + // If we're already at end of string, return EOF + if (currentPos >= maxPos) + return EOFToken; + + // Skip white-space, position currentPos beyond the space + if (skipWhiteSpace() == Token.EOF) + return EOFToken; + + char c; + int start; + boolean filter = false; + + c = string.charAt(currentPos); + + // Check or Skip comments and position currentPos + // beyond the comment + while (c == '(') { + // Parsing comment .. + int nesting; + for (start = ++currentPos, nesting = 1; + nesting > 0 && currentPos < maxPos; + currentPos++) { + c = string.charAt(currentPos); + if (c == '\\') { // Escape sequence + currentPos++; // skip the escaped character + filter = true; + } else if (c == '\r') + filter = true; + else if (c == '(') + nesting++; + else if (c == ')') + nesting--; + } + if (nesting != 0) + throw new ParseException("Unbalanced comments"); + + if (!skipComments) { + // Return the comment, if we are asked to. + // Note that the comment start & end markers are ignored. + String s; + if (filter) // need to go thru the token again. + s = filterToken(string, start, currentPos-1); + else + s = string.substring(start,currentPos-1); + + return new Token(Token.COMMENT, s); + } + + // Skip any whitespace after the comment. + if (skipWhiteSpace() == Token.EOF) + return EOFToken; + c = string.charAt(currentPos); + } + + // Check for quoted-string and position currentPos + // beyond the terminating quote + if (c == '"') { + for (start = ++currentPos; currentPos < maxPos; currentPos++) { + c = string.charAt(currentPos); + if (c == '\\') { // Escape sequence + currentPos++; + filter = true; + } else if (c == '\r') + filter = true; + else if (c == '"') { + currentPos++; + String s; + + if (filter) + s = filterToken(string, start, currentPos-1); + else + s = string.substring(start,currentPos-1); + + return new Token(Token.QUOTEDSTRING, s); + } + } + throw new ParseException("Unbalanced quoted string"); + } + + // Check for SPECIAL or CTL + if (c < 040 || c >= 0177 || delimiters.indexOf(c) >= 0) { + currentPos++; // re-position currentPos + char ch[] = new char[1]; + ch[0] = c; + return new Token((int)c, new String(ch)); + } + + // Check for ATOM + for (start = currentPos; currentPos < maxPos; currentPos++) { + c = string.charAt(currentPos); + // ATOM is delimited by either SPACE, CTL, "(", <"> + // or the specified SPECIALS + if (c < 040 || c >= 0177 || c == '(' || c == ' ' || + c == '"' || delimiters.indexOf(c) >= 0) + break; + } + return new Token(Token.ATOM, string.substring(start, currentPos)); + } + + // Skip SPACE, HT, CR and NL + private int skipWhiteSpace() { + char c; + for (; currentPos < maxPos; currentPos++) + if (((c = string.charAt(currentPos)) != ' ') && + (c != '\t') && (c != '\r') && (c != '\n')) + return currentPos; + return Token.EOF; + } + + /* Process escape sequences and embedded LWSPs from a comment or + * quoted string. + */ + private static String filterToken(String s, int start, int end) { + StringBuffer sb = new StringBuffer(); + char c; + boolean gotEscape = false; + boolean gotCR = false; + + for (int i = start; i < end; i++) { + c = s.charAt(i); + if (c == '\n' && gotCR) { + // This LF is part of an unescaped + // CRLF sequence (i.e, LWSP). Skip it. + gotCR = false; + continue; + } + + gotCR = false; + if (!gotEscape) { + // Previous character was NOT '\' + if (c == '\\') // skip this character + gotEscape = true; + else if (c == '\r') // skip this character + gotCR = true; + else // append this character + sb.append(c); + } else { + // Previous character was '\'. So no need to + // bother with any special processing, just + // append this character + sb.append(c); + gotEscape = false; + } + } + return sb.toString(); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/InternetHeaders.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/InternetHeaders.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,402 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)InternetHeaders.java 1.16 02/08/08 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.Header; +import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; +import com.sun.xml.internal.messaging.saaj.packaging.mime.util.LineInputStream; +import com.sun.xml.internal.messaging.saaj.util.FinalArrayList; + +import java.io.IOException; +import java.io.InputStream; +import java.util.AbstractList; +import java.util.List; +import java.util.NoSuchElementException; + +/** + * InternetHeaders is a utility class that manages RFC822 style + * headers. Given an RFC822 format message stream, it reads lines + * until the blank line that indicates end of header. The input stream + * is positioned at the start of the body. The lines are stored + * within the object and can be extracted as either Strings or + * {@link Header} objects.

    + *

    + * This class is mostly intended for service providers. MimeMessage + * and MimeBody use this class for holding their headers.

    + *

    + *


    A note on RFC822 and MIME headers

    + *

    + * RFC822 and MIME header fields must contain only + * US-ASCII characters. If a header contains non US-ASCII characters, + * it must be encoded as per the rules in RFC 2047. The MimeUtility + * class provided in this package can be used to to achieve this. + * Callers of the setHeader, addHeader, and + * addHeaderLine methods are responsible for enforcing + * the MIME requirements for the specified headers. In addition, these + * header fields must be folded (wrapped) before being sent if they + * exceed the line length limitation for the transport (1000 bytes for + * SMTP). Received headers may have been folded. The application is + * responsible for folding and unfolding headers as appropriate.

    + * + * @author John Mani + * @author Bill Shannon + * @see MimeUtility + */ +public final class InternetHeaders { + + private final FinalArrayList headers = new FinalArrayList(); + + /** + * Lazily cerated view of header lines (Strings). + */ + private List headerValueView; + + /** + * Create an empty InternetHeaders object. + */ + public InternetHeaders() { + } + + /** + * Read and parse the given RFC822 message stream till the + * blank line separating the header from the body. The input + * stream is left positioned at the start of the body. The + * header lines are stored internally.

    + *

    + * For efficiency, wrap a BufferedInputStream around the actual + * input stream and pass it as the parameter. + * + * @param is RFC822 input stream + */ + public InternetHeaders(InputStream is) throws MessagingException { + load(is); + } + + /** + * Read and parse the given RFC822 message stream till the + * blank line separating the header from the body. Store the + * header lines inside this InternetHeaders object.

    + *

    + * Note that the header lines are added into this InternetHeaders + * object, so any existing headers in this object will not be + * affected. + * + * @param is RFC822 input stream + */ + public void load(InputStream is) throws MessagingException { + // Read header lines until a blank line. It is valid + // to have BodyParts with no header lines. + String line; + LineInputStream lis = new LineInputStream(is); + String prevline = null; // the previous header line, as a string + // a buffer to accumulate the header in, when we know it's needed + StringBuffer lineBuffer = new StringBuffer(); + + try { + //while ((line = lis.readLine()) != null) { + do { + line = lis.readLine(); + if (line != null && + (line.startsWith(" ") || line.startsWith("\t"))) { + // continuation of header + if (prevline != null) { + lineBuffer.append(prevline); + prevline = null; + } + lineBuffer.append("\r\n"); + lineBuffer.append(line); + } else { + // new header + if (prevline != null) + addHeaderLine(prevline); + else if (lineBuffer.length() > 0) { + // store previous header first + addHeaderLine(lineBuffer.toString()); + lineBuffer.setLength(0); + } + prevline = line; + } + } while (line != null && line.length() > 0); + } catch (IOException ioex) { + throw new MessagingException("Error in input stream", ioex); + } + } + + /** + * Return all the values for the specified header. The + * values are String objects. Returns null + * if no headers with the specified name exist. + * + * @param name header name + * @return array of header values, or null if none + */ + public String[] getHeader(String name) { + // XXX - should we just step through in index order? + FinalArrayList v = new FinalArrayList(); // accumulate return values + + int len = headers.size(); + for( int i=0; inull, only the first header is + * returned. Returns null + * if no headers with the specified name exist. + * + * @param delimiter delimiter + * @return the value fields for all headers with + * this name, or null if none + * @param name header name + */ + public String getHeader(String name, String delimiter) { + String[] s = getHeader(name); + + if (s == null) + return null; + + if ((s.length == 1) || delimiter == null) + return s[0]; + + StringBuffer r = new StringBuffer(s[0]); + for (int i = 1; i < s.length; i++) { + r.append(delimiter); + r.append(s[i]); + } + return r.toString(); + } + + /** + * Change the first header line that matches name + * to have value, adding a new header if no existing header + * matches. Remove all matching headers but the first.

    + *

    + * Note that RFC822 headers can only contain US-ASCII characters + * + * @param name header name + * @param value header value + */ + public void setHeader(String name, String value) { + boolean found = false; + + for (int i = 0; i < headers.size(); i++) { + hdr h = (hdr) headers.get(i); + if (name.equalsIgnoreCase(h.name)) { + if (!found) { + int j; + if (h.line != null && (j = h.line.indexOf(':')) >= 0) { + h.line = h.line.substring(0, j + 1) + " " + value; + } else { + h.line = name + ": " + value; + } + found = true; + } else { + headers.remove(i); + i--; // have to look at i again + } + } + } + + if (!found) { + addHeader(name, value); + } + } + + /** + * Add a header with the specified name and value to the header list.

    + *

    + * Note that RFC822 headers can only contain US-ASCII characters. + * + * @param name header name + * @param value header value + */ + public void addHeader(String name, String value) { + int pos = headers.size(); + for (int i = headers.size() - 1; i >= 0; i--) { + hdr h = (hdr) headers.get(i); + if (name.equalsIgnoreCase(h.name)) { + headers.add(i + 1, new hdr(name, value)); + return; + } + // marker for default place to add new headers + if (h.name.equals(":")) + pos = i; + } + headers.add(pos, new hdr(name, value)); + } + + /** + * Remove all header entries that match the given name + * + * @param name header name + */ + public void removeHeader(String name) { + for (int i = 0; i < headers.size(); i++) { + hdr h = (hdr) headers.get(i); + if (name.equalsIgnoreCase(h.name)) { + headers.remove(i); + i--; // have to look at i again + } + } + } + + /** + * Return all the headers as an Enumeration of + * {@link Header} objects. + * + * @return Header objects + */ + public FinalArrayList getAllHeaders() { + return headers; // conceptually it should be read-only, but for performance reason I'm not wrapping it here + } + + /** + * Add an RFC822 header line to the header store. + * If the line starts with a space or tab (a continuation line), + * add it to the last header line in the list.

    + *

    + * Note that RFC822 headers can only contain US-ASCII characters + * + * @param line raw RFC822 header line + */ + public void addHeaderLine(String line) { + try { + char c = line.charAt(0); + if (c == ' ' || c == '\t') { + hdr h = (hdr) headers.get(headers.size() - 1); + h.line += "\r\n" + line; + } else + headers.add(new hdr(line)); + } catch (StringIndexOutOfBoundsException e) { + // line is empty, ignore it + return; + } catch (NoSuchElementException e) { + // XXX - vector is empty? + } + } + + /** + * Return all the header lines as a collection + */ + public List getAllHeaderLines() { + if(headerValueView==null) + headerValueView = new AbstractList() { + public Object get(int index) { + return ((hdr)headers.get(index)).line; + } + + public int size() { + return headers.size(); + } + }; + return headerValueView; + } +} + +/* + * A private utility class to represent an individual header. + */ + +class hdr implements Header { + // XXX - should these be private? + String name; // the canonicalized (trimmed) name of this header + // XXX - should name be stored in lower case? + String line; // the entire RFC822 header "line" + + /* + * Constructor that takes a line and splits out + * the header name. + */ + hdr(String l) { + int i = l.indexOf(':'); + if (i < 0) { + // should never happen + name = l.trim(); + } else { + name = l.substring(0, i).trim(); + } + line = l; + } + + /* + * Constructor that takes a header name and value. + */ + hdr(String n, String v) { + name = n; + line = n + ": " + v; + } + + /* + * Return the "name" part of the header line. + */ + public String getName() { + return name; + } + + /* + * Return the "value" part of the header line. + */ + public String getValue() { + int i = line.indexOf(':'); + if (i < 0) + return line; + + int j; + if (name.equalsIgnoreCase("Content-Description")) { + // Content-Description should retain the folded whitespace after header unfolding - + // rf. RFC2822 section 2.2.3, rf. RFC2822 section 3.2.3 + for (j = i + 1; j < line.length(); j++) { + char c = line.charAt(j); + if (!(/*c == ' ' ||*/c == '\t' || c == '\r' || c == '\n')) + break; + } + } else { + // skip whitespace after ':' + for (j = i + 1; j < line.length(); j++) { + char c = line.charAt(j); + if (!(c == ' ' || c == '\t' || c == '\r' || c == '\n')) + break; + } + } + return line.substring(j); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeBodyPart.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeBodyPart.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,1165 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)MimeBodyPart.java 1.52 03/02/12 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + + +import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; +import com.sun.xml.internal.messaging.saaj.packaging.mime.util.OutputUtil; +import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; +import com.sun.xml.internal.messaging.saaj.util.FinalArrayList; + +import java.util.logging.Level; +import java.util.logging.Logger; +import javax.activation.DataHandler; +import java.io.BufferedInputStream; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.OutputStream; +import java.io.UnsupportedEncodingException; +import java.util.List; +import javax.activation.DataSource; +import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart; + +/** + * This class represents a MIME body part. + * MimeBodyParts are contained in MimeMultipart + * objects.

    + * + * MimeBodyPart uses the InternetHeaders class to parse + * and store the headers of that body part.

    + * + *


    A note on RFC 822 and MIME headers

    + * + * RFC 822 header fields must contain only + * US-ASCII characters. MIME allows non ASCII characters to be present + * in certain portions of certain headers, by encoding those characters. + * RFC 2047 specifies the rules for doing this. The MimeUtility + * class provided in this package can be used to to achieve this. + * Callers of the setHeader, addHeader, and + * addHeaderLine methods are responsible for enforcing + * the MIME requirements for the specified headers. In addition, these + * header fields must be folded (wrapped) before being sent if they + * exceed the line length limitation for the transport (1000 bytes for + * SMTP). Received headers may have been folded. The application is + * responsible for folding and unfolding headers as appropriate.

    + * + * @author John Mani + * @author Bill Shannon + * @see MimeUtility + */ + +public final class MimeBodyPart { + + /** + * This part should be presented as an attachment. + * @see #getDisposition + * @see #setDisposition + */ + public static final String ATTACHMENT = "attachment"; + + /** + * This part should be presented inline. + * @see #getDisposition + * @see #setDisposition + */ + public static final String INLINE = "inline"; + + + // Paranoia: + // allow this last minute change to be disabled if it causes problems + private static boolean setDefaultTextCharset = true; + + static { + try { + String s = System.getProperty("mail.mime.setdefaulttextcharset"); + // default to true + setDefaultTextCharset = s == null || !s.equalsIgnoreCase("false"); + } catch (SecurityException sex) { + // ignore it + } + } + + /* + Data is represented in one of three forms. + Either we have a DataHandler, or byte[] as the raw content image, or the contentStream. + It's OK to have more than one of them, provided that they are identical. + */ + + /** + * The DataHandler object representing this MimeBodyPart's content. + */ + private DataHandler dh; + + /** + * Byte array that holds the bytes of the content of this MimeBodyPart. + * Used in a pair with {@link #contentLength} to denote a regision of a buffer + * as a valid data. + */ + private byte[] content; + private int contentLength; + private int start = 0; + + /** + * If the data for this body part was supplied by an + * InputStream that implements the SharedInputStream interface, + * contentStream is another such stream representing + * the content of this body part. In this case, content + * will be null. + * + * @since JavaMail 1.2 + */ + private InputStream contentStream; + + + + /** + * The InternetHeaders object that stores all the headers + * of this body part. + */ + private final InternetHeaders headers; + + /** + * The MimeMultipart object containing this MimeBodyPart, + * if known. + * @since JavaMail 1.1 + */ + private MimeMultipart parent; + + private MIMEPart mimePart; + + /** + * An empty MimeBodyPart object is created. + * This body part maybe filled in by a client constructing a multipart + * message. + */ + public MimeBodyPart() { + headers = new InternetHeaders(); + } + + /** + * Constructs a MimeBodyPart by reading and parsing the data from + * the specified input stream. The parser consumes data till the end + * of the given input stream. The input stream must start at the + * beginning of a valid MIME body part and must terminate at the end + * of that body part.

    + * + * Note that the "boundary" string that delimits body parts must + * not be included in the input stream. The intention + * is that the MimeMultipart parser will extract each body part's bytes + * from a multipart stream and feed them into this constructor, without + * the delimiter strings. + * + * @param is the body part Input Stream + */ + public MimeBodyPart(InputStream is) throws MessagingException { + if (!(is instanceof ByteArrayInputStream) && + !(is instanceof BufferedInputStream) && + !(is instanceof SharedInputStream)) + is = new BufferedInputStream(is); + + headers = new InternetHeaders(is); + + if (is instanceof SharedInputStream) { + SharedInputStream sis = (SharedInputStream) is; + contentStream = sis.newStream(sis.getPosition(), -1); + } else { + ByteOutputStream bos = null; + try { + bos = new ByteOutputStream(); + bos.write(is); + content = bos.getBytes(); + contentLength = bos.getCount(); + } catch (IOException ioex) { + throw new MessagingException("Error reading input stream", ioex); + } finally { + if (bos != null) + bos.close(); + } + } + + } + + /** + * Constructs a MimeBodyPart using the given header and + * content bytes.

    + * + * Used by providers. + * + * @param headers The header of this part + * @param content bytes representing the body of this part. + */ + public MimeBodyPart(InternetHeaders headers, byte[] content, int len) { + this.headers = headers; + this.content = content; + this.contentLength = len; + } + + public MimeBodyPart( + InternetHeaders headers, byte[] content, int start, int len) { + this.headers = headers; + this.content = content; + this.start = start; + this.contentLength = len; + } + + public MimeBodyPart(MIMEPart part) { + mimePart = part; + headers = new InternetHeaders(); + List hdrs = mimePart.getAllHeaders(); + for (com.sun.xml.internal.org.jvnet.mimepull.Header hd : hdrs) { + headers.addHeader(hd.getName(), hd.getValue()); + } + } + /** + * Return the containing MimeMultipart object, + * or null if not known. + */ + public MimeMultipart getParent() { + return parent; + } + + /** + * Set the parent of this MimeBodyPart to be the specified + * MimeMultipart. Normally called by MimeMultipart's + * addBodyPart method. parent may be + * null if the MimeBodyPart is being removed + * from its containing MimeMultipart. + * @since JavaMail 1.1 + */ + public void setParent(MimeMultipart parent) { + this.parent = parent; + } + + /** + * Return the size of the content of this body part in bytes. + * Return -1 if the size cannot be determined.

    + * + * Note that this number may not be an exact measure of the + * content size and may or may not account for any transfer + * encoding of the content.

    + * + * This implementation returns the size of the content + * array (if not null), or, if contentStream is not + * null, and the available method returns a positive + * number, it returns that number as the size. Otherwise, it returns + * -1. + * + * @return size in bytes, or -1 if not known + */ + public int getSize() { + + if (mimePart != null) { + try { + return mimePart.read().available(); + } catch (IOException ex) { + return -1; + } + } + if (content != null) + return contentLength; + if (contentStream != null) { + try { + int size = contentStream.available(); + // only believe the size if it's greate than zero, since zero + // is the default returned by the InputStream class itself + if (size > 0) + return size; + } catch (IOException ex) { + // ignore it + } + } + return -1; + } + + /** + * Return the number of lines for the content of this MimeBodyPart. + * Return -1 if this number cannot be determined.

    + * + * Note that this number may not be an exact measure of the + * content length and may or may not account for any transfer + * encoding of the content.

    + * + * This implementation returns -1. + * + * @return number of lines, or -1 if not known + */ + public int getLineCount() { + return -1; + } + + /** + * Returns the value of the RFC 822 "Content-Type" header field. + * This represents the content type of the content of this + * body part. This value must not be null. If this field is + * unavailable, "text/plain" should be returned.

    + * + * This implementation uses getHeader(name) + * to obtain the requisite header field. + * + * @return Content-Type of this body part + */ + public String getContentType() { + if (mimePart != null) { + return mimePart.getContentType(); + } + String s = getHeader("Content-Type", null); + if (s == null) + s = "text/plain"; + + return s; + } + + /** + * Is this MimeBodyPart of the specified MIME type? This method + * compares only the primaryType and + * subType. + * The parameters of the content types are ignored.

    + * + * For example, this method will return true when + * comparing a MimeBodyPart of content type "text/plain" + * with "text/plain; charset=foobar".

    + * + * If the subType of mimeType is the + * special character '*', then the subtype is ignored during the + * comparison. + */ + public boolean isMimeType(String mimeType) { + boolean result; + // XXX - lots of room for optimization here! + try { + ContentType ct = new ContentType(getContentType()); + result = ct.match(mimeType); + } catch (ParseException ex) { + result = getContentType().equalsIgnoreCase(mimeType); + } + return result; + } + + /** + * Returns the value of the "Content-Disposition" header field. + * This represents the disposition of this part. The disposition + * describes how the part should be presented to the user.

    + * + * If the Content-Disposition field is unavailable, + * null is returned.

    + * + * This implementation uses getHeader(name) + * to obtain the requisite header field. + * + * @see #headers + */ + public String getDisposition() throws MessagingException { + String s = getHeader("Content-Disposition", null); + + if (s == null) + return null; + + ContentDisposition cd = new ContentDisposition(s); + return cd.getDisposition(); + } + + /** + * Set the "Content-Disposition" header field of this body part. + * If the disposition is null, any existing "Content-Disposition" + * header field is removed. + * + * @exception IllegalStateException if this body part is + * obtained from a READ_ONLY folder. + */ + public void setDisposition(String disposition) throws MessagingException { + if (disposition == null) + removeHeader("Content-Disposition"); + else { + String s = getHeader("Content-Disposition", null); + if (s != null) { + /* A Content-Disposition header already exists .. + * + * Override disposition, but attempt to retain + * existing disposition parameters + */ + ContentDisposition cd = new ContentDisposition(s); + cd.setDisposition(disposition); + disposition = cd.toString(); + } + setHeader("Content-Disposition", disposition); + } + } + + /** + * Returns the content transfer encoding from the + * "Content-Transfer-Encoding" header + * field. Returns null if the header is unavailable + * or its value is absent.

    + * + * This implementation uses getHeader(name) + * to obtain the requisite header field. + * + * @see #headers + */ + public String getEncoding() throws MessagingException { + String s = getHeader("Content-Transfer-Encoding", null); + + if (s == null) + return null; + + s = s.trim(); // get rid of trailing spaces + // quick check for known values to avoid unnecessary use + // of tokenizer. + if (s.equalsIgnoreCase("7bit") || s.equalsIgnoreCase("8bit") || + s.equalsIgnoreCase("quoted-printable") || + s.equalsIgnoreCase("base64")) + return s; + + // Tokenize the header to obtain the encoding (skip comments) + HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME); + + HeaderTokenizer.Token tk; + int tkType; + + for (;;) { + tk = h.next(); // get a token + tkType = tk.getType(); + if (tkType == HeaderTokenizer.Token.EOF) + break; // done + else if (tkType == HeaderTokenizer.Token.ATOM) + return tk.getValue(); + else // invalid token, skip it. + continue; + } + return s; + } + + /** + * Returns the value of the "Content-ID" header field. Returns + * null if the field is unavailable or its value is + * absent.

    + * + * This implementation uses getHeader(name) + * to obtain the requisite header field. + */ + public String getContentID() { + return getHeader("Content-ID", null); + } + + /** + * Set the "Content-ID" header field of this body part. + * If the cid parameter is null, any existing + * "Content-ID" is removed. + * + * @exception IllegalStateException if this body part is + * obtained from a READ_ONLY folder. + * @since JavaMail 1.3 + */ + public void setContentID(String cid) { + if (cid == null) + removeHeader("Content-ID"); + else + setHeader("Content-ID", cid); + } + + /** + * Return the value of the "Content-MD5" header field. Returns + * null if this field is unavailable or its value + * is absent.

    + * + * This implementation uses getHeader(name) + * to obtain the requisite header field. + */ + public String getContentMD5() { + return getHeader("Content-MD5", null); + } + + /** + * Set the "Content-MD5" header field of this body part. + * + * @exception IllegalStateException if this body part is + * obtained from a READ_ONLY folder. + */ + public void setContentMD5(String md5) { + setHeader("Content-MD5", md5); + } + + /** + * Get the languages specified in the Content-Language header + * of this MimeBodyPart. The Content-Language header is defined by + * RFC 1766. Returns null if this header is not + * available or its value is absent.

    + * + * This implementation uses getHeader(name) + * to obtain the requisite header field. + */ + public String[] getContentLanguage() throws MessagingException { + String s = getHeader("Content-Language", null); + + if (s == null) + return null; + + // Tokenize the header to obtain the Language-tags (skip comments) + HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME); + FinalArrayList v = new FinalArrayList(); + + HeaderTokenizer.Token tk; + int tkType; + + while (true) { + tk = h.next(); // get a language-tag + tkType = tk.getType(); + if (tkType == HeaderTokenizer.Token.EOF) + break; // done + else if (tkType == HeaderTokenizer.Token.ATOM) v.add(tk.getValue()); + else // invalid token, skip it. + continue; + } + + if (v.size() == 0) + return null; + + return (String[])v.toArray(new String[v.size()]); + } + + /** + * Set the Content-Language header of this MimeBodyPart. The + * Content-Language header is defined by RFC 1766. + * + * @param languages array of language tags + */ + public void setContentLanguage(String[] languages) { + StringBuffer sb = new StringBuffer(languages[0]); + for (int i = 1; i < languages.length; i++) + sb.append(',').append(languages[i]); + setHeader("Content-Language", sb.toString()); + } + + /** + * Returns the "Content-Description" header field of this body part. + * This typically associates some descriptive information with + * this part. Returns null if this field is unavailable or its + * value is absent.

    + * + * If the Content-Description field is encoded as per RFC 2047, + * it is decoded and converted into Unicode. If the decoding or + * conversion fails, the raw data is returned as is.

    + * + * This implementation uses getHeader(name) + * to obtain the requisite header field. + * + * @return content description + */ + public String getDescription() { + String rawvalue = getHeader("Content-Description", null); + + if (rawvalue == null) + return null; + + try { + return MimeUtility.decodeText(MimeUtility.unfold(rawvalue)); + } catch (UnsupportedEncodingException ex) { + return rawvalue; + } + } + + /** + * Set the "Content-Description" header field for this body part. + * If the description parameter is null, then any + * existing "Content-Description" fields are removed.

    + * + * If the description contains non US-ASCII characters, it will + * be encoded using the platform's default charset. If the + * description contains only US-ASCII characters, no encoding + * is done and it is used as is.

    + * + * Note that if the charset encoding process fails, a + * MessagingException is thrown, and an UnsupportedEncodingException + * is included in the chain of nested exceptions within the + * MessagingException. + * + * @param description content description + * @exception IllegalStateException if this body part is + * obtained from a READ_ONLY folder. + * @exception MessagingException An + * UnsupportedEncodingException may be included + * in the exception chain if the charset + * conversion fails. + */ + public void setDescription(String description) throws MessagingException { + setDescription(description, null); + } + + /** + * Set the "Content-Description" header field for this body part. + * If the description parameter is null, then any + * existing "Content-Description" fields are removed.

    + * + * If the description contains non US-ASCII characters, it will + * be encoded using the specified charset. If the description + * contains only US-ASCII characters, no encoding is done and + * it is used as is.

    + * + * Note that if the charset encoding process fails, a + * MessagingException is thrown, and an UnsupportedEncodingException + * is included in the chain of nested exceptions within the + * MessagingException. + * + * @param description Description + * @param charset Charset for encoding + * @exception IllegalStateException if this body part is + * obtained from a READ_ONLY folder. + * @exception MessagingException An + * UnsupportedEncodingException may be included + * in the exception chain if the charset + * conversion fails. + */ + public void setDescription(String description, String charset) + throws MessagingException { + if (description == null) { + removeHeader("Content-Description"); + return; + } + + try { + setHeader("Content-Description", MimeUtility.fold(21, + MimeUtility.encodeText(description, charset, null))); + } catch (UnsupportedEncodingException uex) { + throw new MessagingException("Encoding error", uex); + } + } + + /** + * Get the filename associated with this body part.

    + * + * Returns the value of the "filename" parameter from the + * "Content-Disposition" header field of this body part. If its + * not available, returns the value of the "name" parameter from + * the "Content-Type" header field of this body part. + * Returns null if both are absent. + * + * @return filename + */ + public String getFileName() throws MessagingException { + String filename = null; + String s = getHeader("Content-Disposition", null); + + if (s != null) { + // Parse the header .. + ContentDisposition cd = new ContentDisposition(s); + filename = cd.getParameter("filename"); + } + if (filename == null) { + // Still no filename ? Try the "name" ContentType parameter + s = getHeader("Content-Type", null); + if (s != null) { + try { + ContentType ct = new ContentType(s); + filename = ct.getParameter("name"); + } catch (ParseException pex) { } // ignore it + } + } + return filename; + } + + /** + * Set the filename associated with this body part, if possible.

    + * + * Sets the "filename" parameter of the "Content-Disposition" + * header field of this body part. + * + * @exception IllegalStateException if this body part is + * obtained from a READ_ONLY folder. + */ + public void setFileName(String filename) throws MessagingException { + // Set the Content-Disposition "filename" parameter + String s = getHeader("Content-Disposition", null); + ContentDisposition cd = + new ContentDisposition(s == null ? ATTACHMENT : s); + cd.setParameter("filename", filename); + setHeader("Content-Disposition", cd.toString()); + + /* Also attempt to set the Content-Type "name" parameter, + * to satisfy ancient MUAs. + * XXX: This is not RFC compliant, and hence should really + * be conditional based on some property. Fix this once we + * figure out how to get at Properties from here ! + */ + s = getHeader("Content-Type", null); + if (s != null) { + try { + ContentType cType = new ContentType(s); + cType.setParameter("name", filename); + setHeader("Content-Type", cType.toString()); + } catch (ParseException pex) { } // ignore it + } + } + + /** + * Return a decoded input stream for this body part's "content".

    + * + * This implementation obtains the input stream from the DataHandler. + * That is, it invokes getDataHandler().getInputStream(); + * + * @return an InputStream + * @exception IOException this is typically thrown by the + * DataHandler. Refer to the documentation for + * javax.activation.DataHandler for more details. + * + * @see #getContentStream + * @see DataHandler#getInputStream + */ + public InputStream getInputStream() + throws IOException { + return getDataHandler().getInputStream(); + } + + /** + * Produce the raw bytes of the content. This method is used + * when creating a DataHandler object for the content. Subclasses + * that can provide a separate input stream for just the MimeBodyPart + * content might want to override this method.

    + * + * @see #content + */ + /*package*/ InputStream getContentStream() throws MessagingException { + if (mimePart != null) { + return mimePart.read(); + } + if (contentStream != null) + return ((SharedInputStream)contentStream).newStream(0, -1); + if (content != null) + return new ByteArrayInputStream(content,start,contentLength); + + throw new MessagingException("No content"); + } + + /** + * Return an InputStream to the raw data with any Content-Transfer-Encoding + * intact. This method is useful if the "Content-Transfer-Encoding" + * header is incorrect or corrupt, which would prevent the + * getInputStream method or getContent method + * from returning the correct data. In such a case the application may + * use this method and attempt to decode the raw data itself.

    + * + * This implementation simply calls the getContentStream + * method. + * + * @see #getInputStream + * @see #getContentStream + * @since JavaMail 1.2 + */ + public InputStream getRawInputStream() throws MessagingException { + return getContentStream(); + } + + /** + * Return a DataHandler for this body part's content.

    + * + * The implementation provided here works just like the + * the implementation in MimeMessage. + */ + public DataHandler getDataHandler() { + if (mimePart != null) { + //return an inputstream + return new DataHandler(new DataSource() { + + public InputStream getInputStream() throws IOException { + return mimePart.read(); + } + + public OutputStream getOutputStream() throws IOException { + throw new UnsupportedOperationException("getOutputStream cannot be supported : You have enabled LazyAttachments Option"); + } + + public String getContentType() { + return mimePart.getContentType(); + } + + public String getName() { + return "MIMEPart Wrapped DataSource"; + } + }); + } + if (dh == null) + dh = new DataHandler(new MimePartDataSource(this)); + return dh; + } + + /** + * Return the content as a java object. The type of the object + * returned is of course dependent on the content itself. For + * example, the native format of a text/plain content is usually + * a String object. The native format for a "multipart" + * content is always a MimeMultipart subclass. For content types that are + * unknown to the DataHandler system, an input stream is returned + * as the content.

    + * + * This implementation obtains the content from the DataHandler. + * That is, it invokes getDataHandler().getContent(); + * + * @return Object + * @exception IOException this is typically thrown by the + * DataHandler. Refer to the documentation for + * javax.activation.DataHandler for more details. + */ + public Object getContent() throws IOException { + return getDataHandler().getContent(); + } + + /** + * This method provides the mechanism to set this body part's content. + * The given DataHandler object should wrap the actual content. + * + * @param dh The DataHandler for the content + * @exception IllegalStateException if this body part is + * obtained from a READ_ONLY folder. + */ + public void setDataHandler(DataHandler dh) { + if (mimePart != null) { + mimePart = null; + } + this.dh = dh; + this.content = null; + this.contentStream = null; + removeHeader("Content-Type"); + removeHeader("Content-Transfer-Encoding"); + } + + /** + * A convenience method for setting this body part's content.

    + * + * The content is wrapped in a DataHandler object. Note that a + * DataContentHandler class for the specified type should be + * available to the JavaMail implementation for this to work right. + * That is, to do setContent(foobar, "application/x-foobar"), + * a DataContentHandler for "application/x-foobar" should be installed. + * Refer to the Java Activation Framework for more information. + * + * @param o the content object + * @param type Mime type of the object + * @exception IllegalStateException if this body part is + * obtained from a READ_ONLY folder. + */ + public void setContent(Object o, String type) { + if (mimePart != null) { + mimePart = null; + } + if (o instanceof MimeMultipart) { + setContent((MimeMultipart)o); + } else { + setDataHandler(new DataHandler(o, type)); + } + } + + /** + * Convenience method that sets the given String as this + * part's content, with a MIME type of "text/plain". If the + * string contains non US-ASCII characters, it will be encoded + * using the platform's default charset. The charset is also + * used to set the "charset" parameter.

    + * + * Note that there may be a performance penalty if + * text is large, since this method may have + * to scan all the characters to determine what charset to + * use.

    + * If the charset is already known, use the + * setText() version that takes the charset parameter. + * + * @see #setText(String text, String charset) + */ + public void setText(String text) { + setText(text, null); + } + + /** + * Convenience method that sets the given String as this part's + * content, with a MIME type of "text/plain" and the specified + * charset. The given Unicode string will be charset-encoded + * using the specified charset. The charset is also used to set + * the "charset" parameter. + */ + public void setText(String text, String charset) { + if (charset == null) { + if (MimeUtility.checkAscii(text) != MimeUtility.ALL_ASCII) + charset = MimeUtility.getDefaultMIMECharset(); + else + charset = "us-ascii"; + } + setContent(text, "text/plain; charset=" + + MimeUtility.quote(charset, HeaderTokenizer.MIME)); + } + + /** + * This method sets the body part's content to a MimeMultipart object. + * + * @param mp The multipart object that is the Message's content + * @exception IllegalStateException if this body part is + * obtained from a READ_ONLY folder. + */ + public void setContent(MimeMultipart mp) { + if (mimePart != null) { + mimePart = null; + } + setDataHandler(new DataHandler(mp, mp.getContentType().toString())); + mp.setParent(this); + } + + /** + * Output the body part as an RFC 822 format stream. + * + * @exception MessagingException + * @exception IOException if an error occurs writing to the + * stream or if an error is generated + * by the javax.activation layer. + * @see DataHandler#writeTo + */ + public void writeTo(OutputStream os) + throws IOException, MessagingException { + + // First, write out the header + List hdrLines = headers.getAllHeaderLines(); + int sz = hdrLines.size(); + for( int i=0; inull, only the first header is + * returned. + * + * @param name the name of this header + * @param delimiter delimiter between fields in returned string + * @return the value fields for all headers with + * this name + */ + public String getHeader(String name, String delimiter) { + return headers.getHeader(name, delimiter); + } + + /** + * Set the value for this header_name. Replaces all existing + * header values with this new value. Note that RFC 822 headers + * must contain only US-ASCII characters, so a header that + * contains non US-ASCII characters must be encoded as per the + * rules of RFC 2047. + * + * @param name header name + * @param value header value + * @see MimeUtility + */ + public void setHeader(String name, String value) { + headers.setHeader(name, value); + } + + /** + * Add this value to the existing values for this header_name. + * Note that RFC 822 headers must contain only US-ASCII + * characters, so a header that contains non US-ASCII characters + * must be encoded as per the rules of RFC 2047. + * + * @param name header name + * @param value header value + * @see MimeUtility + */ + public void addHeader(String name, String value) { + headers.addHeader(name, value); + } + + /** + * Remove all headers with this name. + */ + public void removeHeader(String name) { + headers.removeHeader(name); + } + + /** + * Return all the headers from this Message as an Enumeration of + * Header objects. + */ + public FinalArrayList getAllHeaders() { + return headers.getAllHeaders(); + } + + + /** + * Add a header line to this body part + */ + public void addHeaderLine(String line) { + headers.addHeaderLine(line); + } + + /** + * Examine the content of this body part and update the appropriate + * MIME headers. Typical headers that get set here are + * Content-Type and Content-Transfer-Encoding. + * Headers might need to be updated in two cases: + * + *
    + * - A message being crafted by a mail application will certainly + * need to activate this method at some point to fill up its internal + * headers. + * + *
    + * - A message read in from a Store will have obtained + * all its headers from the store, and so doesn't need this. + * However, if this message is editable and if any edits have + * been made to either the content or message structure, we might + * need to resync our headers. + * + *
    + * In both cases this method is typically called by the + * Message.saveChanges method. + */ + protected void updateHeaders() throws MessagingException { + DataHandler dh = getDataHandler(); + /* + * Code flow indicates null is never returned from + * getdataHandler() - findbugs + */ + //if (dh == null) // Huh ? + // return; + + try { + String type = dh.getContentType(); + boolean composite = false; + boolean needCTHeader = getHeader("Content-Type") == null; + + ContentType cType = new ContentType(type); + if (cType.match("multipart/*")) { + // If multipart, recurse + composite = true; + Object o = dh.getContent(); + ((MimeMultipart) o).updateHeaders(); + } else if (cType.match("message/rfc822")) { + composite = true; + } + + // Content-Transfer-Encoding, but only if we don't + // already have one + if (!composite) { // not allowed on composite parts + if (getHeader("Content-Transfer-Encoding") == null) + setEncoding(MimeUtility.getEncoding(dh)); + + if (needCTHeader && setDefaultTextCharset && + cType.match("text/*") && + cType.getParameter("charset") == null) { + /* + * Set a default charset for text parts. + * We really should examine the data to determine + * whether or not it's all ASCII, but that's too + * expensive so we make an assumption: If we + * chose 7bit encoding for this data, it's probably + * ASCII. (MimeUtility.getEncoding will choose + * 7bit only in this case, but someone might've + * set the Content-Transfer-Encoding header manually.) + */ + String charset; + String enc = getEncoding(); + if (enc != null && enc.equalsIgnoreCase("7bit")) + charset = "us-ascii"; + else + charset = MimeUtility.getDefaultMIMECharset(); + cType.setParameter("charset", charset); + type = cType.toString(); + } + } + + // Now, let's update our own headers ... + + // Content-type, but only if we don't already have one + if (needCTHeader) { + /* + * Pull out "filename" from Content-Disposition, and + * use that to set the "name" parameter. This is to + * satisfy older MUAs (DtMail, Roam and probably + * a bunch of others). + */ + String s = getHeader("Content-Disposition", null); + if (s != null) { + // Parse the header .. + ContentDisposition cd = new ContentDisposition(s); + String filename = cd.getParameter("filename"); + if (filename != null) { + cType.setParameter("name", filename); + type = cType.toString(); + } + } + + setHeader("Content-Type", type); + } + } catch (IOException ex) { + throw new MessagingException("IOException updating headers", ex); + } + } + + private void setEncoding(String encoding) { + setHeader("Content-Transfer-Encoding", encoding); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeMultipart.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeMultipart.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,657 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)MimeMultipart.java 1.31 03/01/29 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + +import java.io.*; + +import javax.activation.DataSource; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.*; +import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*; +import com.sun.xml.internal.messaging.saaj.util.FinalArrayList; +import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; +import com.sun.xml.internal.messaging.saaj.util.SAAJUtil; + +/** + * The MimeMultipart class is an implementation + * that uses MIME conventions for the multipart data.

    + * + * A MimeMultipart is obtained from a MimeBodyPart whose primary type + * is "multipart" (by invoking the part's getContent() method) + * or it can be created by a client as part of creating a new MimeMessage.

    + * + * The default multipart subtype is "mixed". The other multipart + * subtypes, such as "alternative", "related", and so on, can be + * implemented as subclasses of MimeMultipart with additional methods + * to implement the additional semantics of that type of multipart + * content. The intent is that service providers, mail JavaBean writers + * and mail clients will write many such subclasses and their Command + * Beans, and will install them into the JavaBeans Activation + * Framework, so that any JavaMail implementation and its clients can + * transparently find and use these classes. Thus, a MIME multipart + * handler is treated just like any other type handler, thereby + * decoupling the process of providing multipart handlers from the + * JavaMail API. Lacking these additional MimeMultipart subclasses, + * all subtypes of MIME multipart data appear as MimeMultipart objects.

    + * + * An application can directly construct a MIME multipart object of any + * subtype by using the MimeMultipart(String subtype) + * constructor. For example, to create a "multipart/alternative" object, + * use new MimeMultipart("alternative"). + * + * @version 1.31, 03/01/29 + * @author John Mani + * @author Bill Shannon + * @author Max Spivak + */ + +//BM MimeMultipart can extend this +public class MimeMultipart { + + /** + * The DataSource supplying our InputStream. + */ + protected DataSource ds = null; + + /** + * Have we parsed the data from our InputStream yet? + * Defaults to true; set to false when our constructor is + * given a DataSource with an InputStream that we need to + * parse. + */ + protected boolean parsed = true; + + /** + * Vector of MimeBodyPart objects. + */ + protected FinalArrayList parts = new FinalArrayList(); // Holds BodyParts + + /** + * This field specifies the content-type of this multipart + * object. It defaults to "multipart/mixed". + */ + protected ContentType contentType; + + /** + * The MimeBodyPart containing this MimeMultipart, + * if known. + * @since JavaMail 1.1 + */ + protected MimeBodyPart parent; + + protected static final boolean ignoreMissingEndBoundary; + static { + ignoreMissingEndBoundary = SAAJUtil.getSystemBoolean("saaj.mime.multipart.ignoremissingendboundary"); + } + + /** + * Default constructor. An empty MimeMultipart object + * is created. Its content type is set to "multipart/mixed". + * A unique boundary string is generated and this string is + * setup as the "boundary" parameter for the + * contentType field.

    + * + * MimeBodyParts may be added later. + */ + public MimeMultipart() { + this("mixed"); + } + + /** + * Construct a MimeMultipart object of the given subtype. + * A unique boundary string is generated and this string is + * setup as the "boundary" parameter for the + * contentType field.

    + * + * MimeBodyParts may be added later. + */ + public MimeMultipart(String subtype) { + //super(); + /* + * Compute a boundary string. + */ + String boundary = UniqueValue.getUniqueBoundaryValue(); + contentType = new ContentType("multipart", subtype, null); + contentType.setParameter("boundary", boundary); + } + + /** + * Constructs a MimeMultipart object and its bodyparts from the + * given DataSource.

    + * + * This constructor handles as a special case the situation where the + * given DataSource is a MultipartDataSource object. + * + * Otherwise, the DataSource is assumed to provide a MIME multipart + * byte stream. The parsed flag is set to false. When + * the data for the body parts are needed, the parser extracts the + * "boundary" parameter from the content type of this DataSource, + * skips the 'preamble' and reads bytes till the terminating + * boundary and creates MimeBodyParts for each part of the stream. + * + * @param ds DataSource, can be a MultipartDataSource + * @param ct + * This must be the same information as {@link DataSource#getContentType()}. + * All the callers of this method seem to have this object handy, so + * for performance reason this method accepts it. Can be null. + */ + public MimeMultipart(DataSource ds, ContentType ct) throws MessagingException { + // 'ds' was not a MultipartDataSource, we have + // to parse this ourself. + parsed = false; + this.ds = ds; + if (ct==null) + contentType = new ContentType(ds.getContentType()); + else + contentType = ct; + } + + /** + * Set the subtype. This method should be invoked only on a new + * MimeMultipart object created by the client. The default subtype + * of such a multipart object is "mixed".

    + * + * @param subtype Subtype + */ + public void setSubType(String subtype) { + contentType.setSubType(subtype); + } + + /** + * Return the number of enclosed MimeBodyPart objects. + * + * @return number of parts + */ + public int getCount() throws MessagingException { + parse(); + if (parts == null) + return 0; + + return parts.size(); + } + + /** + * Get the specified MimeBodyPart. BodyParts are numbered starting at 0. + * + * @param index the index of the desired MimeBodyPart + * @return the MimeBodyPart + * @exception MessagingException if no such MimeBodyPart exists + */ + public MimeBodyPart getBodyPart(int index) + throws MessagingException { + parse(); + if (parts == null) + throw new IndexOutOfBoundsException("No such BodyPart"); + + return (MimeBodyPart)parts.get(index); + } + + /** + * Get the MimeBodyPart referred to by the given ContentID (CID). + * Returns null if the part is not found. + * + * @param CID the ContentID of the desired part + * @return the MimeBodyPart + */ + public MimeBodyPart getBodyPart(String CID) + throws MessagingException { + parse(); + + int count = getCount(); + for (int i = 0; i < count; i++) { + MimeBodyPart part = getBodyPart(i); + String s = part.getContentID(); + // Old versions of AXIS2 put angle brackets around the content + // id but not the start param + String sNoAngle = (s!= null) ? s.replaceFirst("^<", "").replaceFirst(">$", "") + :null; + if (s != null && (s.equals(CID) || CID.equals(sNoAngle))) + return part; + } + return null; + } + + /** + * Update headers. The default implementation here just + * calls the updateHeaders method on each of its + * children BodyParts.

    + * + * Note that the boundary parameter is already set up when + * a new and empty MimeMultipart object is created.

    + * + * This method is called when the saveChanges + * method is invoked on the Message object containing this + * MimeMultipart. This is typically done as part of the Message + * send process, however note that a client is free to call + * it any number of times. So if the header updating process is + * expensive for a specific MimeMultipart subclass, then it + * might itself want to track whether its internal state actually + * did change, and do the header updating only if necessary. + */ + protected void updateHeaders() throws MessagingException { + for (int i = 0; i < parts.size(); i++) + ((MimeBodyPart)parts.get(i)).updateHeaders(); + } + + /** + * Iterates through all the parts and outputs each Mime part + * separated by a boundary. + */ + public void writeTo(OutputStream os) + throws IOException, MessagingException { + parse(); + + String boundary = "--" + contentType.getParameter("boundary"); + + for (int i = 0; i < parts.size(); i++) { + OutputUtil.writeln(boundary, os); // put out boundary + getBodyPart(i).writeTo(os); + OutputUtil.writeln(os); // put out empty line + } + + // put out last boundary + OutputUtil.writeAsAscii(boundary, os); + OutputUtil.writeAsAscii("--", os); + os.flush(); + } + + /** + * Parse the InputStream from our DataSource, constructing the + * appropriate MimeBodyParts. The parsed flag is + * set to true, and if true on entry nothing is done. This + * method is called by all other methods that need data for + * the body parts, to make sure the data has been parsed. + * + * @since JavaMail 1.2 + */ + protected void parse() throws MessagingException { + if (parsed) + return; + + InputStream in; + SharedInputStream sin = null; + long start = 0, end = 0; + boolean foundClosingBoundary = false; + + try { + in = ds.getInputStream(); + if (!(in instanceof ByteArrayInputStream) && + !(in instanceof BufferedInputStream) && + !(in instanceof SharedInputStream)) + in = new BufferedInputStream(in); + } catch (Exception ex) { + throw new MessagingException("No inputstream from datasource"); + } + if (in instanceof SharedInputStream) + sin = (SharedInputStream)in; + + String boundary = "--" + contentType.getParameter("boundary"); + byte[] bndbytes = ASCIIUtility.getBytes(boundary); + int bl = bndbytes.length; + + ByteOutputStream buf = null; + try { + // Skip the preamble + LineInputStream lin = new LineInputStream(in); + String line; + while ((line = lin.readLine()) != null) { + /* + * Strip trailing whitespace. Can't use trim method + * because it's too aggressive. Some bogus MIME + * messages will include control characters in the + * boundary string. + */ + int i; + for (i = line.length() - 1; i >= 0; i--) { + char c = line.charAt(i); + if (!(c == ' ' || c == '\t')) + break; + } + line = line.substring(0, i + 1); + if (line.equals(boundary)) + break; + } + if (line == null) + throw new MessagingException("Missing start boundary"); + + /* + * Read and process body parts until we see the + * terminating boundary line (or EOF). + */ + boolean done = false; + getparts: + while (!done) { + InternetHeaders headers = null; + if (sin != null) { + start = sin.getPosition(); + // skip headers + while ((line = lin.readLine()) != null && line.length() > 0) + ; + if (line == null) { + if (!ignoreMissingEndBoundary) { + throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers"); + } + // assume there's just a missing end boundary + break getparts; + } + } else { + // collect the headers for this body part + headers = createInternetHeaders(in); + } + + if (!in.markSupported()) + throw new MessagingException("Stream doesn't support mark"); + + buf = null; + // if we don't have a shared input stream, we copy the data + if (sin == null) + buf = new ByteOutputStream(); + int b; + boolean bol = true; // beginning of line flag + // the two possible end of line characters + int eol1 = -1, eol2 = -1; + + /* + * Read and save the content bytes in buf. + */ + for (;;) { + if (bol) { + /* + * At the beginning of a line, check whether the + * next line is a boundary. + */ + int i; + in.mark(bl + 4 + 1000); // bnd + "--\r\n" + lots of LWSP + // read bytes, matching against the boundary + for (i = 0; i < bl; i++) + if (in.read() != bndbytes[i]) + break; + if (i == bl) { + // matched the boundary, check for last boundary + int b2 = in.read(); + if (b2 == '-') { + if (in.read() == '-') { + done = true; + foundClosingBoundary = true; + break; // ignore trailing text + } + } + // skip linear whitespace + while (b2 == ' ' || b2 == '\t') + b2 = in.read(); + // check for end of line + if (b2 == '\n') + break; // got it! break out of the loop + if (b2 == '\r') { + in.mark(1); + if (in.read() != '\n') + in.reset(); + break; // got it! break out of the loop + } + } + // failed to match, reset and proceed normally + in.reset(); + + // if this is not the first line, write out the + // end of line characters from the previous line + if (buf != null && eol1 != -1) { + buf.write(eol1); + if (eol2 != -1) + buf.write(eol2); + eol1 = eol2 = -1; + } + } + + // read the next byte + if ((b = in.read()) < 0) { + done = true; + break; + } + + /* + * If we're at the end of the line, save the eol characters + * to be written out before the beginning of the next line. + */ + if (b == '\r' || b == '\n') { + bol = true; + if (sin != null) + end = sin.getPosition() - 1; + eol1 = b; + if (b == '\r') { + in.mark(1); + if ((b = in.read()) == '\n') + eol2 = b; + else + in.reset(); + } + } else { + bol = false; + if (buf != null) + buf.write(b); + } + } + + /* + * Create a MimeBody element to represent this body part. + */ + MimeBodyPart part; + if (sin != null) + part = createMimeBodyPart(sin.newStream(start, end)); + else + part = createMimeBodyPart(headers, buf.getBytes(), buf.getCount()); + addBodyPart(part); + } + } catch (IOException ioex) { + throw new MessagingException("IO Error", ioex); + } finally { + if (buf != null) + buf.close(); + } + + if (!ignoreMissingEndBoundary && !foundClosingBoundary && sin== null) { + throw new MessagingException("Missing End Boundary for Mime Package : EOF while skipping headers"); + } + parsed = true; + } + + /** + * Create and return an InternetHeaders object that loads the + * headers from the given InputStream. Subclasses can override + * this method to return a subclass of InternetHeaders, if + * necessary. This implementation simply constructs and returns + * an InternetHeaders object. + * + * @param is the InputStream to read the headers from + * @exception MessagingException + * @since JavaMail 1.2 + */ + protected InternetHeaders createInternetHeaders(InputStream is) + throws MessagingException { + return new InternetHeaders(is); + } + + /** + * Create and return a MimeBodyPart object to represent a + * body part parsed from the InputStream. Subclasses can override + * this method to return a subclass of MimeBodyPart, if + * necessary. This implementation simply constructs and returns + * a MimeBodyPart object. + * + * @param headers the headers for the body part + * @param content the content of the body part + * @since JavaMail 1.2 + */ + protected MimeBodyPart createMimeBodyPart(InternetHeaders headers, byte[] content, int len) { + return new MimeBodyPart(headers, content,len); + } + + /** + * Create and return a MimeBodyPart object to represent a + * body part parsed from the InputStream. Subclasses can override + * this method to return a subclass of MimeBodyPart, if + * necessary. This implementation simply constructs and returns + * a MimeBodyPart object. + * + * @param is InputStream containing the body part + * @exception MessagingException + * @since JavaMail 1.2 + */ + protected MimeBodyPart createMimeBodyPart(InputStream is) throws MessagingException { + return new MimeBodyPart(is); + } + + /** + * Setup this MimeMultipart object from the given MultipartDataSource.

    + * + * The method adds the MultipartDataSource's MimeBodyPart + * objects into this MimeMultipart. This MimeMultipart's contentType is + * set to that of the MultipartDataSource.

    + * + * This method is typically used in those cases where one + * has a multipart data source that has already been pre-parsed into + * the individual body parts (for example, an IMAP datasource), but + * needs to create an appropriate MimeMultipart subclass that represents + * a specific multipart subtype. + * + * @param mp MimeMultipart datasource + */ + + protected void setMultipartDataSource(MultipartDataSource mp) + throws MessagingException { + contentType = new ContentType(mp.getContentType()); + + int count = mp.getCount(); + for (int i = 0; i < count; i++) + addBodyPart(mp.getBodyPart(i)); + } + + /** + * Return the content-type of this MimeMultipart.

    + * + * This implementation just returns the value of the + * contentType field. + * + * @return content-type + * @see #contentType + */ + public ContentType getContentType() { + return contentType; + } + + /** + * Remove the specified part from the multipart message. + * Shifts all the parts after the removed part down one. + * + * @param part The part to remove + * @return true if part removed, false otherwise + * @exception MessagingException if no such MimeBodyPart exists + */ + public boolean removeBodyPart(MimeBodyPart part) throws MessagingException { + if (parts == null) + throw new MessagingException("No such body part"); + + boolean ret = parts.remove(part); + part.setParent(null); + return ret; + } + + /** + * Remove the part at specified location (starting from 0). + * Shifts all the parts after the removed part down one. + * + * @param index Index of the part to remove + * @exception IndexOutOfBoundsException if the given index + * is out of range. + */ + public void removeBodyPart(int index) { + if (parts == null) + throw new IndexOutOfBoundsException("No such BodyPart"); + + MimeBodyPart part = (MimeBodyPart)parts.get(index); + parts.remove(index); + part.setParent(null); + } + + /** + * Adds a MimeBodyPart to the multipart. The MimeBodyPart is appended to + * the list of existing Parts. + * + * @param part The MimeBodyPart to be appended + */ + public synchronized void addBodyPart(MimeBodyPart part) { + if (parts == null) + parts = new FinalArrayList(); + + parts.add(part); + part.setParent(this); + } + + /** + * Adds a MimeBodyPart at position index. + * If index is not the last one in the list, + * the subsequent parts are shifted up. If index + * is larger than the number of parts present, the + * MimeBodyPart is appended to the end. + * + * @param part The MimeBodyPart to be inserted + * @param index Location where to insert the part + */ + public synchronized void addBodyPart(MimeBodyPart part, int index) { + if (parts == null) + parts = new FinalArrayList(); + + parts.add(index,part); + part.setParent(this); + } + + /** + * Return the MimeBodyPart that contains this MimeMultipart + * object, or null if not known. + * @since JavaMail 1.1 + */ + MimeBodyPart getParent() { + return parent; + } + + /** + * Set the parent of this MimeMultipart to be the specified + * MimeBodyPart. Normally called by the Message + * or MimeBodyPart setContent(MimeMultipart) method. + * parent may be null if the + * MimeMultipart is being removed from its containing + * MimeBodyPart. + * @since JavaMail 1.1 + */ + void setParent(MimeBodyPart parent) { + this.parent = parent; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePartDataSource.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePartDataSource.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,117 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)MimePartDataSource.java 1.9 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + +import java.io.*; +import java.net.UnknownServiceException; + +import javax.activation.DataSource; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; + +/** + * A utility class that implements a DataSource out of + * a MimeBodyPart. This class is primarily meant for service providers. + * + * @author John Mani + */ + +public final class MimePartDataSource implements DataSource { + private final MimeBodyPart part; + + /** + * Constructor, that constructs a DataSource from a MimeBodyPart. + */ + public MimePartDataSource(MimeBodyPart part) { + this.part = part; + } + + /** + * Returns an input stream from this MimeBodyPart.

    + * + * This method applies the appropriate transfer-decoding, based + * on the Content-Transfer-Encoding attribute of this MimeBodyPart. + * Thus the returned input stream is a decoded stream of bytes.

    + * + * This implementation obtains the raw content from the MimeBodyPart + * using the getContentStream() method and decodes + * it using the MimeUtility.decode() method. + * + * @return decoded input stream + */ + public InputStream getInputStream() throws IOException { + + try { + InputStream is = part.getContentStream(); + + String encoding = part.getEncoding(); + if (encoding != null) + return MimeUtility.decode(is, encoding); + else + return is; + } catch (MessagingException mex) { + throw new IOException(mex.getMessage()); + } + } + + /** + * DataSource method to return an output stream.

    + * + * This implementation throws the UnknownServiceException. + */ + public OutputStream getOutputStream() throws IOException { + throw new UnknownServiceException(); + } + + /** + * Returns the content-type of this DataSource.

    + * + * This implementation just invokes the getContentType + * method on the MimeBodyPart. + */ + public String getContentType() { + return part.getContentType(); + } + + /** + * DataSource method to return a name.

    + * + * This implementation just returns an empty string. + */ + public String getName() { + try { + return part.getFileName(); + } catch (MessagingException mex) { + return ""; + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePullMultipart.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimePullMultipart.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,121 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; +import com.sun.xml.internal.messaging.saaj.soap.AttachmentPartImpl; +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import javax.activation.DataSource; +import javax.xml.soap.AttachmentPart; +import com.sun.xml.internal.org.jvnet.mimepull.MIMEConfig; +import com.sun.xml.internal.org.jvnet.mimepull.MIMEMessage; +import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart; + +/** + * + * @author Kumar + */ +public class MimePullMultipart extends MimeMultipart { + + private InputStream in = null; + private String boundary = null; + private MIMEMessage mm = null; + private DataSource dataSource = null; + private ContentType contType = null; + private String startParam = null; + private MIMEPart soapPart = null; + + public MimePullMultipart(DataSource ds, ContentType ct) + throws MessagingException { + parsed = false; + if (ct==null) + contType = new ContentType(ds.getContentType()); + else + contType = ct; + + dataSource = ds; + boundary = contType.getParameter("boundary"); + } + + public MIMEPart readAndReturnSOAPPart() throws MessagingException { + if (soapPart != null) { + throw new MessagingException("Inputstream from datasource was already consumed"); + } + readSOAPPart(); + return soapPart; + + } + + protected void readSOAPPart() throws MessagingException { + try { + if (soapPart != null) { + return; + } + in = dataSource.getInputStream(); + MIMEConfig config = new MIMEConfig(); //use defaults + mm = new MIMEMessage(in, boundary, config); + String st = contType.getParameter("start"); + if(startParam == null) { + soapPart = mm.getPart(0); + } else { + // Strip <...> from root part's Content-I + if (st != null && st.length() > 2 && st.charAt(0) == '<' && st.charAt(st.length()-1) == '>') { + st = st.substring(1, st.length()-1); + } + startParam = st; + soapPart = mm.getPart(startParam); + + } + } catch (IOException ex) { + throw new MessagingException("No inputstream from datasource", ex); + } + } + + public void parseAll() throws MessagingException { + if (parsed) { + return; + } + if (soapPart == null) { + readSOAPPart(); + } + + List prts = mm.getAttachments(); + for(MIMEPart part : prts) { + if (part != soapPart) { + new AttachmentPartImpl(part); + this.addBodyPart(new MimeBodyPart(part)); + } + } + parsed = true; + } + + protected void parse() throws MessagingException { + parseAll(); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeUtility.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/MimeUtility.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,1507 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)MimeUtility.java 1.45 03/03/10 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + +import java.io.*; +import java.util.*; + +import javax.activation.DataHandler; +import javax.activation.DataSource; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; +import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*; +import com.sun.xml.internal.messaging.saaj.util.SAAJUtil; + +/** + * This is a utility class that provides various MIME related + * functionality.

    + * + * There are a set of methods to encode and decode MIME headers as + * per RFC 2047. A brief description on handling such headers is + * given below:

    + * + * RFC 822 mail headers must contain only US-ASCII + * characters. Headers that contain non US-ASCII characters must be + * encoded so that they contain only US-ASCII characters. Basically, + * this process involves using either BASE64 or QP to encode certain + * characters. RFC 2047 describes this in detail.

    + * + * In Java, Strings contain (16 bit) Unicode characters. ASCII is a + * subset of Unicode (and occupies the range 0 - 127). A String + * that contains only ASCII characters is already mail-safe. If the + * String contains non US-ASCII characters, it must be encoded. An + * additional complexity in this step is that since Unicode is not + * yet a widely used charset, one might want to first charset-encode + * the String into another charset and then do the transfer-encoding. + *

    + * Note that to get the actual bytes of a mail-safe String (say, + * for sending over SMTP), one must do + *

    + *
    + *      byte[] bytes = string.getBytes("iso-8859-1");
    + *
    + * 

    + * + * The setHeader and addHeader methods + * on MimeMessage and MimeBodyPart assume that the given header values + * are Unicode strings that contain only US-ASCII characters. Hence + * the callers of those methods must insure that the values they pass + * do not contain non US-ASCII characters. The methods in this class + * help do this.

    + * + * The getHeader family of methods on MimeMessage and + * MimeBodyPart return the raw header value. These might be encoded + * as per RFC 2047, and if so, must be decoded into Unicode Strings. + * The methods in this class help to do this.

    + * + * Several System properties control strict conformance to the MIME + * spec. Note that these are not session properties but must be set + * globally as System properties.

    + * + * The mail.mime.decodetext.strict property controls + * decoding of MIME encoded words. The MIME spec requires that encoded + * words start at the beginning of a whitespace separated word. Some + * mailers incorrectly include encoded words in the middle of a word. + * If the mail.mime.decodetext.strict System property is + * set to "false", an attempt will be made to decode these + * illegal encoded words. The default is true.

    + * + * The mail.mime.encodeeol.strict property controls the + * choice of Content-Transfer-Encoding for MIME parts that are not of + * type "text". Often such parts will contain textual data for which + * an encoding that allows normal end of line conventions is appropriate. + * In rare cases, such a part will appear to contain entirely textual + * data, but will require an encoding that preserves CR and LF characters + * without change. If the mail.mime.decodetext.strict + * System property is set to "true", such an encoding will + * be used when necessary. The default is false.

    + * + * In addition, the mail.mime.charset System property can + * be used to specify the default MIME charset to use for encoded words + * and text parts that don't otherwise specify a charset. Normally, the + * default MIME charset is derived from the default Java charset, as + * specified in the file.encoding System property. Most + * applications will have no need to explicitly set the default MIME + * charset. In cases where the default MIME charset to be used for + * mail messages is different than the charset used for files stored on + * the system, this property should be set. + * + * @version 1.45, 03/03/10 + * @author John Mani + * @author Bill Shannon + */ + +public class MimeUtility { + + // This class cannot be instantiated + private MimeUtility() { } + + public static final int ALL = -1; + + private static final int BUFFER_SIZE = 1024; + private static boolean decodeStrict = true; + private static boolean encodeEolStrict = false; + private static boolean foldEncodedWords = false; + private static boolean foldText = true; + + static { + try { + String s = SAAJUtil.getSystemProperty("mail.mime.decodetext.strict"); + // default to true + decodeStrict = s == null || !s.equalsIgnoreCase("false"); + s = SAAJUtil.getSystemProperty("mail.mime.encodeeol.strict"); + // default to false + encodeEolStrict = s != null && s.equalsIgnoreCase("true"); + s = SAAJUtil.getSystemProperty("mail.mime.foldencodedwords"); + // default to false + foldEncodedWords = s != null && s.equalsIgnoreCase("true"); + s = SAAJUtil.getSystemProperty("mail.mime.foldtext"); + // default to true + foldText = s == null || !s.equalsIgnoreCase("false"); + } catch (SecurityException sex) { + // ignore it + } + } + + + /** + * Get the content-transfer-encoding that should be applied + * to the input stream of this datasource, to make it mailsafe.

    + * + * The algorithm used here is:
    + *

      + *
    • + * If the primary type of this datasource is "text" and if all + * the bytes in its input stream are US-ASCII, then the encoding + * is "7bit". If more than half of the bytes are non-US-ASCII, then + * the encoding is "base64". If less than half of the bytes are + * non-US-ASCII, then the encoding is "quoted-printable". + *
    • + * If the primary type of this datasource is not "text", then if + * all the bytes of its input stream are US-ASCII, the encoding + * is "7bit". If there is even one non-US-ASCII character, the + * encoding is "base64". + *
    + * + * @param ds DataSource + * @return the encoding. This is either "7bit", + * "quoted-printable" or "base64" + */ + public static String getEncoding(DataSource ds) { + ContentType cType = null; + InputStream is = null; + String encoding = null; + + try { + cType = new ContentType(ds.getContentType()); + is = ds.getInputStream(); + } catch (Exception ex) { + return "base64"; // what else ?! + } + + boolean isText = cType.match("text/*"); + // if not text, stop processing when we see non-ASCII + int i = checkAscii(is, ALL, !isText); + switch (i) { + case ALL_ASCII: + encoding = "7bit"; // all ascii + break; + case MOSTLY_ASCII: + encoding = "quoted-printable"; // mostly ascii + break; + default: + encoding = "base64"; // mostly binary + break; + } + + // Close the input stream + try { + is.close(); + } catch (IOException ioex) { } + + return encoding; + } + + /** + * Same as getEncoding(DataSource) except that instead + * of reading the data from an InputStream it uses the + * writeTo method to examine the data. This is more + * efficient in the common case of a DataHandler + * created with an object and a MIME type (for example, a + * "text/plain" String) because all the I/O is done in this + * thread. In the case requiring an InputStream the + * DataHandler uses a thread, a pair of pipe streams, + * and the writeTo method to produce the data.

    + * + * @since JavaMail 1.2 + */ + public static String getEncoding(DataHandler dh) { + ContentType cType = null; + String encoding = null; + + /* + * Try to pick the most efficient means of determining the + * encoding. If this DataHandler was created using a DataSource, + * the getEncoding(DataSource) method is typically faster. If + * the DataHandler was created with an object, this method is + * much faster. To distinguish the two cases, we use a heuristic. + * A DataHandler created with an object will always have a null name. + * A DataHandler created with a DataSource will usually have a + * non-null name. + * + * XXX - This is actually quite a disgusting hack, but it makes + * a common case run over twice as fast. + */ + if (dh.getName() != null) + return getEncoding(dh.getDataSource()); + + try { + cType = new ContentType(dh.getContentType()); + } catch (Exception ex) { + return "base64"; // what else ?! + } + + if (cType.match("text/*")) { + // Check all of the available bytes + AsciiOutputStream aos = new AsciiOutputStream(false, false); + try { + dh.writeTo(aos); + } catch (IOException ex) { } // ignore it + switch (aos.getAscii()) { + case ALL_ASCII: + encoding = "7bit"; // all ascii + break; + case MOSTLY_ASCII: + encoding = "quoted-printable"; // mostly ascii + break; + default: + encoding = "base64"; // mostly binary + break; + } + } else { // not "text" + // Check all of available bytes, break out if we find + // at least one non-US-ASCII character + AsciiOutputStream aos = + new AsciiOutputStream(true, encodeEolStrict); + try { + dh.writeTo(aos); + } catch (IOException ex) { } // ignore it + if (aos.getAscii() == ALL_ASCII) // all ascii + encoding = "7bit"; + else // found atleast one non-ascii character, use b64 + encoding = "base64"; + } + + return encoding; + } + + /** + * Decode the given input stream. The Input stream returned is + * the decoded input stream. All the encodings defined in RFC 2045 + * are supported here. They include "base64", "quoted-printable", + * "7bit", "8bit", and "binary". In addition, "uuencode" is also + * supported. + * + * @param is input stream + * @param encoding the encoding of the stream. + * @return decoded input stream. + */ + public static InputStream decode(InputStream is, String encoding) + throws MessagingException { + if (encoding.equalsIgnoreCase("base64")) + return new BASE64DecoderStream(is); + else if (encoding.equalsIgnoreCase("quoted-printable")) + return new QPDecoderStream(is); + else if (encoding.equalsIgnoreCase("uuencode") || + encoding.equalsIgnoreCase("x-uuencode") || + encoding.equalsIgnoreCase("x-uue")) + return new UUDecoderStream(is); + else if (encoding.equalsIgnoreCase("binary") || + encoding.equalsIgnoreCase("7bit") || + encoding.equalsIgnoreCase("8bit")) + return is; + else + throw new MessagingException("Unknown encoding: " + encoding); + } + + /** + * Wrap an encoder around the given output stream. + * All the encodings defined in RFC 2045 are supported here. + * They include "base64", "quoted-printable", "7bit", "8bit" and + * "binary". In addition, "uuencode" is also supported. + * + * @param os output stream + * @param encoding the encoding of the stream. + * @return output stream that applies the + * specified encoding. + */ + public static OutputStream encode(OutputStream os, String encoding) + throws MessagingException { + if (encoding == null) + return os; + else if (encoding.equalsIgnoreCase("base64")) + return new BASE64EncoderStream(os); + else if (encoding.equalsIgnoreCase("quoted-printable")) + return new QPEncoderStream(os); + else if (encoding.equalsIgnoreCase("uuencode") || + encoding.equalsIgnoreCase("x-uuencode") || + encoding.equalsIgnoreCase("x-uue")) + return new UUEncoderStream(os); + else if (encoding.equalsIgnoreCase("binary") || + encoding.equalsIgnoreCase("7bit") || + encoding.equalsIgnoreCase("8bit")) + return os; + else + throw new MessagingException("Unknown encoding: " +encoding); + } + + /** + * Wrap an encoder around the given output stream. + * All the encodings defined in RFC 2045 are supported here. + * They include "base64", "quoted-printable", "7bit", "8bit" and + * "binary". In addition, "uuencode" is also supported. + * The filename parameter is used with the "uuencode" + * encoding and is included in the encoded output. + * + * @param os output stream + * @param encoding the encoding of the stream. + * @param filename name for the file being encoded (only used + * with uuencode) + * @return output stream that applies the + * specified encoding. + * @since JavaMail 1.2 + */ + public static OutputStream encode(OutputStream os, String encoding, + String filename) + throws MessagingException { + if (encoding == null) + return os; + else if (encoding.equalsIgnoreCase("base64")) + return new BASE64EncoderStream(os); + else if (encoding.equalsIgnoreCase("quoted-printable")) + return new QPEncoderStream(os); + else if (encoding.equalsIgnoreCase("uuencode") || + encoding.equalsIgnoreCase("x-uuencode") || + encoding.equalsIgnoreCase("x-uue")) + return new UUEncoderStream(os, filename); + else if (encoding.equalsIgnoreCase("binary") || + encoding.equalsIgnoreCase("7bit") || + encoding.equalsIgnoreCase("8bit")) + return os; + else + throw new MessagingException("Unknown encoding: " +encoding); + } + + /** + * Encode a RFC 822 "text" token into mail-safe form as per + * RFC 2047.

    + * + * The given Unicode string is examined for non US-ASCII + * characters. If the string contains only US-ASCII characters, + * it is returned as-is. If the string contains non US-ASCII + * characters, it is first character-encoded using the platform's + * default charset, then transfer-encoded using either the B or + * Q encoding. The resulting bytes are then returned as a Unicode + * string containing only ASCII characters.

    + * + * Note that this method should be used to encode only + * "unstructured" RFC 822 headers.

    + * + * Example of usage: + *

    +     *
    +     *  MimeBodyPart part = ...
    +     *  String rawvalue = "FooBar Mailer, Japanese version 1.1"
    +     *  try {
    +     *    // If we know for sure that rawvalue contains only US-ASCII
    +     *    // characters, we can skip the encoding part
    +     *    part.setHeader("X-mailer", MimeUtility.encodeText(rawvalue));
    +     *  } catch (UnsupportedEncodingException e) {
    +     *    // encoding failure
    +     *  } catch (MessagingException me) {
    +     *   // setHeader() failure
    +     *  }
    +     *
    +     * 

    + * + * @param text unicode string + * @return Unicode string containing only US-ASCII characters + * @exception UnsupportedEncodingException if the encoding fails + */ + public static String encodeText(String text) + throws UnsupportedEncodingException { + return encodeText(text, null, null); + } + + /** + * Encode a RFC 822 "text" token into mail-safe form as per + * RFC 2047.

    + * + * The given Unicode string is examined for non US-ASCII + * characters. If the string contains only US-ASCII characters, + * it is returned as-is. If the string contains non US-ASCII + * characters, it is first character-encoded using the specified + * charset, then transfer-encoded using either the B or Q encoding. + * The resulting bytes are then returned as a Unicode string + * containing only ASCII characters.

    + * + * Note that this method should be used to encode only + * "unstructured" RFC 822 headers. + * + * @param text the header value + * @param charset the charset. If this parameter is null, the + * platform's default chatset is used. + * @param encoding the encoding to be used. Currently supported + * values are "B" and "Q". If this parameter is null, then + * the "Q" encoding is used if most of characters to be + * encoded are in the ASCII charset, otherwise "B" encoding + * is used. + * @return Unicode string containing only US-ASCII characters + */ + public static String encodeText(String text, String charset, + String encoding) + throws UnsupportedEncodingException { + return encodeWord(text, charset, encoding, false); + } + + /** + * Decode "unstructured" headers, that is, headers that are defined + * as '*text' as per RFC 822.

    + * + * The string is decoded using the algorithm specified in + * RFC 2047, Section 6.1.1. If the charset-conversion fails + * for any sequence, an UnsupportedEncodingException is thrown. + * If the String is not an RFC 2047 style encoded header, it is + * returned as-is

    + * + * Example of usage: + *

    +     *
    +     *  MimeBodyPart part = ...
    +     *  String rawvalue = null;
    +     *  String  value = null;
    +     *  try {
    +     *    if ((rawvalue = part.getHeader("X-mailer")[0]) != null)
    +     *      value = MimeUtility.decodeText(rawvalue);
    +     *  } catch (UnsupportedEncodingException e) {
    +     *      // Don't care
    +     *      value = rawvalue;
    +     *  } catch (MessagingException me) { }
    +     *
    +     *  return value;
    +     *
    +     * 

    + * + * @param etext the possibly encoded value + * @exception UnsupportedEncodingException if the charset + * conversion failed. + */ + public static String decodeText(String etext) + throws UnsupportedEncodingException { + /* + * We look for sequences separated by "linear-white-space". + * (as per RFC 2047, Section 6.1.1) + * RFC 822 defines "linear-white-space" as SPACE | HT | CR | NL. + */ + String lwsp = " \t\n\r"; + StringTokenizer st; + + /* + * First, lets do a quick run thru the string and check + * whether the sequence "=?" exists at all. If none exists, + * we know there are no encoded-words in here and we can just + * return the string as-is, without suffering thru the later + * decoding logic. + * This handles the most common case of unencoded headers + * efficiently. + */ + if (etext.indexOf("=?") == -1) + return etext; + + // Encoded words found. Start decoding ... + + st = new StringTokenizer(etext, lwsp, true); + StringBuffer sb = new StringBuffer(); // decode buffer + StringBuffer wsb = new StringBuffer(); // white space buffer + boolean prevWasEncoded = false; + + while (st.hasMoreTokens()) { + char c; + String s = st.nextToken(); + // If whitespace, append it to the whitespace buffer + if (((c = s.charAt(0)) == ' ') || (c == '\t') || + (c == '\r') || (c == '\n')) + wsb.append(c); + else { + // Check if token is an 'encoded-word' .. + String word; + try { + word = decodeWord(s); + // Yes, this IS an 'encoded-word'. + if (!prevWasEncoded && wsb.length() > 0) { + // if the previous word was also encoded, we + // should ignore the collected whitespace. Else + // we include the whitespace as well. + sb.append(wsb); + } + prevWasEncoded = true; + } catch (ParseException pex) { + // This is NOT an 'encoded-word'. + word = s; + // possibly decode inner encoded words + if (!decodeStrict) + word = decodeInnerWords(word); + // include colleced whitespace .. + if (wsb.length() > 0) + sb.append(wsb); + prevWasEncoded = false; + } + sb.append(word); // append the actual word + wsb.setLength(0); // reset wsb for reuse + } + } + return sb.toString(); + } + + /** + * Encode a RFC 822 "word" token into mail-safe form as per + * RFC 2047.

    + * + * The given Unicode string is examined for non US-ASCII + * characters. If the string contains only US-ASCII characters, + * it is returned as-is. If the string contains non US-ASCII + * characters, it is first character-encoded using the platform's + * default charset, then transfer-encoded using either the B or + * Q encoding. The resulting bytes are then returned as a Unicode + * string containing only ASCII characters.

    + * + * This method is meant to be used when creating RFC 822 "phrases". + * The InternetAddress class, for example, uses this to encode + * it's 'phrase' component. + * + * @param text unicode string + * @return Array of Unicode strings containing only US-ASCII + * characters. + * @exception UnsupportedEncodingException if the encoding fails + */ + public static String encodeWord(String word) + throws UnsupportedEncodingException { + return encodeWord(word, null, null); + } + + /** + * Encode a RFC 822 "word" token into mail-safe form as per + * RFC 2047.

    + * + * The given Unicode string is examined for non US-ASCII + * characters. If the string contains only US-ASCII characters, + * it is returned as-is. If the string contains non US-ASCII + * characters, it is first character-encoded using the specified + * charset, then transfer-encoded using either the B or Q encoding. + * The resulting bytes are then returned as a Unicode string + * containing only ASCII characters.

    + * + * @param text unicode string + * @param charset the MIME charset + * @param encoding the encoding to be used. Currently supported + * values are "B" and "Q". If this parameter is null, then + * the "Q" encoding is used if most of characters to be + * encoded are in the ASCII charset, otherwise "B" encoding + * is used. + * @return Unicode string containing only US-ASCII characters + * @exception UnsupportedEncodingException if the encoding fails + */ + public static String encodeWord(String word, String charset, + String encoding) + throws UnsupportedEncodingException { + return encodeWord(word, charset, encoding, true); + } + + /* + * Encode the given string. The parameter 'encodingWord' should + * be true if a RFC 822 "word" token is being encoded and false if a + * RFC 822 "text" token is being encoded. This is because the + * "Q" encoding defined in RFC 2047 has more restrictions when + * encoding "word" tokens. (Sigh) + */ + private static String encodeWord(String string, String charset, + String encoding, boolean encodingWord) + throws UnsupportedEncodingException { + + // If 'string' contains only US-ASCII characters, just + // return it. + int ascii = checkAscii(string); + if (ascii == ALL_ASCII) + return string; + + // Else, apply the specified charset conversion. + String jcharset; + if (charset == null) { // use default charset + jcharset = getDefaultJavaCharset(); // the java charset + charset = getDefaultMIMECharset(); // the MIME equivalent + } else // MIME charset -> java charset + jcharset = javaCharset(charset); + + // If no transfer-encoding is specified, figure one out. + if (encoding == null) { + if (ascii != MOSTLY_NONASCII) + encoding = "Q"; + else + encoding = "B"; + } + + boolean b64; + if (encoding.equalsIgnoreCase("B")) + b64 = true; + else if (encoding.equalsIgnoreCase("Q")) + b64 = false; + else + throw new UnsupportedEncodingException( + "Unknown transfer encoding: " + encoding); + + StringBuffer outb = new StringBuffer(); // the output buffer + doEncode(string, b64, jcharset, + // As per RFC 2047, size of an encoded string should not + // exceed 75 bytes. + // 7 = size of "=?", '?', 'B'/'Q', '?', "?=" + 75 - 7 - charset.length(), // the available space + "=?" + charset + "?" + encoding + "?", // prefix + true, encodingWord, outb); + + return outb.toString(); + } + + private static void doEncode(String string, boolean b64, + String jcharset, int avail, String prefix, + boolean first, boolean encodingWord, StringBuffer buf) + throws UnsupportedEncodingException { + + // First find out what the length of the encoded version of + // 'string' would be. + byte[] bytes = string.getBytes(jcharset); + int len; + if (b64) // "B" encoding + len = BEncoderStream.encodedLength(bytes); + else // "Q" + len = QEncoderStream.encodedLength(bytes, encodingWord); + + int size; + if ((len > avail) && ((size = string.length()) > 1)) { + // If the length is greater than 'avail', split 'string' + // into two and recurse. + doEncode(string.substring(0, size/2), b64, jcharset, + avail, prefix, first, encodingWord, buf); + doEncode(string.substring(size/2, size), b64, jcharset, + avail, prefix, false, encodingWord, buf); + } else { + // length <= than 'avail'. Encode the given string + ByteArrayOutputStream os = new ByteArrayOutputStream(BUFFER_SIZE); + OutputStream eos; // the encoder + if (b64) // "B" encoding + eos = new BEncoderStream(os); + else // "Q" encoding + eos = new QEncoderStream(os, encodingWord); + + try { // do the encoding + eos.write(bytes); + eos.close(); + } catch (IOException ioex) { } + + byte[] encodedBytes = os.toByteArray(); // the encoded stuff + // Now write out the encoded (all ASCII) bytes into our + // StringBuffer + if (!first) // not the first line of this sequence + if (foldEncodedWords) + buf.append("\r\n "); // start a continuation line + else + buf.append(" "); // line will be folded later + + buf.append(prefix); + for (int i = 0; i < encodedBytes.length; i++) + buf.append((char)encodedBytes[i]); + buf.append("?="); // terminate the current sequence + } + } + + /** + * The string is parsed using the rules in RFC 2047 for parsing + * an "encoded-word". If the parse fails, a ParseException is + * thrown. Otherwise, it is transfer-decoded, and then + * charset-converted into Unicode. If the charset-conversion + * fails, an UnsupportedEncodingException is thrown.

    + * + * @param eword the possibly encoded value + * @exception ParseException if the string is not an + * encoded-word as per RFC 2047. + * @exception UnsupportedEncodingException if the charset + * conversion failed. + */ + public static String decodeWord(String eword) + throws ParseException, UnsupportedEncodingException { + + if (!eword.startsWith("=?")) // not an encoded word + throw new ParseException(); + + // get charset + int start = 2; int pos; + if ((pos = eword.indexOf('?', start)) == -1) + throw new ParseException(); + String charset = javaCharset(eword.substring(start, pos)); + + // get encoding + start = pos+1; + if ((pos = eword.indexOf('?', start)) == -1) + throw new ParseException(); + String encoding = eword.substring(start, pos); + + // get encoded-sequence + start = pos+1; + if ((pos = eword.indexOf("?=", start)) == -1) + throw new ParseException(); + String word = eword.substring(start, pos); + + try { + // Extract the bytes from word + ByteArrayInputStream bis = + new ByteArrayInputStream(ASCIIUtility.getBytes(word)); + + // Get the appropriate decoder + InputStream is; + if (encoding.equalsIgnoreCase("B")) + is = new BASE64DecoderStream(bis); + else if (encoding.equalsIgnoreCase("Q")) + is = new QDecoderStream(bis); + else + throw new UnsupportedEncodingException( + "unknown encoding: " + encoding); + + // For b64 & q, size of decoded word <= size of word. So + // the decoded bytes must fit into the 'bytes' array. This + // is certainly more efficient than writing bytes into a + // ByteArrayOutputStream and then pulling out the byte[] + // from it. + int count = bis.available(); + byte[] bytes = new byte[count]; + // count is set to the actual number of decoded bytes + count = is.read(bytes, 0, count); + + // Finally, convert the decoded bytes into a String using + // the specified charset + String s = new String(bytes, 0, count, charset); + if (pos + 2 < eword.length()) { + // there's still more text in the string + String rest = eword.substring(pos + 2); + if (!decodeStrict) + rest = decodeInnerWords(rest); + s += rest; + } + return s; + } catch (UnsupportedEncodingException uex) { + // explicitly catch and rethrow this exception, otherwise + // the below IOException catch will swallow this up! + throw uex; + } catch (IOException ioex) { + // Shouldn't happen. + throw new ParseException(); + } catch (IllegalArgumentException iex) { + /* An unknown charset of the form ISO-XXX-XXX, will cause + * the JDK to throw an IllegalArgumentException ... Since the + * JDK will attempt to create a classname using this string, + * but valid classnames must not contain the character '-', + * and this results in an IllegalArgumentException, rather than + * the expected UnsupportedEncodingException. Yikes + */ + throw new UnsupportedEncodingException(); + } + } + + /** + * Look for encoded words within a word. The MIME spec doesn't + * allow this, but many broken mailers, especially Japanese mailers, + * produce such incorrect encodings. + */ + private static String decodeInnerWords(String word) + throws UnsupportedEncodingException { + int start = 0, i; + StringBuffer buf = new StringBuffer(); + while ((i = word.indexOf("=?", start)) >= 0) { + buf.append(word.substring(start, i)); + int end = word.indexOf("?=", i); + if (end < 0) + break; + String s = word.substring(i, end + 2); + try { + s = decodeWord(s); + } catch (ParseException pex) { + // ignore it, just use the original string + } + buf.append(s); + start = end + 2; + } + if (start == 0) + return word; + if (start < word.length()) + buf.append(word.substring(start)); + return buf.toString(); + } + + /** + * A utility method to quote a word, if the word contains any + * characters from the specified 'specials' list.

    + * + * The HeaderTokenizer class defines two special + * sets of delimiters - MIME and RFC 822.

    + * + * This method is typically used during the generation of + * RFC 822 and MIME header fields. + * + * @param word word to be quoted + * @param specials the set of special characters + * @return the possibly quoted word + * @see javax.mail.internet.HeaderTokenizer#MIME + * @see javax.mail.internet.HeaderTokenizer#RFC822 + */ + public static String quote(String word, String specials) { + int len = word.length(); + + /* + * Look for any "bad" characters, Escape and + * quote the entire string if necessary. + */ + boolean needQuoting = false; + for (int i = 0; i < len; i++) { + char c = word.charAt(i); + if (c == '"' || c == '\\' || c == '\r' || c == '\n') { + // need to escape them and then quote the whole string + StringBuffer sb = new StringBuffer(len + 3); + sb.append('"'); + sb.append(word.substring(0, i)); + int lastc = 0; + for (int j = i; j < len; j++) { + char cc = word.charAt(j); + if ((cc == '"') || (cc == '\\') || + (cc == '\r') || (cc == '\n')) + if (cc == '\n' && lastc == '\r') + ; // do nothing, CR was already escaped + else + sb.append('\\'); // Escape the character + sb.append(cc); + lastc = cc; + } + sb.append('"'); + return sb.toString(); + } else if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0) + // These characters cause the string to be quoted + needQuoting = true; + } + + if (needQuoting) { + StringBuffer sb = new StringBuffer(len + 2); + sb.append('"').append(word).append('"'); + return sb.toString(); + } else + return word; + } + + /** + * Fold a string at linear whitespace so that each line is no longer + * than 76 characters, if possible. If there are more than 76 + * non-whitespace characters consecutively, the string is folded at + * the first whitespace after that sequence. The parameter + * used indicates how many characters have been used in + * the current line; it is usually the length of the header name.

    + * + * Note that line breaks in the string aren't escaped; they probably + * should be. + * + * @param used characters used in line so far + * @param s the string to fold + * @return the folded string + */ + /*public*/ static String fold(int used, String s) { + if (!foldText) + return s; + + int end; + char c; + // Strip trailing spaces + for (end = s.length() - 1; end >= 0; end--) { + c = s.charAt(end); + if (c != ' ' && c != '\t') + break; + } + if (end != s.length() - 1) + s = s.substring(0, end + 1); + + // if the string fits now, just return it + if (used + s.length() <= 76) + return s; + + // have to actually fold the string + StringBuffer sb = new StringBuffer(s.length() + 4); + char lastc = 0; + while (used + s.length() > 76) { + int lastspace = -1; + for (int i = 0; i < s.length(); i++) { + if (lastspace != -1 && used + i > 76) + break; + c = s.charAt(i); + if (c == ' ' || c == '\t') + if (!(lastc == ' ' || lastc == '\t')) + lastspace = i; + lastc = c; + } + if (lastspace == -1) { + // no space, use the whole thing + sb.append(s); + s = ""; + used = 0; + break; + } + sb.append(s.substring(0, lastspace)); + sb.append("\r\n"); + lastc = s.charAt(lastspace); + sb.append(lastc); + s = s.substring(lastspace + 1); + used = 1; + } + sb.append(s); + return sb.toString(); + } + + /** + * Unfold a folded header. Any line breaks that aren't escaped and + * are followed by whitespace are removed. + * + * @param s the string to unfold + * @return the unfolded string + */ + /*public*/ static String unfold(String s) { + if (!foldText) + return s; + + StringBuffer sb = null; + int i; + while ((i = indexOfAny(s, "\r\n")) >= 0) { + int start = i; + int l = s.length(); + i++; // skip CR or NL + if (i < l && s.charAt(i - 1) == '\r' && s.charAt(i) == '\n') + i++; // skip LF + if (start == 0 || s.charAt(start - 1) != '\\') { + char c; + // if next line starts with whitespace, skip all of it + // XXX - always has to be true? + if (i < l && ((c = s.charAt(i)) == ' ' || c == '\t')) { + i++; // skip whitespace + while (i < l && ((c = s.charAt(i)) == ' ' || c == '\t')) + i++; + if (sb == null) + sb = new StringBuffer(s.length()); + if (start != 0) { + sb.append(s.substring(0, start)); + sb.append(' '); + } + s = s.substring(i); + continue; + } + // it's not a continuation line, just leave it in + if (sb == null) + sb = new StringBuffer(s.length()); + sb.append(s.substring(0, i)); + s = s.substring(i); + } else { + // there's a backslash at "start - 1" + // strip it out, but leave in the line break + if (sb == null) + sb = new StringBuffer(s.length()); + sb.append(s.substring(0, start - 1)); + sb.append(s.substring(start, i)); + s = s.substring(i); + } + } + if (sb != null) { + sb.append(s); + return sb.toString(); + } else + return s; + } + + /** + * Return the first index of any of the characters in "any" in "s", + * or -1 if none are found. + * + * This should be a method on String. + */ + private static int indexOfAny(String s, String any) { + return indexOfAny(s, any, 0); + } + + private static int indexOfAny(String s, String any, int start) { + try { + int len = s.length(); + for (int i = start; i < len; i++) { + if (any.indexOf(s.charAt(i)) >= 0) + return i; + } + return -1; + } catch (StringIndexOutOfBoundsException e) { + return -1; + } + } + + /** + * Convert a MIME charset name into a valid Java charset name.

    + * + * @param charset the MIME charset name + * @return the Java charset equivalent. If a suitable mapping is + * not available, the passed in charset is itself returned. + */ + public static String javaCharset(String charset) { + if (mime2java == null || charset == null) + // no mapping table, or charset parameter is null + return charset; + + String alias = (String)mime2java.get(charset.toLowerCase()); + return alias == null ? charset : alias; + } + + /** + * Convert a java charset into its MIME charset name.

    + * + * Note that a future version of JDK (post 1.2) might provide + * this functionality, in which case, we may deprecate this + * method then. + * + * @param charset the JDK charset + * @return the MIME/IANA equivalent. If a mapping + * is not possible, the passed in charset itself + * is returned. + * @since JavaMail 1.1 + */ + public static String mimeCharset(String charset) { + if (java2mime == null || charset == null) + // no mapping table or charset param is null + return charset; + + String alias = (String)java2mime.get(charset.toLowerCase()); + return alias == null ? charset : alias; + } + + private static String defaultJavaCharset; + private static String defaultMIMECharset; + + /** + * Get the default charset corresponding to the system's current + * default locale. If the System property mail.mime.charset + * is set, a system charset corresponding to this MIME charset will be + * returned.

    + * + * @return the default charset of the system's default locale, + * as a Java charset. (NOT a MIME charset) + * @since JavaMail 1.1 + */ + public static String getDefaultJavaCharset() { + if (defaultJavaCharset == null) { + /* + * If mail.mime.charset is set, it controls the default + * Java charset as well. + */ + String mimecs = null; + + mimecs = SAAJUtil.getSystemProperty("mail.mime.charset"); + + if (mimecs != null && mimecs.length() > 0) { + defaultJavaCharset = javaCharset(mimecs); + return defaultJavaCharset; + } + + try { + defaultJavaCharset = System.getProperty("file.encoding", + "8859_1"); + } catch (SecurityException sex) { + + class NullInputStream extends InputStream { + public int read() { + return 0; + } + } + InputStreamReader reader = + new InputStreamReader(new NullInputStream()); + defaultJavaCharset = reader.getEncoding(); + if (defaultJavaCharset == null) + defaultJavaCharset = "8859_1"; + } + } + + return defaultJavaCharset; + } + + /* + * Get the default MIME charset for this locale. + */ + static String getDefaultMIMECharset() { + if (defaultMIMECharset == null) { + defaultMIMECharset = SAAJUtil.getSystemProperty("mail.mime.charset"); + } + if (defaultMIMECharset == null) + defaultMIMECharset = mimeCharset(getDefaultJavaCharset()); + return defaultMIMECharset; + } + + // Tables to map MIME charset names to Java names and vice versa. + // XXX - Should eventually use J2SE 1.4 java.nio.charset.Charset + private static Hashtable mime2java; + private static Hashtable java2mime; + + static { + java2mime = new Hashtable(40); + mime2java = new Hashtable(10); + + try { + // Use this class's classloader to load the mapping file + // XXX - we should use SecuritySupport, but it's in another package + InputStream is = + com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility.class.getResourceAsStream( + "/META-INF/javamail.charset.map"); + + if (is != null) { + is = new LineInputStream(is); + + // Load the JDK-to-MIME charset mapping table + loadMappings((LineInputStream)is, java2mime); + + // Load the MIME-to-JDK charset mapping table + loadMappings((LineInputStream)is, mime2java); + } + } catch (Exception ex) { } + + // If we didn't load the tables, e.g., because we didn't have + // permission, load them manually. The entries here should be + // the same as the default javamail.charset.map. + if (java2mime.isEmpty()) { + java2mime.put("8859_1", "ISO-8859-1"); + java2mime.put("iso8859_1", "ISO-8859-1"); + java2mime.put("ISO8859-1", "ISO-8859-1"); + + java2mime.put("8859_2", "ISO-8859-2"); + java2mime.put("iso8859_2", "ISO-8859-2"); + java2mime.put("ISO8859-2", "ISO-8859-2"); + + java2mime.put("8859_3", "ISO-8859-3"); + java2mime.put("iso8859_3", "ISO-8859-3"); + java2mime.put("ISO8859-3", "ISO-8859-3"); + + java2mime.put("8859_4", "ISO-8859-4"); + java2mime.put("iso8859_4", "ISO-8859-4"); + java2mime.put("ISO8859-4", "ISO-8859-4"); + + java2mime.put("8859_5", "ISO-8859-5"); + java2mime.put("iso8859_5", "ISO-8859-5"); + java2mime.put("ISO8859-5", "ISO-8859-5"); + + java2mime.put("8859_6", "ISO-8859-6"); + java2mime.put("iso8859_6", "ISO-8859-6"); + java2mime.put("ISO8859-6", "ISO-8859-6"); + + java2mime.put("8859_7", "ISO-8859-7"); + java2mime.put("iso8859_7", "ISO-8859-7"); + java2mime.put("ISO8859-7", "ISO-8859-7"); + + java2mime.put("8859_8", "ISO-8859-8"); + java2mime.put("iso8859_8", "ISO-8859-8"); + java2mime.put("ISO8859-8", "ISO-8859-8"); + + java2mime.put("8859_9", "ISO-8859-9"); + java2mime.put("iso8859_9", "ISO-8859-9"); + java2mime.put("ISO8859-9", "ISO-8859-9"); + + java2mime.put("SJIS", "Shift_JIS"); + java2mime.put("MS932", "Shift_JIS"); + java2mime.put("JIS", "ISO-2022-JP"); + java2mime.put("ISO2022JP", "ISO-2022-JP"); + java2mime.put("EUC_JP", "euc-jp"); + java2mime.put("KOI8_R", "koi8-r"); + java2mime.put("EUC_CN", "euc-cn"); + java2mime.put("EUC_TW", "euc-tw"); + java2mime.put("EUC_KR", "euc-kr"); + } + if (mime2java.isEmpty()) { + mime2java.put("iso-2022-cn", "ISO2022CN"); + mime2java.put("iso-2022-kr", "ISO2022KR"); + mime2java.put("utf-8", "UTF8"); + mime2java.put("utf8", "UTF8"); + mime2java.put("ja_jp.iso2022-7", "ISO2022JP"); + mime2java.put("ja_jp.eucjp", "EUCJIS"); + mime2java.put("euc-kr", "KSC5601"); + mime2java.put("euckr", "KSC5601"); + mime2java.put("us-ascii", "ISO-8859-1"); + mime2java.put("x-us-ascii", "ISO-8859-1"); + } + } + + private static void loadMappings(LineInputStream is, Hashtable table) { + String currLine; + + while (true) { + try { + currLine = is.readLine(); + } catch (IOException ioex) { + break; // error in reading, stop + } + + if (currLine == null) // end of file, stop + break; + if (currLine.startsWith("--") && currLine.endsWith("--")) + // end of this table + break; + + // ignore empty lines and comments + if (currLine.trim().length() == 0 || currLine.startsWith("#")) + continue; + + // A valid entry is of the form + // where, := SPACE | HT. Parse this + StringTokenizer tk = new StringTokenizer(currLine, " \t"); + try { + String key = tk.nextToken(); + String value = tk.nextToken(); + table.put(key.toLowerCase(), value); + } catch (NoSuchElementException nex) { } + } + } + + static final int ALL_ASCII = 1; + static final int MOSTLY_ASCII = 2; + static final int MOSTLY_NONASCII = 3; + + /** + * Check if the given string contains non US-ASCII characters. + * @param s string + * @return ALL_ASCII if all characters in the string + * belong to the US-ASCII charset. MOSTLY_ASCII + * if more than half of the available characters + * are US-ASCII characters. Else MOSTLY_NONASCII. + */ + static int checkAscii(String s) { + int ascii = 0, non_ascii = 0; + int l = s.length(); + + for (int i = 0; i < l; i++) { + if (nonascii((int)s.charAt(i))) // non-ascii + non_ascii++; + else + ascii++; + } + + if (non_ascii == 0) + return ALL_ASCII; + if (ascii > non_ascii) + return MOSTLY_ASCII; + + return MOSTLY_NONASCII; + } + + /** + * Check if the given byte array contains non US-ASCII characters. + * @param b byte array + * @return ALL_ASCII if all characters in the string + * belong to the US-ASCII charset. MOSTLY_ASCII + * if more than half of the available characters + * are US-ASCII characters. Else MOSTLY_NONASCII. + * + * XXX - this method is no longer used + */ + static int checkAscii(byte[] b) { + int ascii = 0, non_ascii = 0; + + for (int i=0; i < b.length; i++) { + // The '&' operator automatically causes b[i] to be promoted + // to an int, and we mask out the higher bytes in the int + // so that the resulting value is not a negative integer. + if (nonascii(b[i] & 0xff)) // non-ascii + non_ascii++; + else + ascii++; + } + + if (non_ascii == 0) + return ALL_ASCII; + if (ascii > non_ascii) + return MOSTLY_ASCII; + + return MOSTLY_NONASCII; + } + + /** + * Check if the given input stream contains non US-ASCII characters. + * Upto max bytes are checked. If max is + * set to ALL, then all the bytes available in this + * input stream are checked. If breakOnNonAscii is true + * the check terminates when the first non-US-ASCII character is + * found and MOSTLY_NONASCII is returned. Else, the check continues + * till max bytes or till the end of stream. + * + * @param is the input stream + * @param max maximum bytes to check for. The special value + * ALL indicates that all the bytes in this input + * stream must be checked. + * @param breakOnNonAscii if true, then terminate the + * the check when the first non-US-ASCII character + * is found. + * @return ALL_ASCII if all characters in the string + * belong to the US-ASCII charset. MOSTLY_ASCII + * if more than half of the available characters + * are US-ASCII characters. Else MOSTLY_NONASCII. + */ + static int checkAscii(InputStream is, int max, boolean breakOnNonAscii) { + int ascii = 0, non_ascii = 0; + int len; + int block = 4096; + int linelen = 0; + boolean longLine = false, badEOL = false; + boolean checkEOL = encodeEolStrict && breakOnNonAscii; + byte buf[] = null; + if (max != 0) { + block = (max == ALL) ? 4096 : Math.min(max, 4096); + buf = new byte[block]; + } + while (max != 0) { + try { + if ((len = is.read(buf, 0, block)) == -1) + break; + int lastb = 0; + for (int i = 0; i < len; i++) { + // The '&' operator automatically causes b[i] to + // be promoted to an int, and we mask out the higher + // bytes in the int so that the resulting value is + // not a negative integer. + int b = buf[i] & 0xff; + if (checkEOL && + ((lastb == '\r' && b != '\n') || + (lastb != '\r' && b == '\n'))) + badEOL = true; + if (b == '\r' || b == '\n') + linelen = 0; + else { + linelen++; + if (linelen > 998) // 1000 - CRLF + longLine = true; + } + if (nonascii(b)) { // non-ascii + if (breakOnNonAscii) // we are done + return MOSTLY_NONASCII; + else + non_ascii++; + } else + ascii++; + lastb = b; + } + } catch (IOException ioex) { + break; + } + if (max != ALL) + max -= len; + } + + if (max == 0 && breakOnNonAscii) + // We have been told to break on the first non-ascii character. + // We haven't got any non-ascii character yet, but then we + // have not checked all of the available bytes either. So we + // cannot say for sure that this input stream is ALL_ASCII, + // and hence we must play safe and return MOSTLY_NONASCII + + return MOSTLY_NONASCII; + + if (non_ascii == 0) { // no non-us-ascii characters so far + // If we're looking at non-text data, and we saw CR without LF + // or vice versa, consider this mostly non-ASCII so that it + // will be base64 encoded (since the quoted-printable encoder + // doesn't encode this case properly). + if (badEOL) + return MOSTLY_NONASCII; + // if we've seen a long line, we degrade to mostly ascii + else if (longLine) + return MOSTLY_ASCII; + else + return ALL_ASCII; + } + if (ascii > non_ascii) // mostly ascii + return MOSTLY_ASCII; + return MOSTLY_NONASCII; + } + + static final boolean nonascii(int b) { + return b >= 0177 || (b < 040 && b != '\r' && b != '\n' && b != '\t'); + } +} + +/** + * An OutputStream that determines whether the data written to + * it is all ASCII, mostly ASCII, or mostly non-ASCII. + */ +class AsciiOutputStream extends OutputStream { + private boolean breakOnNonAscii; + private int ascii = 0, non_ascii = 0; + private int linelen = 0; + private boolean longLine = false; + private boolean badEOL = false; + private boolean checkEOL = false; + private int lastb = 0; + private int ret = 0; + + public AsciiOutputStream(boolean breakOnNonAscii, boolean encodeEolStrict) { + this.breakOnNonAscii = breakOnNonAscii; + checkEOL = encodeEolStrict && breakOnNonAscii; + } + + public void write(int b) throws IOException { + check(b); + } + + public void write(byte b[]) throws IOException { + write(b, 0, b.length); + } + + public void write(byte b[], int off, int len) throws IOException { + len += off; + for (int i = off; i < len ; i++) + check(b[i]); + } + + private final void check(int b) throws IOException { + b &= 0xff; + if (checkEOL && + ((lastb == '\r' && b != '\n') || (lastb != '\r' && b == '\n'))) + badEOL = true; + if (b == '\r' || b == '\n') + linelen = 0; + else { + linelen++; + if (linelen > 998) // 1000 - CRLF + longLine = true; + } + if (MimeUtility.nonascii(b)) { // non-ascii + non_ascii++; + if (breakOnNonAscii) { // we are done + ret = MimeUtility.MOSTLY_NONASCII; + throw new EOFException(); + } + } else + ascii++; + lastb = b; + } + + /** + * Return ASCII-ness of data stream. + */ + public int getAscii() { + if (ret != 0) + return ret; + // If we're looking at non-text data, and we saw CR without LF + // or vice versa, consider this mostly non-ASCII so that it + // will be base64 encoded (since the quoted-printable encoder + // doesn't encode this case properly). + if (badEOL) + return MimeUtility.MOSTLY_NONASCII; + else if (non_ascii == 0) { // no non-us-ascii characters so far + // if we've seen a long line, we degrade to mostly ascii + if (longLine) + return MimeUtility.MOSTLY_ASCII; + else + return MimeUtility.ALL_ASCII; + } + if (ascii > non_ascii) // mostly ascii + return MimeUtility.MOSTLY_ASCII; + return MimeUtility.MOSTLY_NONASCII; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParameterList.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParameterList.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,237 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)ParameterList.java 1.10 03/02/12 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + +import java.util.HashMap; +import java.util.Iterator; +import java.util.Map; + +/** + * This class holds MIME parameters (attribute-value pairs). + * + * @version 1.10, 03/02/12 + * @author John Mani + */ + +public final class ParameterList { + + private final HashMap list; + + /** + * No-arg Constructor. + */ + public ParameterList() { + this.list = new HashMap(); + } + + private ParameterList(HashMap m) { + this.list = m; + } + + /** + * Constructor that takes a parameter-list string. The String + * is parsed and the parameters are collected and stored internally. + * A ParseException is thrown if the parse fails. + * Note that an empty parameter-list string is valid and will be + * parsed into an empty ParameterList. + * + * @param s the parameter-list string. + * @exception ParseException if the parse fails. + */ + public ParameterList(String s) throws ParseException { + HeaderTokenizer h = new HeaderTokenizer(s, HeaderTokenizer.MIME); + HeaderTokenizer.Token tk; + int type; + String name; + + list = new HashMap(); + while (true) { + tk = h.next(); + type = tk.getType(); + + if (type == HeaderTokenizer.Token.EOF) // done + return; + + if ((char)type == ';') { + // expect parameter name + tk = h.next(); + // tolerate trailing semicolon, even though it violates the spec + if (tk.getType() == HeaderTokenizer.Token.EOF) + return; + // parameter name must be a MIME Atom + if (tk.getType() != HeaderTokenizer.Token.ATOM) + throw new ParseException(); + name = tk.getValue().toLowerCase(); + + // expect '=' + tk = h.next(); + if ((char)tk.getType() != '=') + throw new ParseException(); + + // expect parameter value + tk = h.next(); + type = tk.getType(); + // parameter value must be a MIME Atom or Quoted String + if (type != HeaderTokenizer.Token.ATOM && + type != HeaderTokenizer.Token.QUOTEDSTRING) + throw new ParseException(); + + list.put(name, tk.getValue()); + } else + throw new ParseException(); + } + } + + /** + * Return the number of parameters in this list. + * + * @return number of parameters. + */ + public int size() { + return list.size(); + } + + /** + * Returns the value of the specified parameter. Note that + * parameter names are case-insensitive. + * + * @param name parameter name. + * @return Value of the parameter. Returns + * null if the parameter is not + * present. + */ + public String get(String name) { + return (String)list.get(name.trim().toLowerCase()); + } + + /** + * Set a parameter. If this parameter already exists, it is + * replaced by this new value. + * + * @param name name of the parameter. + * @param value value of the parameter. + */ + public void set(String name, String value) { + list.put(name.trim().toLowerCase(), value); + } + + /** + * Removes the specified parameter from this ParameterList. + * This method does nothing if the parameter is not present. + * + * @param name name of the parameter. + */ + public void remove(String name) { + list.remove(name.trim().toLowerCase()); + } + + /** + * Return an enumeration of the names of all parameters in this + * list. + * + * @return Enumeration of all parameter names in this list. + */ + public Iterator getNames() { + return list.keySet().iterator(); + } + + + /** + * Convert this ParameterList into a MIME String. If this is + * an empty list, an empty string is returned. + * + * @return String + */ + public String toString() { + return toString(0); + } + + /** + * Convert this ParameterList into a MIME String. If this is + * an empty list, an empty string is returned. + * + * The 'used' parameter specifies the number of character positions + * already taken up in the field into which the resulting parameter + * list is to be inserted. It's used to determine where to fold the + * resulting parameter list. + * + * @param used number of character positions already used, in + * the field into which the parameter list is to + * be inserted. + * @return String + */ + public String toString(int used) { + StringBuffer sb = new StringBuffer(); + Iterator itr = list.entrySet().iterator(); + + while (itr.hasNext()) { + Map.Entry e = (Map.Entry)itr.next(); + String name = (String)e.getKey(); + String value = quote((String)e.getValue()); + sb.append("; "); + used += 2; + int len = name.length() + value.length() + 1; + if (used + len > 76) { // overflows ... + sb.append("\r\n\t"); // .. start new continuation line + used = 8; // account for the starting char + } + sb.append(name).append('='); + used += name.length() + 1; + if (used + value.length() > 76) { // still overflows ... + // have to fold value + String s = MimeUtility.fold(used, value); + sb.append(s); + int lastlf = s.lastIndexOf('\n'); + if (lastlf >= 0) // always true + used += s.length() - lastlf - 1; + else + used += s.length(); + } else { + sb.append(value); + used += value.length(); + } + } + + return sb.toString(); + } + + // Quote a parameter value token if required. + private String quote(String value) { + if ("".equals(value)) + return "\"\""; + return MimeUtility.quote(value, HeaderTokenizer.MIME); + } + + public ParameterList copy() { + return new ParameterList((HashMap)list.clone()); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParseException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/ParseException.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)ParseException.java 1.3 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; + +/** + * The exception thrown due to an error in parsing RFC822 + * or MIME headers + * + * @author John Mani + */ + +public class ParseException extends MessagingException { + + /** + * Constructs a ParseException with no detail message. + */ + public ParseException() { + super(); + } + + /** + * Constructs a ParseException with the specified detail message. + * @param s the detail message + */ + public ParseException(String s) { + super(s); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/SharedInputStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/SharedInputStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,78 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)SharedInputStream.java 1.2 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + +import java.io.InputStream; +import java.io.OutputStream; + +// SAAJ doesn't utilize this, but I think it should. +/** + * An InputStream that is backed by data that can be shared by multiple + * readers may implement this interface. This allows users of such an + * InputStream to determine the current positionin the InputStream, and + * to create new InputStreams representing a subset of the data in the + * original InputStream. The new InputStream will access the same + * underlying data as the original, without copying the data. + * + * @version 1.2, 02/03/27 + * @author Bill Shannon + * @since JavaMail 1.2 + */ + +public interface SharedInputStream { + /** + * Return the current position in the InputStream, as an + * offset from the beginning of the InputStream. + * + * @return the current position + */ + public long getPosition(); + + /** + * Return a new InputStream representing a subset of the data + * from this InputStream, starting at start (inclusive) + * up to end (exclusive). start must be + * non-negative. If end is -1, the new stream ends + * at the same place as this stream. The returned InputStream + * will also implement the SharedInputStream interface. + * + * @param start the starting position + * @param end the ending position + 1 + * @return the new stream + */ + public InputStream newStream(long start, long end); + + /** + * Writes the specified region to another {@link OutputStream}. + */ + public void writeTo(long start,long end, OutputStream out); +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/UniqueValue.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/internet/UniqueValue.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,71 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)UniqueValue.java 1.6 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.internet; + + +/** + * This is a utility class that generates unique values. The generated + * String contains only US-ASCII characters and hence is safe for use + * in RFC822 headers.

    + * + * This is a package private class. + * + * @author John Mani + * @author Max Spivak + * @author Bill Shannon + */ + +class UniqueValue { + /** + * A global part number. Access is not synchronized because the + * value is only one part of the unique value and so doesn't need + * to be accurate. + */ + private static int part = 0; + + /** + * Get a unique value for use in a multipart boundary string. + * + * This implementation generates it by concatenating a global + * part number, a newly created object's hashCode(), + * and the current time (in milliseconds). + */ + public static String getUniqueBoundaryValue() { + StringBuffer s = new StringBuffer(); + + // Unique string is ----=_Part__. + s.append("----=_Part_").append(part++).append("_"). + append(s.hashCode()).append('.'). + append(System.currentTimeMillis()); + return s.toString(); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/ASCIIUtility.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/ASCIIUtility.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,155 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)ASCIIUtility.java 1.9 02/03/27 + */ + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.util; + +import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; + +import java.io.*; + +public class ASCIIUtility { + + // Private constructor so that this class is not instantiated + private ASCIIUtility() { } + + + /** + * Convert the bytes within the specified range of the given byte + * array into a signed integer in the given radix . The range extends + * from start till, but not including end.

    + * + * Based on java.lang.Integer.parseInt() + */ + public static int parseInt(byte[] b, int start, int end, int radix) + throws NumberFormatException { + if (b == null) + throw new NumberFormatException("null"); + + int result = 0; + boolean negative = false; + int i = start; + int limit; + int multmin; + int digit; + + if (end > start) { + if (b[i] == '-') { + negative = true; + limit = Integer.MIN_VALUE; + i++; + } else { + limit = -Integer.MAX_VALUE; + } + multmin = limit / radix; + if (i < end) { + digit = Character.digit((char)b[i++], radix); + if (digit < 0) { + throw new NumberFormatException( + "illegal number: " + toString(b, start, end) + ); + } else { + result = -digit; + } + } + while (i < end) { + // Accumulating negatively avoids surprises near MAX_VALUE + digit = Character.digit((char)b[i++], radix); + if (digit < 0) { + throw new NumberFormatException("illegal number"); + } + if (result < multmin) { + throw new NumberFormatException("illegal number"); + } + result *= radix; + if (result < limit + digit) { + throw new NumberFormatException("illegal number"); + } + result -= digit; + } + } else { + throw new NumberFormatException("illegal number"); + } + if (negative) { + if (i > start + 1) { + return result; + } else { /* Only got "-" */ + throw new NumberFormatException("illegal number"); + } + } else { + return -result; + } + } + + /** + * Convert the bytes within the specified range of the given byte + * array into a String. The range extends from start + * till, but not including end.

    + */ + public static String toString(byte[] b, int start, int end) { + int size = end - start; + char[] theChars = new char[size]; + + for (int i = 0, j = start; i < size; ) + theChars[i++] = (char)(b[j++]&0xff); + + return new String(theChars); + } + + public static byte[] getBytes(String s) { + char [] chars= s.toCharArray(); + int size = chars.length; + byte[] bytes = new byte[size]; + + for (int i = 0; i < size;) + bytes[i] = (byte) chars[i++]; + return bytes; + } + + /** + * + * @deprecated + * this is an expensive operation that require an additional + * buffer reallocation just to get the array of an exact size. + * Unless you absolutely need the exact size array, don't use this. + * Use {@link ByteOutputStream} and {@link ByteOutputStream#write(InputStream)}. + */ + public static byte[] getBytes(InputStream is) throws IOException { + ByteOutputStream bos = null; + try { + bos = new ByteOutputStream(); + bos.write(is); + } finally { + if (bos != null) + bos.close(); + is.close(); + } + return bos.toByteArray(); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64DecoderStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64DecoderStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,256 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)BASE64DecoderStream.java 1.8 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.util; + +import java.io.*; + +/** + * This class implements a BASE64 Decoder. It is implemented as + * a FilterInputStream, so one can just wrap this class around + * any input stream and read bytes from this filter. The decoding + * is done as the bytes are read out. + * + * @author John Mani + * @author Bill Shannon + */ + +public class BASE64DecoderStream extends FilterInputStream { + private byte[] buffer; // cache of decoded bytes + private int bufsize = 0; // size of the cache + private int index = 0; // index into the cache + + /** + * Create a BASE64 decoder that decodes the specified input stream + * @param in the input stream + */ + public BASE64DecoderStream(InputStream in) { + super(in); + buffer = new byte[3]; + } + + /** + * Read the next decoded byte from this input stream. The byte + * is returned as an int in the range 0 + * to 255. If no byte is available because the end of + * the stream has been reached, the value -1 is returned. + * This method blocks until input data is available, the end of the + * stream is detected, or an exception is thrown. + * + * @return next byte of data, or -1 if the end of the + * stream is reached. + * @exception IOException if an I/O error occurs. + * @see java.io.FilterInputStream#in + */ + public int read() throws IOException { + if (index >= bufsize) { + decode(); // Fills up buffer + if (bufsize == 0) // buffer is empty + return -1; + index = 0; // reset index into buffer + } + return buffer[index++] & 0xff; // Zero off the MSB + } + + /** + * Reads up to len decoded bytes of data from this input stream + * into an array of bytes. This method blocks until some input is + * available. + *

    + * + * @param buf the buffer into which the data is read. + * @param off the start offset of the data. + * @param len the maximum number of bytes read. + * @return the total number of bytes read into the buffer, or + * -1 if there is no more data because the end of + * the stream has been reached. + * @exception IOException if an I/O error occurs. + */ + public int read(byte[] buf, int off, int len) throws IOException { + int i, c; + for (i = 0; i < len; i++) { + if ((c = read()) == -1) { + if (i == 0) // At end of stream, so we should + i = -1; // return -1 , NOT 0. + break; + } + buf[off+i] = (byte)c; + } + + return i; + } + + /** + * Tests if this input stream supports marks. Currently this class + * does not support marks + */ + public boolean markSupported() { + return false; // Maybe later .. + } + + /** + * Returns the number of bytes that can be read from this input + * stream without blocking. However, this figure is only + * a close approximation in case the original encoded stream + * contains embedded CRLFs; since the CRLFs are discarded, not decoded + */ + public int available() throws IOException { + // This is only an estimate, since in.available() + // might include CRLFs too .. + return ((in.available() * 3)/4 + (bufsize-index)); + } + + /** + * This character array provides the character to value map + * based on RFC1521. + */ + private final static char pem_array[] = { + 'A','B','C','D','E','F','G','H', // 0 + 'I','J','K','L','M','N','O','P', // 1 + 'Q','R','S','T','U','V','W','X', // 2 + 'Y','Z','a','b','c','d','e','f', // 3 + 'g','h','i','j','k','l','m','n', // 4 + 'o','p','q','r','s','t','u','v', // 5 + 'w','x','y','z','0','1','2','3', // 6 + '4','5','6','7','8','9','+','/' // 7 + }; + + private final static byte pem_convert_array[] = new byte[256]; + + static { + for (int i = 0; i < 255; i++) + pem_convert_array[i] = -1; + for(int i = 0; i < pem_array.length; i++) + pem_convert_array[pem_array[i]] = (byte) i; + } + + /* The decoder algorithm */ + private byte[] decode_buffer = new byte[4]; + private void decode() throws IOException { + bufsize = 0; + /* + * We need 4 valid base64 characters before we start decoding. + * We skip anything that's not a valid base64 character (usually + * just CRLF). + */ + int got = 0; + while (got < 4) { + int i = in.read(); + if (i == -1) { + if (got == 0) + return; // EOF before any data is ok + throw new IOException("Error in encoded stream, got " + got); + } + if (i >= 0 && i < 256 && i == '=' || pem_convert_array[i] != -1) + decode_buffer[got++] = (byte)i; + } + + byte a, b; + a = pem_convert_array[decode_buffer[0] & 0xff]; + b = pem_convert_array[decode_buffer[1] & 0xff]; + // The first decoded byte + buffer[bufsize++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3)); + + if (decode_buffer[2] == '=') // End of this BASE64 encoding + return; + a = b; + b = pem_convert_array[decode_buffer[2] & 0xff]; + // The second decoded byte + buffer[bufsize++] = (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf)); + + if (decode_buffer[3] == '=') // End of this BASE64 encoding + return; + a = b; + b = pem_convert_array[decode_buffer[3] & 0xff]; + // The third decoded byte + buffer[bufsize++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f)); + } + + /** + * Base64 decode a byte array. No line breaks are allowed. + * This method is suitable for short strings, such as those + * in the IMAP AUTHENTICATE protocol, but not to decode the + * entire content of a MIME part. + * + * NOTE: inbuf may only contain valid base64 characters. + * Whitespace is not ignored. + */ + public static byte[] decode(byte[] inbuf) { + int size = (inbuf.length / 4) * 3; + if (size == 0) + return inbuf; + + if (inbuf[inbuf.length - 1] == '=') { + size--; + if (inbuf[inbuf.length - 2] == '=') + size--; + } + byte[] outbuf = new byte[size]; + + int inpos = 0, outpos = 0; + size = inbuf.length; + while (size > 0) { + byte a, b; + a = pem_convert_array[inbuf[inpos++] & 0xff]; + b = pem_convert_array[inbuf[inpos++] & 0xff]; + // The first decoded byte + outbuf[outpos++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3)); + + if (inbuf[inpos] == '=') // End of this BASE64 encoding + return outbuf; + a = b; + b = pem_convert_array[inbuf[inpos++] & 0xff]; + // The second decoded byte + outbuf[outpos++] = (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf)); + + if (inbuf[inpos] == '=') // End of this BASE64 encoding + return outbuf; + a = b; + b = pem_convert_array[inbuf[inpos++] & 0xff]; + // The third decoded byte + outbuf[outpos++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f)); + size -= 4; + } + return outbuf; + } + + /*** begin TEST program *** + public static void main(String argv[]) throws Exception { + FileInputStream infile = new FileInputStream(argv[0]); + BASE64DecoderStream decoder = new BASE64DecoderStream(infile); + int c; + + while ((c = decoder.read()) != -1) + System.out.print((char)c); + System.out.flush(); + } + *** end TEST program ***/ +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64EncoderStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BASE64EncoderStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,244 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)BASE64EncoderStream.java 1.6 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.util; + +import java.io.*; + +/** + * This class implements a BASE64 Encoder. It is implemented as + * a FilterOutputStream, so one can just wrap this class around + * any output stream and write bytes into this filter. The Encoding + * is done as the bytes are written out. + * + * @author John Mani + * @author Bill Shannon + */ + +public class BASE64EncoderStream extends FilterOutputStream { + private byte[] buffer; // cache of bytes that are yet to be encoded + private int bufsize = 0; // size of the cache + private int count = 0; // number of bytes that have been output + private int bytesPerLine; // number of bytes per line + + /** + * Create a BASE64 encoder that encodes the specified input stream + * @param out the output stream + * @param bytesPerLine number of bytes per line. The encoder inserts + * a CRLF sequence after the specified number of bytes + */ + public BASE64EncoderStream(OutputStream out, int bytesPerLine) { + super(out); + buffer = new byte[3]; + this.bytesPerLine = bytesPerLine; + } + + /** + * Create a BASE64 encoder that encodes the specified input stream. + * Inserts the CRLF sequence after outputting 76 bytes. + * @param out the output stream + */ + public BASE64EncoderStream(OutputStream out) { + this(out, 76); + } + + /** + * Encodes len bytes from the specified + * byte array starting at offset off to + * this output stream. + * + * @param b the data. + * @param off the start offset in the data. + * @param len the number of bytes to write. + * @exception IOException if an I/O error occurs. + */ + public void write(byte[] b, int off, int len) throws IOException { + for (int i = 0; i < len; i++) + write(b[off + i]); + } + + /** + * Encodes b.length bytes to this output stream. + * @param b the data to be written. + * @exception IOException if an I/O error occurs. + */ + public void write(byte[] b) throws IOException { + write(b, 0, b.length); + } + + /** + * Encodes the specified byte to this output stream. + * @param c the byte. + * @exception IOException if an I/O error occurs. + */ + public void write(int c) throws IOException { + buffer[bufsize++] = (byte)c; + if (bufsize == 3) { // Encoding unit = 3 bytes + encode(); + bufsize = 0; + } + } + + /** + * Flushes this output stream and forces any buffered output bytes + * to be encoded out to the stream. + * @exception IOException if an I/O error occurs. + */ + public void flush() throws IOException { + if (bufsize > 0) { // If there's unencoded characters in the buffer .. + encode(); // .. encode them + bufsize = 0; + } + out.flush(); + } + + /** + * Forces any buffered output bytes to be encoded out to the stream + * and closes this output stream + */ + public void close() throws IOException { + flush(); + out.close(); + } + + /** This array maps the characters to their 6 bit values */ + private final static char pem_array[] = { + 'A','B','C','D','E','F','G','H', // 0 + 'I','J','K','L','M','N','O','P', // 1 + 'Q','R','S','T','U','V','W','X', // 2 + 'Y','Z','a','b','c','d','e','f', // 3 + 'g','h','i','j','k','l','m','n', // 4 + 'o','p','q','r','s','t','u','v', // 5 + 'w','x','y','z','0','1','2','3', // 6 + '4','5','6','7','8','9','+','/' // 7 + }; + + private void encode() throws IOException { + // If writing out this encoded unit will cause overflow, + // start a new line. + if (count + 4 > bytesPerLine) { + out.write('\r'); + out.write('\n'); + count = 0; + } + + byte a, b, c; + if (bufsize == 1) { + a = buffer[0]; + b = 0; + c = 0; + out.write(pem_array[(a >>> 2) & 0x3F]); + out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]); + out.write('='); // pad character + out.write('='); // pad character + } else if (bufsize == 2) { + a = buffer[0]; + b = buffer[1]; + c = 0; + out.write(pem_array[(a >>> 2) & 0x3F]); + out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]); + out.write(pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]); + out.write('='); // pad character + } else { + a = buffer[0]; + b = buffer[1]; + c = buffer[2]; + out.write(pem_array[(a >>> 2) & 0x3F]); + out.write(pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]); + out.write(pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]); + out.write(pem_array[c & 0x3F]); + } + + // increment count + count += 4; + } + + /** + * Base64 encode a byte array. No line breaks are inserted. + * This method is suitable for short strings, such as those + * in the IMAP AUTHENTICATE protocol, but not to encode the + * entire content of a MIME part. + */ + public static byte[] encode(byte[] inbuf) { + if (inbuf.length == 0) + return inbuf; + byte[] outbuf = new byte[((inbuf.length + 2) / 3) * 4]; + int inpos = 0, outpos = 0; + int size = inbuf.length; + while (size > 0) { + byte a, b, c; + if (size == 1) { + a = inbuf[inpos++]; + b = 0; + c = 0; + outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F]; + outbuf[outpos++] = + (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]; + outbuf[outpos++] = (byte)'='; // pad character + outbuf[outpos++] = (byte)'='; // pad character + } else if (size == 2) { + a = inbuf[inpos++]; + b = inbuf[inpos++]; + c = 0; + outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F]; + outbuf[outpos++] = + (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]; + outbuf[outpos++] = + (byte)pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]; + outbuf[outpos++] = (byte)'='; // pad character + } else { + a = inbuf[inpos++]; + b = inbuf[inpos++]; + c = inbuf[inpos++]; + outbuf[outpos++] = (byte)pem_array[(a >>> 2) & 0x3F]; + outbuf[outpos++] = + (byte)pem_array[((a << 4) & 0x30) + ((b >>> 4) & 0xf)]; + outbuf[outpos++] = + (byte)pem_array[((b << 2) & 0x3c) + ((c >>> 6) & 0x3)]; + outbuf[outpos++] = (byte)pem_array[c & 0x3F]; + } + size -= 3; + } + return outbuf; + } + + /*** begin TEST program + public static void main(String argv[]) throws Exception { + FileInputStream infile = new FileInputStream(argv[0]); + BASE64EncoderStream encoder = new BASE64EncoderStream(System.out); + int c; + + while ((c = infile.read()) != -1) + encoder.write(c); + encoder.close(); + } + *** end TEST program **/ +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BEncoderStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/BEncoderStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)BEncoderStream.java 1.3 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.util; + +import java.io.OutputStream; + +/** + * This class implements a 'B' Encoder as defined by RFC2047 for + * encoding MIME headers. It subclasses the BASE64EncoderStream + * class. + * + * @author John Mani + */ + +public class BEncoderStream extends BASE64EncoderStream { + + /** + * Create a 'B' encoder that encodes the specified input stream. + * @param out the output stream + */ + public BEncoderStream(OutputStream out) { + super(out, Integer.MAX_VALUE); // MAX_VALUE is 2^31, should + // suffice (!) to indicate that + // CRLFs should not be inserted + } + + /** + * Returns the length of the encoded version of this byte array. + */ + public static int encodedLength(byte[] b) { + return ((b.length + 2)/3) * 4; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/LineInputStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/LineInputStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,112 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)LineInputStream.java 1.7 03/01/07 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.util; + +import java.io.*; + +/** + * This class is to support reading CRLF terminated lines that + * contain only US-ASCII characters from an input stream. Provides + * functionality that is similar to the deprecated + * DataInputStream.readLine(). Expected use is to read + * lines as String objects from a RFC822 stream. + * + * It is implemented as a FilterInputStream, so one can just wrap + * this class around any input stream and read bytes from this filter. + * + * @author John Mani + */ + +public final class LineInputStream extends FilterInputStream { + + private char[] lineBuffer = null; // reusable byte buffer + + public LineInputStream(InputStream in) { + super(in); + } + + /** + * Read a line containing only ASCII characters from the input + * stream. A line is terminated by a CR or NL or CR-NL sequence. + * A common error is a CR-CR-NL sequence, which will also terminate + * a line. + * The line terminator is not returned as part of the returned + * String. Returns null if no data is available.

    + * + * This class is similar to the deprecated + * DataInputStream.readLine() + */ + public String readLine() throws IOException { + InputStream in = this.in; + char[] buf = lineBuffer; + + if (buf == null) + buf = lineBuffer = new char[128]; + + int c1; + int room = buf.length; + int offset = 0; + + while ((c1 = in.read()) != -1) { + if (c1 == '\n') // Got NL, outa here. + break; + else if (c1 == '\r') { + // Got CR, is the next char NL ? + int c2 = in.read(); + if (c2 == '\r') // discard extraneous CR + c2 = in.read(); + if (c2 != '\n') { + // If not NL, push it back + if (!(in instanceof PushbackInputStream)) + in = this.in = new PushbackInputStream(in); + ((PushbackInputStream)in).unread(c2); + } + break; // outa here. + } + + // Not CR, NL or CR-NL ... + // .. Insert the byte into our byte buffer + if (--room < 0) { // No room, need to grow. + buf = new char[offset + 128]; + room = buf.length - offset - 1; + System.arraycopy(lineBuffer, 0, buf, 0, offset); + lineBuffer = buf; + } + buf[offset++] = (char)c1; + } + + if ((c1 == -1) && (offset == 0)) + return null; + + return String.copyValueOf(buf, 0, offset); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/OutputUtil.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/OutputUtil.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,69 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)OutputUtil.java 1.6 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.util; + +import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; + +import java.io.OutputStream; +import java.io.IOException; + +/** + * This class is to support writing out Strings as a sequence of bytes + * terminated by a CRLF sequence. The String must contain only US-ASCII + * characters.

    + * + * The expected use is to write out RFC822 style headers to an output + * stream.

    + * + * @author Kohsuke Kawaguchi + */ +public abstract class OutputUtil { + private static byte[] newline = {'\r','\n'}; + + public static void writeln(String s,OutputStream out) throws IOException { + writeAsAscii(s,out); + writeln(out); + } + + /** + * Writes a string as ASCII string. + */ + public static void writeAsAscii(String s,OutputStream out) throws IOException { + int len = s.length(); + for( int i=0; iint in the range 0 + * to 255. If no byte is available because the end of + * the stream has been reached, the value -1 is returned. + * This method blocks until input data is available, the end of the + * stream is detected, or an exception is thrown. + * + * @return the next byte of data, or -1 if the end of the + * stream is reached. + * @exception IOException if an I/O error occurs. + */ + public int read() throws IOException { + int c = in.read(); + + if (c == '_') // Return '_' as ' ' + return ' '; + else if (c == '=') { + // QP Encoded atom. Get the next two bytes .. + ba[0] = (byte)in.read(); + ba[1] = (byte)in.read(); + // .. and decode them + try { + return ASCIIUtility.parseInt(ba, 0, 2, 16); + } catch (NumberFormatException nex) { + throw new IOException("Error in QP stream " + nex.getMessage()); + } + } else + return c; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QEncoderStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QEncoderStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,111 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)QEncoderStream.java 1.4 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.util; + +import java.io.IOException; +import java.io.OutputStream; + +/** + * This class implements a Q Encoder as defined by RFC 2047 for + * encoding MIME headers. It subclasses the QPEncoderStream class. + * + * @author John Mani + */ + +public class QEncoderStream extends QPEncoderStream { + + private String specials; + private static String WORD_SPECIALS = "=_?\"#$%&'(),.:;<>@[\\]^`{|}~"; + private static String TEXT_SPECIALS = "=_?"; + + /** + * Create a Q encoder that encodes the specified input stream + * @param out the output stream + * @param encodingWord true if we are Q-encoding a word within a + * phrase. + */ + public QEncoderStream(OutputStream out, boolean encodingWord) { + super(out, Integer.MAX_VALUE); // MAX_VALUE is 2^31, should + // suffice (!) to indicate that + // CRLFs should not be inserted + // when encoding rfc822 headers + + // a RFC822 "word" token has more restrictions than a + // RFC822 "text" token. + specials = encodingWord ? WORD_SPECIALS : TEXT_SPECIALS; + } + + /** + * Encodes the specified byte to this output stream. + * @param c the byte. + * @exception IOException if an I/O error occurs. + */ + public void write(int c) throws IOException { + c = c & 0xff; // Turn off the MSB. + if (c == ' ') + output('_', false); + else if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0) + // Encoding required. + output(c, true); + else // No encoding required + output(c, false); + } + + /** + * Returns the length of the encoded version of this byte array. + */ + public static int encodedLength(byte[] b, boolean encodingWord) { + int len = 0; + String specials = encodingWord ? WORD_SPECIALS: TEXT_SPECIALS; + for (int i = 0; i < b.length; i++) { + int c = b[i] & 0xff; // Mask off MSB + if (c < 040 || c >= 0177 || specials.indexOf(c) >= 0) + // needs encoding + len += 3; // Q-encoding is 1 -> 3 conversion + else + len++; + } + return len; + } + + /**** begin TEST program *** + public static void main(String argv[]) throws Exception { + FileInputStream infile = new FileInputStream(argv[0]); + QEncoderStream encoder = new QEncoderStream(System.out); + int c; + + while ((c = infile.read()) != -1) + encoder.write(c); + encoder.close(); + } + *** end TEST program ***/ +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPDecoderStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPDecoderStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,198 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)QPDecoderStream.java 1.9 02/04/02 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.util; + +import java.io.*; + +/** + * This class implements a QP Decoder. It is implemented as + * a FilterInputStream, so one can just wrap this class around + * any input stream and read bytes from this filter. The decoding + * is done as the bytes are read out. + * + * @author John Mani + */ + +public class QPDecoderStream extends FilterInputStream { + protected byte[] ba = new byte[2]; + protected int spaces = 0; + + /** + * Create a Quoted Printable decoder that decodes the specified + * input stream. + * @param in the input stream + */ + public QPDecoderStream(InputStream in) { + super(new PushbackInputStream(in, 2)); // pushback of size=2 + } + + /** + * Read the next decoded byte from this input stream. The byte + * is returned as an int in the range 0 + * to 255. If no byte is available because the end of + * the stream has been reached, the value -1 is returned. + * This method blocks until input data is available, the end of the + * stream is detected, or an exception is thrown. + * + * @return the next byte of data, or -1 if the end of the + * stream is reached. + * @exception IOException if an I/O error occurs. + */ + public int read() throws IOException { + if (spaces > 0) { + // We have cached space characters, return one + spaces--; + return ' '; + } + + int c = in.read(); + + if (c == ' ') { + // Got space, keep reading till we get a non-space char + while ((c = in.read()) == ' ') + spaces++; + + if (c == '\r' || c == '\n' || c == -1) + // If the non-space char is CR/LF/EOF, the spaces we got + // so far is junk introduced during transport. Junk 'em. + spaces = 0; + else { + // The non-space char is NOT CR/LF, the spaces are valid. + ((PushbackInputStream)in).unread(c); + c = ' '; + } + return c; // return either or + } + else if (c == '=') { + // QP Encoded atom. Decode the next two bytes + int a = in.read(); + + if (a == '\n') { + /* Hmm ... not really confirming QP encoding, but lets + * allow this as a LF terminated encoded line .. and + * consider this a soft linebreak and recurse to fetch + * the next char. + */ + return read(); + } else if (a == '\r') { + // Expecting LF. This forms a soft linebreak to be ignored. + int b = in.read(); + if (b != '\n') + /* Not really confirming QP encoding, but + * lets allow this as well. + */ + ((PushbackInputStream)in).unread(b); + return read(); + } else if (a == -1) { + // Not valid QP encoding, but we be nice and tolerant here ! + return -1; + } else { + ba[0] = (byte)a; + ba[1] = (byte)in.read(); + try { + return ASCIIUtility.parseInt(ba, 0, 2, 16); + } catch (NumberFormatException nex) { + /* + System.err.println( + "Illegal characters in QP encoded stream: " + + ASCIIUtility.toString(ba, 0, 2) + ); + */ + + ((PushbackInputStream)in).unread(ba); + return c; + } + } + } + return c; + } + + /** + * Reads up to len decoded bytes of data from this input stream + * into an array of bytes. This method blocks until some input is + * available. + *

    + * + * @param buf the buffer into which the data is read. + * @param off the start offset of the data. + * @param len the maximum number of bytes read. + * @return the total number of bytes read into the buffer, or + * -1 if there is no more data because the end of + * the stream has been reached. + * @exception IOException if an I/O error occurs. + */ + public int read(byte[] buf, int off, int len) throws IOException { + int i, c; + for (i = 0; i < len; i++) { + if ((c = read()) == -1) { + if (i == 0) // At end of stream, so we should + i = -1; // return -1 , NOT 0. + break; + } + buf[off+i] = (byte)c; + } + return i; + } + + /** + * Tests if this input stream supports marks. Currently this class + * does not support marks + */ + public boolean markSupported() { + return false; + } + + /** + * Returns the number of bytes that can be read from this input + * stream without blocking. The QP algorithm does not permit + * a priori knowledge of the number of bytes after decoding, so + * this method just invokes the available method + * of the original input stream. + */ + public int available() throws IOException { + // This is bogus ! We don't really know how much + // bytes are available *after* decoding + return in.available(); + } + + /**** begin TEST program + public static void main(String argv[]) throws Exception { + FileInputStream infile = new FileInputStream(argv[0]); + QPDecoderStream decoder = new QPDecoderStream(infile); + int c; + + while ((c = decoder.read()) != -1) + System.out.print((char)c); + System.out.println(); + } + *** end TEST program ****/ +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPEncoderStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/QPEncoderStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,199 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)QPEncoderStream.java 1.6 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.util; + +import java.io.*; + +/** + * This class implements a Quoted Printable Encoder. It is implemented as + * a FilterOutputStream, so one can just wrap this class around + * any output stream and write bytes into this filter. The Encoding + * is done as the bytes are written out. + * + * @author John Mani + */ + +public class QPEncoderStream extends FilterOutputStream { + private int count = 0; // number of bytes that have been output + private int bytesPerLine; // number of bytes per line + private boolean gotSpace = false; + private boolean gotCR = false; + + /** + * Create a QP encoder that encodes the specified input stream + * @param out the output stream + * @param bytesPerLine the number of bytes per line. The encoder + * inserts a CRLF sequence after this many number + * of bytes. + */ + public QPEncoderStream(OutputStream out, int bytesPerLine) { + super(out); + // Subtract 1 to account for the '=' in the soft-return + // at the end of a line + this.bytesPerLine = bytesPerLine - 1; + } + + /** + * Create a QP encoder that encodes the specified input stream. + * Inserts the CRLF sequence after outputting 76 bytes. + * @param out the output stream + */ + public QPEncoderStream(OutputStream out) { + this(out, 76); + } + + /** + * Encodes len bytes from the specified + * byte array starting at offset off to + * this output stream. + * + * @param b the data. + * @param off the start offset in the data. + * @param len the number of bytes to write. + * @exception IOException if an I/O error occurs. + */ + public void write(byte[] b, int off, int len) throws IOException { + for (int i = 0; i < len; i++) + write(b[off + i]); + } + + /** + * Encodes b.length bytes to this output stream. + * @param b the data to be written. + * @exception IOException if an I/O error occurs. + */ + public void write(byte[] b) throws IOException { + write(b, 0, b.length); + } + + /** + * Encodes the specified byte to this output stream. + * @param c the byte. + * @exception IOException if an I/O error occurs. + */ + public void write(int c) throws IOException { + c = c & 0xff; // Turn off the MSB. + if (gotSpace) { // previous character was + if (c == '\r' || c == '\n') + // if CR/LF, we need to encode the char + output(' ', true); + else // no encoding required, just output the char + output(' ', false); + gotSpace = false; + } + + if (c == '\r') { + gotCR = true; + outputCRLF(); + } else { + if (c == '\n') { + if (gotCR) + // This is a CRLF sequence, we already output the + // corresponding CRLF when we got the CR, so ignore this + ; + else + outputCRLF(); + } else if (c == ' ') { + gotSpace = true; + } else if (c < 040 || c >= 0177 || c == '=') + // Encoding required. + output(c, true); + else // No encoding required + output(c, false); + // whatever it was, it wasn't a CR + gotCR = false; + } + } + + /** + * Flushes this output stream and forces any buffered output bytes + * to be encoded out to the stream. + * @exception IOException if an I/O error occurs. + */ + public void flush() throws IOException { + out.flush(); + } + + /** + * Forces any buffered output bytes to be encoded out to the stream + * and closes this output stream + */ + public void close() throws IOException { + out.close(); + } + + private void outputCRLF() throws IOException { + out.write('\r'); + out.write('\n'); + count = 0; + } + + // The encoding table + private final static char hex[] = { + '0','1', '2', '3', '4', '5', '6', '7', + '8','9', 'A', 'B', 'C', 'D', 'E', 'F' + }; + + protected void output(int c, boolean encode) throws IOException { + if (encode) { + if ((count += 3) > bytesPerLine) { + out.write('='); + out.write('\r'); + out.write('\n'); + count = 3; // set the next line's length + } + out.write('='); + out.write(hex[c >> 4]); + out.write(hex[c & 0xf]); + } else { + if (++count > bytesPerLine) { + out.write('='); + out.write('\r'); + out.write('\n'); + count = 1; // set the next line's length + } + out.write(c); + } + } + + /**** begin TEST program *** + public static void main(String argv[]) throws Exception { + FileInputStream infile = new FileInputStream(argv[0]); + QPEncoderStream encoder = new QPEncoderStream(System.out); + int c; + + while ((c = infile.read()) != -1) + encoder.write(c); + encoder.close(); + } + *** end TEST program ***/ +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUDecoderStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUDecoderStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,257 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)UUDecoderStream.java 1.8 02/07/08 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.util; + +import java.io.*; + +/** + * This class implements a UUDecoder. It is implemented as + * a FilterInputStream, so one can just wrap this class around + * any input stream and read bytes from this filter. The decoding + * is done as the bytes are read out. + * + * @author John Mani + * @author Bill Shannon + */ + +public class UUDecoderStream extends FilterInputStream { + private String name; + private int mode; + + private byte[] buffer; // cache of decoded bytes + private int bufsize = 0; // size of the cache + private int index = 0; // index into the cache + private boolean gotPrefix = false; + private boolean gotEnd = false; + private LineInputStream lin; + + /** + * Create a UUdecoder that decodes the specified input stream + * @param in the input stream + */ + public UUDecoderStream(InputStream in) { + super(in); + lin = new LineInputStream(in); + buffer = new byte[45]; // max decoded chars in a line = 45 + } + + /** + * Read the next decoded byte from this input stream. The byte + * is returned as an int in the range 0 + * to 255. If no byte is available because the end of + * the stream has been reached, the value -1 is returned. + * This method blocks until input data is available, the end of the + * stream is detected, or an exception is thrown. + * + * @return next byte of data, or -1 if the end of + * stream is reached. + * @exception IOException if an I/O error occurs. + * @see java.io.FilterInputStream#in + */ + + public int read() throws IOException { + if (index >= bufsize) { + readPrefix(); + if (!decode()) + return -1; + index = 0; // reset index into buffer + } + return buffer[index++] & 0xff; // return lower byte + } + + public int read(byte[] buf, int off, int len) throws IOException { + int i, c; + for (i = 0; i < len; i++) { + if ((c = read()) == -1) { + if (i == 0) // At end of stream, so we should + i = -1; // return -1, NOT 0. + break; + } + buf[off+i] = (byte)c; + } + return i; + } + + public boolean markSupported() { + return false; + } + + public int available() throws IOException { + // This is only an estimate, since in.available() + // might include CRLFs too .. + return ((in.available() * 3)/4 + (bufsize-index)); + } + + /** + * Get the "name" field from the prefix. This is meant to + * be the pathname of the decoded file + * + * @return name of decoded file + * @exception IOException if an I/O error occurs. + */ + public String getName() throws IOException { + readPrefix(); + return name; + } + + /** + * Get the "mode" field from the prefix. This is the permission + * mode of the source file. + * + * @return permission mode of source file + * @exception IOException if an I/O error occurs. + */ + public int getMode() throws IOException { + readPrefix(); + return mode; + } + + /** + * UUencoded streams start off with the line: + * "begin " + * Search for this prefix and gobble it up. + */ + private void readPrefix() throws IOException { + if (gotPrefix) // got the prefix + return; + + String s; + for (;;) { + // read till we get the prefix: "begin MODE FILENAME" + s = lin.readLine(); // NOTE: readLine consumes CRLF pairs too + if (s == null) + throw new IOException("UUDecoder error: No Begin"); + if (s.regionMatches(true, 0, "begin", 0, 5)) { + try { + mode = Integer.parseInt(s.substring(6,9)); + } catch (NumberFormatException ex) { + throw new IOException("UUDecoder error: " + ex.toString()); + } + name = s.substring(10); + gotPrefix = true; + return; + } + } + } + + private boolean decode() throws IOException { + + if (gotEnd) + return false; + bufsize = 0; + String line; + do { + line = lin.readLine(); + + /* + * Improperly encoded data sometimes omits the zero length + * line that starts with a space character, we detect the + * following "end" line here. + */ + if (line == null) + throw new IOException("Missing End"); + if (line.regionMatches(true, 0, "end", 0, 3)) { + gotEnd = true; + return false; + } + } while (line.length() == 0); + int count = line.charAt(0); + if (count < ' ') + throw new IOException("Buffer format error"); + + /* + * The first character in a line is the number of original (not + * the encoded atoms) characters in the line. Note that all the + * code below has to handle the character that indicates + * end of encoded stream. + */ + count = (count - ' ') & 0x3f; + + if (count == 0) { + line = lin.readLine(); + if (line == null || !line.regionMatches(true, 0, "end", 0, 3)) + throw new IOException("Missing End"); + gotEnd = true; + return false; + } + + int need = ((count * 8)+5)/6; +//System.out.println("count " + count + ", need " + need + ", len " + line.length()); + if (line.length() < need + 1) + throw new IOException("Short buffer error"); + + int i = 1; + byte a, b; + /* + * A correct uuencoder always encodes 3 characters at a time, even + * if there aren't 3 characters left. But since some people out + * there have broken uuencoders we handle the case where they + * don't include these "unnecessary" characters. + */ + while (bufsize < count) { + // continue decoding until we get 'count' decoded chars + a = (byte)((line.charAt(i++) - ' ') & 0x3f); + b = (byte)((line.charAt(i++) - ' ') & 0x3f); + buffer[bufsize++] = (byte)(((a << 2) & 0xfc) | ((b >>> 4) & 3)); + + if (bufsize < count) { + a = b; + b = (byte)((line.charAt(i++) - ' ') & 0x3f); + buffer[bufsize++] = + (byte)(((a << 4) & 0xf0) | ((b >>> 2) & 0xf)); + } + + if (bufsize < count) { + a = b; + b = (byte)((line.charAt(i++) - ' ') & 0x3f); + buffer[bufsize++] = (byte)(((a << 6) & 0xc0) | (b & 0x3f)); + } + } + return true; + } + + /*** begin TEST program ***** + public static void main(String argv[]) throws Exception { + FileInputStream infile = new FileInputStream(argv[0]); + UUDecoderStream decoder = new UUDecoderStream(infile); + int c; + + try { + while ((c = decoder.read()) != -1) + System.out.write(c); + System.out.flush(); + } catch (Exception e) { + e.printStackTrace(); + } + } + **** end TEST program ****/ +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUEncoderStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/packaging/mime/util/UUEncoderStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,206 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @(#)UUEncoderStream.java 1.3 02/03/27 + */ + + + +package com.sun.xml.internal.messaging.saaj.packaging.mime.util; + +import java.io.*; + +/** + * This class implements a UUEncoder. It is implemented as + * a FilterOutputStream, so one can just wrap this class around + * any output stream and write bytes into this filter. The Encoding + * is done as the bytes are written out. + * + * @author John Mani + */ + +public class UUEncoderStream extends FilterOutputStream { + private byte[] buffer; // cache of bytes that are yet to be encoded + private int bufsize = 0; // size of the cache + private boolean wrotePrefix = false; + + protected String name; // name of file + protected int mode; // permissions mode + + /** + * Create a UUencoder that encodes the specified input stream + * @param out the output stream + */ + public UUEncoderStream(OutputStream out) { + this(out, "encoder.buf", 644); + } + + /** + * Create a UUencoder that encodes the specified input stream + * @param out the output stream + * @param name Specifies a name for the encoded buffer + */ + public UUEncoderStream(OutputStream out, String name) { + this(out, name, 644); + } + + /** + * Create a UUencoder that encodes the specified input stream + * @param out the output stream + * @param name Specifies a name for the encoded buffer + * @param mode Specifies permission mode for the encoded buffer + */ + public UUEncoderStream(OutputStream out, String name, int mode) { + super(out); + this.name = name; + this.mode = mode; + buffer = new byte[45]; + } + + /** + * Set up the buffer name and permission mode. + * This method has any effect only if it is invoked before + * you start writing into the output stream + */ + public void setNameMode(String name, int mode) { + this.name = name; + this.mode = mode; + } + + public void write(byte[] b, int off, int len) throws IOException { + for (int i = 0; i < len; i++) + write(b[off + i]); + } + + public void write(byte[] data) throws IOException { + write(data, 0, data.length); + } + + public void write(int c) throws IOException { + /* buffer up characters till we get a line's worth, then encode + * and write them out. Max number of characters allowed per + * line is 45. + */ + buffer[bufsize++] = (byte)c; + if (bufsize == 45) { + writePrefix(); + encode(); + bufsize = 0; + } + } + + public void flush() throws IOException { + if (bufsize > 0) { // If there's unencoded characters in the buffer + writePrefix(); + encode(); // .. encode them + } + writeSuffix(); + out.flush(); + } + + public void close() throws IOException { + flush(); + out.close(); + } + + /** + * Write out the prefix: "begin " + */ + private void writePrefix() throws IOException { + if (!wrotePrefix) { + PrintStream ps = new PrintStream(out); + ps.println("begin " + mode + " " + name); + ps.flush(); + wrotePrefix = true; + } + } + + /** + * Write a single line containing space and the suffix line + * containing the single word "end" (terminated by a newline) + */ + private void writeSuffix() throws IOException { + PrintStream ps = new PrintStream(out); + ps.println(" \nend"); + ps.flush(); + } + + /** + * Encode a line. + * Start off with the character count, followed by the encoded atoms + * and terminate with LF. (or is it CRLF or the local line-terminator ?) + * Take three bytes and encodes them into 4 characters + * If bufsize if not a multiple of 3, the remaining bytes are filled + * with '1'. This insures that the last line won't end in spaces + * and potentiallly be truncated. + */ + private void encode() throws IOException { + byte a, b, c; + int c1, c2, c3, c4; + int i = 0; + + // Start off with the count of characters in the line + out.write((bufsize & 0x3f) + ' '); + + while (i < bufsize) { + a = buffer[i++]; + if (i < bufsize) { + b = buffer[i++]; + if (i < bufsize) + c = buffer[i++]; + else // default c to 1 + c = 1; + } + else { // default b & c to 1 + b = 1; + c = 1; + } + + c1 = (a >>> 2) & 0x3f; + c2 = ((a << 4) & 0x30) | ((b >>> 4) & 0xf); + c3 = ((b << 2) & 0x3c) | ((c >>> 6) & 0x3); + c4 = c & 0x3f; + out.write(c1 + ' '); + out.write(c2 + ' '); + out.write(c3 + ' '); + out.write(c4 + ' '); + } + // Terminate with LF. (should it be CRLF or local line-terminator ?) + out.write('\n'); + } + + /**** begin TEST program ***** + public static void main(String argv[]) throws Exception { + FileInputStream infile = new FileInputStream(argv[0]); + UUEncoderStream encoder = new UUEncoderStream(System.out); + int c; + + while ((c = infile.read()) != -1) + encoder.write(c); + encoder.close(); + } + **** end TEST program *****/ +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/AttachmentPartImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/AttachmentPartImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,612 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.util.ASCIIUtility; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.Header; +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimePartDataSource; +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.InternetHeaders; +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart; +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility; +import com.sun.xml.internal.messaging.saaj.util.ByteOutputStream; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + +import java.io.IOException; +import java.io.InputStream; +import java.io.ByteArrayOutputStream; +import java.io.ByteArrayInputStream; +import java.io.OutputStream; +import java.util.Iterator; +import java.util.List; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.activation.*; +import javax.xml.soap.*; +import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart; + +/** + * Implementation of attachments. + * + * @author Anil Vijendran (akv@eng.sun.com) + */ +public class AttachmentPartImpl extends AttachmentPart { + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); + + private final MimeHeaders headers; + private MimeBodyPart rawContent = null; + private DataHandler dataHandler = null; + + //alternate impl that uses a MIMEPart + private MIMEPart mimePart = null; + + public AttachmentPartImpl() { + headers = new MimeHeaders(); + + // initialization from here should cover most of cases; + // if not, it would be necessary to call + // AttachmentPartImpl.initializeJavaActivationHandlers() + // explicitly by programmer + initializeJavaActivationHandlers(); + } + + public AttachmentPartImpl(MIMEPart part) { + headers = new MimeHeaders(); + mimePart = part; + List hdrs = part.getAllHeaders(); + for (com.sun.xml.internal.org.jvnet.mimepull.Header hd : hdrs) { + headers.addHeader(hd.getName(), hd.getValue()); + } + } + + public int getSize() throws SOAPException { + if (mimePart != null) { + try { + return mimePart.read().available(); + } catch (IOException e) { + return -1; + } + } + if ((rawContent == null) && (dataHandler == null)) + return 0; + + if (rawContent != null) { + try { + return rawContent.getSize(); + } catch (Exception ex) { + log.log( + Level.SEVERE, + "SAAJ0573.soap.attachment.getrawbytes.ioexception", + new String[] { ex.getLocalizedMessage()}); + throw new SOAPExceptionImpl("Raw InputStream Error: " + ex); + } + } else { + ByteOutputStream bout = new ByteOutputStream(); + try { + dataHandler.writeTo(bout); + } catch (IOException ex) { + log.log( + Level.SEVERE, + "SAAJ0501.soap.data.handler.err", + new String[] { ex.getLocalizedMessage()}); + throw new SOAPExceptionImpl("Data handler error: " + ex); + } + return bout.size(); + } + } + + public void clearContent() { + if (mimePart != null) { + mimePart.close(); + mimePart = null; + } + dataHandler = null; + rawContent = null; + } + + public Object getContent() throws SOAPException { + try { + if (mimePart != null) { + //return an inputstream + return mimePart.read(); + } + if (dataHandler != null) { + return getDataHandler().getContent(); + } else if (rawContent != null) { + return rawContent.getContent(); + } else { + log.severe("SAAJ0572.soap.no.content.for.attachment"); + throw new SOAPExceptionImpl("No data handler/content associated with this attachment"); + } + } catch (Exception ex) { + log.log(Level.SEVERE, "SAAJ0575.soap.attachment.getcontent.exception", ex); + throw new SOAPExceptionImpl(ex.getLocalizedMessage()); + } + } + + public void setContent(Object object, String contentType) + throws IllegalArgumentException { + if (mimePart != null) { + mimePart.close(); + mimePart = null; + } + DataHandler dh = new DataHandler(object, contentType); + + setDataHandler(dh); + } + + + public DataHandler getDataHandler() throws SOAPException { + if (mimePart != null) { + //return an inputstream + return new DataHandler(new DataSource() { + + public InputStream getInputStream() throws IOException { + return mimePart.read(); + } + + public OutputStream getOutputStream() throws IOException { + throw new UnsupportedOperationException("getOutputStream cannot be supported : You have enabled LazyAttachments Option"); + } + + public String getContentType() { + return mimePart.getContentType(); + } + + public String getName() { + return "MIMEPart Wrapper DataSource"; + } + }); + } + if (dataHandler == null) { + if (rawContent != null) { + return new DataHandler(new MimePartDataSource(rawContent)); + } + log.severe("SAAJ0502.soap.no.handler.for.attachment"); + throw new SOAPExceptionImpl("No data handler associated with this attachment"); + } + return dataHandler; + } + + public void setDataHandler(DataHandler dataHandler) + throws IllegalArgumentException { + if (mimePart != null) { + mimePart.close(); + mimePart = null; + } + if (dataHandler == null) { + log.severe("SAAJ0503.soap.no.null.to.dataHandler"); + throw new IllegalArgumentException("Null dataHandler argument to setDataHandler"); + } + this.dataHandler = dataHandler; + rawContent = null; + + if (log.isLoggable(Level.FINE)) + log.log(Level.FINE, "SAAJ0580.soap.set.Content-Type", + new String[] { dataHandler.getContentType() }); + setMimeHeader("Content-Type", dataHandler.getContentType()); + } + + public void removeAllMimeHeaders() { + headers.removeAllHeaders(); + } + + public void removeMimeHeader(String header) { + headers.removeHeader(header); + } + + public String[] getMimeHeader(String name) { + return headers.getHeader(name); + } + + public void setMimeHeader(String name, String value) { + headers.setHeader(name, value); + } + + public void addMimeHeader(String name, String value) { + headers.addHeader(name, value); + } + + public Iterator getAllMimeHeaders() { + return headers.getAllHeaders(); + } + + public Iterator getMatchingMimeHeaders(String[] names) { + return headers.getMatchingHeaders(names); + } + + public Iterator getNonMatchingMimeHeaders(String[] names) { + return headers.getNonMatchingHeaders(names); + } + + boolean hasAllHeaders(MimeHeaders hdrs) { + if (hdrs != null) { + Iterator i = hdrs.getAllHeaders(); + while (i.hasNext()) { + MimeHeader hdr = (MimeHeader) i.next(); + String[] values = headers.getHeader(hdr.getName()); + boolean found = false; + + if (values != null) { + for (int j = 0; j < values.length; j++) + if (hdr.getValue().equalsIgnoreCase(values[j])) { + found = true; + break; + } + } + + if (!found) { + return false; + } + } + } + return true; + } + + MimeBodyPart getMimePart() throws SOAPException { + try { + if (this.mimePart != null) { + return new MimeBodyPart(mimePart); + } + if (rawContent != null) { + copyMimeHeaders(headers, rawContent); + return rawContent; + } + + MimeBodyPart envelope = new MimeBodyPart(); + + envelope.setDataHandler(dataHandler); + copyMimeHeaders(headers, envelope); + + return envelope; + } catch (Exception ex) { + log.severe("SAAJ0504.soap.cannot.externalize.attachment"); + throw new SOAPExceptionImpl("Unable to externalize attachment", ex); + } + } + + public static void copyMimeHeaders(MimeHeaders headers, MimeBodyPart mbp) + throws SOAPException { + + Iterator i = headers.getAllHeaders(); + + while (i.hasNext()) + try { + MimeHeader mh = (MimeHeader) i.next(); + + mbp.setHeader(mh.getName(), mh.getValue()); + } catch (Exception ex) { + log.severe("SAAJ0505.soap.cannot.copy.mime.hdr"); + throw new SOAPExceptionImpl("Unable to copy MIME header", ex); + } + } + + public static void copyMimeHeaders(MimeBodyPart mbp, AttachmentPartImpl ap) + throws SOAPException { + try { + List hdr = mbp.getAllHeaders(); + int sz = hdr.size(); + for( int i=0; i { + + private static final String FAILED_TO_CREATE_NEW_INSTANCE = "FAILED_TO_CREATE_NEW_INSTANCE"; + + private WeakHashMap CACHE = new WeakHashMap(); + + public V get() throws Error { + ClassLoader tccl = getContextClassLoader(); + V instance = CACHE.get(tccl); + if (instance == null) { + instance = createNewInstance(); + CACHE.put(tccl, instance); + } + return instance; + } + + public void set(V instance) { + CACHE.put(getContextClassLoader(), instance); + } + + protected abstract V initialValue() throws Exception; + + private V createNewInstance() { + try { + return initialValue(); + } catch (Exception e) { + throw new Error(format(FAILED_TO_CREATE_NEW_INSTANCE, getClass().getName()), e); + } + } + + private static String format(String property, Object... args) { + String text = ResourceBundle.getBundle(ContextClassloaderLocal.class.getName()).getString(property); + return MessageFormat.format(text, args); + } + + private static ClassLoader getContextClassLoader() { + return (ClassLoader) + AccessController.doPrivileged(new PrivilegedAction() { + public Object run() { + ClassLoader cl = null; + try { + cl = Thread.currentThread().getContextClassLoader(); + } catch (SecurityException ex) { + } + return cl; + } + }); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ContextClassloaderLocal.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ContextClassloaderLocal.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,26 @@ +# +# Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +FAILED_TO_CREATE_NEW_INSTANCE=Failed to create new instance of {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/Envelope.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/Envelope.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import java.io.IOException; +import java.io.OutputStream; + +import javax.xml.soap.SOAPEnvelope; +import javax.xml.soap.SOAPException; +import javax.xml.transform.Source; + +/** + * Different implementations for SOAP Envelope must all implement this + * interface. + * + * @author Anil Vijendran (akv@eng.sun.com) + */ +public interface Envelope extends SOAPEnvelope { + /** + * Get the content as a JAXP Source. + */ + Source getContent(); + + /** + * Output the content. + */ + void output(OutputStream out) throws IOException; + + /** + * Output the content. + */ + void output(OutputStream out, boolean isFastInfoset) throws IOException; + + void setStaxBridge(StaxBridge bridge) throws SOAPException; + + StaxBridge getStaxBridge() throws SOAPException; +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/EnvelopeFactory.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/EnvelopeFactory.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,185 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import com.sun.xml.internal.messaging.saaj.LazyEnvelopeSource; +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.util.JAXMStreamSource; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; +import com.sun.xml.internal.messaging.saaj.util.ParserPool; +import com.sun.xml.internal.messaging.saaj.util.RejectDoctypeSaxFilter; +import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer; +import org.xml.sax.InputSource; +import org.xml.sax.XMLReader; + +import javax.xml.parsers.SAXParser; +import javax.xml.soap.SOAPException; +import javax.xml.stream.XMLInputFactory; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.dom.DOMResult; +import javax.xml.transform.sax.SAXSource; +import javax.xml.transform.stax.StAXSource; +import javax.xml.transform.stream.StreamSource; +import java.util.logging.Logger; + +/** + * EnvelopeFactory creates SOAP Envelope objects using different + * underlying implementations. + */ +public class EnvelopeFactory { + + protected static final Logger + log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); + + private static ContextClassloaderLocal parserPool = + new ContextClassloaderLocal() { + @Override + protected ParserPool initialValue() throws Exception { + return new ParserPool(5); + } + }; + + public static Envelope createEnvelope(Source src, SOAPPartImpl soapPart) + throws SOAPException + { + if (src instanceof JAXMStreamSource) { + try { + if (!SOAPPartImpl.lazyContentLength) { + ((JAXMStreamSource) src).reset(); + } + } catch (java.io.IOException ioe) { + log.severe("SAAJ0515.source.reset.exception"); + throw new SOAPExceptionImpl(ioe); + } + } + if (src instanceof LazyEnvelopeSource) { + return lazy((LazyEnvelopeSource)src, soapPart); + } + if (soapPart.message.isLazySoapBodyParsing()) { + return parseEnvelopeStax(src, soapPart); + } else { + return parseEnvelopeSax(src, soapPart); + } + } + + private static Envelope lazy(LazyEnvelopeSource src, SOAPPartImpl soapPart) throws SOAPException { + try { + StaxBridge staxBridge = new StaxLazySourceBridge(src, soapPart); + staxBridge.bridgeEnvelopeAndHeaders(); + Envelope env = (Envelope) soapPart.getEnvelope(); + env.setStaxBridge(staxBridge); + return env; + } catch (XMLStreamException e) { + throw new SOAPException(e); + } + } + + static private XMLInputFactory xmlInputFactory = null; + + private static Envelope parseEnvelopeStax(Source src, SOAPPartImpl soapPart) + throws SOAPException { + XMLStreamReader streamReader = null; + if (src instanceof StAXSource) { + streamReader = ((StAXSource) src).getXMLStreamReader(); + } + try { + if (streamReader == null) { + if (xmlInputFactory == null) xmlInputFactory = XMLInputFactory.newInstance(); + streamReader = xmlInputFactory.createXMLStreamReader(src); + } +// SaajStaxWriter saajWriter = new SaajStaxWriter(soapPart.message, soapPart.document); +// XMLStreamReaderToXMLStreamWriter readerWriterBridge = new XMLStreamReaderToXMLStreamWriter( +// streamReader, saajWriter, soapPart.getSOAPNamespace()); + + StaxBridge readerWriterBridge = new StaxReaderBridge(streamReader, soapPart); + //bridge will stop reading at body element, and parse upon request, so save it + //on the envelope + readerWriterBridge.bridgeEnvelopeAndHeaders(); + + Envelope env = (Envelope) soapPart.getEnvelope(); + env.setStaxBridge(readerWriterBridge); + return env; + } catch (Exception e) { + throw new SOAPException(e); + } + } + private static Envelope parseEnvelopeSax(Source src, SOAPPartImpl soapPart) + throws SOAPException { + // Insert SAX filter to disallow Document Type Declarations since + // they are not legal in SOAP + SAXParser saxParser = null; + if (src instanceof StreamSource) { + try { + saxParser = parserPool.get().get(); + } catch (Exception e) { + log.severe("SAAJ0601.util.newSAXParser.exception"); + throw new SOAPExceptionImpl( + "Couldn't get a SAX parser while constructing a envelope", + e); + } + InputSource is = SAXSource.sourceToInputSource(src); + if (is.getEncoding()== null && soapPart.getSourceCharsetEncoding() != null) { + is.setEncoding(soapPart.getSourceCharsetEncoding()); + } + XMLReader rejectFilter; + try { + rejectFilter = new RejectDoctypeSaxFilter(saxParser); + } catch (Exception ex) { + log.severe("SAAJ0510.soap.cannot.create.envelope"); + throw new SOAPExceptionImpl( + "Unable to create envelope from given source: ", + ex); + } + src = new SAXSource(rejectFilter, is); + } + + try { + Transformer transformer = + EfficientStreamingTransformer.newTransformer(); + DOMResult result = new DOMResult(soapPart); + transformer.transform(src, result); + + Envelope env = (Envelope) soapPart.getEnvelope(); + return env; + } catch (Exception ex) { + if (ex instanceof SOAPVersionMismatchException) { + throw (SOAPVersionMismatchException) ex; + } + log.severe("SAAJ0511.soap.cannot.create.envelope"); + throw new SOAPExceptionImpl( + "Unable to create envelope from given source: ", + ex); + } finally { + if (saxParser != null) { + parserPool.get().returnParser(saxParser); + } + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/FastInfosetDataContentHandler.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/FastInfosetDataContentHandler.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,121 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import java.awt.datatransfer.DataFlavor; +import java.io.IOException; +import java.io.OutputStream; +import java.io.InputStream; + +import javax.activation.*; +import javax.xml.transform.Source; + +import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection; + +/** + * JAF data handler for Fast Infoset content + * + * @author Santiago Pericas-Geertsen + */ +public class FastInfosetDataContentHandler implements DataContentHandler { + public static final String STR_SRC = "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource"; + + public FastInfosetDataContentHandler() { + } + + /** + * return the DataFlavors for this DataContentHandler + * @return The DataFlavors. + */ + public DataFlavor[] getTransferDataFlavors() { // throws Exception; + DataFlavor flavors[] = new DataFlavor[1]; + flavors[0] = new ActivationDataFlavor( + FastInfosetReflection.getFastInfosetSource_class(), + "application/fastinfoset", "Fast Infoset"); + return flavors; + } + + /** + * return the Transfer Data of type DataFlavor from InputStream + * @param df The DataFlavor. + * @param ins The InputStream corresponding to the data. + * @return The constructed Object. + */ + public Object getTransferData(DataFlavor flavor, DataSource dataSource) + throws IOException + { + if (flavor.getMimeType().startsWith("application/fastinfoset")) { + try { + if (flavor.getRepresentationClass().getName().equals(STR_SRC)) { + return FastInfosetReflection.FastInfosetSource_new( + dataSource.getInputStream()); + } + } + catch (Exception e) { + throw new IOException(e.getMessage()); + } + } + return null; + } + + public Object getContent(DataSource dataSource) throws IOException { + try { + return FastInfosetReflection.FastInfosetSource_new( + dataSource.getInputStream()); + } + catch (Exception e) { + throw new IOException(e.getMessage()); + } + } + + /** + * construct an object from a byte stream + * (similar semantically to previous method, we are deciding + * which one to support) + */ + public void writeTo(Object obj, String mimeType, OutputStream os) + throws IOException + { + if (!mimeType.equals("application/fastinfoset")) { + throw new IOException("Invalid content type \"" + mimeType + + "\" for FastInfosetDCH"); + } + + try { + InputStream is = FastInfosetReflection.FastInfosetSource_getInputStream( + (Source) obj); + + int n; byte[] buffer = new byte[4096]; + while ((n = is.read(buffer)) != -1) { + os.write(buffer, 0, n); + } + } + catch (Exception ex) { + throw new IOException( + "Error copying FI source to output stream " + ex.getMessage()); + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/GifDataContentHandler.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/GifDataContentHandler.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,113 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import java.awt.datatransfer.DataFlavor; +import java.io.*; +import java.awt.*; + +import javax.activation.*; + +/** + * DataContentHandler for image/gif. + * + * @author Ana Lindstrom-Tamer + */ +public class GifDataContentHandler extends Component implements DataContentHandler { + private static ActivationDataFlavor myDF = + new ActivationDataFlavor( + java.awt.Image.class, + "image/gif", + "GIF Image"); + + protected ActivationDataFlavor getDF() { + return myDF; + } + + /** + * Return the DataFlavors for this DataContentHandler. + * + * @return The DataFlavors + */ + public DataFlavor[] getTransferDataFlavors() { // throws Exception; + return new DataFlavor[] { getDF()}; + } + + /** + * Return the Transfer Data of type DataFlavor from InputStream. + * + * @param df The DataFlavor + * @param ins The InputStream corresponding to the data + * @return String object + */ + public Object getTransferData(DataFlavor df, DataSource ds) + throws IOException { + // use myDF.equals to be sure to get ActivationDataFlavor.equals, + // which properly ignores Content-Type parameters in comparison + if (getDF().equals(df)) + return getContent(ds); + else + return null; + } + + public Object getContent(DataSource ds) throws IOException { + InputStream is = ds.getInputStream(); + int pos = 0; + int count; + byte buf[] = new byte[1024]; + + while ((count = is.read(buf, pos, buf.length - pos)) != -1) { + pos += count; + if (pos >= buf.length) { + int size = buf.length; + if (size < 256*1024) + size += size; + else + size += 256*1024; + byte tbuf[] = new byte[size]; + System.arraycopy(buf, 0, tbuf, 0, pos); + buf = tbuf; + } + } + Toolkit tk = Toolkit.getDefaultToolkit(); + return tk.createImage(buf, 0, pos); + } + + /** + * Write the object to the output stream, using the specified MIME type. + */ + public void writeTo(Object obj, String type, OutputStream os) + throws IOException { + if (obj != null && !(obj instanceof Image)) + throw new IOException("\"" + getDF().getMimeType() + + "\" DataContentHandler requires Image object, " + + "was given object of type " + obj.getClass().toString()); + + throw new IOException(getDF().getMimeType() + " encoding not supported"); + } + + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ImageDataContentHandler.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ImageDataContentHandler.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,171 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import java.awt.*; +import java.awt.datatransfer.DataFlavor; +import java.awt.image.BufferedImage; +import java.io.*; +import java.util.Arrays; +import java.util.Iterator; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.activation.*; +import javax.imageio.ImageIO; +import javax.imageio.ImageWriter; +import javax.imageio.stream.ImageOutputStream; + +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + +public class ImageDataContentHandler extends Component + implements DataContentHandler { + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); + + private DataFlavor[] flavor; + + public ImageDataContentHandler() { + String[] mimeTypes = ImageIO.getReaderMIMETypes(); + flavor = new DataFlavor[mimeTypes.length]; + for(int i=0; i < mimeTypes.length; i++) { + flavor[i] = new ActivationDataFlavor( + java.awt.Image.class, mimeTypes[i], "Image"); + } + } + + /** + * Returns an array of DataFlavor objects indicating the flavors the + * data can be provided in. The array should be ordered according to + * preference for providing the data (from most richly descriptive to + * least descriptive). + * + * @return The DataFlavors. + */ + public DataFlavor[] getTransferDataFlavors() { + return (DataFlavor[]) Arrays.copyOf(flavor, flavor.length); + } + + /** + * Returns an object which represents the data to be transferred. + * The class of the object returned is defined by the representation class + * of the flavor. + * + * @param df The DataFlavor representing the requested type. + * @param ds The DataSource representing the data to be converted. + * @return The constructed Object. + */ + public Object getTransferData(DataFlavor df, DataSource ds) + throws IOException { + for (int i=0; i < flavor.length; i++) { + if (flavor[i].equals(df)) { + return getContent(ds); + } + } + return null; + } + + /** + * Return an object representing the data in its most preferred form. + * Generally this will be the form described by the first DataFlavor + * returned by the getTransferDataFlavors method. + * + * @param ds The DataSource representing the data to be converted. + * @return The constructed Object. + */ + public Object getContent(DataSource ds) throws IOException { + return ImageIO.read(new BufferedInputStream(ds.getInputStream())); + } + + /** + * Convert the object to a byte stream of the specified MIME type + * and write it to the output stream. + * + * @param obj The object to be converted. + * @param mimeType The requested MIME type of the resulting byte stream. + * @param os The output stream into which to write the converted + * byte stream. + */ + + public void writeTo(Object obj, String type, OutputStream os) + throws IOException { + + try { + BufferedImage bufImage = null; + if (obj instanceof BufferedImage) { + bufImage = (BufferedImage)obj; + } else if (obj instanceof Image) { + bufImage = render((Image)obj); + } else { + log.log(Level.SEVERE, + "SAAJ0520.soap.invalid.obj.type", + new String[] { obj.getClass().toString() }); + throw new IOException( + "ImageDataContentHandler requires Image object, " + + "was given object of type " + + obj.getClass().toString()); + } + ImageWriter writer = null; + Iterator i = ImageIO.getImageWritersByMIMEType(type); + if (i.hasNext()) { + writer = (ImageWriter)i.next(); + } + if (writer != null) { + ImageOutputStream stream = null; + stream = ImageIO.createImageOutputStream(os); + writer.setOutput(stream); + writer.write(bufImage); + writer.dispose(); + stream.close(); + } else { + log.log(Level.SEVERE, "SAAJ0526.soap.unsupported.mime.type", + new String[] { type }); + throw new IOException("Unsupported mime type:"+ type); + } + } catch (Exception e) { + log.severe("SAAJ0525.soap.cannot.encode.img"); + throw new IOException("Unable to encode the image to a stream " + + e.getMessage()); + } + } + + + private BufferedImage render(Image img) throws InterruptedException { + + MediaTracker tracker = new MediaTracker(this); + tracker.addImage(img, 0); + tracker.waitForAll(); + BufferedImage bufImage = new BufferedImage(img.getWidth(null), + img.getHeight(null), BufferedImage.TYPE_INT_RGB); + Graphics g = bufImage.createGraphics(); + g.drawImage(img, 0, 0, null); + g.dispose(); + return bufImage; + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/JpegDataContentHandler.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/JpegDataContentHandler.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,162 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import java.awt.*; +import java.awt.datatransfer.DataFlavor; +import java.awt.image.BufferedImage; +import java.io.*; + +import javax.activation.*; + +//import com.sun.image.codec.jpeg.*; +import javax.imageio.ImageIO; + +/** + * JAF data handler for Jpeg content + * + * @author Ana Lindstrom-Tamer + */ + +public class JpegDataContentHandler + extends Component + implements DataContentHandler { + public static final String STR_SRC = "java.awt.Image"; + + /** + * return the DataFlavors for this DataContentHandler + * @return The DataFlavors. + */ + public DataFlavor[] getTransferDataFlavors() { // throws Exception; + DataFlavor flavors[] = new DataFlavor[1]; + + try { + flavors[0] = + new ActivationDataFlavor( + Class.forName(STR_SRC), + "image/jpeg", + "JPEG"); + } catch (Exception e) { + System.out.println(e); + } + + return flavors; + } + + /** + * return the Transfer Data of type DataFlavor from InputStream + * @param df The DataFlavor. + * @param ins The InputStream corresponding to the data. + * @return The constructed Object. + */ + public Object getTransferData(DataFlavor df, DataSource ds) { + + // this is sort of hacky, but will work for the + // sake of testing... + if (df.getMimeType().startsWith("image/jpeg")) { + if (df.getRepresentationClass().getName().equals(STR_SRC)) { + InputStream inputStream = null; + BufferedImage jpegLoadImage = null; + + try { + inputStream = ds.getInputStream(); + jpegLoadImage = ImageIO.read(inputStream); + + } catch (Exception e) { + System.out.println(e); + } + + return jpegLoadImage; + } + } + return null; + } + + /** + * + */ + public Object getContent(DataSource ds) { // throws Exception; + InputStream inputStream = null; + BufferedImage jpegLoadImage = null; + + try { + inputStream = ds.getInputStream(); + jpegLoadImage = ImageIO.read(inputStream); + + } catch (Exception e) { + } + + return (Image) jpegLoadImage; + } + + /** + * construct an object from a byte stream + * (similar semantically to previous method, we are deciding + * which one to support) + */ + public void writeTo(Object obj, String mimeType, OutputStream os) + throws IOException { + if (!mimeType.equals("image/jpeg")) + throw new IOException( + "Invalid content type \"" + + mimeType + + "\" for ImageContentHandler"); + + if (obj == null) { + throw new IOException("Null object for ImageContentHandler"); + } + + try { + BufferedImage bufImage = null; + if (obj instanceof BufferedImage) { + bufImage = (BufferedImage) obj; + + } else { + Image img = (Image) obj; + MediaTracker tracker = new MediaTracker(this); + tracker.addImage(img, 0); + tracker.waitForAll(); + if (tracker.isErrorAny()) { + throw new IOException("Error while loading image"); + } + bufImage = + new BufferedImage( + img.getWidth(null), + img.getHeight(null), + BufferedImage.TYPE_INT_RGB); + + Graphics g = bufImage.createGraphics(); + g.drawImage(img, 0, 0, null); + } + ImageIO.write(bufImage, "jpeg", os); + + } catch (Exception ex) { + throw new IOException( + "Unable to run the JPEG Encoder on a stream " + + ex.getMessage()); + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LazyEnvelope.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LazyEnvelope.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPException; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +public interface LazyEnvelope extends Envelope { + public XMLStreamReader getPayloadReader() throws SOAPException; + public boolean isLazy(); + public void writeTo(XMLStreamWriter writer) throws XMLStreamException, SOAPException; + + /** + * Retrieve payload qname without materializing its contents + * @return + * @throws SOAPException + */ + public QName getPayloadQName() throws SOAPException; + + /** + * Retrieve payload attribute value without materializing its contents + * @param localName + * @return + * @throws SOAPException + */ + public String getPayloadAttributeValue(String localName) throws SOAPException; + + /** + * Retrieve payload attribute value without materializing its contents + * @param qName + * @return + * @throws SOAPException + */ + public String getPayloadAttributeValue(QName qName) throws SOAPException; +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,110 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for soap pkg +# Error messages +SAAJ0501.soap.data.handler.err=SAAJ0501: Data handler error: {0} +SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: No data handler associated with this attachment +SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Null dataHandler argument to setDataHandler +SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Unable to externalize attachment +SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: Unable to copy MIME header +SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: Unable to copy MIME headers into attachment +# Usage not found. TODO Remove +#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} +SAAJ0508.soap.cannot.register.handlers=SAAJ050: Unable to register handlers in JAF command map + +SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Unable to create envelope from given source +SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Unable to create envelope from given source +SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Unable to create envelope: incorrect factory used during tree construction +SAAJ0513.soap.unknown.ns=SAAJ0513: Unable to create envelope from given source because the namespace was not recognized +SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Unable to create envelope from given source because the root element is not named Envelope +SAAJ0515.source.reset.exception=SAAJ0515: Unable to reset the soap-part content source + +SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler requires Image object, but was given object of type {0} +SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type set to {0} +SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Invalid content-type {0} for ImageContentHandler +SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Null object for ImageContentHandler +SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: Unable to run the JPEG Encoder on a stream +SAAJ0525.soap.cannot.encode.img=SAAJ0525: Unable to encode image to a stream +SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Unsupported mime type {0} + +SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Unrecognized Content-Type +SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Unable to parse content type +SAAJ0532.soap.no.Content-Type=SAAJ0532: Absent Content-Type +SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Cannot create message: incorrect content-type for SOAP version. Got {0}, but expected {1} +SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Unrecognized Content-Type +SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Unable to internalize message +SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type needs to be Multipart/Related and with type=text/xml or application/soap+xml +SAAJ0537.soap.invalid.content-type=SAAJ0537: Invalid Content-Type. Could be an error message instead of a SOAP message +SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: Unable to convert SOAP message into a Multipart object +SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Unable to get header stream in saveChanges +SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Error during saving a multipart message +SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Could not complete operation. Fragment not bound to SOAP part +SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Processing Instructions are not allowed in SOAP documents +SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: Entity References are not allowed in SOAP documents +SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: Source does not have a valid Reader or InputStream +SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Error setting the source for SOAPPart +SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Internal error: stream not of the right type +SAAJ0547.soap.cannot.externalize=SAAJ0547: Error while trying to externalize +SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: Unable to externalize header +SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Bad Content-Type for SOAP Part {0} +SAAJ0550.soap.null.headers=SAAJ0550: Cannot create message: Headers can't be null +SAAJ0551.soap.unsupported.encoding=SAAJ0551: Unsupported encoding {0} +SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML declaration parsing failed +SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode on SOAPPart not supported +SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument on SOAPPart not supported +SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig on SOAPPart not supported +SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode on SOAPPart not supported +SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI on SOAPPart not supported +SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI on SOAPPart not supported +SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking on SOAPPart not supported +SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding on SOAPPart not supported +SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding on SOAPPart not supported +SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone on SOAPPart not supported +SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone on SOAPPart not supported +SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion on SOAPPart not supported +SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion on SOAPPart not supported +SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking on SOAPPart not supported +# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" +SAAJ0567.soap.null.input=SAAJ0567: Null {0} argument to {1} +SAAJ0568.soap.unsupported.protocol=SAAJ0568: Protocol {0} does not support {1} +# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" +SAAJ0569.soap.unknown.protocol=SAAJ0569: Unknown Protocol {0} specified for creating {1} +SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: The parent element of a soap part is not defined +SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Setting value of a soap part is not defined +SAAJ0572.soap.no.content.for.attachment=SAAJ0572: No data handler/content associated with this attachment +SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException while reading the raw attachment content +SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException while trying to obtain the inputstream from datahandler for this attachment +SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Exception while trying to retrieve content for this attachment +SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Exception while trying to set the Raw content for this attachment +SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Exception while trying to get the Raw content for this attachment +SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Exception while trying to set the Decoded content for this attachment +SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Exception while trying to get the Encoded content for this attachment +SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Unable to locate attachment with cid {0} +SAAJ0591.soap.exception.in.set.property=SAAJ0591: Exception {0} when trying to set Property {1} on SOAP Message + +# Info messages +SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type set to {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_de.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_de.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,110 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for soap pkg +# Error messages +SAAJ0501.soap.data.handler.err=SAAJ0501: Daten-Handler-Fehler: {0} +SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: Es ist kein Daten-Handler mit diesem Anhang verkn\u00FCpft +SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Null-dataHandler-Argument f\u00FCr setDataHandler +SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Anhang kann nicht externalisiert werden +SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME-Header kann nicht kopiert werden +SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME-Header k\u00F6nnen nicht in Anhang kopiert werden +# Usage not found. TODO Remove +#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} +SAAJ0508.soap.cannot.register.handlers=SAAJ050: Handler k\u00F6nnen in JAF-Befehlszuordnung nicht registriert werden + +SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Envelope kann nicht aus angegebener Quelle erstellt werden +SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Envelope kann nicht aus angegebener Quelle erstellt werden +SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Envelope kann nicht erstellt werden: falsche Factory bei der Erstellung der Baumstruktur verwendet +SAAJ0513.soap.unknown.ns=SAAJ0513: Envelope kann nicht aus der angegebenen Quelle erstellt werden, weil der Namespace nicht erkannt wurde +SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Envelope kann nicht aus der angegebenen Quelle erstellt werden, weil das Root-Element nicht den Namen "Envelope" hat +SAAJ0515.source.reset.exception=SAAJ0515: soap-part-Contentquelle kann nicht zur\u00FCckgesetzt werden + +SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler erfordert Imageobjekt, Objekt vom Typ {0} wurde jedoch angegeben +SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type auf {0} festgelegt +SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Ung\u00FCltiger Content-Type {0} f\u00FCr ImageContentHandler +SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Null-Objekt f\u00FCr ImageContentHandler +SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: JPEG-Encoder kann nicht in einem Stream ausgef\u00FChrt werden +SAAJ0525.soap.cannot.encode.img=SAAJ0525: Image kann nicht in einem Stream codiert werden +SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Nicht unterst\u00FCtzter MIME-Typ {0} + +SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Nicht erkannter Content-Type +SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Content-Type kann nicht geparst werden +SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type fehlt +SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Nachricht kann nicht erstellt werden: Falscher Content-Type f\u00FCr SOAP-Version. {0} erhalten, jedoch {1} erwartet +SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Nicht erkannter Content-Type +SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Nachricht kann nicht \"internalisiert\" werden. +SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type muss Multipart/Related mit type=text/xml oder application/soap+xml sein +SAAJ0537.soap.invalid.content-type=SAAJ0537: Ung\u00FCltiger Content-Type. K\u00F6nnte eine Fehlermeldung anstelle einer SOAP-Nachricht sein +SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP-Nachricht kann nicht in ein Multipart-Objekt konvertiert werden +SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Header Stream in saveChanges kann nicht abgerufen werden +SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Fehler beim Speichern einer Multipart-Nachricht +SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Vorgang konnte nicht abgeschlossen werden. Fragment nicht an SOAP Part gebunden +SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Verarbeitungsanweisungen sind in SOAP-Dokumenten nicht zul\u00E4ssig +SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: Entity-Referenzen sind in SOAP-Dokumenten nicht zul\u00E4ssig +SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: Quelle hat keinen g\u00FCltigen Reader oder InputStream +SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Fehler beim Festlegen der Quelle f\u00FCr SOAPPart +SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Interner Fehler: Stream hat nicht den richtigen Typ +SAAJ0547.soap.cannot.externalize=SAAJ0547: Fehler bei Externalisierungsversuch +SAAJ0548.soap.cannot.externalize.hdr=SAAJ0504: Header kann nicht externalisiert werden +SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Ung\u00FCltiger Content-Type f\u00FCr SOAPPart {0} +SAAJ0550.soap.null.headers=SAAJ0550: Nachricht kann nicht erstellt werden: Header d\u00FCrfen nicht null sein +SAAJ0551.soap.unsupported.encoding=SAAJ0551: Nicht unterst\u00FCtzte Codierung {0} +SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: Parsing von XML-Deklaration nicht erfolgreich +SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode in SOAPPart nicht unterst\u00FCtzt +SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument in SOAPPart nicht unterst\u00FCtzt +SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig in SOAPPart nicht unterst\u00FCtzt +SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode in SOAPPart nicht unterst\u00FCtzt +SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI in SOAPPart nicht unterst\u00FCtzt +SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI in SOAPPart nicht unterst\u00FCtzt +SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking in SOAPPart nicht unterst\u00FCtzt +SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding in SOAPPart nicht unterst\u00FCtzt +SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding in SOAPPart nicht unterst\u00FCtzt +SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone in SOAPPart nicht unterst\u00FCtzt +SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone in SOAPPart nicht unterst\u00FCtzt +SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion in SOAPPart nicht unterst\u00FCtzt +SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion in SOAPPart nicht unterst\u00FCtzt +SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking in SOAPPart nicht unterst\u00FCtzt +# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" +SAAJ0567.soap.null.input=SAAJ0567: Null-{0}-Argument f\u00FCr {1} +SAAJ0568.soap.unsupported.protocol=SAAJ0568: Protokoll {0} unterst\u00FCtzt {1} nicht +# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" +SAAJ0569.soap.unknown.protocol=SAAJ0569: Unbekanntes Protokoll {0} f\u00FCr Erstellung von {1} angegeben +SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: Das \u00FCbergeordnete Element eines SOAPPart-Teils ist nicht definiert +SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Die Festlegung des Wertes eines SOAPPart-Teils ist nicht definiert +SAAJ0572.soap.no.content.for.attachment=SAAJ0502: Es ist kein Daten-Handler/Content mit diesem Anhang verkn\u00FCpft +SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException beim Lesen des Raw-Anhangscontents +SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException beim Versuch, den Input Stream aus Daten-Handler f\u00FCr diesen Anhang abzurufen +SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Ausnahme beim Versuch, den Content f\u00FCr diesen Anhang abzurufen +SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Ausnahme beim Versuch, den Raw-Content f\u00FCr diesen Anhang festzulegen +SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Ausnahme beim Versuch, den Raw-Content f\u00FCr diesen Anhang abzurufen +SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Ausnahme beim Versuch, den decodierten Content f\u00FCr diesen Anhang festzulegen +SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Ausnahme beim Versuch, den decodierten Content f\u00FCr diesen Anhang abzurufen +SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Anhang mit CID {0} kann nicht gefunden werden +SAAJ0591.soap.exception.in.set.property=SAAJ0591: Ausnahme {0} beim Versuch, Eigenschaft {1} in SOAP-Nachricht festzulegen + +# Info messages +SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type auf {0} festgelegt diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_es.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_es.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,110 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for soap pkg +# Error messages +SAAJ0501.soap.data.handler.err=SAAJ0501: Error de manejador de datos: {0} +SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: no hay ning\u00FAn manejador de datos asociado a este anexo +SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: argumento dataHandler nulo para setDataHandler +SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: no se ha podido externalizar el anexo +SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: no se ha podido copiar la cabecera MIME +SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: no se han podido copiar las cabeceras MIME en el anexo +# Usage not found. TODO Remove +#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} +SAAJ0508.soap.cannot.register.handlers=SAAJ050: no se han podido registrar los manejadores en la asignaci\u00F3n de comandos JAF + +SAAJ0510.soap.cannot.create.envelope=SAAJ0510: no se ha podido crear el elemento Envelope desde el origen especificado +SAAJ0511.soap.cannot.create.envelope=SAAJ0511: no se ha podido crear el elemento Envelope desde el origen especificado +SAAJ0512.soap.incorrect.factory.used=SAAJ0512: No se ha podido crear el elemento Envelope: se ha utilizado una f\u00E1brica incorrecta durante la construcci\u00F3n del \u00E1rbol +SAAJ0513.soap.unknown.ns=SAAJ0513: no se ha podido crear el elemento Envelope desde el origen especificado, porque no se ha reconocido el espacio de nombres +SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: no se ha podido crear el elemento Envelope desde el origen especificado, porque el elemento ra\u00EDz no se denomina Envelope +SAAJ0515.source.reset.exception=SAAJ0515: no se ha podido restablecer el origen del contenido de la parte soap + +SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler necesita un objeto de imagen, pero se ha proporcionado un objeto de tipo {0} +SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type est\u00E1 definido en {0} +SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Content-Type {0} no v\u00E1lido para ImageContentHandler +SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: objeto nulo para ImageContentHandler +SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: no se ha podido ejecutar el codificador JPEG en un flujo +SAAJ0525.soap.cannot.encode.img=SAAJ0525: no se ha podido codificar la imagen en un flujo +SAAJ0526.soap.unsupported.mime.type=SAAJ0526: tipo MIME no soportado {0} + +SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type no reconocido +SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: no se ha podido analizar el tipo de contenido +SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type ausente +SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: No se puede crear el mensaje: content-type incorrecto para la versi\u00F3n de SOAP. Se ha obtenido {0}, pero se esperaba {1} +SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type no reconocido +SAAJ0535.soap.cannot.internalize.message=SAAJ0535: no se ha podido internalizar el mensaje +SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type tiene que ser Multipart/Related y con type=text/xml o application/soap+xml +SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type no v\u00E1lido. Podr\u00EDa ser un mensaje de error en lugar de un mensaje SOAP +SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: no se ha podido convertir un mensaje SOAP en un objeto de varias partes +SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: no se ha podido obtener el flujo de cabeceras en saveChanges +SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: error al guardar un mensaje de varias partes +SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: no se ha podido completar la operaci\u00F3n. El fragmento no est\u00E1 enlazado a la parte SOAP +SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: no se permiten instrucciones de procesamiento en los documentos SOAP +SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: no se permiten referencias a entidades en los documentos SOAP +SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: el origen no tiene un Reader o InputStream v\u00E1lido +SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: error al definir el origen para SOAPPart +SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Error interno: el flujo no es del tipo correcto +SAAJ0547.soap.cannot.externalize=SAAJ0547: Error al intentar externalizar +SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: no se ha podido externalizar la cabecera +SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Content-Type err\u00F3neo para la parte SOAP {0} +SAAJ0550.soap.null.headers=SAAJ0550: no se puede crear el mensaje. Las cabeceras no pueden ser nulas +SAAJ0551.soap.unsupported.encoding=SAAJ0551: codificaci\u00F3n no soportada {0} +SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: fallo en el an\u00E1lisis de la declaraci\u00F3n XML +SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode en SOAPPart no est\u00E1 soportado +SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument en SOAPPart no est\u00E1 soportado +SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig en SOAPPart no est\u00E1 soportado +SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode en SOAPPart no est\u00E1 soportado +SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI en SOAPPart no est\u00E1 soportado +SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI en SOAPPart no est\u00E1 soportado +SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking en SOAPPart no est\u00E1 soportado +SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding en SOAPPart no est\u00E1 soportado +SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding en SOAPPart no est\u00E1 soportado +SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone en SOAPPart no est\u00E1 soportado +SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone en SOAPPart no est\u00E1 soportado +SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion en SOAPPart no est\u00E1 soportado +SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion en SOAPPart no est\u00E1 soportado +SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking en SOAPPart no est\u00E1 soportado +# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" +SAAJ0567.soap.null.input=SAAJ0567: argumento {0} nulo para {1} +SAAJ0568.soap.unsupported.protocol=SAAJ0568: el protocolo {0} no soporta {1} +# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" +SAAJ0569.soap.unknown.protocol=SAAJ0569: se ha especificado un protocolo {0} desconocido para crear {1} +SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: no se ha definido el elemento principal de una parte soap +SAAJ0571.soappart.setValue.not.defined=SAAJ0571: no se ha definido el valor de definici\u00F3n de una parte soap +SAAJ0572.soap.no.content.for.attachment=SAAJ0572: no hay ning\u00FAn manejador/contenido asociado a este anexo +SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: excepci\u00F3n de E/S al leer el contenido del anexo raw +SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: excepci\u00F3n de E/S al intentar obtener el flujo de entrada desde el manejador de datos de este anexo +SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: excepci\u00F3n al intentar recuperar el contenido de este anexo +SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: excepci\u00F3n al intentar definir el contenido raw de este anexo +SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: excepci\u00F3n al intentar obtener el contenido raw de este anexo +SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: excepci\u00F3n al intentar definir el contenido descodificado de este anexo +SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: excepci\u00F3n al intentar obtener el contenido codificado de este anexo +SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: no se ha encontrado el anexo con el CID {0} +SAAJ0591.soap.exception.in.set.property=SAAJ0591: excepci\u00F3n {0} al intentar definir la propiedad {1} en el mensaje SOAP + +# Info messages +SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type definido en {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_fr.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_fr.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,110 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for soap pkg +# Error messages +SAAJ0501.soap.data.handler.err=SAAJ0501 : erreur de gestionnaire de donn\u00E9es : {0} +SAAJ0502.soap.no.handler.for.attachment=SAAJ0502 : aucun gestionnaire de donn\u00E9es associ\u00E9 \u00E0 cette pi\u00E8ce jointe +SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503 : argument dataHandler NULL pour setDataHandler +SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504 : impossible d'externaliser la pi\u00E8ce jointe +SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505 : impossible de copier l'en-t\u00EAte MIME +SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506 : impossible de copier les en-t\u00EAtes MIME dans la pi\u00E8ce jointe +# Usage not found. TODO Remove +#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} +SAAJ0508.soap.cannot.register.handlers=SAAJ050 : impossible d'inscrire les gestionnaires dans la mappe de commande JAF + +SAAJ0510.soap.cannot.create.envelope=SAAJ0510 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e +SAAJ0511.soap.cannot.create.envelope=SAAJ0511 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e +SAAJ0512.soap.incorrect.factory.used=SAAJ0512 : impossible de cr\u00E9er une enveloppe : fabrique incorrecte utilis\u00E9e lors de la construction de l'arborescence +SAAJ0513.soap.unknown.ns=SAAJ0513 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e car l'espace de noms n'a pas \u00E9t\u00E9 reconnu +SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514 : impossible de cr\u00E9er une enveloppe \u00E0 partir de la source donn\u00E9e car l'\u00E9l\u00E9ment racine n'est pas nomm\u00E9 Envelope +SAAJ0515.source.reset.exception=SAAJ0515 : impossible de red\u00E9finir la source de contenu soap-part + +SAAJ0520.soap.invalid.obj.type=SAAJ0520 : DataContentHandler exige un objet de type Image, mais a re\u00E7u un objet de type {0} +SAAJ0521.soap.set.Content-Type=SAAJ0521 : Content-Type d\u00E9fini sur {0} +SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522 : content-type {0} non valide pour ImageContentHandler +SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523 : objet NULL pour ImageContentHandler +SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524 : impossible d'ex\u00E9cuter l'encodeur JPEG sur un flux +SAAJ0525.soap.cannot.encode.img=SAAJ0525 : impossible d'encoder l'image en un flux +SAAJ0526.soap.unsupported.mime.type=SAAJ0526 : type MIME {0} non pris en charge + +SAAJ0530.soap.unknown.Content-Type=SAAJ0530 : Content-Type non reconnu +SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531 : impossible d'analyser le type de contenu +SAAJ0532.soap.no.Content-Type=SAAJ0532 : Content-Type absent +SAAJ0533.soap.incorrect.Content-Type=SAAJ0533 : impossible de cr\u00E9er un message : content-type incorrect pour la version SOAP. {0} obtenu, mais {1} attendu +SAAJ0534.soap.unknown.Content-Type=SAAJ0534 : Content-Type non reconnu +SAAJ0535.soap.cannot.internalize.message=SAAJ0535 : impossible d'internaliser le message +SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536 : Content-Type doit \u00EAtre Multipart/Related et avec le type = text/xml ou application/soap+xml +SAAJ0537.soap.invalid.content-type=SAAJ0537 : Content-Type non valide. Cela peut \u00EAtre un message d'erreur au lieu d'un message SOAP +SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538 : impossible de convertir un message SOAP en objet Multipart +SAAJ0539.soap.cannot.get.header.stream=SAAJ0539 : impossible d'obtenir un flux de donn\u00E9es d'en-t\u00EAte dans saveChanges +SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540 : erreur lors de l'enregistrement d'un message Multipart +SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541 : impossible de terminer l'op\u00E9ration. Fragment non li\u00E9 \u00E0 la partie SOAP +SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542 : les instructions de traitement ne sont pas autoris\u00E9es dans les documents SOAP +SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543 : les r\u00E9f\u00E9rences d'entit\u00E9 ne sont pas autoris\u00E9es dans les documents SOAP +SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544 : la source n'a pas de processus de lecture ou d'InputStream valide +SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545 : erreur lors de la d\u00E9finition de la source pour SOAPPart +SAAJ0546.soap.stream.incorrect.type=SAAJ0546 : erreur interne : le type du flux n'est pas correct +SAAJ0547.soap.cannot.externalize=SAAJ0547 : erreur lors de la tentative d'externalisation +SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548 : impossible d'externaliser l'en-t\u00EAte +SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549 : Content-Type incorrect pour la partie SOAP {0} +SAAJ0550.soap.null.headers=SAAJ0550 : impossible de cr\u00E9er le message : les en-t\u00EAtes ne peuvent pas \u00EAtre NULL +SAAJ0551.soap.unsupported.encoding=SAAJ0551 : encodage {0} non pris en charge +SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552 : \u00E9chec de l'analyse de la d\u00E9claration XML +SAAJ0553.soappart.renamenode.not.supported=SAAJ0553 : renameNode sur SOAPPart non pris en charge +SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554 : normalizeDocument sur SOAPPart non pris en charge +SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555 : getDomConfig sur SOAPPart non pris en charge +SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556 : adoptNode sur SOAPPart non pris en charge +SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557 : setDocumentURI sur SOAPPart non pris en charge +SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558 : getDocumentURI sur SOAPPart non pris en charge +SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559 : setStrictErrorChecking sur SOAPPart non pris en charge +SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560 : getInputEncoding sur SOAPPart non pris en charge +SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561 : getXmlEncoding sur SOAPPart non pris en charge +SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562 : getXmlStandalone sur SOAPPart non pris en charge +SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563 : setXmlStandalone sur SOAPPart non pris en charge +SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564 : getXmlVersion sur SOAPPart non pris en charge +SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565 : setXmlVersion sur SOAPPart non pris en charge +SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566 : getStrictErrorChecking sur SOAPPart non pris en charge +# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" +SAAJ0567.soap.null.input=SAAJ0567 : argument {0} NULL pour {1} +SAAJ0568.soap.unsupported.protocol=SAAJ0568 : le protocole {0} ne prend pas en charge {1} +# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" +SAAJ0569.soap.unknown.protocol=SAAJ0569 : protocole {0} inconnu indiqu\u00E9 pour la cr\u00E9ation de {1} +SAAJ0570.soappart.parent.element.not.defined=SAAJ0570 : l'\u00E9l\u00E9ment parent d'une partie SOAP n'est pas d\u00E9fini +SAAJ0571.soappart.setValue.not.defined=SAAJ0571 : la valeur de param\u00E8tre d'une partie SOAP n'est pas d\u00E9finie +SAAJ0572.soap.no.content.for.attachment=SAAJ0572 : aucun contenu/gestionnaire de donn\u00E9es associ\u00E9 \u00E0 cette pi\u00E8ce jointe +SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573 : exception d'E/S lors de la lecture du contenu de la pi\u00E8ce jointe raw +SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574 : exception d'E/S lors de la tentative d'obtention du flux d'entr\u00E9e \u00E0 partir du gestionnaire de donn\u00E9es pour cette pi\u00E8ce jointe +SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575 : exception lors de la tentative d'extraction du contenu pour cette pi\u00E8ce jointe +SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576 : exception lors de la tentative de d\u00E9finition du contenu Raw pour cette pi\u00E8ce jointe +SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577 : exception lors de la tentative d'obtention du contenu Raw pour cette pi\u00E8ce jointe +SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578 : exception lors de la tentative de d\u00E9finition du contenu Decoded pour cette pi\u00E8ce jointe +SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579 : exception lors de la tentative d'obtention du contenu Encoded pour cette pi\u00E8ce jointe +SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590 : impossible de localiser la pi\u00E8ce jointe avec le CID {0} +SAAJ0591.soap.exception.in.set.property=SAAJ0591 : exception {0} lors de la tentative de d\u00E9finition de la propri\u00E9t\u00E9 {1} sur le message SOAP + +# Info messages +SAAJ0580.soap.set.Content-Type=SAAJ0580 : Content-Type d\u00E9fini sur {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_it.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_it.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,110 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for soap pkg +# Error messages +SAAJ0501.soap.data.handler.err=SAAJ0501: Errore dell''handler dei dati: {0} +SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: Nessun handler dei dati associato a questo allegato +SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: Argomento dataHandler nullo per setDataHandler +SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: Impossibile esternalizzare l'allegato +SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: Impossibile copiare l'intestazione MIME +SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: Impossibile copiare le intestazioni MIME nell'allegato +# Usage not found. TODO Remove +#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} +SAAJ0508.soap.cannot.register.handlers=SAAJ050: Impossibile registrare gli handler nella mappa dei comandi JAF + +SAAJ0510.soap.cannot.create.envelope=SAAJ0510: Impossibile creare l'envelope dall'origine specificata +SAAJ0511.soap.cannot.create.envelope=SAAJ0511: Impossibile creare l'envelope dall'origine specificata +SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Impossibile creare l'envelope: factory errato usato durante la costruzione della struttura +SAAJ0513.soap.unknown.ns=SAAJ0513: Impossibile creare l'envelope dall'origine specificata poich\u00E9 lo spazio di nomi non \u00E8 stato riconosciuto +SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: Impossibile creare l'envelope dall'origine specificata poich\u00E9 l'elemento radice non \u00E8 denominato Envelope +SAAJ0515.source.reset.exception=SAAJ0515: Impossibile reimpostare l'origine del contenuto soap-part + +SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler richiede un oggetto di immagine, ma l''oggetto specificato \u00E8 di tipo {0} +SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type impostato per {0} +SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: Content-Type non valido {0} per ImageContentHandler +SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: Oggetto nullo per ImageContentHandler +SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: Impossibile eseguire il codificatore JPEG su un flusso +SAAJ0525.soap.cannot.encode.img=SAAJ0525: Impossibile codificare l'immagine in un flusso +SAAJ0526.soap.unsupported.mime.type=SAAJ0526: Tipo MIME {0} non supportato + +SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type non riconosciuto +SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: Impossibile analizzare il tipo di contenuto +SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type assente +SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: Impossibile creare il messaggio: Content-Type errato per la versione SOAP. Ricevuto {0}, ma previsto {1} +SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type non riconosciuto +SAAJ0535.soap.cannot.internalize.message=SAAJ0535: Impossibile rendere interno il messaggio +SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type deve essere Multipart/Related e con type=text/xml +SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type non valido. Potrebbe essere un messaggio di errore anzich\u00E9 un messaggio SOAP +SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: Impossibile convertire il messaggio SOAP in un oggetto Multipart +SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: Impossibile recuperare il flusso di intestazioni in saveChanges +SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Errore durante il salvataggio di un messaggio multiparte +SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: Impossibile completare l'operazione. Frammento non associato alla SOAP Part +SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: Le istruzioni di elaborazione non sono consentite nei documenti SOAP +SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: I riferimenti alle entit\u00E0 non sono consentiti nei documenti SOAP +SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: L'origine non ha un lettore o un flusso di input valido +SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: Errore di impostazione dell''origine per SOAPPart +SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Errore interno: flusso di tipo errato +SAAJ0547.soap.cannot.externalize=SAAJ0547: Errore durante il tentativo di esternalizzazione +SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: Impossibile esternalizzare l'intestazione +SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: Content-Type non valido per SOAP Part {0} +SAAJ0550.soap.null.headers=SAAJ0550: Impossibile creare il messaggio: le intestazioni non possono essere nulle +SAAJ0551.soap.unsupported.encoding=SAAJ0551: Codifica {0} non supportata +SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: Analisi della dichiarazione XML non riuscita +SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode su SOAPPart non supportato +SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument su SOAPPart non supportato +SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig su SOAPPart non supportato +SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode su SOAPPart non supportato +SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI su SOAPPart non supportato +SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI su SOAPPart non supportato +SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking su SOAPPart non supportato +SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding su SOAPPart non supportato +SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding su SOAPPart non supportato +SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone su SOAPPart non supportato +SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone su SOAPPart non supportato +SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion su SOAPPart non supportato +SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion su SOAPPart non supportato +SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking su SOAPPart non supportato +# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" +SAAJ0567.soap.null.input=SAAJ0567: Argomento {0} nullo a {1} +SAAJ0568.soap.unsupported.protocol=SAAJ0568: Il protocollo {0} non supporta {1} +# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" +SAAJ0569.soap.unknown.protocol=SAAJ0569: Protocollo sconosciuto {0} specificato per la creazione di {1} +SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: L'elemento padre di una SOAP Part non \u00E8 definito +SAAJ0571.soappart.setValue.not.defined=SAAJ0571: Il valore di impostazione di una SOAP Part non \u00E8 definito +SAAJ0572.soap.no.content.for.attachment=SAAJ0572: Nessun handler dei dati/contenuto associato a questo allegato +SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException durante la lettura del contenuto dell'allegato di tipo RAW +SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException durante il tentativo di ottenere il flusso di input dall'handler dei dati per questo allegato +SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: Eccezione durante il tentativo di recuperare il contenuto per questo allegato +SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: Eccezione durante il tentativo di impostare il contenuto di tipo RAW per questo allegato +SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: Eccezione durante il tentativo di recuperare il contenuto di tipo RAW per questo allegato +SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: Eccezione durante il tentativo di impostare il contenuto decodificato per questo allegato +SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: Eccezione durante il tentativo di recuperare il contenuto codificato per questo allegato +SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: Impossibile trovare l''allegato con cid {0} +SAAJ0591.soap.exception.in.set.property=SAAJ0591: Eccezione {0} durante il tentativo di impostare Property {1} su SOAP Message + +# Info messages +SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type impostato per {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ja.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ja.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,110 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for soap pkg +# Error messages +SAAJ0501.soap.data.handler.err=SAAJ0501: \u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9\u30FB\u30A8\u30E9\u30FC: {0} +SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u3053\u306E\u6DFB\u4ED8\u306B\u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9\u304C\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler\u306B\u5BFE\u3059\u308BdataHandler\u5F15\u6570\u304Cnull\u3067\u3059 +SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u6DFB\u4ED8\u3092\u5916\u90E8\u5316\u3067\u304D\u307E\u305B\u3093 +SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME\u30D8\u30C3\u30C0\u30FC\u3092\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093 +SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME\u30D8\u30C3\u30C0\u30FC\u3092\u6DFB\u4ED8\u306B\u30B3\u30D4\u30FC\u3067\u304D\u307E\u305B\u3093 +# Usage not found. TODO Remove +#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} +SAAJ0508.soap.cannot.register.handlers=SAAJ050: JAF\u30B3\u30DE\u30F3\u30C9\u30FB\u30DE\u30C3\u30D7\u306B\u30CF\u30F3\u30C9\u30E9\u3092\u767B\u9332\u3067\u304D\u307E\u305B\u3093 + +SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 +SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 +SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: \u30C4\u30EA\u30FC\u306E\u69CB\u7BC9\u4E2D\u306B\u7121\u52B9\u306A\u30D5\u30A1\u30AF\u30C8\u30EA\u304C\u4F7F\u7528\u3055\u308C\u307E\u3057\u305F +SAAJ0513.soap.unknown.ns=SAAJ0513: \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u8A8D\u8B58\u3055\u308C\u306A\u304B\u3063\u305F\u305F\u3081\u3001\u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 +SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u30EB\u30FC\u30C8\u8981\u7D20\u306E\u540D\u524D\u304CEnvelope\u3067\u306F\u306A\u3044\u305F\u3081\u3001\u7279\u5B9A\u306E\u30BD\u30FC\u30B9\u304B\u3089\u30A8\u30F3\u30D9\u30ED\u30FC\u30D7\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 +SAAJ0515.source.reset.exception=SAAJ0515: soap-part\u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30BD\u30FC\u30B9\u3092\u30EA\u30BB\u30C3\u30C8\u3067\u304D\u307E\u305B\u3093 + +SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler\u306B\u306FImage\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u5FC5\u8981\u3067\u3059\u304C\u3001\u30BF\u30A4\u30D7{0}\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F +SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 +SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler\u306Econtent-type {0}\u304C\u7121\u52B9\u3067\u3059 +SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler\u306E\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304Cnull\u3067\u3059 +SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u30B9\u30C8\u30EA\u30FC\u30E0\u3067JPEG\u30A8\u30F3\u30B3\u30FC\u30C0\u3092\u5B9F\u884C\u3067\u304D\u307E\u305B\u3093 +SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u30A4\u30E1\u30FC\u30B8\u3092\u30B9\u30C8\u30EA\u30FC\u30E0\u306B\u30A8\u30F3\u30B3\u30FC\u30C9\u3067\u304D\u307E\u305B\u3093 +SAAJ0526.soap.unsupported.mime.type=SAAJ0526: MIME\u30BF\u30A4\u30D7{0}\u304C\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 + +SAAJ0530.soap.unknown.Content-Type=SAAJ0530: Content-Type\u304C\u8A8D\u8B58\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F +SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u30B3\u30F3\u30C6\u30F3\u30C4\u30FB\u30BF\u30A4\u30D7\u3092\u89E3\u6790\u3067\u304D\u307E\u305B\u3093 +SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type\u304C\u3042\u308A\u307E\u305B\u3093 +SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: SOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306Econtent-type\u304C\u7121\u52B9\u3067\u3059\u3002{0}\u304C\u53D6\u5F97\u3055\u308C\u307E\u3057\u305F\u304C\u3001{1}\u304C\u4E88\u671F\u3055\u308C\u307E\u3059 +SAAJ0534.soap.unknown.Content-Type=SAAJ0534: Content-Type\u304C\u8A8D\u8B58\u3055\u308C\u307E\u305B\u3093\u3067\u3057\u305F +SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u5185\u90E8\u5316\u3067\u304D\u307E\u305B\u3093 +SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type\u306FMultipart/Related\u3067\u3042\u308A\u3001type=text/xml\u307E\u305F\u306Fapplication/soap+xml\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type\u304C\u7121\u52B9\u3067\u3059\u3002SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u304B\u308F\u308A\u306B\u30A8\u30E9\u30FC\u30FB\u30E1\u30C3\u30BB\u30FC\u30B8\u306B\u306A\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059 +SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u3092Multipart\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306B\u5909\u63DB\u3067\u304D\u307E\u305B\u3093 +SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: saveChanges\u3067\u30D8\u30C3\u30C0\u30FC\u30FB\u30B9\u30C8\u30EA\u30FC\u30E0\u3092\u53D6\u5F97\u3067\u304D\u307E\u305B\u3093 +SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: multipart\u30E1\u30C3\u30BB\u30FC\u30B8\u306E\u4FDD\u5B58\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F +SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u64CD\u4F5C\u3092\u5B8C\u4E86\u3067\u304D\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u304CSOAP\u30D1\u30FC\u30C8\u306B\u30D0\u30A4\u30F3\u30C9\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u51E6\u7406\u547D\u4EE4\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 +SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOAP\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3067\u306F\u30A8\u30F3\u30C6\u30A3\u30C6\u30A3\u53C2\u7167\u3092\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 +SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u30BD\u30FC\u30B9\u306B\u6709\u52B9\u306AReader\u307E\u305F\u306FInputStream\u304C\u3042\u308A\u307E\u305B\u3093 +SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: SOAPPart\u306E\u30BD\u30FC\u30B9\u3092\u8A2D\u5B9A\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F +SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5185\u90E8\u30A8\u30E9\u30FC: \u30B9\u30C8\u30EA\u30FC\u30E0\u306E\u30BF\u30A4\u30D7\u304C\u6B63\u3057\u304F\u3042\u308A\u307E\u305B\u3093 +SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5916\u90E8\u5316\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F +SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u30D8\u30C3\u30C0\u30FC\u3092\u5916\u90E8\u5316\u3067\u304D\u307E\u305B\u3093 +SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP\u30D1\u30FC\u30C8{0}\u306EContent-Type\u304C\u7121\u52B9\u3067\u3059 +SAAJ0550.soap.null.headers=SAAJ0550: \u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093: \u30D8\u30C3\u30C0\u30FC\u3092null\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0{0}\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML\u5BA3\u8A00\u306E\u89E3\u6790\u306B\u5931\u6557\u3057\u307E\u3057\u305F +SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: SOAPPart\u306ErenameNode\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: SOAPPart\u306EnormalizeDocument\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: SOAPPart\u306EgetDomConfig\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: SOAPPart\u306EadoptNode\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: SOAPPart\u306EsetDocumentURI\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: SOAPPart\u306EgetDocumentURI\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: SOAPPart\u306EsetStrictErrorChecking\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: SOAPPart\u306EgetInputEncoding\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: SOAPPart\u306EgetXmlEncoding\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: SOAPPart\u306EgetXmlStandalone\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: SOAPPart\u306EsetXmlStandalone\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: SOAPPart\u306EgetXmlVersion\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: SOAPPart\u306EsetXmlVersion\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: SOAPPart\u306EgetStrictErrorChecking\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" +SAAJ0567.soap.null.input=SAAJ0567: {1}\u306B\u5BFE\u3059\u308B{0}\u5F15\u6570\u304Cnull\u3067\u3059 +SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u30D7\u30ED\u30C8\u30B3\u30EB{0}\u306F{1}\u3092\u30B5\u30DD\u30FC\u30C8\u3057\u307E\u305B\u3093 +# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" +SAAJ0569.soap.unknown.protocol=SAAJ0569: {1}\u306E\u4F5C\u6210\u306B\u5BFE\u3057\u3066\u4E0D\u660E\u306A\u30D7\u30ED\u30C8\u30B3\u30EB{0}\u304C\u6307\u5B9A\u3055\u308C\u307E\u3057\u305F +SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: SOAP\u30D1\u30FC\u30C8\u306E\u89AA\u8981\u7D20\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0571.soappart.setValue.not.defined=SAAJ0571: SOAP\u30D1\u30FC\u30C8\u306E\u8A2D\u5B9A\u5024\u304C\u5B9A\u7FA9\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u3053\u306E\u6DFB\u4ED8\u306B\u30C7\u30FC\u30BF\u30FB\u30CF\u30F3\u30C9\u30E9/\u30B3\u30F3\u30C6\u30F3\u30C4\u304C\u95A2\u9023\u4ED8\u3051\u3089\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: raw\u6DFB\u4ED8\u30B3\u30F3\u30C6\u30F3\u30C4\u306E\u8AAD\u53D6\u308A\u4E2D\u306BIOException\u304C\u767A\u751F\u3057\u307E\u3057\u305F +SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u3053\u306E\u6DFB\u4ED8\u306Edatahandler\u304B\u3089inputstream\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306BIOException\u304C\u767A\u751F\u3057\u307E\u3057\u305F +SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u3053\u306E\u6DFB\u4ED8\u306E\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F +SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u3053\u306E\u6DFB\u4ED8\u306ERaw\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F +SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u3053\u306E\u6DFB\u4ED8\u306ERaw\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F +SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u3053\u306E\u6DFB\u4ED8\u306E\u30C7\u30B3\u30FC\u30C9\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F +SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u3053\u306E\u6DFB\u4ED8\u306E\u30A8\u30F3\u30B3\u30FC\u30C9\u3055\u308C\u305F\u30B3\u30F3\u30C6\u30F3\u30C4\u3092\u53D6\u5F97\u3057\u3088\u3046\u3068\u3057\u3066\u3044\u308B\u3068\u304D\u306B\u4F8B\u5916\u304C\u767A\u751F\u3057\u307E\u3057\u305F +SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: cid {0}\u306E\u6DFB\u4ED8\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 +SAAJ0591.soap.exception.in.set.property=SAAJ0591: SOAP\u30E1\u30C3\u30BB\u30FC\u30B8\u3067\u30D7\u30ED\u30D1\u30C6\u30A3{1}\u3092\u8A2D\u5B9A\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306B\u4F8B\u5916{0}\u304C\u767A\u751F\u3057\u307E\u3057\u305F + +# Info messages +SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ko.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_ko.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,110 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for soap pkg +# Error messages +SAAJ0501.soap.data.handler.err=SAAJ0501: \uB370\uC774\uD130 \uCC98\uB9AC\uAE30 \uC624\uB958: {0} +SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uACFC \uC5F0\uAD00\uB41C \uB370\uC774\uD130 \uCC98\uB9AC\uAE30\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler\uC5D0 \uB300\uD55C dataHandler \uC778\uC218\uAC00 \uB110\uC785\uB2C8\uB2E4. +SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \uCCA8\uBD80 \uD30C\uC77C\uC744 \uC678\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: MIME \uD5E4\uB354\uB97C \uBCF5\uC0AC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: MIME \uD5E4\uB354\uB97C \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uBCF5\uC0AC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +# Usage not found. TODO Remove +#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} +SAAJ0508.soap.cannot.register.handlers=SAAJ050: JAF \uBA85\uB839 \uB9F5\uC5D0\uC11C \uCC98\uB9AC\uAE30\uB97C \uB4F1\uB85D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. + +SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0512.soap.incorrect.factory.used=SAAJ0512: Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: \uD2B8\uB9AC \uC0DD\uC131 \uC911 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC740 \uD329\uD1A0\uB9AC\uAC00 \uC0AC\uC6A9\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0513.soap.unknown.ns=SAAJ0513: \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uC778\uC2DD\uD560 \uC218 \uC5C6\uC5B4 \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \uB8E8\uD2B8 \uC694\uC18C\uAC00 Envelope\uB85C \uBA85\uBA85\uB418\uC9C0 \uC54A\uC544 \uC81C\uACF5\uB41C \uC18C\uC2A4\uC5D0\uC11C Envelope\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0515.source.reset.exception=SAAJ0515: soap-part \uCF58\uD150\uCE20 \uC18C\uC2A4\uB97C \uC7AC\uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. + +SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler\uC5D0\uB294 \uC774\uBBF8\uC9C0 \uAC1D\uCCB4\uAC00 \uD544\uC694\uD558\uC9C0\uB9CC {0} \uC720\uD615\uC758 \uAC1D\uCCB4\uAC00 \uC81C\uACF5\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler\uC5D0 \uB300\uD55C content-type {0}\uC774(\uAC00) \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler\uC5D0 \uB300\uD55C \uAC1D\uCCB4\uAC00 \uB110\uC785\uB2C8\uB2E4. +SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \uC2A4\uD2B8\uB9BC\uC5D0\uC11C JPEG \uC778\uCF54\uB354\uB97C \uC2E4\uD589\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0525.soap.cannot.encode.img=SAAJ0525: \uC2A4\uD2B8\uB9BC\uC5D0 \uC774\uBBF8\uC9C0\uB97C \uC778\uCF54\uB529\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0526.soap.unsupported.mime.type=SAAJ0526: {0}\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 mime \uC720\uD615\uC785\uB2C8\uB2E4. + +SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 Content-Type +SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \uCF58\uD150\uCE20 \uC720\uD615\uC758 \uAD6C\uBB38\uC744 \uBD84\uC11D\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0532.soap.no.Content-Type=SAAJ0532: Content-Type\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \uBA54\uC2DC\uC9C0\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: SOAP \uBC84\uC804\uC5D0 \uB300\uD55C content-type\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. {0}\uC744(\uB97C) \uAC00\uC838\uC654\uC9C0\uB9CC {1}\uC774(\uAC00) \uD544\uC694\uD569\uB2C8\uB2E4. +SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \uC778\uC2DD\uD560 \uC218 \uC5C6\uB294 Content-Type +SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \uBA54\uC2DC\uC9C0\uB97C \uB0B4\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type\uC740 Multipart/Related\uC5EC\uC57C \uD558\uBA70 \uC720\uD615\uC774 text/xml \uB610\uB294 application/soap+xml\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4. +SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. SOAP \uBA54\uC2DC\uC9C0\uAC00 \uC544\uB2CC \uC624\uB958 \uBA54\uC2DC\uC9C0\uC77C \uC218 \uC788\uC2B5\uB2C8\uB2E4. +SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: SOAP \uBA54\uC2DC\uC9C0\uB97C Multipart \uAC1D\uCCB4\uB85C \uBCC0\uD658\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: saveChanges\uC5D0\uC11C \uD5E4\uB354 \uC2A4\uD2B8\uB9BC\uC744 \uAC00\uC838\uC62C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: Multipart \uBA54\uC2DC\uC9C0\uB97C \uC800\uC7A5\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \uC791\uC5C5\uC744 \uC644\uB8CC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uB2E8\uD3B8\uC774 SOAP \uBD80\uBD84\uC5D0 \uBC14\uC778\uB4DC\uB418\uC5B4 \uC788\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: \uC9C0\uCE68 \uCC98\uB9AC\uB294 SOAP \uBB38\uC11C\uC5D0\uC11C \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: \uC5D4\uD2F0\uD2F0 \uCC38\uC870\uB294 SOAP \uBB38\uC11C\uC5D0\uC11C \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \uC18C\uC2A4\uC5D0 \uC801\uD569\uD55C \uC77D\uAE30 \uC7A5\uCE58 \uB610\uB294 InputStream\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: SOAPPart\uC5D0 \uB300\uD55C \uC18C\uC2A4\uB97C \uC124\uC815\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \uB0B4\uBD80 \uC624\uB958: \uC2A4\uD2B8\uB9BC\uC758 \uC720\uD615\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0547.soap.cannot.externalize=SAAJ0547: \uC678\uBD80\uD654\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC624\uB958\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \uD5E4\uB354\uB97C \uC678\uBD80\uD654\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \uBD80\uBD84 {0}\uC5D0 \uB300\uD55C Content-Type\uC774 \uC798\uBABB\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0550.soap.null.headers=SAAJ0550: \uBA54\uC2DC\uC9C0\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC74C: \uD5E4\uB354\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0551.soap.unsupported.encoding=SAAJ0551: {0}\uC740(\uB294) \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uB294 \uC778\uCF54\uB529\uC785\uB2C8\uB2E4. +SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML \uC120\uC5B8\uC758 \uAD6C\uBB38 \uBD84\uC11D\uC744 \uC2E4\uD328\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: SOAPPart\uC758 renameNode\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: SOAPPart\uC758 normalizeDocument\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: SOAPPart\uC758 getDomConfig\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: SOAPPart\uC758 adoptNode\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: SOAPPart\uC758 setDocumentURI\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: SOAPPart\uC758 getDocumentURI\uB294 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: SOAPPart\uC758 setStrictErrorChecking\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: SOAPPart\uC758 getInputEncoding\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: SOAPPart\uC758 getXmlEncoding\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: SOAPPart\uC758 getXmlStandalone\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: SOAPPart\uC758 setXmlStandalone\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: SOAPPart\uC758 getXmlVersion\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: SOAPPart\uC758 setXmlVersion\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: SOAPPart\uC758 getStrictErrorChecking\uC740 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" +SAAJ0567.soap.null.input=SAAJ0567: {1}\uC5D0 \uB300\uD55C {0} \uC778\uC218\uAC00 \uB110\uC785\uB2C8\uB2E4. +SAAJ0568.soap.unsupported.protocol=SAAJ0568: {0} \uD504\uB85C\uD1A0\uCF5C\uC740 {1}\uC744(\uB97C) \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" +SAAJ0569.soap.unknown.protocol=SAAJ0569: {1} \uC0DD\uC131\uC744 \uC704\uD574 \uC54C \uC218 \uC5C6\uB294 \uD504\uB85C\uD1A0\uCF5C {0}\uC774(\uAC00) \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: SOAP \uBD80\uBD84\uC758 \uC0C1\uC704 \uC694\uC18C\uAC00 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. +SAAJ0571.soappart.setValue.not.defined=SAAJ0571: SOAP \uBD80\uBD84\uC758 \uC124\uC815 \uAC12\uC774 \uC815\uC758\uB418\uC9C0 \uC54A\uC558\uC2B5\uB2C8\uB2E4. +SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uACFC \uC5F0\uAD00\uB41C \uB370\uC774\uD130 \uCC98\uB9AC\uAE30/\uCF58\uD150\uCE20\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \uC6D0\uC2DC \uCCA8\uBD80 \uD30C\uC77C \uCF58\uD150\uCE20\uB97C \uC77D\uB294 \uC911 IOException\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD574 \uB370\uC774\uD130 \uCC98\uB9AC\uAE30\uC5D0\uC11C \uC785\uB825 \uC2A4\uD2B8\uB9BC\uC744 \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 IOException\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uCF58\uD150\uCE20\uB97C \uAC80\uC0C9\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC6D0\uC2DC \uCF58\uD150\uCE20\uB97C \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC6D0\uC2DC \uCF58\uD150\uCE20\uB97C \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uB514\uCF54\uB529\uB41C \uCF58\uD150\uCE20\uB97C \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \uC774 \uCCA8\uBD80 \uD30C\uC77C\uC5D0 \uB300\uD55C \uC778\uCF54\uB529\uB41C \uCF58\uD150\uCE20\uB97C \uAC00\uC838\uC624\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: CID\uAC00 {0}\uC778 \uCCA8\uBD80 \uD30C\uC77C\uC744 \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0591.soap.exception.in.set.property=SAAJ0591: SOAP \uBA54\uC2DC\uC9C0\uC5D0\uC11C {1} \uC18D\uC131\uC744 \uC124\uC815\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 {0} \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. + +# Info messages +SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_pt_BR.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_pt_BR.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,110 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for soap pkg +# Error messages +SAAJ0501.soap.data.handler.err=SAAJ0501: erro do handler de dados: {0} +SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: n\u00E3o h\u00E1 handler de dados associado a este anexo +SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: argumento dataHandler nulo para setDataHandler +SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: n\u00E3o \u00E9 poss\u00EDvel externalizar o anexo +SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: n\u00E3o \u00E9 poss\u00EDvel copiar o cabe\u00E7alho MIME +SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: n\u00E3o \u00E9 poss\u00EDvel copiar cabe\u00E7alhos MIME no anexo +# Usage not found. TODO Remove +#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} +SAAJ0508.soap.cannot.register.handlers=SAAJ050: n\u00E3o \u00E9 poss\u00EDvel registrar os handlers no mapa de comando JAF + +SAAJ0510.soap.cannot.create.envelope=SAAJ0510: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida +SAAJ0511.soap.cannot.create.envelope=SAAJ0511: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida +SAAJ0512.soap.incorrect.factory.used=SAAJ0512: n\u00E3o \u00E9 poss\u00EDvel criar o envelope: factory incorreta usada durante a constru\u00E7\u00E3o da \u00E1rvore +SAAJ0513.soap.unknown.ns=SAAJ0513: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida porque o namespace n\u00E3o era reconhecido +SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: n\u00E3o \u00E9 poss\u00EDvel criar o envelope da origem fornecida porque o elemento-raiz n\u00E3o \u00E9 um Envelope nomeado +SAAJ0515.source.reset.exception=SAAJ0515: n\u00E3o \u00E9 poss\u00EDvel redefinir a origem de conte\u00FAdo da parte de soap + +SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler requer objeto da Imagem, mas foi fornecido o objeto do tipo {0} +SAAJ0521.soap.set.Content-Type=SAAJ0521: Tipo de Conte\u00FAdo definido como {0} +SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: tipo de conte\u00FAdo {0} inv\u00E1lido para ImageContentHandler +SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: objeto nulo para ImageContentHandler +SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: n\u00E3o \u00E9 poss\u00EDvel executar o Codificador JPEG em um fluxo +SAAJ0525.soap.cannot.encode.img=SAAJ0525: n\u00E3o \u00E9 poss\u00EDvel codificar a imagem em um fluxo +SAAJ0526.soap.unsupported.mime.type=SAAJ0526: tipo de mime {0} n\u00E3o suportado + +SAAJ0530.soap.unknown.Content-Type=SAAJ0530: tipo de Conte\u00FAdo N\u00E3o Reconhecido +SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: n\u00E3o \u00E9 poss\u00EDvel fazer parse do tipo de conte\u00FAdo +SAAJ0532.soap.no.Content-Type=SAAJ0532: tipo de Conte\u00FAdo Inexistente +SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: n\u00E3o \u00E9 poss\u00EDvel criar a mensagem: tipo de conte\u00FAdo incorreto para a vers\u00E3o SOAP. Obteve {0}, mas esperava {1} +SAAJ0534.soap.unknown.Content-Type=SAAJ0534: tipo de Conte\u00FAdo N\u00E3o Reconhecido +SAAJ0535.soap.cannot.internalize.message=SAAJ0535: n\u00E3o \u00E9 poss\u00EDvel internalizar a mensagem +SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: o Tipo de Conte\u00FAdo precisa ser de V\u00E1rias Partes/Relacionado com tipo=texto/xml ou aplica\u00E7\u00E3o/soap+xml +SAAJ0537.soap.invalid.content-type=SAAJ0537: tipo de Conte\u00FAdo Inv\u00E1lido. Pode ser uma mensagem de erro, em vez de uma mensagem SOAP +SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: n\u00E3o \u00E9 poss\u00EDvel converter a mensagem SOAP em um objeto de V\u00E1rias partes +SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: n\u00E3o \u00E9 poss\u00EDvel obter fluxo do cabe\u00E7alho em saveChanges +SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: erro ao salvar uma mensagem de v\u00E1rias partes +SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: n\u00E3o foi poss\u00EDvel concluir a opera\u00E7\u00E3o. Fragmento n\u00E3o vinculado \u00E0 parte de SOAP +SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: as instru\u00E7\u00F5es de processamento n\u00E3o s\u00E3o permitidas nos documentos de SOAP +SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: refer\u00EAncias da entidade n\u00E3o s\u00E3o permitidas nos documentos SOAP +SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: a origem n\u00E3o tem um Reader ou InputStream v\u00E1lido +SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: erro ao definir a origem de SOAPPart +SAAJ0546.soap.stream.incorrect.type=SAAJ0546: Erro interno: o fluxo n\u00E3o \u00E9 do tipo correto +SAAJ0547.soap.cannot.externalize=SAAJ0547: erro ao tentar externalizar +SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: n\u00E3o \u00E9 poss\u00EDvel externalizar o cabe\u00E7alho +SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: tipo de Conte\u00FAdo Inv\u00E1lido para a Parte {0} de SOAP +SAAJ0550.soap.null.headers=SAAJ0550: n\u00E3o \u00E9 poss\u00EDvel criar a mensagem: os cabe\u00E7alhos n\u00E3o podem ser nulos +SAAJ0551.soap.unsupported.encoding=SAAJ0551: codifica\u00E7\u00E3o n\u00E3o suportada {0} +SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: falha ao fazer parse da declara\u00E7\u00E3o XML +SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: renameNode em SOAPPart n\u00E3o suportado +SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: normalizeDocument em SOAPPart n\u00E3o suportado +SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: getDomConfig em SOAPPart n\u00E3o suportado +SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: adoptNode em SOAPPart n\u00E3o suportado +SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: setDocumentURI em SOAPPart n\u00E3o suportado +SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: getDocumentURI em SOAPPart n\u00E3o suportado +SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: setStrictErrorChecking em SOAPPart n\u00E3o suportado +SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: getInputEncoding em SOAPPart n\u00E3o suportado +SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: getXmlEncoding em SOAPPart n\u00E3o suportado +SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: getXmlStandalone em SOAPPart n\u00E3o suportado +SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: setXmlStandalone em SOAPPart n\u00E3o suportado +SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: getXmlVersion em SOAPPart n\u00E3o suportado +SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: setXmlVersion em SOAPPart n\u00E3o suportado +SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: getStrictErrorChecking em SOAPPart n\u00E3o suportado +# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" +SAAJ0567.soap.null.input=SAAJ0567: argumento {0} nulo para {1} +SAAJ0568.soap.unsupported.protocol=SAAJ0568: o protocolo {0} n\u00E3o suporta {1} +# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" +SAAJ0569.soap.unknown.protocol=SAAJ0569: protocolo {0} Desconhecido especificado para criar {1} +SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: o elemento pai da parte de soap n\u00E3o foi definido +SAAJ0571.soappart.setValue.not.defined=SAAJ0571: o valor de defini\u00E7\u00E3o de uma parte de soap n\u00E3o foi definido +SAAJ0572.soap.no.content.for.attachment=SAAJ0572: n\u00E3o h\u00E1 handler/conte\u00FAdo de dados associado a este anexo +SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: IOException ao ler o conte\u00FAdo do anexo bruto +SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: IOException ao tentar obter o inputstream de datahandler deste anexo +SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: exce\u00E7\u00E3o ao tentar recuperar o conte\u00FAdo deste anexo +SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Bruto deste anexo +SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Bruto deste anexo +SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: exce\u00E7\u00E3o ao tentar definir o conte\u00FAdo Decodificado deste anexo +SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: exce\u00E7\u00E3o ao tentar obter o conte\u00FAdo Codificado deste anexo +SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: n\u00E3o \u00E9 poss\u00EDvel localizar o anexo como o cid {0} +SAAJ0591.soap.exception.in.set.property=SAAJ0591: exce\u00E7\u00E3o {0} ao tentar definir a Propriedade {1} na Mensagem SOAP + +# Info messages +SAAJ0580.soap.set.Content-Type=SAAJ0580: Tipo de Conte\u00FAdo definido como {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_CN.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_CN.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,110 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for soap pkg +# Error messages +SAAJ0501.soap.data.handler.err=SAAJ0501: \u6570\u636E\u5904\u7406\u7A0B\u5E8F\u9519\u8BEF: {0} +SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u6CA1\u6709\u4E0E\u6B64\u9644\u4EF6\u5173\u8054\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F +SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler \u7684 dataHandler \u53C2\u6570\u4E3A\u7A7A\u503C +SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u65E0\u6CD5\u4F7F\u9644\u4EF6\u5916\u90E8\u5316 +SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: \u65E0\u6CD5\u590D\u5236 MIME \u6807\u5934 +SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: \u65E0\u6CD5\u5C06 MIME \u6807\u5934\u590D\u5236\u5230\u9644\u4EF6\u4E2D +# Usage not found. TODO Remove +#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} +SAAJ0508.soap.cannot.register.handlers=SAAJ050: \u65E0\u6CD5\u6CE8\u518C JAF \u547D\u4EE4\u6620\u5C04\u4E2D\u7684\u5904\u7406\u7A0B\u5E8F + +SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01 +SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01 +SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u65E0\u6CD5\u521B\u5EFA\u4FE1\u5C01: \u5728\u6811\u6784\u9020\u671F\u95F4\u4F7F\u7528\u7684\u5DE5\u5382\u4E0D\u6B63\u786E +SAAJ0513.soap.unknown.ns=SAAJ0513: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01, \u56E0\u4E3A\u65E0\u6CD5\u8BC6\u522B\u540D\u79F0\u7A7A\u95F4 +SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u65E0\u6CD5\u4ECE\u7ED9\u5B9A\u6E90\u521B\u5EFA\u4FE1\u5C01, \u56E0\u4E3A\u6839\u5143\u7D20\u4E0D\u662F\u547D\u540D\u7684\u4FE1\u5C01 +SAAJ0515.source.reset.exception=SAAJ0515: \u65E0\u6CD5\u91CD\u7F6E soap-part \u5185\u5BB9\u6E90 + +SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler \u9700\u8981 Image \u5BF9\u8C61, \u4F46\u5374\u5F97\u5230\u7C7B\u578B\u4E3A{0}\u7684\u5BF9\u8C61 +SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type \u8BBE\u7F6E\u4E3A{0} +SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler \u7684 content-type {0}\u65E0\u6548 +SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler \u7684\u5BF9\u8C61\u4E3A\u7A7A\u503C +SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u65E0\u6CD5\u5728\u6D41\u4E0A\u8FD0\u884C JPEG \u7F16\u7801\u5668 +SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u65E0\u6CD5\u5C06\u56FE\u50CF\u7F16\u7801\u4E3A\u6D41 +SAAJ0526.soap.unsupported.mime.type=SAAJ0526: \u4E0D\u652F\u6301\u7684 mime \u7C7B\u578B{0} + +SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \u65E0\u6CD5\u8BC6\u522B\u7684 Content-Type +SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u65E0\u6CD5\u89E3\u6790\u5185\u5BB9\u7C7B\u578B +SAAJ0532.soap.no.Content-Type=SAAJ0532: \u7F3A\u5C11 Content-Type +SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F: SOAP \u7248\u672C\u7684 content-type \u4E0D\u6B63\u786E\u3002\u5F97\u5230\u7684\u662F{0}, \u4F46\u5E94\u4E3A{1} +SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \u65E0\u6CD5\u8BC6\u522B\u7684 Content-Type +SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u65E0\u6CD5\u4F7F\u6D88\u606F\u5185\u90E8\u5316 +SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type \u5FC5\u987B\u662F\u201C\u591A\u90E8\u5206/\u76F8\u5173\u201D\u5E76\u4E14\u5E26\u6709 type=text/xml \u6216 application/soap+xml +SAAJ0537.soap.invalid.content-type=SAAJ0537: Content-Type \u65E0\u6548\u3002\u53EF\u4EE5\u662F\u9519\u8BEF\u6D88\u606F, \u4F46\u4E0D\u80FD\u662F SOAP \u6D88\u606F +SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: \u65E0\u6CD5\u5C06 SOAP \u6D88\u606F\u8F6C\u6362\u4E3A\u591A\u90E8\u5206\u5BF9\u8C61 +SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: \u65E0\u6CD5\u5728 saveChanges \u4E2D\u83B7\u53D6\u6807\u5934\u6D41 +SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: \u4FDD\u5B58\u591A\u90E8\u5206\u6D88\u606F\u671F\u95F4\u51FA\u9519 +SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u65E0\u6CD5\u5B8C\u6210\u64CD\u4F5C\u3002\u7247\u6BB5\u672A\u7ED1\u5B9A\u5230 SOAP \u90E8\u5206 +SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP \u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5904\u7406\u6307\u4EE4 +SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOAP \u6587\u6863\u4E2D\u4E0D\u5141\u8BB8\u5B9E\u4F53\u5F15\u7528 +SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u6E90\u6CA1\u6709\u6709\u6548\u7684\u8BFB\u8FDB\u7A0B\u6216 InputStream +SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: \u4E3A SOAPPart \u8BBE\u7F6E\u6E90\u65F6\u51FA\u9519 +SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5185\u90E8\u9519\u8BEF: \u6D41\u7684\u7C7B\u578B\u4E0D\u6B63\u786E +SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5C1D\u8BD5\u5916\u90E8\u5316\u65F6\u51FA\u9519 +SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u65E0\u6CD5\u4F7F\u6807\u5934\u5916\u90E8\u5316 +SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \u90E8\u5206{0}\u7684 Content-Type \u9519\u8BEF +SAAJ0550.soap.null.headers=SAAJ0550: \u65E0\u6CD5\u521B\u5EFA\u6D88\u606F: \u6807\u5934\u4E0D\u80FD\u4E3A\u7A7A\u503C +SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u4E0D\u652F\u6301\u7684\u7F16\u7801{0} +SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: \u672A\u80FD\u89E3\u6790 XML \u58F0\u660E +SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 renameNode +SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 normalizeDocument +SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getDomConfig +SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 adoptNode +SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setDocumentURI +SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getDocumentURI +SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setStrictErrorChecking +SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getInputEncoding +SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlEncoding +SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlStandalone +SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setXmlStandalone +SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getXmlVersion +SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 setXmlVersion +SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: \u4E0D\u652F\u6301 SOAPPart \u4E0A\u7684 getStrictErrorChecking +# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" +SAAJ0567.soap.null.input=SAAJ0567: {1}\u7684{0}\u53C2\u6570\u4E3A\u7A7A\u503C +SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u534F\u8BAE{0}\u4E0D\u652F\u6301{1} +# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" +SAAJ0569.soap.unknown.protocol=SAAJ0569: \u6307\u5B9A\u7528\u4E8E\u521B\u5EFA{1}\u7684\u534F\u8BAE{0}\u672A\u77E5 +SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: \u672A\u5B9A\u4E49 soap \u90E8\u5206\u7684\u7236\u5143\u7D20 +SAAJ0571.soappart.setValue.not.defined=SAAJ0571: \u672A\u5B9A\u4E49 soap \u90E8\u5206\u7684\u8BBE\u7F6E\u503C +SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u6CA1\u6709\u4E0E\u6B64\u9644\u4EF6\u5173\u8054\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F/\u5185\u5BB9 +SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \u8BFB\u53D6\u539F\u59CB\u9644\u4EF6\u5185\u5BB9\u65F6\u51FA\u73B0 IOException +SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u5C1D\u8BD5\u4ECE\u6B64\u9644\u4EF6\u7684\u6570\u636E\u5904\u7406\u7A0B\u5E8F\u83B7\u53D6\u8F93\u5165\u6D41\u65F6\u51FA\u73B0 IOException +SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u5C1D\u8BD5\u68C0\u7D22\u6B64\u9644\u4EF6\u7684\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF +SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u5C1D\u8BD5\u8BBE\u7F6E\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF +SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u5C1D\u8BD5\u83B7\u53D6\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF +SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u5C1D\u8BD5\u8BBE\u7F6E\u6B64\u9644\u4EF6\u7684\u89E3\u7801\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF +SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u5C1D\u8BD5\u83B7\u53D6\u6B64\u9644\u4EF6\u7684\u7F16\u7801\u5185\u5BB9\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF +SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: \u65E0\u6CD5\u627E\u5230\u5177\u6709 cid {0} \u7684\u9644\u4EF6 +SAAJ0591.soap.exception.in.set.property=SAAJ0591: \u5C1D\u8BD5\u8BBE\u7F6E SOAP \u6D88\u606F\u7684\u5C5E\u6027{1}\u65F6\u51FA\u73B0\u5F02\u5E38\u9519\u8BEF{0} + +# Info messages +SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type \u8BBE\u7F6E\u4E3A{0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_TW.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/LocalStrings_zh_TW.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,110 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for soap pkg +# Error messages +SAAJ0501.soap.data.handler.err=SAAJ0501: \u8CC7\u6599\u8655\u7406\u7A0B\u5F0F\u932F\u8AA4: {0} +SAAJ0502.soap.no.handler.for.attachment=SAAJ0502: \u6C92\u6709\u8207\u6B64\u9644\u4EF6\u76F8\u95DC\u806F\u7684\u8CC7\u6599\u8655\u7406\u7A0B\u5F0F +SAAJ0503.soap.no.null.to.dataHandler=SAAJ0503: setDataHandler \u7684 dataHandler \u5F15\u6578\u70BA\u7A7A\u503C +SAAJ0504.soap.cannot.externalize.attachment=SAAJ0504: \u7121\u6CD5\u5C07\u9644\u4EF6\u5916\u90E8\u5316 +SAAJ0505.soap.cannot.copy.mime.hdr=SAAJ0505: \u7121\u6CD5\u8907\u88FD MIME \u6A19\u982D +SAAJ0506.soap.cannot.copy.mime.hdrs.into.attachment=SAAJ0506: \u7121\u6CD5\u5C07 MIME \u6A19\u982D\u8907\u88FD\u5230\u9644\u4EF6\u4E2D +# Usage not found. TODO Remove +#SAAJ0507.soap.cannot.create.handler=SAAJ0507: Unable to create DataHandler for {0} +SAAJ0508.soap.cannot.register.handlers=SAAJ050: \u7121\u6CD5\u5728 JAF \u547D\u4EE4\u5C0D\u61C9\u4E2D\u8A3B\u518A\u8655\u7406\u7A0B\u5F0F + +SAAJ0510.soap.cannot.create.envelope=SAAJ0510: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F +SAAJ0511.soap.cannot.create.envelope=SAAJ0511: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F +SAAJ0512.soap.incorrect.factory.used=SAAJ0512: \u7121\u6CD5\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F: \u5EFA\u69CB\u6A39\u72C0\u7D50\u69CB\u6642\u4F7F\u7528\u4E86\u4E0D\u6B63\u78BA\u7684\u8655\u7406\u7AD9 +SAAJ0513.soap.unknown.ns=SAAJ0513: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F, \u56E0\u70BA\u7121\u6CD5\u8FA8\u8B58\u8A72\u547D\u540D\u7A7A\u9593 +SAAJ0514.soap.root.elem.not.named.envelope=SAAJ0514: \u7121\u6CD5\u5F9E\u6307\u5B9A\u7684\u4F86\u6E90\u5EFA\u7ACB\u9644\u52A0\u8A0A\u606F, \u56E0\u70BA\u6839\u5143\u7D20\u4E0D\u662F\u6307\u5B9A\u7684 Envelope +SAAJ0515.source.reset.exception=SAAJ0515: \u7121\u6CD5\u91CD\u8A2D soap-part \u5167\u5BB9\u4F86\u6E90 + +SAAJ0520.soap.invalid.obj.type=SAAJ0520: DataContentHandler \u9700\u8981 Image \u7269\u4EF6, \u4F46\u662F\u63D0\u4F9B\u7684\u662F {0} \u985E\u578B\u7684\u7269\u4EF6 +SAAJ0521.soap.set.Content-Type=SAAJ0521: Content-Type \u8A2D\u70BA {0} +SAAJ0522.soap.invalid.type.for.img.handler=SAAJ0522: ImageContentHandler \u7684 content-type {0} \u7121\u6548 +SAAJ0523.soap.null.obj.for.img.handler=SAAJ0523: ImageContentHandler \u7684\u7269\u4EF6\u70BA\u7A7A\u503C +SAAJ0524.soap.cannot.run.jpg.encoder=SAAJ0524: \u7121\u6CD5\u5728\u4E32\u6D41\u4E0A\u57F7\u884C JPEG \u7DE8\u78BC\u5668 +SAAJ0525.soap.cannot.encode.img=SAAJ0525: \u7121\u6CD5\u5C07\u5F71\u50CF\u7DE8\u78BC\u70BA\u4E32\u6D41 +SAAJ0526.soap.unsupported.mime.type=SAAJ0526: \u4E0D\u652F\u63F4\u7684 MIME \u985E\u578B {0} + +SAAJ0530.soap.unknown.Content-Type=SAAJ0530: \u7121\u6CD5\u8FA8\u8B58\u7684 Content-Type +SAAJ0531.soap.cannot.parse.Content-Type=SAAJ0531: \u7121\u6CD5\u5256\u6790\u5167\u5BB9\u985E\u578B +SAAJ0532.soap.no.Content-Type=SAAJ0532: \u7F3A\u5C11 Content-Type +SAAJ0533.soap.incorrect.Content-Type=SAAJ0533: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F: SOAP \u7248\u672C\u7684 content-type \u4E0D\u6B63\u78BA. \u5F97\u5230 {0}, \u4F46\u61C9\u8A72\u662F {1} +SAAJ0534.soap.unknown.Content-Type=SAAJ0534: \u7121\u6CD5\u8FA8\u8B58\u7684 Content-Type +SAAJ0535.soap.cannot.internalize.message=SAAJ0535: \u7121\u6CD5\u5C07\u8A0A\u606F\u5167\u90E8\u5316 +SAAJ0536.soap.content-type.mustbe.multipart=SAAJ0536: Content-Type \u5FC5\u9808\u662F Multipart/Related, \u4E14\u542B type=text/xml \u6216 application/soap+xml +SAAJ0537.soap.invalid.content-type=SAAJ0537: \u7121\u6548\u7684 Content-Type. \u53EF\u80FD\u662F\u53D6\u4EE3 SOAP \u8A0A\u606F\u7684\u932F\u8AA4\u8A0A\u606F +SAAJ0538.soap.cannot.convert.msg.to.multipart.obj=SAAJ0538: \u7121\u6CD5\u5C07 SOAP \u8A0A\u606F\u8F49\u63DB\u70BA Multipart \u7269\u4EF6 +SAAJ0539.soap.cannot.get.header.stream=SAAJ0539: \u7121\u6CD5\u81EA saveChanges \u53D6\u5F97\u6A19\u982D\u4E32\u6D41 +SAAJ0540.soap.err.saving.multipart.msg=SAAJ0540: \u5132\u5B58\u591A\u91CD\u90E8\u5206\u8A0A\u606F\u6642\u767C\u751F\u932F\u8AA4 +SAAJ0541.soap.fragment.not.bound.to.part=SAAJ0541: \u7121\u6CD5\u5B8C\u6210\u4F5C\u696D. \u7247\u6BB5\u672A\u9023\u7D50\u81F3 SOAP \u90E8\u5206 +SAAJ0542.soap.proc.instructions.not.allowed.in.docs=SAAJ0542: SOAP \u6587\u4EF6\u4E2D\u4E0D\u5141\u8A31\u300C\u8655\u7406\u6307\u793A\u300D +SAAJ0543.soap.entity.refs.not.allowed.in.docs=SAAJ0543: SOPA \u6587\u4EF6\u4E2D\u4E0D\u5141\u8A31\u300C\u500B\u9AD4\u53C3\u7167\u300D +SAAJ0544.soap.no.valid.reader.for.src=SAAJ0544: \u4F86\u6E90\u6C92\u6709\u6709\u6548\u7684 Reader \u6216 InputStream +SAAJ0545.soap.cannot.set.src.for.part=SAAJ0545: \u8A2D\u5B9A SOAPPart \u7684\u4F86\u6E90\u6642\u767C\u751F\u932F\u8AA4 +SAAJ0546.soap.stream.incorrect.type=SAAJ0546: \u5167\u90E8\u932F\u8AA4: \u4E32\u6D41\u4E0D\u662F\u6B63\u78BA\u7684\u985E\u578B +SAAJ0547.soap.cannot.externalize=SAAJ0547: \u5617\u8A66\u5916\u90E8\u5316\u6642\u767C\u751F\u932F\u8AA4 +SAAJ0548.soap.cannot.externalize.hdr=SAAJ0548: \u7121\u6CD5\u5C07\u6A19\u982D\u5916\u90E8\u5316 +SAAJ0549.soap.part.invalid.Content-Type=SAAJ0549: SOAP \u90E8\u5206 {0} \u7684 Content-Type \u932F\u8AA4 +SAAJ0550.soap.null.headers=SAAJ0550: \u7121\u6CD5\u5EFA\u7ACB\u8A0A\u606F: \u6A19\u982D\u4E0D\u5F97\u662F\u7A7A\u503C +SAAJ0551.soap.unsupported.encoding=SAAJ0551: \u4E0D\u652F\u63F4\u7684\u7DE8\u78BC {0} +SAAJ0552.soap.xml.decl.parsing.failed=SAAJ0552: XML \u5BA3\u544A\u5256\u6790\u5931\u6557 +SAAJ0553.soappart.renamenode.not.supported=SAAJ0553: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 renameNode +SAAJ0554.soappart.normalizeDocument.not.supported=SAAJ0554: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 normalizeDocument +SAAJ0555.soappart.getDomConfig.not.supported=SAAJ0555: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getDomConfig +SAAJ0556.soappart.adoptNode.not.supported=SAAJ0556: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 adoptNode +SAAJ0557.soappart.setDocumentURI.not.supported=SAAJ0557: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setDocumentURI +SAAJ0558.soappart.getDocumentURI.not.supported=SAAJ0558: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getDocumentURI +SAAJ0559.soappart.setStrictErrorChecking.not.supported=SAAJ0559: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setStrictErrorChecking +SAAJ0560.soappart.getInputEncoding.not.supported=SAAJ0560: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getInputEncoding +SAAJ0561.soappart.getXmlEncoding.not.supported=SAAJ0561: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlEncoding +SAAJ0562.soappart.getXmlStandalone.not.supported=SAAJ0562: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlStandalone +SAAJ0563.soappart.setXmlStandalone.not.supported=SAAJ0563: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setXmlStandalone +SAAJ0564.soappart.getXmlVersion.not.supported=SAAJ0564: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getXmlVersion +SAAJ0565.soappart.setXmlVersion.not.supported=SAAJ0565: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 setXmlVersion +SAAJ0566.soappart.getStrictErrorChecking.not.supported=SAAJ0566: \u4E0D\u652F\u63F4 SOAPPart \u4E0A\u7684 getStrictErrorChecking +# {0} - "tagName"/"name"/"qname"/"localName", {1} - "SOAPFactory.createElement" +SAAJ0567.soap.null.input=SAAJ0567: {1} \u7684 {0} \u5F15\u6578\u662F\u7A7A\u503C +SAAJ0568.soap.unsupported.protocol=SAAJ0568: \u5354\u5B9A {0} \u4E0D\u652F\u63F4 {1} +# {0} - protocol name, {1} - "SOAPFactory"/"MessageFactory" +SAAJ0569.soap.unknown.protocol=SAAJ0569: \u5EFA\u7ACB {1} \u6642\u6307\u5B9A\u4E86\u4E0D\u660E\u7684\u5354\u5B9A {0} +SAAJ0570.soappart.parent.element.not.defined=SAAJ0570: \u672A\u5B9A\u7FA9 SOAP \u90E8\u5206\u7684\u7236\u9805\u5143\u7D20 +SAAJ0571.soappart.setValue.not.defined=SAAJ0571: \u672A\u5B9A\u7FA9 SOAP \u90E8\u5206\u7684\u8A2D\u5B9A\u503C +SAAJ0572.soap.no.content.for.attachment=SAAJ0572: \u6C92\u6709\u8207\u6B64\u9644\u4EF6\u76F8\u95DC\u806F\u7684\u8CC7\u6599\u8655\u7406\u7A0B\u5F0F/\u5167\u5BB9 +SAAJ0573.soap.attachment.getrawbytes.ioexception=SAAJ0573: \u8B80\u53D6\u539F\u59CB\u9644\u4EF6\u5167\u5BB9\u6642\u767C\u751F IOException +SAAJ0574.soap.attachment.datahandler.ioexception=SAAJ0574: \u5617\u8A66\u5F9E\u6B64\u9644\u4EF6\u7684 datahandler \u53D6\u5F97 inputstream \u6642\u767C\u751F IOException +SAAJ0575.soap.attachment.getcontent.exception=SAAJ0575: \u5617\u8A66\u64F7\u53D6\u6B64\u9644\u4EF6\u7684\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 +SAAJ0576.soap.attachment.setrawcontent.exception=SAAJ0576: \u5617\u8A66\u8A2D\u5B9A\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 +SAAJ0577.soap.attachment.getrawcontent.exception=SAAJ0577: \u5617\u8A66\u53D6\u5F97\u6B64\u9644\u4EF6\u7684\u539F\u59CB\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 +SAAJ0578.soap.attachment.setbase64content.exception=SAAJ0578: \u5617\u8A66\u8A2D\u5B9A\u6B64\u9644\u4EF6\u7684\u89E3\u78BC\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 +SAAJ0579.soap.attachment.getbase64content.exception=SAAJ0579: \u5617\u8A66\u53D6\u5F97\u6B64\u9644\u4EF6\u7684\u89E3\u78BC\u5167\u5BB9\u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 +SAAJ0590.soap.unable.to.locate.attachment=SAAJ0590: \u627E\u4E0D\u5230 cid \u70BA {0} \u7684\u9644\u4EF6 +SAAJ0591.soap.exception.in.set.property=SAAJ0591: \u5617\u8A66\u5728 SOAP \u8A0A\u606F\u4E0A\u8A2D\u5B9A\u7279\u6027 {1} \u6642\u767C\u751F\u7570\u5E38\u72C0\u6CC1 {0} + +# Info messages +SAAJ0580.soap.set.Content-Type=SAAJ0580: Content-Type \u8A2D\u70BA {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageFactoryImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageFactoryImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,147 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import java.io.*; +import java.util.logging.Logger; + +import javax.xml.soap.*; +import javax.xml.stream.XMLStreamReader; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType; +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ParseException; +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl; +import com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; +import com.sun.xml.internal.messaging.saaj.util.TeeInputStream; + +/** + * A factory for creating SOAP messages. + * + * Converted to a placeholder for common functionality between SOAP + * implementations. + * + * @author Phil Goodwin (phil.goodwin@sun.com) + */ +public class MessageFactoryImpl extends MessageFactory { + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); + + protected OutputStream listener; + + protected boolean lazyAttachments = false; + + public OutputStream listen(OutputStream newListener) { + OutputStream oldListener = listener; + listener = newListener; + return oldListener; + } + + public SOAPMessage createMessage() throws SOAPException { + throw new UnsupportedOperationException(); + } + + public SOAPMessage createMessage(String protocol) throws SOAPException { + if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol)) + return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.Message1_1Impl(); + else + return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.Message1_2Impl(); + } + + public SOAPMessage createMessage(boolean isFastInfoset, + boolean acceptFastInfoset) throws SOAPException + { + throw new UnsupportedOperationException(); + } + + public SOAPMessage createMessage(MimeHeaders headers, XMLStreamReader reader) throws SOAPException, IOException { + String contentTypeString = MessageImpl.getContentType(headers); + + if (listener != null) { + throw new SOAPException("Listener OutputStream is not supported with XMLStreamReader"); + } + + try { + ContentType contentType = new ContentType(contentTypeString); + int stat = MessageImpl.identifyContentType(contentType); + + if (MessageImpl.isSoap1_1Content(stat)) { + return new Message1_1Impl(headers,contentType,stat,reader); + } else if (MessageImpl.isSoap1_2Content(stat)) { + return new Message1_2Impl(headers,contentType,stat,reader); + } else { + log.severe("SAAJ0530.soap.unknown.Content-Type"); + throw new SOAPExceptionImpl("Unrecognized Content-Type"); + } + } catch (ParseException e) { + log.severe("SAAJ0531.soap.cannot.parse.Content-Type"); + throw new SOAPExceptionImpl( + "Unable to parse content type: " + e.getMessage()); + } + } + public SOAPMessage createMessage(MimeHeaders headers, InputStream in) + throws SOAPException, IOException { + String contentTypeString = MessageImpl.getContentType(headers); + + if (listener != null) { + in = new TeeInputStream(in, listener); + } + + try { + ContentType contentType = new ContentType(contentTypeString); + int stat = MessageImpl.identifyContentType(contentType); + + if (MessageImpl.isSoap1_1Content(stat)) { + return new Message1_1Impl(headers,contentType,stat,in); + } else if (MessageImpl.isSoap1_2Content(stat)) { + return new Message1_2Impl(headers,contentType,stat,in); + } else { + log.severe("SAAJ0530.soap.unknown.Content-Type"); + throw new SOAPExceptionImpl("Unrecognized Content-Type"); + } + } catch (ParseException e) { + log.severe("SAAJ0531.soap.cannot.parse.Content-Type"); + throw new SOAPExceptionImpl( + "Unable to parse content type: " + e.getMessage()); + } + } + + protected static final String getContentType(MimeHeaders headers) { + String[] values = headers.getHeader("Content-Type"); + if (values == null) + return null; + else + return values[0]; + } + + public void setLazyAttachmentOptimization(boolean flag) { + lazyAttachments = flag; + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/MessageImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,1486 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import java.io.*; +import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.activation.DataHandler; +import javax.activation.DataSource; +import javax.xml.soap.*; +import javax.xml.stream.XMLStreamReader; +import javax.xml.transform.Source; +import javax.xml.transform.stax.StAXSource; +import javax.xml.transform.stream.StreamSource; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.Header; +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.*; +import com.sun.xml.internal.messaging.saaj.packaging.mime.util.*; +import com.sun.xml.internal.messaging.saaj.packaging.mime.MessagingException; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; +import com.sun.xml.internal.messaging.saaj.util.*; +import com.sun.xml.internal.org.jvnet.mimepull.MIMEPart; + +/** + * The message implementation for SOAP messages with + * attachments. Messages for specific profiles will likely extend this + * MessageImpl class and add more value for that particular profile. + * + * @author Anil Vijendran (akv@eng.sun.com) + * @author Rajiv Mordani (rajiv.mordani@sun.com) + * @author Manveen Kaur (manveen.kaur@sun.com) + */ + +public abstract class MessageImpl + extends SOAPMessage + implements SOAPConstants { + + + public static final String CONTENT_ID = "Content-ID"; + public static final String CONTENT_LOCATION = "Content-Location"; + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); + + protected static final int PLAIN_XML_FLAG = 1; // 00001 + protected static final int MIME_MULTIPART_FLAG = 2; // 00010 + protected static final int SOAP1_1_FLAG = 4; // 00100 + protected static final int SOAP1_2_FLAG = 8; // 01000 + //protected static final int MIME_MULTIPART_XOP_FLAG = 14; // 01110 + protected static final int MIME_MULTIPART_XOP_SOAP1_1_FLAG = 6; // 00110 + protected static final int MIME_MULTIPART_XOP_SOAP1_2_FLAG = 10; // 01010 + protected static final int XOP_FLAG = 13; // 01101 + protected static final int FI_ENCODED_FLAG = 16; // 10000 + + protected MimeHeaders headers; + protected ContentType contentType; + protected SOAPPartImpl soapPartImpl; + protected FinalArrayList attachments; + protected boolean saved = false; + protected byte[] messageBytes; + protected int messageByteCount; + protected HashMap properties = new HashMap(); + + // used for lazy attachment initialization + protected MimeMultipart multiPart = null; + protected boolean attachmentsInitialized = false; + + /** + * True if this part is encoded using Fast Infoset. + * MIME -> application/fastinfoset + */ + protected boolean isFastInfoset = false; + + /** + * True if the Accept header of this message includes + * application/fastinfoset + */ + protected boolean acceptFastInfoset = false; + + protected MimeMultipart mmp = null; + + // if attachments are present, don't read the entire message in byte stream in saveTo() + private boolean optimizeAttachmentProcessing = true; + + private InputStream inputStreamAfterSaveChanges = null; + + public static final String LAZY_SOAP_BODY_PARSING = "saaj.lazy.soap.body"; + + // switch back to old MimeMultipart incase of problem + private static boolean switchOffBM = false; + private static boolean switchOffLazyAttachment = false; + private static boolean useMimePull = false; + + static { + String s = SAAJUtil.getSystemProperty("saaj.mime.optimization"); + if ((s != null) && s.equals("false")) { + switchOffBM = true; + } + s = SAAJUtil.getSystemProperty("saaj.lazy.mime.optimization"); + if ((s != null) && s.equals("false")) { + switchOffLazyAttachment = true; + } + useMimePull = SAAJUtil.getSystemBoolean("saaj.use.mimepull"); + + } + + //property to indicate optimized serialization for lazy attachments + private boolean lazyAttachments = false; + + // most of the times, Content-Types are already all lower cased. + // String.toLowerCase() works faster in this case, so even if you + // are only doing one comparison, it pays off to use String.toLowerCase() + // than String.equalsIgnoreCase(). When you do more than one comparison, + // the benefits of String.toLowerCase() dominates. + // + // + // for FI, + // use application/fastinfoset for SOAP 1.1 + // use application/soap+fastinfoset for SOAP 1.2 + // to speed up comparisons, test methods always use lower cases. + + /** + * @param primary + * must be all lower case + * @param sub + * must be all lower case + */ + private static boolean isSoap1_1Type(String primary, String sub) { + return primary.equalsIgnoreCase("text") && sub.equalsIgnoreCase("xml") + || primary.equalsIgnoreCase("text") && sub.equalsIgnoreCase("xml-soap") + || primary.equals("application") + && sub.equals("fastinfoset"); + } + + /** + * @param type + * must be all lower case + */ + private static boolean isEqualToSoap1_1Type(String type) { + return type.startsWith("text/xml") || + type.startsWith("application/fastinfoset"); + } + + /** + * @param primary + * must be all lower case + * @param sub + * must be all lower case + */ + private static boolean isSoap1_2Type(String primary, String sub) { + return primary.equals("application") + && (sub.equals("soap+xml") + || sub.equals("soap+fastinfoset")); + } + + /** + * @param type + * must be all lower case + */ + private static boolean isEqualToSoap1_2Type(String type) { + return type.startsWith("application/soap+xml") || + type.startsWith("application/soap+fastinfoset"); + } + + /** + * Construct a new message. This will be invoked before message + * sends. + */ + protected MessageImpl() { + this(false, false); + attachmentsInitialized = true; + } + + /** + * Construct a new message. This will be invoked before message + * sends. + */ + protected MessageImpl(boolean isFastInfoset, boolean acceptFastInfoset) { + this.isFastInfoset = isFastInfoset; + this.acceptFastInfoset = acceptFastInfoset; + + headers = new MimeHeaders(); + headers.setHeader("Accept", getExpectedAcceptHeader()); + contentType = new ContentType(); + } + + /** + * Shallow copy. + */ + protected MessageImpl(SOAPMessage msg) { + if (!(msg instanceof MessageImpl)) { + // don't know how to handle this. + } + MessageImpl src = (MessageImpl) msg; + this.headers = src.headers; + this.soapPartImpl = src.soapPartImpl; + this.attachments = src.attachments; + this.saved = src.saved; + this.messageBytes = src.messageBytes; + this.messageByteCount = src.messageByteCount; + this.properties = src.properties; + this.contentType = src.contentType; + } + + /** + * @param stat + * the mask value obtained from {@link #identifyContentType(ContentType)} + */ + protected static boolean isSoap1_1Content(int stat) { + return (stat & SOAP1_1_FLAG) != 0; + } + + /** + * @param stat + * the mask value obtained from {@link #identifyContentType(ContentType)} + */ + protected static boolean isSoap1_2Content(int stat) { + return (stat & SOAP1_2_FLAG) != 0; + } + + private static boolean isMimeMultipartXOPSoap1_2Package(ContentType contentType) { + String type = contentType.getParameter("type"); + if (type == null) { + return false; + } + type = type.toLowerCase(); + if (!type.startsWith("application/xop+xml")) { + return false; + } + String startinfo = contentType.getParameter("start-info"); + if (startinfo == null) { + return false; + } + startinfo = startinfo.toLowerCase(); + return isEqualToSoap1_2Type(startinfo); + } + + + //private static boolean isMimeMultipartXOPPackage(ContentType contentType) { + private static boolean isMimeMultipartXOPSoap1_1Package(ContentType contentType) { + String type = contentType.getParameter("type"); + if(type==null) + return false; + + type = type.toLowerCase(); + if(!type.startsWith("application/xop+xml")) + return false; + + String startinfo = contentType.getParameter("start-info"); + if(startinfo == null) + return false; + startinfo = startinfo.toLowerCase(); + return isEqualToSoap1_1Type(startinfo); + } + + private static boolean isSOAPBodyXOPPackage(ContentType contentType){ + String primary = contentType.getPrimaryType(); + String sub = contentType.getSubType(); + + if (primary.equalsIgnoreCase("application")) { + if (sub.equalsIgnoreCase("xop+xml")) { + String type = getTypeParameter(contentType); + return isEqualToSoap1_2Type(type) || isEqualToSoap1_1Type(type); + } + } + return false; + } + + /** + * Construct a message from an input stream. When messages are + * received, there's two parts -- the transport headers and the + * message content in a transport specific stream. + */ + protected MessageImpl(MimeHeaders headers, final InputStream in) + throws SOAPExceptionImpl { + contentType = parseContentType(headers); + init(headers,identifyContentType(contentType),contentType,in); + } + + private static ContentType parseContentType(MimeHeaders headers) throws SOAPExceptionImpl { + final String ct; + if (headers != null) + ct = getContentType(headers); + else { + log.severe("SAAJ0550.soap.null.headers"); + throw new SOAPExceptionImpl("Cannot create message: " + + "Headers can't be null"); + } + + if (ct == null) { + log.severe("SAAJ0532.soap.no.Content-Type"); + throw new SOAPExceptionImpl("Absent Content-Type"); + } + try { + return new ContentType(ct); + } catch (Throwable ex) { + log.severe("SAAJ0535.soap.cannot.internalize.message"); + throw new SOAPExceptionImpl("Unable to internalize message", ex); + } + } + + /** + * Construct a message from an input stream. When messages are + * received, there's two parts -- the transport headers and the + * message content in a transport specific stream. + * + * @param contentType + * The parsed content type header from the headers variable. + * This is redundant parameter, but it avoids reparsing this header again. + * @param stat + * The result of {@link #identifyContentType(ContentType)} over + * the contentType parameter. This redundant parameter, but it avoids + * recomputing this information again. + */ + protected MessageImpl(MimeHeaders headers, final ContentType contentType, int stat, final InputStream in) throws SOAPExceptionImpl { + init(headers, stat, contentType, in); + + } + + public MessageImpl(MimeHeaders headers, ContentType ct, int stat, + XMLStreamReader reader) throws SOAPExceptionImpl { + init(headers, stat, ct, reader); + } + + private void init(MimeHeaders headers, int stat, final ContentType contentType, final Object input) throws SOAPExceptionImpl { + this.headers = headers; + + try { + + // Set isFastInfoset/acceptFastInfoset flag based on MIME type + if ((stat & FI_ENCODED_FLAG) > 0) { + isFastInfoset = acceptFastInfoset = true; + } + + // If necessary, inspect Accept header to set acceptFastInfoset + if (!isFastInfoset) { + String[] values = headers.getHeader("Accept"); + if (values != null) { + for (int i = 0; i < values.length; i++) { + StringTokenizer st = new StringTokenizer(values[i], ","); + while (st.hasMoreTokens()) { + final String token = st.nextToken().trim(); + if (token.equalsIgnoreCase("application/fastinfoset") || + token.equalsIgnoreCase("application/soap+fastinfoset")) { + acceptFastInfoset = true; + break; + } + } + } + } + } + + if (!isCorrectSoapVersion(stat)) { + log.log( + Level.SEVERE, + "SAAJ0533.soap.incorrect.Content-Type", + new String[] { + contentType.toString(), + getExpectedContentType()}); + throw new SOAPVersionMismatchException( + "Cannot create message: incorrect content-type for SOAP version. Got: " + + contentType + + " Expected: " + + getExpectedContentType()); + } + InputStream in = null; + XMLStreamReader rdr = null; + if (input instanceof InputStream) { + in = (InputStream) input; + } else { + //is a StAX reader + rdr = (XMLStreamReader) input; + } + if ((stat & PLAIN_XML_FLAG) != 0) { + if (in != null) { + if (isFastInfoset) { + getSOAPPart().setContent( + FastInfosetReflection.FastInfosetSource_new(in)); + } else { + initCharsetProperty(contentType); + getSOAPPart().setContent(new StreamSource(in)); + } + } else { + //is a StAX reader + if (isFastInfoset) { + //need to get FI stax reader + } else { + initCharsetProperty(contentType); + getSOAPPart().setContent(new StAXSource(rdr)); + } + } + } + else if ((stat & MIME_MULTIPART_FLAG) != 0 && in == null) { + //only parse multipart in the inputstream case + //in stax reader case, we would be given the attachments separately + getSOAPPart().setContent(new StAXSource(rdr)); + } else if ((stat & MIME_MULTIPART_FLAG) != 0) { + final InputStream finalIn = in; + DataSource ds = new DataSource() { + public InputStream getInputStream() { + return finalIn; + } + + public OutputStream getOutputStream() { + return null; + } + + public String getContentType() { + return contentType.toString(); + } + + public String getName() { + return ""; + } + }; + + multiPart = null; + if (useMimePull) { + multiPart = new MimePullMultipart(ds,contentType); + } else if (switchOffBM) { + multiPart = new MimeMultipart(ds,contentType); + } else { + multiPart = new BMMimeMultipart(ds,contentType); + } + + String startParam = contentType.getParameter("start"); + MimeBodyPart soapMessagePart = null; + InputStream soapPartInputStream = null; + String contentID = null; + String contentIDNoAngle = null; + if (switchOffBM || switchOffLazyAttachment) { + if(startParam == null) { + soapMessagePart = multiPart.getBodyPart(0); + for (int i = 1; i < multiPart.getCount(); i++) { + initializeAttachment(multiPart, i); + } + } else { + soapMessagePart = multiPart.getBodyPart(startParam); + for (int i = 0; i < multiPart.getCount(); i++) { + contentID = multiPart.getBodyPart(i).getContentID(); + // Old versions of AXIS2 put angle brackets around the content + // id but not the start param + contentIDNoAngle = (contentID != null) ? + contentID.replaceFirst("^<", "").replaceFirst(">$", "") : null; + if(!startParam.equals(contentID) && !startParam.equals(contentIDNoAngle)) + initializeAttachment(multiPart, i); + } + } + } else { + if (useMimePull) { + MimePullMultipart mpMultipart = (MimePullMultipart)multiPart; + MIMEPart sp = mpMultipart.readAndReturnSOAPPart(); + soapMessagePart = new MimeBodyPart(sp); + soapPartInputStream = sp.readOnce(); + } else { + BMMimeMultipart bmMultipart = + (BMMimeMultipart) multiPart; + InputStream stream = bmMultipart.initStream(); + + SharedInputStream sin = null; + if (stream instanceof SharedInputStream) { + sin = (SharedInputStream) stream; + } + + String boundary = "--" + + contentType.getParameter("boundary"); + byte[] bndbytes = ASCIIUtility.getBytes(boundary); + if (startParam == null) { + soapMessagePart = + bmMultipart.getNextPart(stream, bndbytes, sin); + bmMultipart.removeBodyPart(soapMessagePart); + } else { + MimeBodyPart bp = null; + try { + while (!startParam.equals(contentID) && !startParam.equals(contentIDNoAngle)) { + bp = bmMultipart.getNextPart( + stream, bndbytes, sin); + contentID = bp.getContentID(); + // Old versions of AXIS2 put angle brackets around the content + // id but not the start param + contentIDNoAngle = (contentID != null) ? + contentID.replaceFirst("^<", "").replaceFirst(">$", "") : null; + } + soapMessagePart = bp; + bmMultipart.removeBodyPart(bp); + } catch (Exception e) { + throw new SOAPExceptionImpl(e); + } + } + } + } + + // findbugs correctly points out that we'd NPE instantiating + // the ContentType (just below here) if soapMessagePart were + // null. Hence are better off throwing a controlled exception + // at this point if it is null. + if (soapMessagePart == null) { + log.severe("SAAJ0510.soap.cannot.create.envelope"); + throw new SOAPExceptionImpl( + "Unable to create envelope from given source: SOAP part not found"); + } + + if (soapPartInputStream == null) { + soapPartInputStream = soapMessagePart.getInputStream(); + } + + ContentType soapPartCType = new ContentType( + soapMessagePart.getContentType()); + initCharsetProperty(soapPartCType); + String baseType = soapPartCType.getBaseType().toLowerCase(); + if(!(isEqualToSoap1_1Type(baseType) + || isEqualToSoap1_2Type(baseType) + || isSOAPBodyXOPPackage(soapPartCType))) { + log.log(Level.SEVERE, + "SAAJ0549.soap.part.invalid.Content-Type", + new Object[] {baseType}); + throw new SOAPExceptionImpl( + "Bad Content-Type for SOAP Part : " + + baseType); + } + + SOAPPart soapPart = getSOAPPart(); + setMimeHeaders(soapPart, soapMessagePart); + soapPart.setContent(isFastInfoset ? + (Source) FastInfosetReflection.FastInfosetSource_new( + soapPartInputStream) : + (Source) new StreamSource(soapPartInputStream)); + } else { + log.severe("SAAJ0534.soap.unknown.Content-Type"); + throw new SOAPExceptionImpl("Unrecognized Content-Type"); + } + } catch (Throwable ex) { + log.severe("SAAJ0535.soap.cannot.internalize.message"); + throw new SOAPExceptionImpl("Unable to internalize message", ex); + } + needsSave(); + } + + public boolean isFastInfoset() { + return isFastInfoset; + } + + public boolean acceptFastInfoset() { + return acceptFastInfoset; + } + + public void setIsFastInfoset(boolean value) { + if (value != isFastInfoset) { + isFastInfoset = value; + if (isFastInfoset) { + acceptFastInfoset = true; + } + saved = false; // ensure transcoding if necessary + } + } + + public boolean isLazySoapBodyParsing() { + Object lazyParsingProp = getProperty(LAZY_SOAP_BODY_PARSING); + if (lazyParsingProp == null) return false; + if (lazyParsingProp instanceof Boolean) { + return ((Boolean) lazyParsingProp).booleanValue(); + } else { + return Boolean.valueOf(lazyParsingProp.toString()); + } + } + public Object getProperty(String property) { + return (String) properties.get(property); + } + + public void setProperty(String property, Object value) { + verify(property, value); + properties.put(property, value); + } + + private void verify(String property, Object value) { + if (property.equalsIgnoreCase(SOAPMessage.WRITE_XML_DECLARATION)) { + if (!("true".equals(value) || "false".equals(value))) + throw new RuntimeException( + property + " must have value false or true"); + + try { + EnvelopeImpl env = (EnvelopeImpl) getSOAPPart().getEnvelope(); + if ("true".equalsIgnoreCase((String)value)) { + env.setOmitXmlDecl("no"); + } else if ("false".equalsIgnoreCase((String)value)) { + env.setOmitXmlDecl("yes"); + } + } catch (Exception e) { + log.log(Level.SEVERE, "SAAJ0591.soap.exception.in.set.property", + new Object[] {e.getMessage(), "javax.xml.soap.write-xml-declaration"}); + throw new RuntimeException(e); + } + return; + } + + if (property.equalsIgnoreCase(SOAPMessage.CHARACTER_SET_ENCODING)) { + try { + ((EnvelopeImpl) getSOAPPart().getEnvelope()).setCharsetEncoding((String)value); + } catch (Exception e) { + log.log(Level.SEVERE, "SAAJ0591.soap.exception.in.set.property", + new Object[] {e.getMessage(), "javax.xml.soap.character-set-encoding"}); + throw new RuntimeException(e); + } + } + } + + protected abstract boolean isCorrectSoapVersion(int contentTypeId); + + protected abstract String getExpectedContentType(); + protected abstract String getExpectedAcceptHeader(); + + /** + * Sniffs the Content-Type header so that we can determine how to process. + * + *

    + * In the absence of type attribute we assume it to be text/xml. + * That would mean we're easy on accepting the message and + * generate the correct thing (as the SWA spec also specifies + * that the type parameter should always be text/xml) + * + * @return + * combination of flags, such as PLAIN_XML_CODE and MIME_MULTIPART_CODE. + */ + // SOAP1.2 allow SOAP1.2 content type + static int identifyContentType(ContentType ct) + throws SOAPExceptionImpl { + // TBD + // Is there anything else we need to verify here? + + String primary = ct.getPrimaryType().toLowerCase(); + String sub = ct.getSubType().toLowerCase(); + + if (primary.equals("multipart")) { + if (sub.equals("related")) { + String type = getTypeParameter(ct); + if (isEqualToSoap1_1Type(type)) { + return (type.equals("application/fastinfoset") ? + FI_ENCODED_FLAG : 0) | MIME_MULTIPART_FLAG | SOAP1_1_FLAG; + } + else if (isEqualToSoap1_2Type(type)) { + return (type.equals("application/soap+fastinfoset") ? + FI_ENCODED_FLAG : 0) | MIME_MULTIPART_FLAG | SOAP1_2_FLAG; + /*} else if (isMimeMultipartXOPPackage(ct)) { + return MIME_MULTIPART_XOP_FLAG;*/ + } else if (isMimeMultipartXOPSoap1_1Package(ct)) { + return MIME_MULTIPART_XOP_SOAP1_1_FLAG; + } else if (isMimeMultipartXOPSoap1_2Package(ct)) { + return MIME_MULTIPART_XOP_SOAP1_2_FLAG; + } else { + log.severe("SAAJ0536.soap.content-type.mustbe.multipart"); + throw new SOAPExceptionImpl( + "Content-Type needs to be Multipart/Related " + + "and with \"type=text/xml\" " + + "or \"type=application/soap+xml\""); + } + } else { + log.severe("SAAJ0537.soap.invalid.content-type"); + throw new SOAPExceptionImpl( + "Invalid Content-Type: " + primary + '/' + sub); + } + } + else if (isSoap1_1Type(primary, sub)) { + return (primary.equalsIgnoreCase("application") + && sub.equalsIgnoreCase("fastinfoset") ? + FI_ENCODED_FLAG : 0) + | PLAIN_XML_FLAG | SOAP1_1_FLAG; + } + else if (isSoap1_2Type(primary, sub)) { + return (primary.equalsIgnoreCase("application") + && sub.equalsIgnoreCase("soap+fastinfoset") ? + FI_ENCODED_FLAG : 0) + | PLAIN_XML_FLAG | SOAP1_2_FLAG; + } else if(isSOAPBodyXOPPackage(ct)){ + return XOP_FLAG; + } else { + log.severe("SAAJ0537.soap.invalid.content-type"); + throw new SOAPExceptionImpl( + "Invalid Content-Type:" + + primary + + '/' + + sub + + ". Is this an error message instead of a SOAP response?"); + } + } + + /** + * Obtains the type parameter of the Content-Type header. Defaults to "text/xml". + */ + private static String getTypeParameter(ContentType contentType) { + String p = contentType.getParameter("type"); + if(p!=null) + return p.toLowerCase(); + else + return "text/xml"; + } + + public MimeHeaders getMimeHeaders() { + return this.headers; + } + + final static String getContentType(MimeHeaders headers) { + String[] values = headers.getHeader("Content-Type"); + if (values == null) + return null; + else + return values[0]; + } + + /* + * Get the complete ContentType value along with optional parameters. + */ + public String getContentType() { + return getContentType(this.headers); + } + + public void setContentType(String type) { + headers.setHeader("Content-Type", type); + needsSave(); + } + + private ContentType contentType() { + ContentType ct = null; + try { + String currentContent = getContentType(); + if (currentContent == null) { + return this.contentType; + } + ct = new ContentType(currentContent); + } catch (Exception e) { + // what to do here? + } + return ct; + } + + /* + * Return the MIME type string, without the parameters. + */ + public String getBaseType() { + return contentType().getBaseType(); + } + + public void setBaseType(String type) { + ContentType ct = contentType(); + ct.setParameter("type", type); + headers.setHeader("Content-Type", ct.toString()); + needsSave(); + } + + public String getAction() { + return contentType().getParameter("action"); + } + + public void setAction(String action) { + ContentType ct = contentType(); + ct.setParameter("action", action); + headers.setHeader("Content-Type", ct.toString()); + needsSave(); + } + + public String getCharset() { + return contentType().getParameter("charset"); + } + + public void setCharset(String charset) { + ContentType ct = contentType(); + ct.setParameter("charset", charset); + headers.setHeader("Content-Type", ct.toString()); + needsSave(); + } + + /** + * All write methods (i.e setters) should call this method in + * order to make sure that a save is necessary since the state + * has been modified. + */ + private final void needsSave() { + saved = false; + } + + public boolean saveRequired() { + return saved != true; + } + + public String getContentDescription() { + String[] values = headers.getHeader("Content-Description"); + if (values != null && values.length > 0) + return values[0]; + return null; + } + + public void setContentDescription(String description) { + headers.setHeader("Content-Description", description); + needsSave(); + } + + public abstract SOAPPart getSOAPPart(); + + public void removeAllAttachments() { + try { + initializeAllAttachments(); + } catch (Exception e) { + throw new RuntimeException(e); + } + + if (attachments != null) { + attachments.clear(); + needsSave(); + } + } + + public int countAttachments() { + try { + initializeAllAttachments(); + } catch (Exception e) { + throw new RuntimeException(e); + } + if (attachments != null) + return attachments.size(); + return 0; + } + + public void addAttachmentPart(AttachmentPart attachment) { + try { + initializeAllAttachments(); + this.optimizeAttachmentProcessing = true; + } catch (Exception e) { + throw new RuntimeException(e); + } + if (attachments == null) + attachments = new FinalArrayList(); + + attachments.add(attachment); + + needsSave(); + } + + static private final Iterator nullIter = Collections.EMPTY_LIST.iterator(); + + public Iterator getAttachments() { + try { + initializeAllAttachments(); + } catch (Exception e) { + throw new RuntimeException(e); + } + if (attachments == null) + return nullIter; + return attachments.iterator(); + } + + private void setFinalContentType(String charset) { + ContentType ct = contentType(); + if (ct == null) { + ct = new ContentType(); + } + String[] split = getExpectedContentType().split("/"); + ct.setPrimaryType(split[0]); + ct.setSubType(split[1]); + ct.setParameter("charset", charset); + headers.setHeader("Content-Type", ct.toString()); + } + + private class MimeMatchingIterator implements Iterator { + public MimeMatchingIterator(MimeHeaders headers) { + this.headers = headers; + this.iter = attachments.iterator(); + } + + private Iterator iter; + private MimeHeaders headers; + private Object nextAttachment; + + public boolean hasNext() { + if (nextAttachment == null) + nextAttachment = nextMatch(); + return nextAttachment != null; + } + + public Object next() { + if (nextAttachment != null) { + Object ret = nextAttachment; + nextAttachment = null; + return ret; + } + + if (hasNext()) + return nextAttachment; + + return null; + } + + Object nextMatch() { + while (iter.hasNext()) { + AttachmentPartImpl ap = (AttachmentPartImpl) iter.next(); + if (ap.hasAllHeaders(headers)) + return ap; + } + return null; + } + + public void remove() { + iter.remove(); + } + } + + public Iterator getAttachments(MimeHeaders headers) { + try { + initializeAllAttachments(); + } catch (Exception e) { + throw new RuntimeException(e); + } + if (attachments == null) + return nullIter; + + return new MimeMatchingIterator(headers); + } + + public void removeAttachments(MimeHeaders headers) { + try { + initializeAllAttachments(); + } catch (Exception e) { + throw new RuntimeException(e); + } + if (attachments == null) + return ; + + Iterator it = new MimeMatchingIterator(headers); + while (it.hasNext()) { + int index = attachments.indexOf(it.next()); + attachments.set(index, null); + } + FinalArrayList f = new FinalArrayList(); + for (int i = 0; i < attachments.size(); i++) { + if (attachments.get(i) != null) { + f.add(attachments.get(i)); + } + } + attachments = f; + // needsSave(); + } + + public AttachmentPart createAttachmentPart() { + return new AttachmentPartImpl(); + } + + public AttachmentPart getAttachment(SOAPElement element) + throws SOAPException { + try { + initializeAllAttachments(); + } catch (Exception e) { + throw new RuntimeException(e); + } + String uri; + String hrefAttr = element.getAttribute("href"); + if ("".equals(hrefAttr)) { + Node node = getValueNodeStrict(element); + String swaRef = null; + if (node != null) { + swaRef = node.getValue(); + } + if (swaRef == null || "".equals(swaRef)) { + return null; + } else { + uri = swaRef; + } + } else { + uri = hrefAttr; + } + return getAttachmentPart(uri); + } + + private Node getValueNodeStrict(SOAPElement element) { + Node node = (Node)element.getFirstChild(); + if (node != null) { + if (node.getNextSibling() == null + && node.getNodeType() == org.w3c.dom.Node.TEXT_NODE) { + return node; + } else { + return null; + } + } + return null; + } + + + private AttachmentPart getAttachmentPart(String uri) throws SOAPException { + AttachmentPart _part; + try { + if (uri.startsWith("cid:")) { + // rfc2392 + uri = '<'+uri.substring("cid:".length())+'>'; + + MimeHeaders headersToMatch = new MimeHeaders(); + headersToMatch.addHeader(CONTENT_ID, uri); + + Iterator i = this.getAttachments(headersToMatch); + _part = (i == null) ? null : (AttachmentPart)i.next(); + } else { + // try content-location + MimeHeaders headersToMatch = new MimeHeaders(); + headersToMatch.addHeader(CONTENT_LOCATION, uri); + + Iterator i = this.getAttachments(headersToMatch); + _part = (i == null) ? null : (AttachmentPart)i.next(); + } + + // try auto-generated JAXRPC CID + if (_part == null) { + Iterator j = this.getAttachments(); + + while (j.hasNext()) { + AttachmentPart p = (AttachmentPart)j.next(); + String cl = p.getContentId(); + if (cl != null) { + // obtain the partname + int eqIndex = cl.indexOf("="); + if (eqIndex > -1) { + cl = cl.substring(1, eqIndex); + if (cl.equalsIgnoreCase(uri)) { + _part = p; + break; + } + } + } + } + } + + } catch (Exception se) { + log.log(Level.SEVERE, "SAAJ0590.soap.unable.to.locate.attachment", new Object[] {uri}); + throw new SOAPExceptionImpl(se); + } + return _part; + } + + private final InputStream getHeaderBytes() + throws IOException { + SOAPPartImpl sp = (SOAPPartImpl) getSOAPPart(); + return sp.getContentAsStream(); + } + + private String convertToSingleLine(String contentType) { + StringBuffer buffer = new StringBuffer(); + for (int i = 0; i < contentType.length(); i ++) { + char c = contentType.charAt(i); + if (c != '\r' && c != '\n' && c != '\t') + buffer.append(c); + } + return buffer.toString(); + } + + private MimeMultipart getMimeMessage() throws SOAPException { + try { + SOAPPartImpl soapPart = (SOAPPartImpl) getSOAPPart(); + MimeBodyPart mimeSoapPart = soapPart.getMimePart(); + + /* + * Get content type from this message instead of soapPart + * to ensure agreement if soapPart is transcoded (XML <-> FI) + */ + ContentType soapPartCtype = new ContentType(getExpectedContentType()); + + if (!isFastInfoset) { + soapPartCtype.setParameter("charset", initCharset()); + } + mimeSoapPart.setHeader("Content-Type", soapPartCtype.toString()); + + MimeMultipart headerAndBody = null; + + if (!switchOffBM && !switchOffLazyAttachment && + (multiPart != null) && !attachmentsInitialized) { + headerAndBody = new BMMimeMultipart(); + headerAndBody.addBodyPart(mimeSoapPart); + if (attachments != null) { + for (Iterator eachAttachment = attachments.iterator(); + eachAttachment.hasNext();) { + headerAndBody.addBodyPart( + ((AttachmentPartImpl) eachAttachment.next()) + .getMimePart()); + } + } + InputStream in = ((BMMimeMultipart)multiPart).getInputStream(); + if (!((BMMimeMultipart)multiPart).lastBodyPartFound() && + !((BMMimeMultipart)multiPart).isEndOfStream()) { + ((BMMimeMultipart)headerAndBody).setInputStream(in); + ((BMMimeMultipart)headerAndBody).setBoundary( + ((BMMimeMultipart)multiPart).getBoundary()); + ((BMMimeMultipart)headerAndBody). + setLazyAttachments(lazyAttachments); + } + + } else { + headerAndBody = new MimeMultipart(); + headerAndBody.addBodyPart(mimeSoapPart); + + for (Iterator eachAttachement = getAttachments(); + eachAttachement.hasNext(); + ) { + headerAndBody.addBodyPart( + ((AttachmentPartImpl) eachAttachement.next()) + .getMimePart()); + } + } + + ContentType contentType = headerAndBody.getContentType(); + + ParameterList l = contentType.getParameterList(); + + // set content type depending on SOAP version + l.set("type", getExpectedContentType()); + l.set("boundary", contentType.getParameter("boundary")); + ContentType nct = new ContentType("multipart", "related", l); + + headers.setHeader( + "Content-Type", + convertToSingleLine(nct.toString())); + // TBD + // Set content length MIME header here. + + return headerAndBody; + } catch (SOAPException ex) { + throw ex; + } catch (Throwable ex) { + log.severe("SAAJ0538.soap.cannot.convert.msg.to.multipart.obj"); + throw new SOAPExceptionImpl( + "Unable to convert SOAP message into " + + "a MimeMultipart object", + ex); + } + } + + private String initCharset() { + + String charset = null; + + String[] cts = getMimeHeaders().getHeader("Content-Type"); + if ((cts != null) && (cts[0] != null)) { + charset = getCharsetString(cts[0]); + } + + if (charset == null) { + charset = (String) getProperty(CHARACTER_SET_ENCODING); + } + + if (charset != null) { + return charset; + } + + return "utf-8"; + } + + private String getCharsetString(String s) { + try { + int index = s.indexOf(";"); + if(index < 0) + return null; + ParameterList pl = new ParameterList(s.substring(index)); + return pl.get("charset"); + } catch(Exception e) { + return null; + } + } + + public void saveChanges() throws SOAPException { + + // suck in all the data from the attachments and have it + // ready for writing/sending etc. + + String charset = initCharset(); + + /*if (countAttachments() == 0) {*/ + int attachmentCount = (attachments == null) ? 0 : attachments.size(); + if (attachmentCount == 0) { + if (!switchOffBM && !switchOffLazyAttachment && + !attachmentsInitialized && (multiPart != null)) { + // so there might be attachments + attachmentCount = 1; + } + } + + try { + if ((attachmentCount == 0) && !hasXOPContent()) { + InputStream in; + try{ + /* + * Not sure why this is called getHeaderBytes(), but it actually + * returns the whole message as a byte stream. This stream could + * be either XML of Fast depending on the mode. + */ + in = getHeaderBytes(); + // no attachments, hence this property can be false + this.optimizeAttachmentProcessing = false; + if (SOAPPartImpl.lazyContentLength) { + inputStreamAfterSaveChanges = in; + } + } catch (IOException ex) { + log.severe("SAAJ0539.soap.cannot.get.header.stream"); + throw new SOAPExceptionImpl( + "Unable to get header stream in saveChanges: ", + ex); + } + + if (in instanceof ByteInputStream) { + ByteInputStream bIn = (ByteInputStream)in; + messageBytes = bIn.getBytes(); + messageByteCount = bIn.getCount(); + } + + setFinalContentType(charset); + /* + headers.setHeader( + "Content-Type", + getExpectedContentType() + + (isFastInfoset ? "" : "; charset=" + charset));*/ + if (messageByteCount > 0) { + headers.setHeader( + "Content-Length", + Integer.toString(messageByteCount)); + } + } else { + if(hasXOPContent()) + mmp = getXOPMessage(); + else + mmp = getMimeMessage(); + } + } catch (Throwable ex) { + log.severe("SAAJ0540.soap.err.saving.multipart.msg"); + throw new SOAPExceptionImpl( + "Error during saving a multipart message", + ex); + } + + // FIX ME -- SOAP Action replaced by Content-Type optional parameter action + /* + if(isCorrectSoapVersion(SOAP1_1_FLAG)) { + + String[] soapAction = headers.getHeader("SOAPAction"); + + if (soapAction == null || soapAction.length == 0) + headers.setHeader("SOAPAction", "\"\""); + + } + */ + + saved = true; + } + + private MimeMultipart getXOPMessage() throws SOAPException { + try { + MimeMultipart headerAndBody = new MimeMultipart(); + SOAPPartImpl soapPart = (SOAPPartImpl)getSOAPPart(); + MimeBodyPart mimeSoapPart = soapPart.getMimePart(); + ContentType soapPartCtype = + new ContentType("application/xop+xml"); + soapPartCtype.setParameter("type", getExpectedContentType()); + String charset = initCharset(); + soapPartCtype.setParameter("charset", charset); + mimeSoapPart.setHeader("Content-Type", soapPartCtype.toString()); + headerAndBody.addBodyPart(mimeSoapPart); + + for (Iterator eachAttachement = getAttachments(); + eachAttachement.hasNext(); + ) { + headerAndBody.addBodyPart( + ((AttachmentPartImpl) eachAttachement.next()) + .getMimePart()); + } + + ContentType contentType = headerAndBody.getContentType(); + + ParameterList l = contentType.getParameterList(); + + //lets not write start-info for now till we get servlet fix done + l.set("start-info", getExpectedContentType());//+";charset="+initCharset()); + + // set content type depending on SOAP version + l.set("type", "application/xop+xml"); + + if (isCorrectSoapVersion(SOAP1_2_FLAG)) { + String action = getAction(); + if(action != null) + l.set("action", action); + } + + l.set("boundary", contentType.getParameter("boundary")); + ContentType nct = new ContentType("Multipart", "Related", l); + headers.setHeader( + "Content-Type", + convertToSingleLine(nct.toString())); + // TBD + // Set content length MIME header here. + + return headerAndBody; + } catch (SOAPException ex) { + throw ex; + } catch (Throwable ex) { + log.severe("SAAJ0538.soap.cannot.convert.msg.to.multipart.obj"); + throw new SOAPExceptionImpl( + "Unable to convert SOAP message into " + + "a MimeMultipart object", + ex); + } + + } + + private boolean hasXOPContent() throws ParseException { + String type = getContentType(); + if(type == null) + return false; + ContentType ct = new ContentType(type); + //return isMimeMultipartXOPPackage(ct) || isSOAPBodyXOPPackage(ct); + return isMimeMultipartXOPSoap1_1Package(ct) || + isMimeMultipartXOPSoap1_2Package(ct) || isSOAPBodyXOPPackage(ct); + + } + + public void writeTo(OutputStream out) throws SOAPException, IOException { + if (saveRequired()){ + this.optimizeAttachmentProcessing = true; + saveChanges(); + } + + if(!optimizeAttachmentProcessing){ + if (SOAPPartImpl.lazyContentLength && messageByteCount <= 0) { + byte[] buf = new byte[1024]; + + int length = 0; + while( (length = inputStreamAfterSaveChanges.read(buf)) != -1) { + out.write(buf,0, length); + messageByteCount += length; + } + if (messageByteCount > 0) { + headers.setHeader( + "Content-Length", + Integer.toString(messageByteCount)); + } + } else { + out.write(messageBytes, 0, messageByteCount); + } + } + else{ + try{ + if(hasXOPContent()){ + mmp.writeTo(out); + }else{ + mmp.writeTo(out); + if (!switchOffBM && !switchOffLazyAttachment && + (multiPart != null) && !attachmentsInitialized) { + ((BMMimeMultipart)multiPart).setInputStream( + ((BMMimeMultipart)mmp).getInputStream()); + } + } + } catch(Exception ex){ + log.severe("SAAJ0540.soap.err.saving.multipart.msg"); + throw new SOAPExceptionImpl( + "Error during saving a multipart message", + ex); + } + } + + if(isCorrectSoapVersion(SOAP1_1_FLAG)) { + + String[] soapAction = headers.getHeader("SOAPAction"); + + if (soapAction == null || soapAction.length == 0) + headers.setHeader("SOAPAction", "\"\""); + + } + + messageBytes = null; + needsSave(); + } + + public SOAPBody getSOAPBody() throws SOAPException { + SOAPBody body = getSOAPPart().getEnvelope().getBody(); + /*if (body == null) { + throw new SOAPException("No SOAP Body was found in the SOAP Message"); + }*/ + return body; + } + + public SOAPHeader getSOAPHeader() throws SOAPException { + SOAPHeader hdr = getSOAPPart().getEnvelope().getHeader(); + /*if (hdr == null) { + throw new SOAPException("No SOAP Header was found in the SOAP Message"); + }*/ + return hdr; + } + + private void initializeAllAttachments () + throws MessagingException, SOAPException { + if (switchOffBM || switchOffLazyAttachment) { + return; + } + + if (attachmentsInitialized || (multiPart == null)) { + return; + } + + if (attachments == null) + attachments = new FinalArrayList(); + + int count = multiPart.getCount(); + for (int i=0; i < count; i++ ) { + initializeAttachment(multiPart.getBodyPart(i)); + } + attachmentsInitialized = true; + //multiPart = null; + needsSave(); + } + + private void initializeAttachment(MimeBodyPart mbp) throws SOAPException { + AttachmentPartImpl attachmentPart = new AttachmentPartImpl(); + DataHandler attachmentHandler = mbp.getDataHandler(); + attachmentPart.setDataHandler(attachmentHandler); + + AttachmentPartImpl.copyMimeHeaders(mbp, attachmentPart); + attachments.add(attachmentPart); + } + + private void initializeAttachment(MimeMultipart multiPart, int i) + throws Exception { + MimeBodyPart currentBodyPart = multiPart.getBodyPart(i); + AttachmentPartImpl attachmentPart = new AttachmentPartImpl(); + + DataHandler attachmentHandler = currentBodyPart.getDataHandler(); + attachmentPart.setDataHandler(attachmentHandler); + + AttachmentPartImpl.copyMimeHeaders(currentBodyPart, attachmentPart); + addAttachmentPart(attachmentPart); + } + + private void setMimeHeaders(SOAPPart soapPart, + MimeBodyPart soapMessagePart) throws Exception { + + // first remove the existing content-type + soapPart.removeAllMimeHeaders(); + // add everything present in soapMessagePart + List headers = soapMessagePart.getAllHeaders(); + int sz = headers.size(); + for( int i=0; iDataContentHandler. + * + * @return The DataFlavors + */ + public DataFlavor[] getTransferDataFlavors() { // throws Exception; + return new DataFlavor[] { myDF }; + } + + /** + * Return the Transfer Data of type DataFlavor from InputStream. + * + * @param df The DataFlavor + * @param ins The InputStream corresponding to the data + * @return String object + */ + public Object getTransferData(DataFlavor df, DataSource ds) { + // use myDF.equals to be sure to get ActivationDataFlavor.equals, + // which properly ignores Content-Type parameters in comparison + if (myDF.equals(df)) + return getContent(ds); + else + return null; + } + + /** + * Return the content. + */ + public Object getContent(DataSource ds) { + try { + return new MimeMultipart( + ds, new ContentType(ds.getContentType())); + } catch (Exception e) { + return null; + } + } + + /** + * Write the object to the output stream, using the specific MIME type. + */ + public void writeTo(Object obj, String mimeType, OutputStream os) + throws IOException { + if (obj instanceof MimeMultipart) { + try { + //TODO: temporarily allow only ByteOutputStream + // Need to add writeTo(OutputStream) on MimeMultipart + ByteOutputStream baos = null; + if (os instanceof ByteOutputStream) { + baos = (ByteOutputStream)os; + } else { + throw new IOException("Input Stream expected to be a com.sun.xml.internal.messaging.saaj.util.ByteOutputStream, but found " + + os.getClass().getName()); + } + ((MimeMultipart)obj).writeTo(baos); + } catch (Exception e) { + throw new IOException(e.toString()); + } + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SAAJMetaFactoryImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SAAJMetaFactoryImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import javax.xml.soap.SAAJMetaFactory; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.MessageFactory; +import javax.xml.soap.SOAPFactory; +import javax.xml.soap.SOAPException; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + +public class SAAJMetaFactoryImpl extends SAAJMetaFactory { + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); + + protected MessageFactory newMessageFactory(String protocol) + throws SOAPException { + if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol)) { + return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl(); + } else if (SOAPConstants.SOAP_1_2_PROTOCOL.equals(protocol)) { + return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPMessageFactory1_2Impl(); + } else if (SOAPConstants.DYNAMIC_SOAP_PROTOCOL.equals(protocol)) { + return new com.sun.xml.internal.messaging.saaj.soap.dynamic.SOAPMessageFactoryDynamicImpl(); + } else { + log.log( + Level.SEVERE, + "SAAJ0569.soap.unknown.protocol", + new Object[] {protocol, "MessageFactory"}); + throw new SOAPException("Unknown Protocol: " + protocol + + " specified for creating MessageFactory"); + } + } + + protected SOAPFactory newSOAPFactory(String protocol) + throws SOAPException { + if (SOAPConstants.SOAP_1_1_PROTOCOL.equals(protocol)) { + return new com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl(); + } else if (SOAPConstants.SOAP_1_2_PROTOCOL.equals(protocol)) { + return new com.sun.xml.internal.messaging.saaj.soap.ver1_2.SOAPFactory1_2Impl(); + } else if (SOAPConstants.DYNAMIC_SOAP_PROTOCOL.equals(protocol)) { + return new com.sun.xml.internal.messaging.saaj.soap.dynamic.SOAPFactoryDynamicImpl(); + } else { + log.log( + Level.SEVERE, + "SAAJ0569.soap.unknown.protocol", + new Object[] {protocol, "SOAPFactory"}); + throw new SOAPException("Unknown Protocol: " + protocol + + " specified for creating SOAPFactory"); + } + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocument.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocument.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,35 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap; + +public interface SOAPDocument { + SOAPPartImpl getSOAPPart(); + SOAPDocumentImpl getDocument(); +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentFragment.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentFragment.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,45 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap; + +import com.sun.org.apache.xerces.internal.dom.CoreDocumentImpl; +import com.sun.org.apache.xerces.internal.dom.DocumentFragmentImpl; + +public class SOAPDocumentFragment extends DocumentFragmentImpl { + + public SOAPDocumentFragment(CoreDocumentImpl ownerDoc) { + super(ownerDoc); + } + + public SOAPDocumentFragment() { + super(); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPDocumentImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,193 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap; + +import java.util.logging.Logger; + +import com.sun.org.apache.xerces.internal.dom.DocumentImpl; +import org.w3c.dom.*; + +import com.sun.xml.internal.messaging.saaj.soap.impl.*; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + +public class SOAPDocumentImpl extends DocumentImpl implements SOAPDocument { + + private static final String XMLNS = "xmlns".intern(); + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); + + SOAPPartImpl enclosingSOAPPart; + + public SOAPDocumentImpl(SOAPPartImpl enclosingDocument) { + this.enclosingSOAPPart = enclosingDocument; + } + + // public SOAPDocumentImpl(boolean grammarAccess) { + // super(grammarAccess); + // } + // + // public SOAPDocumentImpl(DocumentType doctype) { + // super(doctype); + // } + // + // public SOAPDocumentImpl(DocumentType doctype, boolean grammarAccess) { + // super(doctype, grammarAccess); + // } + + public SOAPPartImpl getSOAPPart() { + if (enclosingSOAPPart == null) { + log.severe("SAAJ0541.soap.fragment.not.bound.to.part"); + throw new RuntimeException("Could not complete operation. Fragment not bound to SOAP part."); + } + return enclosingSOAPPart; + } + + public SOAPDocumentImpl getDocument() { + return this; + } + + public DocumentType getDoctype() { + // SOAP means no DTD, No DTD means no doctype (SOAP 1.2 only?) + return null; + } + + public DOMImplementation getImplementation() { + return super.getImplementation(); + } + + public Element getDocumentElement() { + // This had better be an Envelope! + getSOAPPart().doGetDocumentElement(); + return doGetDocumentElement(); + } + + protected Element doGetDocumentElement() { + return super.getDocumentElement(); + } + + public Element createElement(String tagName) throws DOMException { + return ElementFactory.createElement( + this, + NameImpl.getLocalNameFromTagName(tagName), + NameImpl.getPrefixFromTagName(tagName), + null); + } + + public DocumentFragment createDocumentFragment() { + return new SOAPDocumentFragment(this); + } + + public org.w3c.dom.Text createTextNode(String data) { + return new SOAPTextImpl(this, data); + } + + public Comment createComment(String data) { + return new SOAPCommentImpl(this, data); + } + + public CDATASection createCDATASection(String data) throws DOMException { + return new CDATAImpl(this, data); + } + + public ProcessingInstruction createProcessingInstruction( + String target, + String data) + throws DOMException { + log.severe("SAAJ0542.soap.proc.instructions.not.allowed.in.docs"); + throw new UnsupportedOperationException("Processing Instructions are not allowed in SOAP documents"); + } + + public Attr createAttribute(String name) throws DOMException { + boolean isQualifiedName = (name.indexOf(":") > 0); + if (isQualifiedName) { + String nsUri = null; + String prefix = name.substring(0, name.indexOf(":")); + //cannot do anything to resolve the URI if prefix is not + //XMLNS. + if (XMLNS.equals(prefix)) { + nsUri = ElementImpl.XMLNS_URI; + return createAttributeNS(nsUri, name); + } + } + + return super.createAttribute(name); + } + + public EntityReference createEntityReference(String name) + throws DOMException { + log.severe("SAAJ0543.soap.entity.refs.not.allowed.in.docs"); + throw new UnsupportedOperationException("Entity References are not allowed in SOAP documents"); + } + + public NodeList getElementsByTagName(String tagname) { + return super.getElementsByTagName(tagname); + } + + public org.w3c.dom.Node importNode(Node importedNode, boolean deep) + throws DOMException { + return super.importNode(importedNode, deep); + } + + public Element createElementNS(String namespaceURI, String qualifiedName) + throws DOMException { + return ElementFactory.createElement( + this, + NameImpl.getLocalNameFromTagName(qualifiedName), + NameImpl.getPrefixFromTagName(qualifiedName), + namespaceURI); + } + + public Attr createAttributeNS(String namespaceURI, String qualifiedName) + throws DOMException { + return super.createAttributeNS(namespaceURI, qualifiedName); + } + + public NodeList getElementsByTagNameNS( + String namespaceURI, + String localName) { + return super.getElementsByTagNameNS(namespaceURI, localName); + } + + public Element getElementById(String elementId) { + return super.getElementById(elementId); + } + + public Node cloneNode(boolean deep) { + SOAPPartImpl newSoapPart = getSOAPPart().doCloneNode(); + super.cloneNode(newSoapPart.getDocument(), deep); + return newSoapPart; + } + + public void cloneNode(SOAPDocumentImpl newdoc, boolean deep) { + super.cloneNode(newdoc, deep); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPFactoryImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPFactoryImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,179 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import java.util.logging.Logger; +import java.util.logging.Level; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.soap.impl.ElementFactory; +import com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; +import com.sun.xml.internal.messaging.saaj.util.*; + +import org.w3c.dom.Element; +import org.w3c.dom.Document; +import org.w3c.dom.NodeList; +import org.w3c.dom.NamedNodeMap; +import org.w3c.dom.Attr; + +public abstract class SOAPFactoryImpl extends SOAPFactory { + + protected static final Logger + log = Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); + + protected abstract SOAPDocumentImpl createDocument(); + + public SOAPElement createElement(String tagName) throws SOAPException { + if (tagName == null) { + log.log( + Level.SEVERE,"SAAJ0567.soap.null.input", + new Object[] {"tagName","SOAPFactory.createElement"}); + throw new SOAPException("Null tagName argument passed to createElement"); + } + return ElementFactory.createElement(createDocument(), + NameImpl.createFromTagName(tagName)); + } + + public SOAPElement createElement(Name name) throws SOAPException { + // @since SAAJ 1.3 + // If the Name was null it would cause a NullPointerException in earlier release + if (name == null) { + log.log(Level.SEVERE,"SAAJ0567.soap.null.input", + new Object[] {"name","SOAPFactory.createElement"}); + throw new SOAPException("Null name argument passed to createElement"); + } + return ElementFactory.createElement(createDocument(), name); + } + + public SOAPElement createElement(QName qname) throws SOAPException { + if (qname == null) { + log.log(Level.SEVERE,"SAAJ0567.soap.null.input", + new Object[] {"qname","SOAPFactory.createElement"}); + throw new SOAPException("Null qname argument passed to createElement"); + } + return ElementFactory.createElement(createDocument(),qname); + } + + public SOAPElement createElement( + String localName, + String prefix, + String uri) throws SOAPException { + + // @since SAAJ 1.3 + // if prefix !=null but localName== null then in earlier releases it would create + // a Qualified Name :null which is not meaningful + if (localName == null) { + log.log(Level.SEVERE,"SAAJ0567.soap.null.input", + new Object[] {"localName","SOAPFactory.createElement"}); + throw new SOAPException("Null localName argument passed to createElement"); + } + return ElementFactory.createElement(createDocument(), localName, prefix, uri); + } + + public Name createName(String localName, String prefix, String uri) + throws SOAPException { + // @since SAAJ 1.3 + // if localName==null, earlier impl would create Name with localName="" + // which is absurd. + if (localName == null) { + log.log( + Level.SEVERE,"SAAJ0567.soap.null.input", + new Object[] {"localName","SOAPFactory.createName"}); + throw new SOAPException("Null localName argument passed to createName"); + } + return NameImpl.create(localName, prefix, uri); + } + + public Name createName(String localName) throws SOAPException { + // @since SAAJ 1.3 + // if localName==null, earlier impl would create Name with localName=null + // which is absurd. + if (localName == null) { + log.log( + Level.SEVERE,"SAAJ0567.soap.null.input", + new Object[] {"localName","SOAPFactory.createName"}); + throw new SOAPException("Null localName argument passed to createName"); + } + return NameImpl.createFromUnqualifiedName(localName); + } + + // Note: the child elements might still be org.w3c.dom.Element's, but the + // getChildElements will do the conversion to SOAPElement when called. + public SOAPElement createElement(Element domElement) throws SOAPException { + if (domElement == null) { + return null; + } + return convertToSoapElement(domElement); + } + + private SOAPElement convertToSoapElement(Element element) throws SOAPException { + + if (element instanceof SOAPElement) { + return (SOAPElement) element; + } + + SOAPElement copy = createElement( + element.getLocalName(), + element.getPrefix(), + element.getNamespaceURI()); + + Document ownerDoc = copy.getOwnerDocument(); + + NamedNodeMap attrMap = element.getAttributes(); + for (int i=0; i < attrMap.getLength(); i++) { + Attr nextAttr = (Attr)attrMap.item(i); + Attr importedAttr = (Attr)ownerDoc.importNode(nextAttr, true); + copy.setAttributeNodeNS(importedAttr); + } + + + NodeList nl = element.getChildNodes(); + for (int i=0; i < nl.getLength(); i++) { + org.w3c.dom.Node next = nl.item(i); + org.w3c.dom.Node imported = ownerDoc.importNode(next, true); + copy.appendChild(imported); + } + + return copy; + } + + public Detail createDetail() throws SOAPException { + throw new UnsupportedOperationException(); + } + + public SOAPFault createFault(String reasonText, QName faultCode) throws SOAPException { + throw new UnsupportedOperationException(); + } + + public SOAPFault createFault() throws SOAPException { + throw new UnsupportedOperationException(); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPIOException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPIOException.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * Created on Nov 19, 2002 + * + * To change this generated comment edit the template variable "filecomment": + * Window>Preferences>Java>Templates. + * To enable and disable the creation of file comments go to + * Window>Preferences>Java>Code Generation. + */ +package com.sun.xml.internal.messaging.saaj.soap; + +import java.io.*; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; + +public class SOAPIOException extends IOException { + SOAPExceptionImpl soapException; + + public SOAPIOException() { + super(); + soapException = new SOAPExceptionImpl(); + soapException.fillInStackTrace(); + } + + public SOAPIOException(String s) { + super(); + soapException = new SOAPExceptionImpl(s); + soapException.fillInStackTrace(); + } + + public SOAPIOException(String reason, Throwable cause) { + super(); + soapException = new SOAPExceptionImpl(reason, cause); + soapException.fillInStackTrace(); + } + + public SOAPIOException(Throwable cause) { + super(cause.toString()); + soapException = new SOAPExceptionImpl(cause); + soapException.fillInStackTrace(); + } + + public Throwable fillInStackTrace() { + if (soapException != null) { + soapException.fillInStackTrace(); + } + return this; + } + + public String getLocalizedMessage() { + return soapException.getLocalizedMessage(); + } + + public String getMessage() { + return soapException.getMessage(); + } + + public void printStackTrace() { + soapException.printStackTrace(); + } + + public void printStackTrace(PrintStream s) { + soapException.printStackTrace(s); + } + + public void printStackTrace(PrintWriter s) { + soapException.printStackTrace(s); + } + + public String toString() { + return soapException.toString(); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPPartImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPPartImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,822 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import java.io.*; +import java.util.Iterator; +import java.util.logging.Logger; +import java.util.logging.Level; + +import javax.activation.DataHandler; +import javax.activation.DataSource; +import javax.xml.soap.*; +import javax.xml.transform.Source; +import javax.xml.transform.stream.StreamSource; + +import org.w3c.dom.*; + +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeBodyPart; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.ElementImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; +import com.sun.xml.internal.messaging.saaj.util.*; + +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.sax.SAXSource; + +/** + * SOAPPartImpl is the first attachment. This contains the XML/SOAP document. + * + * @author Anil Vijendran (anil@sun.com) + */ +public abstract class SOAPPartImpl extends SOAPPart implements SOAPDocument { + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.LocalStrings"); + + protected MimeHeaders headers; + protected Envelope envelope; + protected Source source; + protected SOAPDocumentImpl document; + + //flag to indicate if a setContent happened. + private boolean sourceWasSet = false; + + // Records whether the input source had an xml decl or not. + protected boolean omitXmlDecl = true; + + // Records the charset encoding of the input stream source if provided. + protected String sourceCharsetEncoding = null; + + /** + * Reference to containing message (may be null) + */ + protected MessageImpl message; + + static final boolean lazyContentLength; + static { + lazyContentLength = SAAJUtil.getSystemBoolean("saaj.lazy.contentlength"); + } + + protected SOAPPartImpl() { + this(null); + } + + protected SOAPPartImpl(MessageImpl message) { + document = new SOAPDocumentImpl(this); + headers = new MimeHeaders(); + this.message = message; + headers.setHeader("Content-Type", getContentType()); + } + + protected abstract String getContentType(); + protected abstract Envelope createEnvelopeFromSource() + throws SOAPException; + protected abstract Envelope createEmptyEnvelope(String prefix) + throws SOAPException; + protected abstract SOAPPartImpl duplicateType(); + + protected String getContentTypeString() { + return getContentType(); + } + + public boolean isFastInfoset() { + return (message != null) ? message.isFastInfoset() : false; + } + + public SOAPEnvelope getEnvelope() throws SOAPException { + + // If there is no SOAP envelope already created, then create + // one from a source if one exists. If there is a newer source + // then use that source. + + if (sourceWasSet) + sourceWasSet = false; + + lookForEnvelope(); + if (envelope != null) { + if (source != null) { // there's a newer source, use it + document.removeChild(envelope); + envelope = createEnvelopeFromSource(); + } + } else if (source != null) { + envelope = createEnvelopeFromSource(); + } else { + envelope = createEmptyEnvelope(null); + document.insertBefore(envelope, null); + } + return envelope; + } + + protected void lookForEnvelope() throws SOAPException { + Element envelopeChildElement = document.doGetDocumentElement(); + if (envelopeChildElement == null || envelopeChildElement instanceof Envelope) { + envelope = (EnvelopeImpl) envelopeChildElement; + } else if (!(envelopeChildElement instanceof ElementImpl)) { + log.severe("SAAJ0512.soap.incorrect.factory.used"); + throw new SOAPExceptionImpl("Unable to create envelope: incorrect factory used during tree construction"); + } else { + ElementImpl soapElement = (ElementImpl) envelopeChildElement; + if (soapElement.getLocalName().equalsIgnoreCase("Envelope")) { + String prefix = soapElement.getPrefix(); + String uri = (prefix == null) ? soapElement.getNamespaceURI() : soapElement.getNamespaceURI(prefix); + if(!uri.equals(NameImpl.SOAP11_NAMESPACE) && !uri.equals(NameImpl.SOAP12_NAMESPACE)) { + log.severe("SAAJ0513.soap.unknown.ns"); + throw new SOAPVersionMismatchException("Unable to create envelope from given source because the namespace was not recognized"); + } + } else { + log.severe("SAAJ0514.soap.root.elem.not.named.envelope"); + throw new SOAPExceptionImpl( + "Unable to create envelope from given source because the root element is not named \"Envelope\""); + } + } + } + + public void removeAllMimeHeaders() { + headers.removeAllHeaders(); + } + + public void removeMimeHeader(String header) { + headers.removeHeader(header); + } + + public String[] getMimeHeader(String name) { + return headers.getHeader(name); + } + + public void setMimeHeader(String name, String value) { + headers.setHeader(name, value); + } + + public void addMimeHeader(String name, String value) { + headers.addHeader(name, value); + } + + public Iterator getAllMimeHeaders() { + return headers.getAllHeaders(); + } + + public Iterator getMatchingMimeHeaders(String[] names) { + return headers.getMatchingHeaders(names); + } + + public Iterator getNonMatchingMimeHeaders(String[] names) { + return headers.getNonMatchingHeaders(names); + } + + public Source getContent() throws SOAPException { + if (source != null) { + InputStream bis = null; + if (source instanceof JAXMStreamSource) { + StreamSource streamSource = (StreamSource)source; + bis = streamSource.getInputStream(); + } else if (FastInfosetReflection.isFastInfosetSource(source)) { + // FastInfosetSource inherits from SAXSource + SAXSource saxSource = (SAXSource)source; + bis = saxSource.getInputSource().getByteStream(); + } + + if (bis != null) { + try { + bis.reset(); + } catch (IOException e) { + /* This exception will never be thrown. + * + * The setContent method will modify the source + * if StreamSource to JAXMStreamSource, that uses + * a ByteInputStream, and for a FastInfosetSource will + * replace the InputStream with a ByteInputStream. + */ + } + } + return source; + } + + return ((Envelope) getEnvelope()).getContent(); + } + + public void setContent(Source source) throws SOAPException { + try { + if (source instanceof StreamSource) { + InputStream is = ((StreamSource) source).getInputStream(); + Reader rdr = ((StreamSource) source).getReader(); + + if (is != null) { + this.source = new JAXMStreamSource(is); + } else if (rdr != null) { + this.source = new JAXMStreamSource(rdr); + } else { + log.severe("SAAJ0544.soap.no.valid.reader.for.src"); + throw new SOAPExceptionImpl("Source does not have a valid Reader or InputStream"); + } + } + else if (FastInfosetReflection.isFastInfosetSource(source)) { + // InputStream is = source.getInputStream() + InputStream is = FastInfosetReflection.FastInfosetSource_getInputStream(source); + + /* + * Underlying stream must be ByteInputStream for getContentAsStream(). We pay the + * cost of copying the underlying bytes here to avoid multiple copies every time + * getBytes() is called on a ByteInputStream. + */ + if (!(is instanceof ByteInputStream)) { + ByteOutputStream bout = null; + try { + bout = new ByteOutputStream(); + bout.write(is); + + // source.setInputStream(new ByteInputStream(...)) + FastInfosetReflection.FastInfosetSource_setInputStream( + source, bout.newInputStream()); + } finally { + if (bout != null) + bout.close(); + } + } + this.source = source; + } + else { + this.source = source; + } + sourceWasSet = true; + } + catch (Exception ex) { + ex.printStackTrace(); + + log.severe("SAAJ0545.soap.cannot.set.src.for.part"); + throw new SOAPExceptionImpl( + "Error setting the source for SOAPPart: " + ex.getMessage()); + } + } + + public InputStream getContentAsStream() throws IOException { + if (source != null) { + InputStream is = null; + + // Allow message to be transcode if so requested + if (source instanceof StreamSource && !isFastInfoset()) { + is = ((StreamSource) source).getInputStream(); + } + else if (FastInfosetReflection.isFastInfosetSource(source) && + isFastInfoset()) + { + try { + // InputStream is = source.getInputStream() + is = FastInfosetReflection.FastInfosetSource_getInputStream(source); + } + catch (Exception e) { + throw new IOException(e.toString()); + } + } + + if (is != null) { + if (lazyContentLength) { + return is; + } + if (!(is instanceof ByteInputStream)) { + log.severe("SAAJ0546.soap.stream.incorrect.type"); + throw new IOException("Internal error: stream not of the right type"); + } + return (ByteInputStream) is; + } + // need to do something here for reader... + // for now we'll see if we can fallback... + } + + ByteOutputStream b = new ByteOutputStream(); + + Envelope env = null; + + try { + env = (Envelope) getEnvelope(); + env.output(b, isFastInfoset()); + } + catch (SOAPException soapException) { + log.severe("SAAJ0547.soap.cannot.externalize"); + throw new SOAPIOException( + "SOAP exception while trying to externalize: ", + soapException); + } + + return b.newInputStream(); + } + + MimeBodyPart getMimePart() throws SOAPException { + try { + MimeBodyPart headerEnvelope = new MimeBodyPart(); + + headerEnvelope.setDataHandler(getDataHandler()); + AttachmentPartImpl.copyMimeHeaders(headers, headerEnvelope); + + return headerEnvelope; + } catch (SOAPException ex) { + throw ex; + } catch (Exception ex) { + log.severe("SAAJ0548.soap.cannot.externalize.hdr"); + throw new SOAPExceptionImpl("Unable to externalize header", ex); + } + } + + MimeHeaders getMimeHeaders() { + return headers; + } + + DataHandler getDataHandler() { + DataSource ds = new DataSource() { + public OutputStream getOutputStream() throws IOException { + throw new IOException("Illegal Operation"); + } + + public String getContentType() { + return getContentTypeString(); + } + + public String getName() { + return getContentId(); + } + + public InputStream getInputStream() throws IOException { + return getContentAsStream(); + } + }; + return new DataHandler(ds); + } + + public SOAPDocumentImpl getDocument() { + handleNewSource(); + return document; + } + + public SOAPPartImpl getSOAPPart() { + return this; + } + + public DocumentType getDoctype() { + return document.getDoctype(); + } + + // Forward all of these calls to the document to ensure that they work the + // same way whether they are called from here or directly from the document. + // If the document needs any help from this SOAPPart then + // Make it use a call-back as in doGetDocumentElement() below + public DOMImplementation getImplementation() { + return document.getImplementation(); + } + + public Element getDocumentElement() { + // If there is no SOAP envelope already created, then create + // one from a source if one exists. If there is a newer source + // then use that source. + try { + getEnvelope(); + } catch (SOAPException e) { + } + return document.getDocumentElement(); + } + + protected void doGetDocumentElement() { + handleNewSource(); + try { + lookForEnvelope(); + } catch (SOAPException e) { + } + } + + public Element createElement(String tagName) throws DOMException { + return document.createElement(tagName); + } + + public DocumentFragment createDocumentFragment() { + return document.createDocumentFragment(); + } + + public org.w3c.dom.Text createTextNode(String data) { + return document.createTextNode(data); + } + + public Comment createComment(String data) { + return document.createComment(data); + } + + public CDATASection createCDATASection(String data) throws DOMException { + return document.createCDATASection(data); + } + + public ProcessingInstruction createProcessingInstruction( + String target, + String data) + throws DOMException { + return document.createProcessingInstruction(target, data); + } + + public Attr createAttribute(String name) throws DOMException { + return document.createAttribute(name); + } + + public EntityReference createEntityReference(String name) + throws DOMException { + return document.createEntityReference(name); + } + + public NodeList getElementsByTagName(String tagname) { + handleNewSource(); + return document.getElementsByTagName(tagname); + } + + public org.w3c.dom.Node importNode( + org.w3c.dom.Node importedNode, + boolean deep) + throws DOMException { + handleNewSource(); + return document.importNode(importedNode, deep); + } + + public Element createElementNS(String namespaceURI, String qualifiedName) + throws DOMException { + return document.createElementNS(namespaceURI, qualifiedName); + } + + public Attr createAttributeNS(String namespaceURI, String qualifiedName) + throws DOMException { + return document.createAttributeNS(namespaceURI, qualifiedName); + } + + public NodeList getElementsByTagNameNS( + String namespaceURI, + String localName) { + handleNewSource(); + return document.getElementsByTagNameNS(namespaceURI, localName); + } + + public Element getElementById(String elementId) { + handleNewSource(); + return document.getElementById(elementId); + } + public org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild) + throws DOMException { + handleNewSource(); + return document.appendChild(newChild); + } + + public org.w3c.dom.Node cloneNode(boolean deep) { + handleNewSource(); + return document.cloneNode(deep); + } + + protected SOAPPartImpl doCloneNode() { + handleNewSource(); + SOAPPartImpl newSoapPart = duplicateType(); + + newSoapPart.headers = MimeHeadersUtil.copy(this.headers); + newSoapPart.source = this.source; + return newSoapPart; + } + + public NamedNodeMap getAttributes() { + return document.getAttributes(); + } + + public NodeList getChildNodes() { + handleNewSource(); + return document.getChildNodes(); + } + + public org.w3c.dom.Node getFirstChild() { + handleNewSource(); + return document.getFirstChild(); + } + + public org.w3c.dom.Node getLastChild() { + handleNewSource(); + return document.getLastChild(); + } + + public String getLocalName() { + return document.getLocalName(); + } + + public String getNamespaceURI() { + return document.getNamespaceURI(); + } + + public org.w3c.dom.Node getNextSibling() { + handleNewSource(); + return document.getNextSibling(); + } + + public String getNodeName() { + return document.getNodeName(); + } + + public short getNodeType() { + return document.getNodeType(); + } + + public String getNodeValue() throws DOMException { + return document.getNodeValue(); + } + + public Document getOwnerDocument() { + return document.getOwnerDocument(); + } + + public org.w3c.dom.Node getParentNode() { + return document.getParentNode(); + } + + public String getPrefix() { + return document.getPrefix(); + } + + public org.w3c.dom.Node getPreviousSibling() { + return document.getPreviousSibling(); + } + + public boolean hasAttributes() { + return document.hasAttributes(); + } + + public boolean hasChildNodes() { + handleNewSource(); + return document.hasChildNodes(); + } + + public org.w3c.dom.Node insertBefore( + org.w3c.dom.Node arg0, + org.w3c.dom.Node arg1) + throws DOMException { + handleNewSource(); + return document.insertBefore(arg0, arg1); + } + + public boolean isSupported(String arg0, String arg1) { + return document.isSupported(arg0, arg1); + } + + public void normalize() { + handleNewSource(); + document.normalize(); + } + + public org.w3c.dom.Node removeChild(org.w3c.dom.Node arg0) + throws DOMException { + handleNewSource(); + return document.removeChild(arg0); + } + + public org.w3c.dom.Node replaceChild( + org.w3c.dom.Node arg0, + org.w3c.dom.Node arg1) + throws DOMException { + handleNewSource(); + return document.replaceChild(arg0, arg1); + } + + public void setNodeValue(String arg0) throws DOMException { + document.setNodeValue(arg0); + } + + public void setPrefix(String arg0) throws DOMException { + document.setPrefix(arg0); + } + + private void handleNewSource() { + if (sourceWasSet) { + // There is a newer source use that source. + try { + getEnvelope(); + } catch (SOAPException e) { + } + } + } + + protected XMLDeclarationParser lookForXmlDecl() throws SOAPException { + if ((source != null) && (source instanceof StreamSource)) { + + Reader reader = null; + + InputStream inputStream = ((StreamSource) source).getInputStream(); + if (inputStream != null) { + if (getSourceCharsetEncoding() == null) { + reader = new InputStreamReader(inputStream); + } else { + try { + reader = + new InputStreamReader( + inputStream, getSourceCharsetEncoding()); + } catch (UnsupportedEncodingException uee) { + log.log( + Level.SEVERE, + "SAAJ0551.soap.unsupported.encoding", + new Object[] {getSourceCharsetEncoding()}); + throw new SOAPExceptionImpl( + "Unsupported encoding " + getSourceCharsetEncoding(), + uee); + } + } + } else { + reader = ((StreamSource) source).getReader(); + } + if (reader != null) { + PushbackReader pushbackReader = + new PushbackReader(reader, 4096); //some size to unread + XMLDeclarationParser ev = + new XMLDeclarationParser(pushbackReader); + try { + ev.parse(); + } catch (Exception e) { + log.log( + Level.SEVERE, + "SAAJ0552.soap.xml.decl.parsing.failed"); + throw new SOAPExceptionImpl( + "XML declaration parsing failed", e); + } + String xmlDecl = ev.getXmlDeclaration(); + if ((xmlDecl != null) && (xmlDecl.length() > 0)) { + this.omitXmlDecl = false; + } + if (lazyContentLength) { + source = new StreamSource(pushbackReader); + } + return ev; + } + } else if ((source != null) && (source instanceof DOMSource)) { + //TODO: A Domsource maynot contain XMLDecl ?. + } + return null; + } + + public void setSourceCharsetEncoding(String charset) { + this.sourceCharsetEncoding = charset; + } + + public org.w3c.dom.Node renameNode(org.w3c.dom.Node n, String namespaceURI, String qualifiedName) + throws DOMException { + handleNewSource(); + return document.renameNode(n, namespaceURI, qualifiedName); + } + + public void normalizeDocument() { + document.normalizeDocument(); + } + + public DOMConfiguration getDomConfig() { + return document.getDomConfig(); + } + + public org.w3c.dom.Node adoptNode(org.w3c.dom.Node source) throws DOMException { + handleNewSource(); + return document.adoptNode(source); + } + + public void setDocumentURI(String documentURI) { + document.setDocumentURI(documentURI); + } + + public String getDocumentURI() { + return document.getDocumentURI(); + } + + public void setStrictErrorChecking(boolean strictErrorChecking) { + document.setStrictErrorChecking(strictErrorChecking); + } + + public String getInputEncoding() { + return document.getInputEncoding(); + } + + public String getXmlEncoding() { + return document.getXmlEncoding(); + } + + public boolean getXmlStandalone() { + return document.getXmlStandalone(); + } + + public void setXmlStandalone(boolean xmlStandalone) throws DOMException { + document.setXmlStandalone(xmlStandalone); + } + + public String getXmlVersion() { + return document.getXmlVersion(); + } + + public void setXmlVersion(String xmlVersion) throws DOMException { + document.setXmlVersion(xmlVersion); + } + + public boolean getStrictErrorChecking() { + return document.getStrictErrorChecking(); + } + + // DOM L3 methods from org.w3c.dom.Node + public String getBaseURI() { + return document.getBaseURI(); + } + + public short compareDocumentPosition(org.w3c.dom.Node other) + throws DOMException { + return document.compareDocumentPosition(other); + } + + public String getTextContent() + throws DOMException { + return document.getTextContent(); + } + + public void setTextContent(String textContent) throws DOMException { + document.setTextContent(textContent); + } + + public boolean isSameNode(org.w3c.dom.Node other) { + return document.isSameNode(other); + } + + public String lookupPrefix(String namespaceURI) { + return document.lookupPrefix(namespaceURI); + } + + public boolean isDefaultNamespace(String namespaceURI) { + return document.isDefaultNamespace(namespaceURI); + } + + public String lookupNamespaceURI(String prefix) { + return document.lookupNamespaceURI(prefix); + } + + public boolean isEqualNode(org.w3c.dom.Node arg) { + return document.isEqualNode(arg); + } + + public Object getFeature(String feature, + String version) { + return document.getFeature(feature,version); + } + + public Object setUserData(String key, + Object data, + UserDataHandler handler) { + return document.setUserData(key, data, handler); + } + + public Object getUserData(String key) { + return document.getUserData(key); + } + + public void recycleNode() { + // Nothing seems to be required to be done here + } + + public String getValue() { + return null; + } + + public void setValue(String value) { + log.severe("SAAJ0571.soappart.setValue.not.defined"); + throw new IllegalStateException("Setting value of a soap part is not defined"); + } + + public void setParentElement(SOAPElement parent) throws SOAPException { + log.severe("SAAJ0570.soappart.parent.element.not.defined"); + throw new SOAPExceptionImpl("The parent element of a soap part is not defined"); + } + + public SOAPElement getParentElement() { + return null; + } + + public void detachNode() { + // Nothing seems to be required to be done here + } + + public String getSourceCharsetEncoding() { + return sourceCharsetEncoding; + } + + public abstract String getSOAPNamespace(); +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPVersionMismatchException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/SOAPVersionMismatchException.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,70 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; + +public class SOAPVersionMismatchException extends SOAPExceptionImpl { + /** + * Constructs a SOAPExceptionImpl object with no + * reason or embedded Throwable object. + */ + public SOAPVersionMismatchException() { + super(); + } + + /** + * Constructs a SOAPExceptionImpl object with the given + * String as the reason for the exception being thrown. + * + * @param reason a description of what caused the exception + */ + public SOAPVersionMismatchException(String reason) { + super(reason); + } + + /** + * Constructs a SOAPExceptionImpl object with the given + * String as the reason for the exception being thrown + * and the given Throwable object as an embedded + * exception. + * + * @param reason a description of what caused the exception + * @param cause a Throwable object that is to + * be embedded in this SOAPExceptionImpl object + */ + public SOAPVersionMismatchException(String reason, Throwable cause) { + super(reason, cause); + } + + /** + * Constructs a SOAPExceptionImpl object initialized + * with the given Throwable object. + */ + public SOAPVersionMismatchException(Throwable cause) { + super(cause); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxBridge.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxBridge.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import com.sun.xml.internal.messaging.saaj.util.stax.SaajStaxWriter; + +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPException; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter; + + +/** + * StaxBridge builds Envelope using a XMLStreamReaderToXMLStreamWriter + * + * @author shih-chang.chen@oracle.com + */ +public abstract class StaxBridge { + protected SaajStaxWriter saajWriter; + protected XMLStreamReaderToXMLStreamWriter readerToWriter; + protected XMLStreamReaderToXMLStreamWriter.Breakpoint breakpoint; + + + public StaxBridge(SOAPPartImpl soapPart) throws SOAPException { + readerToWriter = new XMLStreamReaderToXMLStreamWriter(); + saajWriter = new SaajStaxWriter(soapPart.message, soapPart.getSOAPNamespace()); + } + + public void bridgeEnvelopeAndHeaders() throws XMLStreamException { + readerToWriter.bridge(breakpoint); + } + + public void bridgePayload() throws XMLStreamException { + readerToWriter.bridge(breakpoint); + } + + abstract public XMLStreamReader getPayloadReader(); + + abstract public QName getPayloadQName(); + + abstract public String getPayloadAttributeValue(String attName) ; + + abstract public String getPayloadAttributeValue(QName attName) ; +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxLazySourceBridge.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxLazySourceBridge.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,105 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPException; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; + +import com.sun.xml.internal.messaging.saaj.LazyEnvelopeSource; +import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter; + + +/** + * StaxBridge builds Envelope from LazyEnvelopeSource + * + * @author shih-chang.chen@oracle.com + */ +public class StaxLazySourceBridge extends StaxBridge { + private LazyEnvelopeSource lazySource; + + public StaxLazySourceBridge(LazyEnvelopeSource src, SOAPPartImpl soapPart) throws SOAPException { + super(soapPart); + lazySource = src; + final String soapEnvNS = soapPart.getSOAPNamespace(); + try { + breakpoint = new XMLStreamReaderToXMLStreamWriter.Breakpoint(src.readToBodyStarTag(), saajWriter) { + public boolean proceedAfterStartElement() { + if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){ + return false; + } else + return true; + } + }; + } catch (XMLStreamException e) { + throw new SOAPException(e); + } + } + + @Override + public XMLStreamReader getPayloadReader() { + return lazySource.readPayload(); +// throw new UnsupportedOperationException(); + } + + @Override + public QName getPayloadQName() { + return lazySource.getPayloadQName(); + } + + @Override + public String getPayloadAttributeValue(String attName) { + if (lazySource.isPayloadStreamReader()) { + XMLStreamReader reader = lazySource.readPayload(); + if (reader.getEventType() == reader.START_ELEMENT) { + return reader.getAttributeValue(null, attName); + } + } + return null; + } + + @Override + public String getPayloadAttributeValue(QName attName) { + if (lazySource.isPayloadStreamReader()) { + XMLStreamReader reader = lazySource.readPayload(); + if (reader.getEventType() == reader.START_ELEMENT) { + return reader.getAttributeValue(attName.getNamespaceURI(), attName.getLocalPart()); + } + } + return null; + } + + public void bridgePayload() throws XMLStreamException { + //Assuming out is at Body + writePayloadTo(saajWriter); + } + + public void writePayloadTo(XMLStreamWriter writer) throws XMLStreamException { + lazySource.writePayloadTo(writer); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxReaderBridge.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StaxReaderBridge.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,78 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPException; +import javax.xml.stream.XMLStreamReader; + +import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter; + +/** + * StaxBridge builds Envelope using a XMLStreamReaderToXMLStreamWriter + * + * @author shih-chang.chen@oracle.com + */ +public class StaxReaderBridge extends StaxBridge { + private XMLStreamReader in; + + public StaxReaderBridge(XMLStreamReader reader, SOAPPartImpl soapPart) throws SOAPException { + super(soapPart); + in = reader; + final String soapEnvNS = soapPart.getSOAPNamespace(); + breakpoint = new XMLStreamReaderToXMLStreamWriter.Breakpoint(reader, saajWriter) { + boolean seenBody = false; + boolean stopedAtBody = false; + public boolean proceedBeforeStartElement() { + if (stopedAtBody) return true; + if (seenBody) { + stopedAtBody = true; + return false; + } + if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){ + seenBody = true; + } + return true; + } + }; + } + + public XMLStreamReader getPayloadReader() { + return in; + } + + public QName getPayloadQName() { + return (in.getEventType() == in.START_ELEMENT) ? in.getName() : null; + } + + public String getPayloadAttributeValue(String attName) { + return (in.getEventType() == in.START_ELEMENT) ? in.getAttributeValue(null, attName) : null; + } + + public String getPayloadAttributeValue(QName attName) { + return (in.getEventType() == in.START_ELEMENT) ? in.getAttributeValue(attName.getNamespaceURI(), attName.getLocalPart()) : null; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StringDataContentHandler.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/StringDataContentHandler.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,167 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import java.awt.datatransfer.DataFlavor; +import java.io.*; + +import javax.activation.*; +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.MimeUtility; +import com.sun.xml.internal.messaging.saaj.packaging.mime.util.ASCIIUtility; +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType; + +/** + * JAF data content handler for text/plain --> String + * + */ +public class StringDataContentHandler implements DataContentHandler { + private static ActivationDataFlavor myDF = new ActivationDataFlavor( + java.lang.String.class, + "text/plain", + "Text String"); + + protected ActivationDataFlavor getDF() { + return myDF; + } + + /** + * Return the DataFlavors for this DataContentHandler. + * + * @return The DataFlavors + */ + public DataFlavor[] getTransferDataFlavors() { + return new DataFlavor[] { getDF() }; + } + + /** + * Return the Transfer Data of type DataFlavor from InputStream. + * + * @param df The DataFlavor + * @param ds The DataSource corresponding to the data + * @return String object + */ + public Object getTransferData(DataFlavor df, DataSource ds) + throws IOException { + // use myDF.equals to be sure to get ActivationDataFlavor.equals, + // which properly ignores Content-Type parameters in comparison + if (getDF().equals(df)) + return getContent(ds); + else + return null; + } + + public Object getContent(DataSource ds) throws IOException { + String enc = null; + InputStreamReader is = null; + + try { + enc = getCharset(ds.getContentType()); + is = new InputStreamReader(ds.getInputStream(), enc); + } catch (IllegalArgumentException iex) { + /* + * An unknown charset of the form ISO-XXX-XXX will cause + * the JDK to throw an IllegalArgumentException. The + * JDK will attempt to create a classname using this string, + * but valid classnames must not contain the character '-', + * and this results in an IllegalArgumentException, rather than + * the expected UnsupportedEncodingException. Yikes. + */ + throw new UnsupportedEncodingException(enc); + } + + try { + int pos = 0; + int count; + char buf[] = new char[1024]; + + while ((count = is.read(buf, pos, buf.length - pos)) != -1) { + pos += count; + if (pos >= buf.length) { + int size = buf.length; + if (size < 256*1024) + size += size; + else + size += 256*1024; + char tbuf[] = new char[size]; + System.arraycopy(buf, 0, tbuf, 0, pos); + buf = tbuf; + } + } + return new String(buf, 0, pos); + } finally { + try { + is.close(); + } catch (IOException ex) { } + } + } + + /** + * Write the object to the output stream, using the specified MIME type. + */ + public void writeTo(Object obj, String type, OutputStream os) + throws IOException { + if (!(obj instanceof String)) + throw new IOException("\"" + getDF().getMimeType() + + "\" DataContentHandler requires String object, " + + "was given object of type " + obj.getClass().toString()); + + String enc = null; + OutputStreamWriter osw = null; + + try { + enc = getCharset(type); + osw = new OutputStreamWriter(os, enc); + } catch (IllegalArgumentException iex) { + /* + * An unknown charset of the form ISO-XXX-XXX will cause + * the JDK to throw an IllegalArgumentException. The + * JDK will attempt to create a classname using this string, + * but valid classnames must not contain the character '-', + * and this results in an IllegalArgumentException, rather than + * the expected UnsupportedEncodingException. Yikes. + */ + throw new UnsupportedEncodingException(enc); + } + + String s = (String)obj; + osw.write(s, 0, s.length()); + osw.flush(); + } + + private String getCharset(String type) { + try { + ContentType ct = new ContentType(type); + String charset = ct.getParameter("charset"); + if (charset == null) + // If the charset parameter is absent, use US-ASCII. + charset = "us-ascii"; + return MimeUtility.javaCharset(charset); + } catch (Exception ex) { + return null; + } + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/XmlDataContentHandler.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/XmlDataContentHandler.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,127 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap; + +import java.awt.datatransfer.DataFlavor; +import java.io.IOException; +import java.io.OutputStream; + +import javax.activation.*; +import javax.xml.transform.Source; +import javax.xml.transform.Transformer; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer; + +/** + * JAF data handler for XML content + * + * @author Anil Vijendran + */ +public class XmlDataContentHandler implements DataContentHandler { + public static final String STR_SRC = "javax.xml.transform.stream.StreamSource"; + private static Class streamSourceClass = null; + + public XmlDataContentHandler() throws ClassNotFoundException { + if (streamSourceClass == null) { + streamSourceClass = Class.forName(STR_SRC); + } + } + + /** + * return the DataFlavors for this DataContentHandler + * @return The DataFlavors. + */ + public DataFlavor[] getTransferDataFlavors() { // throws Exception; + DataFlavor flavors[] = new DataFlavor[2]; + + flavors[0] = + new ActivationDataFlavor(streamSourceClass, "text/xml", "XML"); + flavors[1] = + new ActivationDataFlavor(streamSourceClass, "application/xml", "XML"); + + return flavors; + } + + /** + * return the Transfer Data of type DataFlavor from InputStream + * @param df The DataFlavor. + * @param ins The InputStream corresponding to the data. + * @return The constructed Object. + */ + public Object getTransferData(DataFlavor flavor, DataSource dataSource) + throws IOException { + if (flavor.getMimeType().startsWith("text/xml") || + flavor.getMimeType().startsWith("application/xml")) { + if (flavor.getRepresentationClass().getName().equals(STR_SRC)) { + return new StreamSource(dataSource.getInputStream()); + } + } + return null; + } + + /** + * + */ + public Object getContent(DataSource dataSource) throws IOException { + return new StreamSource(dataSource.getInputStream()); + } + + /** + * construct an object from a byte stream + * (similar semantically to previous method, we are deciding + * which one to support) + */ + public void writeTo(Object obj, String mimeType, OutputStream os) + throws IOException { + if (!mimeType.startsWith("text/xml") && !mimeType.startsWith("application/xml")) + throw new IOException( + "Invalid content type \"" + mimeType + "\" for XmlDCH"); + + + try { + Transformer transformer = EfficientStreamingTransformer.newTransformer(); + StreamResult result = new StreamResult(os); + if (obj instanceof DataSource) { + // Streaming transform applies only to javax.xml.transform.StreamSource + transformer.transform((Source) getContent((DataSource)obj), result); + } else { + Source src=null; + if (obj instanceof String) { + src= new StreamSource(new java.io.StringReader((String) obj)); + } else { + src=(Source) obj; + } + transformer.transform(src, result); + } + } catch (Exception ex) { + throw new IOException( + "Unable to run the JAXP transformer on a stream " + + ex.getMessage()); + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPFactoryDynamicImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPFactoryDynamicImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,48 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.dynamic; + +import javax.xml.soap.Detail; +import javax.xml.soap.SOAPException; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl; + +public class SOAPFactoryDynamicImpl extends SOAPFactoryImpl { + protected SOAPDocumentImpl createDocument() { + return null; + } + + public Detail createDetail() throws SOAPException { + throw new UnsupportedOperationException( + "createDetail() not supported for Dynamic Protocol"); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPMessageFactoryDynamicImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/dynamic/SOAPMessageFactoryDynamicImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,45 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.dynamic; + +import java.io.IOException; +import java.io.InputStream; + +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl; + +public class SOAPMessageFactoryDynamicImpl extends MessageFactoryImpl { + public SOAPMessage createMessage() throws SOAPException { + throw new UnsupportedOperationException( + "createMessage() not supported for Dynamic Protocol"); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyElementImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyElementImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.impl; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; + +/** + * All elements of the SOAP-ENV:BODY. + * + * @author Anil Vijendran (akv@eng.sun.com) + */ +public abstract class BodyElementImpl + extends ElementImpl + implements SOAPBodyElement { + + public BodyElementImpl(SOAPDocumentImpl ownerDoc, Name qname) { + super(ownerDoc, qname); + } + + public BodyElementImpl(SOAPDocumentImpl ownerDoc, QName qname) { + super(ownerDoc, qname); + } + + public void setParentElement(SOAPElement element) throws SOAPException { + if (! (element instanceof SOAPBody)) { + log.severe("SAAJ0101.impl.parent.of.body.elem.mustbe.body"); + throw new SOAPException("Parent of a SOAPBodyElement has to be a SOAPBody"); + } + super.setParentElement(element); + } + + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/BodyImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,467 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.impl; + +import java.util.Iterator; +import java.util.Locale; +import java.util.logging.Level; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; + +import org.w3c.dom.*; +import org.w3c.dom.Node; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.StaxBridge; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +/** + * The implementation of SOAP-ENV:BODY or the SOAPBody abstraction. + * + * @author Anil Vijendran (anil@sun.com) + */ +public abstract class BodyImpl extends ElementImpl implements SOAPBody { + private SOAPFault fault; +// private XMLStreamReaderToXMLStreamWriter staxBridge; + private StaxBridge staxBridge; + private boolean payloadStreamRead = false; + + protected BodyImpl(SOAPDocumentImpl ownerDoc, NameImpl bodyName) { + super(ownerDoc, bodyName); + } + + protected abstract NameImpl getFaultName(String name); + protected abstract boolean isFault(SOAPElement child); + protected abstract SOAPBodyElement createBodyElement(Name name); + protected abstract SOAPBodyElement createBodyElement(QName name); + protected abstract SOAPFault createFaultElement(); + protected abstract QName getDefaultFaultCode(); + + public SOAPFault addFault() throws SOAPException { + if (hasFault()) { + log.severe("SAAJ0110.impl.fault.already.exists"); + throw new SOAPExceptionImpl("Error: Fault already exists"); + } + + fault = createFaultElement(); + + addNode(fault); + + fault.setFaultCode(getDefaultFaultCode()); + fault.setFaultString("Fault string, and possibly fault code, not set"); + + return fault; + } + + public SOAPFault addFault( + Name faultCode, + String faultString, + Locale locale) + throws SOAPException { + + SOAPFault fault = addFault(); + fault.setFaultCode(faultCode); + fault.setFaultString(faultString, locale); + return fault; + } + + public SOAPFault addFault( + QName faultCode, + String faultString, + Locale locale) + throws SOAPException { + + SOAPFault fault = addFault(); + fault.setFaultCode(faultCode); + fault.setFaultString(faultString, locale); + return fault; + } + + public SOAPFault addFault(Name faultCode, String faultString) + throws SOAPException { + + SOAPFault fault = addFault(); + fault.setFaultCode(faultCode); + fault.setFaultString(faultString); + return fault; + } + + public SOAPFault addFault(QName faultCode, String faultString) + throws SOAPException { + + SOAPFault fault = addFault(); + fault.setFaultCode(faultCode); + fault.setFaultString(faultString); + return fault; + } + + void initializeFault() { + FaultImpl flt = (FaultImpl) findFault(); + fault = flt; + } + + protected SOAPElement findFault() { + Iterator eachChild = getChildElementNodes(); + while (eachChild.hasNext()) { + SOAPElement child = (SOAPElement) eachChild.next(); + if (isFault(child)) { + return child; + } + } + + return null; + } + + public boolean hasFault() { + QName payloadQName = getPayloadQName(); + return getFaultQName().equals(payloadQName); + } + + private Object getFaultQName() { + return new QName(getNamespaceURI(), "Fault"); + } + + public SOAPFault getFault() { + if (hasFault()) { + if (fault == null) { + //initialize fault member + fault = (SOAPFault) getFirstChildElement(); + } + return fault; + } + return null; + } + + public SOAPBodyElement addBodyElement(Name name) throws SOAPException { + SOAPBodyElement newBodyElement = + (SOAPBodyElement) ElementFactory.createNamedElement( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name.getLocalName(), + name.getPrefix(), + name.getURI()); + if (newBodyElement == null) { + newBodyElement = createBodyElement(name); + } + addNode(newBodyElement); + return newBodyElement; + } + + public SOAPBodyElement addBodyElement(QName qname) throws SOAPException { + SOAPBodyElement newBodyElement = + (SOAPBodyElement) ElementFactory.createNamedElement( + ((SOAPDocument) getOwnerDocument()).getDocument(), + qname.getLocalPart(), + qname.getPrefix(), + qname.getNamespaceURI()); + if (newBodyElement == null) { + newBodyElement = createBodyElement(qname); + } + addNode(newBodyElement); + return newBodyElement; + } + + public void setParentElement(SOAPElement element) throws SOAPException { + + if (!(element instanceof SOAPEnvelope)) { + log.severe("SAAJ0111.impl.body.parent.must.be.envelope"); + throw new SOAPException("Parent of SOAPBody has to be a SOAPEnvelope"); + } + super.setParentElement(element); + } + + protected SOAPElement addElement(Name name) throws SOAPException { + return addBodyElement(name); + } + + protected SOAPElement addElement(QName name) throws SOAPException { + return addBodyElement(name); + } + + // public Node insertBefore(Node newElement, Node ref) throws DOMException { + // if (!(newElement instanceof SOAPBodyElement) && (newElement instanceof SOAPElement)) { + // newElement = new ElementWrapper((ElementImpl) newElement); + // } + // return super.insertBefore(newElement, ref); + // } + // + // public Node replaceChild(Node newElement, Node ref) throws DOMException { + // if (!(newElement instanceof SOAPBodyElement) && (newElement instanceof SOAPElement)) { + // newElement = new ElementWrapper((ElementImpl) newElement); + // } + // return super.replaceChild(newElement, ref); + // } + + public SOAPBodyElement addDocument(Document document) + throws SOAPException { + /* + + Element rootNode = + document.getDocumentElement(); + // Causes all deferred nodes to be inflated + rootNode.normalize(); + adoptElement(rootNode); + SOAPBodyElement bodyElement = (SOAPBodyElement) convertToSoapElement(rootNode); + addNode(bodyElement); + return bodyElement; + */ + ///* + SOAPBodyElement newBodyElement = null; + DocumentFragment docFrag = document.createDocumentFragment(); + Element rootElement = document.getDocumentElement(); + if(rootElement != null) { + docFrag.appendChild(rootElement); + + Document ownerDoc = getOwnerDocument(); + // This copies the whole tree which could be very big so it's slow. + // However, it does have the advantage of actually working. + org.w3c.dom.Node replacingNode = ownerDoc.importNode(docFrag, true); + // Adding replacingNode at the last of the children list of body + addNode(replacingNode); + Iterator i = + getChildElements(NameImpl.copyElementName(rootElement)); + // Return the child element with the required name which is at the + // end of the list + while(i.hasNext()) + newBodyElement = (SOAPBodyElement) i.next(); + } + return newBodyElement; + //*/ + } + + protected SOAPElement convertToSoapElement(Element element) { + if ((element instanceof SOAPBodyElement) && + //this check is required because ElementImpl currently + // implements SOAPBodyElement + !(element.getClass().equals(ElementImpl.class))) { + return (SOAPElement) element; + } else { + return replaceElementWithSOAPElement( + element, + (ElementImpl) createBodyElement(NameImpl + .copyElementName(element))); + } + } + + public SOAPElement setElementQName(QName newName) throws SOAPException { + log.log(Level.SEVERE, + "SAAJ0146.impl.invalid.name.change.requested", + new Object[] {elementQName.getLocalPart(), + newName.getLocalPart()}); + throw new SOAPException("Cannot change name for " + + elementQName.getLocalPart() + " to " + + newName.getLocalPart()); + } + + public Document extractContentAsDocument() throws SOAPException { + + Iterator eachChild = getChildElements(); + javax.xml.soap.Node firstBodyElement = null; + + while (eachChild.hasNext() && + !(firstBodyElement instanceof SOAPElement)) + firstBodyElement = (javax.xml.soap.Node) eachChild.next(); + + boolean exactlyOneChildElement = true; + if (firstBodyElement == null) + exactlyOneChildElement = false; + else { + for (org.w3c.dom.Node node = firstBodyElement.getNextSibling(); + node != null; + node = node.getNextSibling()) { + + if (node instanceof Element) { + exactlyOneChildElement = false; + break; + } + } + } + + if(!exactlyOneChildElement) { + log.log(Level.SEVERE, + "SAAJ0250.impl.body.should.have.exactly.one.child"); + throw new SOAPException("Cannot extract Document from body"); + } + + Document document = null; + try { + DocumentBuilderFactory factory = + new com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl(); + factory.setNamespaceAware(true); + DocumentBuilder builder = factory.newDocumentBuilder(); + document = builder.newDocument(); + + Element rootElement = (Element) document.importNode( + firstBodyElement, + true); + + document.appendChild(rootElement); + + } catch(Exception e) { + log.log(Level.SEVERE, + "SAAJ0251.impl.cannot.extract.document.from.body"); + throw new SOAPExceptionImpl( + "Unable to extract Document from body", e); + } + + firstBodyElement.detachNode(); + + return document; + } + + private void materializePayloadWrapException() { + try { + materializePayload(); + } catch (SOAPException e) { + throw new RuntimeException(e); + } + } + private void materializePayload() throws SOAPException { + if (staxBridge != null) { + if (payloadStreamRead) { + //the payload has already been read via stream reader and the + //stream has been exhausted already. Throw an + //exception since we are now trying to materialize as DOM and + //there is no stream left to read + throw new SOAPException("SOAPBody payload stream has been fully read - cannot materialize as DOM!"); + } + try { + staxBridge.bridgePayload(); + staxBridge = null; + payloadStreamRead = true; + } catch (XMLStreamException e) { + throw new SOAPException(e); + } + } + } + + @Override + public boolean hasChildNodes() { + boolean hasChildren = super.hasChildNodes(); + //to answer this question we need to know _whether_ we have at least one child + //So no need to materialize body if we already know we have a header child + if (!hasChildren) { + materializePayloadWrapException(); + } + return super.hasChildNodes(); + } + + @Override + public NodeList getChildNodes() { + materializePayloadWrapException(); + return super.getChildNodes(); + } + + @Override + public Node getFirstChild() { + Node child = super.getFirstChild(); + if (child == null) { + materializePayloadWrapException(); + } + return super.getFirstChild(); + } + + public Node getFirstChildNoMaterialize() { + return super.getFirstChild(); + } + + @Override + public Node getLastChild() { + materializePayloadWrapException(); + return super.getLastChild(); + } + + XMLStreamReader getPayloadReader() { + return staxBridge.getPayloadReader(); + } + + void setStaxBridge(StaxBridge bridge) { + this.staxBridge = bridge; + } + + StaxBridge getStaxBridge() { + return staxBridge; + } + + void setPayloadStreamRead() { + this.payloadStreamRead = true; + } + + QName getPayloadQName() { + if (staxBridge != null) { + return staxBridge.getPayloadQName(); + } else { + //not lazy - Just get first child element and return its name + Element elem = getFirstChildElement(); + if (elem != null) { + String ns = elem.getNamespaceURI(); + String pref = elem.getPrefix(); + String local = elem.getLocalName(); + if (pref != null) return new QName(ns, local, pref); + if (ns != null) return new QName(ns, local); + return new QName(local); + } + } + return null; + } + + String getPayloadAttributeValue(String attName) { + if (staxBridge != null) { + return staxBridge.getPayloadAttributeValue(attName); + } else { + //not lazy -Just get first child element and return its attribute + Element elem = getFirstChildElement(); + if (elem != null) { + return elem.getAttribute(localName); + } + } + return null; + } + + String getPayloadAttributeValue(QName attNAme) { + if (staxBridge != null) { + return staxBridge.getPayloadAttributeValue(attNAme); + } else { + //not lazy -Just get first child element and return its attribute + Element elem = getFirstChildElement(); + if (elem != null) { + return elem.getAttributeNS(attNAme.getNamespaceURI(), attNAme.getLocalPart()); + } + } + return null; + } + + public boolean isLazy() { + return (staxBridge != null && !payloadStreamRead); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/CDATAImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/CDATAImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,90 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.impl; + +import java.util.logging.Logger; + +import javax.xml.soap.SOAPElement; +import javax.xml.soap.SOAPException; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + +public class CDATAImpl + extends com.sun.org.apache.xerces.internal.dom.CDATASectionImpl + implements javax.xml.soap.Text { + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings"); + + static final String cdataUC = " 0) { + setAttributeNS(XMLNS_URI, "xmlns:" + prefix, uri); + } else { + setAttributeNS(XMLNS_URI, "xmlns", uri); + } + //Fix for CR:6474641 + //tryToFindEncodingStyleAttributeName(); + return this; + } + + public String getAttributeValue(Name name) { + return getAttributeValueFrom(this, name); + } + + public String getAttributeValue(QName qname) { + return getAttributeValueFrom( + this, + qname.getNamespaceURI(), + qname.getLocalPart(), + qname.getPrefix(), + getQualifiedName(qname)); + } + + public Iterator getAllAttributes() { + Iterator i = getAllAttributesFrom(this); + ArrayList list = new ArrayList(); + while (i.hasNext()) { + Name name = (Name) i.next(); + if (!"xmlns".equalsIgnoreCase(name.getPrefix())) + list.add(name); + } + return list.iterator(); + } + + public Iterator getAllAttributesAsQNames() { + Iterator i = getAllAttributesFrom(this); + ArrayList list = new ArrayList(); + while (i.hasNext()) { + Name name = (Name) i.next(); + if (!"xmlns".equalsIgnoreCase(name.getPrefix())) { + list.add(NameImpl.convertToQName(name)); + } + } + return list.iterator(); + } + + + public Iterator getNamespacePrefixes() { + return doGetNamespacePrefixes(false); + } + + public Iterator getVisibleNamespacePrefixes() { + return doGetNamespacePrefixes(true); + } + + protected Iterator doGetNamespacePrefixes(final boolean deep) { + return new Iterator() { + String next = null; + String last = null; + NamespaceContextIterator eachNamespace = + getNamespaceContextNodes(deep); + + void findNext() { + while (next == null && eachNamespace.hasNext()) { + String attributeKey = + eachNamespace.nextNamespaceAttr().getNodeName(); + if (attributeKey.startsWith("xmlns:")) { + next = attributeKey.substring("xmlns:".length()); + } + } + } + + public boolean hasNext() { + findNext(); + return next != null; + } + + public Object next() { + findNext(); + if (next == null) { + throw new NoSuchElementException(); + } + + last = next; + next = null; + return last; + } + + public void remove() { + if (last == null) { + throw new IllegalStateException(); + } + eachNamespace.remove(); + next = null; + last = null; + } + }; + } + + public Name getElementName() { + return NameImpl.convertToName(elementQName); + } + + public QName getElementQName() { + return elementQName; + } + + public boolean removeAttribute(Name name) { + return removeAttribute(name.getURI(), name.getLocalName()); + } + + public boolean removeAttribute(QName name) { + return removeAttribute(name.getNamespaceURI(), name.getLocalPart()); + } + + private boolean removeAttribute(String uri, String localName) { + String nonzeroLengthUri = + (uri == null || uri.length() == 0) ? null : uri; + org.w3c.dom.Attr attribute = + getAttributeNodeNS(nonzeroLengthUri, localName); + if (attribute == null) { + return false; + } + removeAttributeNode(attribute); + return true; + } + + public boolean removeNamespaceDeclaration(String prefix) { + org.w3c.dom.Attr declaration = getNamespaceAttr(prefix); + if (declaration == null) { + return false; + } + try { + removeAttributeNode(declaration); + } catch (DOMException de) { + // ignore + } + return true; + } + + public Iterator getChildElements() { + return getChildElementsFrom(this); + } + + protected SOAPElement convertToSoapElement(Element element) { + if (element instanceof SOAPElement) { + return (SOAPElement) element; + } else { + return replaceElementWithSOAPElement( + element, + (ElementImpl) createElement(NameImpl.copyElementName(element))); + } + } + + protected static SOAPElement replaceElementWithSOAPElement( + Element element, + ElementImpl copy) { + + Iterator eachAttribute = getAllAttributesFrom(element); + while (eachAttribute.hasNext()) { + Name name = (Name) eachAttribute.next(); + copy.addAttributeBare(name, getAttributeValueFrom(element, name)); + } + + Iterator eachChild = getChildElementsFrom(element); + while (eachChild.hasNext()) { + Node nextChild = (Node) eachChild.next(); + copy.insertBefore(nextChild, null); + } + + Node parent = element.getParentNode(); + if (parent != null) { + parent.replaceChild(copy, element); + } // XXX else throw an exception? + + return copy; + } + + protected Iterator getChildElementNodes() { + return new Iterator() { + Iterator eachNode = getChildElements(); + Node next = null; + Node last = null; + + public boolean hasNext() { + if (next == null) { + while (eachNode.hasNext()) { + Node node = (Node) eachNode.next(); + if (node instanceof SOAPElement) { + next = node; + break; + } + } + } + return next != null; + } + + public Object next() { + if (hasNext()) { + last = next; + next = null; + return last; + } + throw new NoSuchElementException(); + } + + public void remove() { + if (last == null) { + throw new IllegalStateException(); + } + Node target = last; + last = null; + removeChild(target); + } + }; + } + + public Iterator getChildElements(final Name name) { + return getChildElements(name.getURI(), name.getLocalName()); + } + + public Iterator getChildElements(final QName qname) { + return getChildElements(qname.getNamespaceURI(), qname.getLocalPart()); + } + + private Iterator getChildElements(final String nameUri, final String nameLocal) { + return new Iterator() { + Iterator eachElement = getChildElementNodes(); + Node next = null; + Node last = null; + + public boolean hasNext() { + if (next == null) { + while (eachElement.hasNext()) { + Node element = (Node) eachElement.next(); + String elementUri = element.getNamespaceURI(); + elementUri = elementUri == null ? "" : elementUri; + String elementName = element.getLocalName(); + if (elementUri.equals(nameUri) + && elementName.equals(nameLocal)) { + next = element; + break; + } + } + } + return next != null; + } + + public Object next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + last = next; + next = null; + return last; + } + + public void remove() { + if (last == null) { + throw new IllegalStateException(); + } + Node target = last; + last = null; + removeChild(target); + } + }; + } + + public void removeContents() { + Node currentChild = getFirstChild(); + + while (currentChild != null) { + Node temp = currentChild.getNextSibling(); + if (currentChild instanceof javax.xml.soap.Node) { + ((javax.xml.soap.Node) currentChild).detachNode(); + } else { + Node parent = currentChild.getParentNode(); + if (parent != null) { + parent.removeChild(currentChild); + } + + } + currentChild = temp; + } + } + + public void setEncodingStyle(String encodingStyle) throws SOAPException { + if (!"".equals(encodingStyle)) { + try { + new URI(encodingStyle); + } catch (URISyntaxException m) { + log.log( + Level.SEVERE, + "SAAJ0105.impl.encoding.style.mustbe.valid.URI", + new String[] { encodingStyle }); + throw new IllegalArgumentException( + "Encoding style (" + encodingStyle + ") should be a valid URI"); + } + } + encodingStyleAttribute.setValue(encodingStyle); + tryToFindEncodingStyleAttributeName(); + } + + public String getEncodingStyle() { + String encodingStyle = encodingStyleAttribute.getValue(); + if (encodingStyle != null) + return encodingStyle; + String soapNamespace = getSOAPNamespace(); + if (soapNamespace != null) { + Attr attr = getAttributeNodeNS(soapNamespace, "encodingStyle"); + if (attr != null) { + encodingStyle = attr.getValue(); + try { + setEncodingStyle(encodingStyle); + } catch (SOAPException se) { + // has to be ignored + } + return encodingStyle; + } + } + return null; + } + + // Node methods + public String getValue() { + javax.xml.soap.Node valueNode = getValueNode(); + return valueNode == null ? null : valueNode.getValue(); + } + + public void setValue(String value) { + Node valueNode = getValueNodeStrict(); + if (valueNode != null) { + valueNode.setNodeValue(value); + } else { + try { + addTextNode(value); + } catch (SOAPException e) { + throw new RuntimeException(e.getMessage()); + } + } + } + + protected Node getValueNodeStrict() { + Node node = getFirstChild(); + if (node != null) { + if (node.getNextSibling() == null + && node.getNodeType() == org.w3c.dom.Node.TEXT_NODE) { + return node; + } else { + log.severe("SAAJ0107.impl.elem.child.not.single.text"); + throw new IllegalStateException(); + } + } + + return null; + } + + protected javax.xml.soap.Node getValueNode() { + Iterator i = getChildElements(); + while (i.hasNext()) { + javax.xml.soap.Node n = (javax.xml.soap.Node) i.next(); + if (n.getNodeType() == org.w3c.dom.Node.TEXT_NODE || + n.getNodeType() == org.w3c.dom.Node.CDATA_SECTION_NODE) { + // TODO: Hack to fix text node split into multiple lines. + normalize(); + // Should remove the normalization step when this gets fixed in + // DOM/Xerces. + return (javax.xml.soap.Node) n; + } + } + return null; + } + + public void setParentElement(SOAPElement element) throws SOAPException { + if (element == null) { + log.severe("SAAJ0106.impl.no.null.to.parent.elem"); + throw new SOAPException("Cannot pass NULL to setParentElement"); + } + element.addChildElement(this); + findEncodingStyleAttributeName(); + } + + protected void findEncodingStyleAttributeName() throws SOAPException { + String soapNamespace = getSOAPNamespace(); + if (soapNamespace != null) { + String soapNamespacePrefix = getNamespacePrefix(soapNamespace); + if (soapNamespacePrefix != null) { + setEncodingStyleNamespace(soapNamespace, soapNamespacePrefix); + } + } + } + + protected void setEncodingStyleNamespace( + String soapNamespace, + String soapNamespacePrefix) + throws SOAPException { + Name encodingStyleAttributeName = + NameImpl.create( + "encodingStyle", + soapNamespacePrefix, + soapNamespace); + encodingStyleAttribute.setName(encodingStyleAttributeName); + } + + public SOAPElement getParentElement() { + Node parentNode = getParentNode(); + if (parentNode instanceof SOAPDocument) { + return null; + } + return (SOAPElement) parentNode; + } + + protected String getSOAPNamespace() { + String soapNamespace = null; + + SOAPElement antecedent = this; + while (antecedent != null) { + Name antecedentName = antecedent.getElementName(); + String antecedentNamespace = antecedentName.getURI(); + + if (NameImpl.SOAP11_NAMESPACE.equals(antecedentNamespace) + || NameImpl.SOAP12_NAMESPACE.equals(antecedentNamespace)) { + + soapNamespace = antecedentNamespace; + break; + } + + antecedent = antecedent.getParentElement(); + } + + return soapNamespace; + } + + public void detachNode() { + Node parent = getParentNode(); + if (parent != null) { + parent.removeChild(this); + } + encodingStyleAttribute.clearNameAndValue(); + // Fix for CR: 6474641 + //tryToFindEncodingStyleAttributeName(); + } + + public void tryToFindEncodingStyleAttributeName() { + try { + findEncodingStyleAttributeName(); + } catch (SOAPException e) { /*okay to fail*/ + } + } + + public void recycleNode() { + detachNode(); + // TBD + // - add this to the factory so subsequent + // creations can reuse this object. + } + + class AttributeManager { + Name attributeName = null; + String attributeValue = null; + + public void setName(Name newName) throws SOAPException { + clearAttribute(); + attributeName = newName; + reconcileAttribute(); + } + public void clearName() { + clearAttribute(); + attributeName = null; + } + public void setValue(String value) throws SOAPException { + attributeValue = value; + reconcileAttribute(); + } + public Name getName() { + return attributeName; + } + public String getValue() { + return attributeValue; + } + + /** Note: to be used only in detachNode method */ + public void clearNameAndValue() { + attributeName = null; + attributeValue = null; + } + + private void reconcileAttribute() throws SOAPException { + if (attributeName != null) { + removeAttribute(attributeName); + if (attributeValue != null) { + addAttribute(attributeName, attributeValue); + } + } + } + private void clearAttribute() { + if (attributeName != null) { + removeAttribute(attributeName); + } + } + } + + protected static org.w3c.dom.Attr getNamespaceAttrFrom( + Element element, + String prefix) { + NamespaceContextIterator eachNamespace = + new NamespaceContextIterator(element); + while (eachNamespace.hasNext()) { + org.w3c.dom.Attr namespaceDecl = eachNamespace.nextNamespaceAttr(); + String declaredPrefix = + NameImpl.getLocalNameFromTagName(namespaceDecl.getNodeName()); + if (declaredPrefix.equals(prefix)) { + return namespaceDecl; + } + } + return null; + } + + protected static Iterator getAllAttributesFrom(final Element element) { + final NamedNodeMap attributes = element.getAttributes(); + + return new Iterator() { + int attributesLength = attributes.getLength(); + int attributeIndex = 0; + String currentName; + + public boolean hasNext() { + return attributeIndex < attributesLength; + } + + public Object next() { + if (!hasNext()) { + throw new NoSuchElementException(); + } + Node current = attributes.item(attributeIndex++); + currentName = current.getNodeName(); + + String prefix = NameImpl.getPrefixFromTagName(currentName); + if (prefix.length() == 0) { + return NameImpl.createFromUnqualifiedName(currentName); + } else { + Name attributeName = + NameImpl.createFromQualifiedName( + currentName, + current.getNamespaceURI()); + return attributeName; + } + } + + public void remove() { + if (currentName == null) { + throw new IllegalStateException(); + } + attributes.removeNamedItem(currentName); + } + }; + } + + protected static String getAttributeValueFrom(Element element, Name name) { + return getAttributeValueFrom( + element, + name.getURI(), + name.getLocalName(), + name.getPrefix(), + name.getQualifiedName()); + } + + private static String getAttributeValueFrom( + Element element, + String uri, + String localName, + String prefix, + String qualifiedName) { + + String nonzeroLengthUri = + (uri == null || uri.length() == 0) ? null : uri; + + boolean mustUseGetAttributeNodeNS = (nonzeroLengthUri != null); + + if (mustUseGetAttributeNodeNS) { + + if (!element.hasAttributeNS(uri, localName)) { + return null; + } + + String attrValue = + element.getAttributeNS(nonzeroLengthUri, localName); + + return attrValue; + } + + Attr attribute = null; + attribute = element.getAttributeNode(qualifiedName); + + return attribute == null ? null : attribute.getValue(); + } + + protected static Iterator getChildElementsFrom(final Element element) { + return new Iterator() { + Node next = element.getFirstChild(); + Node nextNext = null; + Node last = null; + + public boolean hasNext() { + if (next != null) { + return true; + } + if (next == null && nextNext != null) { + next = nextNext; + } + + return next != null; + } + + public Object next() { + if (hasNext()) { + last = next; + next = null; + + if ((element instanceof ElementImpl) + && (last instanceof Element)) { + last = + ((ElementImpl) element).convertToSoapElement( + (Element) last); + } + + nextNext = last.getNextSibling(); + return last; + } + throw new NoSuchElementException(); + } + + public void remove() { + if (last == null) { + throw new IllegalStateException(); + } + Node target = last; + last = null; + element.removeChild(target); + } + }; + } + + public static String getQualifiedName(QName name) { + String prefix = name.getPrefix(); + String localName = name.getLocalPart(); + String qualifiedName = null; + + if (prefix != null && prefix.length() > 0) { + qualifiedName = prefix + ":" + localName; + } else { + qualifiedName = localName; + } + return qualifiedName; + } + + public static String getLocalPart(String qualifiedName) { + if (qualifiedName == null) { + // Log + throw new IllegalArgumentException("Cannot get local name for a \"null\" qualified name"); + } + + int index = qualifiedName.indexOf(':'); + if (index < 0) + return qualifiedName; + else + return qualifiedName.substring(index + 1); + } + + public static String getPrefix(String qualifiedName) { + if (qualifiedName == null) { + // Log + throw new IllegalArgumentException("Cannot get prefix for a \"null\" qualified name"); + } + + int index = qualifiedName.indexOf(':'); + if (index < 0) + return ""; + else + return qualifiedName.substring(0, index); + } + + protected boolean isNamespaceQualified(Name name) { + return !"".equals(name.getURI()); + } + + protected boolean isNamespaceQualified(QName name) { + return !"".equals(name.getNamespaceURI()); + } + + protected SOAPElement circumventBug5034339(SOAPElement element) { + + Name elementName = element.getElementName(); + if (!isNamespaceQualified(elementName)) { + String prefix = elementName.getPrefix(); + String defaultNamespace = getNamespaceURI(prefix); + if (defaultNamespace != null) { + Name newElementName = + NameImpl.create( + elementName.getLocalName(), + elementName.getPrefix(), + defaultNamespace); + SOAPElement newElement = createElement(newElementName); + replaceChild(newElement, element); + return newElement; + } + } + return element; + } + + //TODO: This is a temporary SAAJ workaround for optimizing XWS + // should be removed once the corresponding JAXP bug is fixed + // It appears the bug will be fixed in JAXP 1.4 (not by Appserver 9 timeframe) + public void setAttributeNS( + String namespaceURI,String qualifiedName, String value) { + int index = qualifiedName.indexOf(':'); + String localName; + if (index < 0) + localName = qualifiedName; + else + localName = qualifiedName.substring(index + 1); + + // Workaround for bug 6467808 - This needs to be fixed in JAXP + + // Rolling back this fix, this is a wrong fix, infact its causing other regressions in JAXWS tck and + // other tests, because of this change the namespace declarations on soapenv:Fault element are never + // picked up. The fix for bug 6467808 should be in JAXP. +// if(elementQName.getLocalPart().equals("Fault") && +// (SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE.equals(value) || +// SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE.equals(value))) +// return; + + super.setAttributeNS(namespaceURI,qualifiedName,value); + //String tmpLocalName = this.getLocalName(); + String tmpURI = this.getNamespaceURI(); + boolean isIDNS = false; + if( tmpURI != null && (tmpURI.equals(DSIG_NS) || tmpURI.equals(XENC_NS))){ + isIDNS = true; + } + //No need to check for Signature/encryption element + //just check for namespace. + if(localName.equals("Id")){ + if(namespaceURI == null || namespaceURI.equals("")){ + setIdAttribute(localName,true); + }else if(isIDNS || WSU_NS.equals(namespaceURI)){ + setIdAttributeNS(namespaceURI,localName,true); + } + } + + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/EnvelopeImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/EnvelopeImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,438 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.impl; + +import java.io.IOException; +import java.io.OutputStream; +import java.io.OutputStreamWriter; + +import java.util.logging.Level; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; +import javax.xml.stream.XMLStreamWriter; +import javax.xml.transform.*; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.LazyEnvelope; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.StaxBridge; +import com.sun.xml.internal.messaging.saaj.soap.StaxLazySourceBridge; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; +import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection; +import com.sun.xml.internal.messaging.saaj.util.stax.LazyEnvelopeStaxReader; +import com.sun.xml.internal.messaging.saaj.util.transform.EfficientStreamingTransformer; + +import com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader; +import com.sun.xml.internal.org.jvnet.staxex.util.XMLStreamReaderToXMLStreamWriter; + +/** + * Our implementation of the SOAP envelope. + * + * @author Anil Vijendran (anil@sun.com) + */ +public abstract class EnvelopeImpl extends ElementImpl implements LazyEnvelope { + protected HeaderImpl header; + protected BodyImpl body; + String omitXmlDecl = "yes"; + String charset = "utf-8"; + String xmlDecl = null; + + protected EnvelopeImpl(SOAPDocumentImpl ownerDoc, Name name) { + super(ownerDoc, name); + } + + protected EnvelopeImpl(SOAPDocumentImpl ownerDoc, QName name) { + super(ownerDoc, name); + } + + protected EnvelopeImpl( + SOAPDocumentImpl ownerDoc, + NameImpl name, + boolean createHeader, + boolean createBody) + throws SOAPException { + this(ownerDoc, name); + + ensureNamespaceIsDeclared( + getElementQName().getPrefix(), getElementQName().getNamespaceURI()); + + // XXX + if (createHeader) + addHeader(); + + if (createBody) + addBody(); + } + + protected abstract NameImpl getHeaderName(String prefix); + protected abstract NameImpl getBodyName(String prefix); + + public SOAPHeader addHeader() throws SOAPException { + return addHeader(null); + } + + public SOAPHeader addHeader(String prefix) throws SOAPException { + + if (prefix == null || prefix.equals("")) { + prefix = getPrefix(); + } + + NameImpl headerName = getHeaderName(prefix); + NameImpl bodyName = getBodyName(prefix); + + HeaderImpl header = null; + SOAPElement firstChild = (SOAPElement) getFirstChildElement(); + + if (firstChild != null) { + if (firstChild.getElementName().equals(headerName)) { + log.severe("SAAJ0120.impl.header.already.exists"); + throw new SOAPExceptionImpl("Can't add a header when one is already present."); + } else if (!firstChild.getElementName().equals(bodyName)) { + log.severe("SAAJ0121.impl.invalid.first.child.of.envelope"); + throw new SOAPExceptionImpl("First child of Envelope must be either a Header or Body"); + } + } + + header = (HeaderImpl) createElement(headerName); + insertBefore(header, firstChild); + header.ensureNamespaceIsDeclared(headerName.getPrefix(), headerName.getURI()); + + return header; + } + + protected void lookForHeader() throws SOAPException { + NameImpl headerName = getHeaderName(null); + + HeaderImpl hdr = (HeaderImpl) findChild(headerName); + header = hdr; + } + + public SOAPHeader getHeader() throws SOAPException { + lookForHeader(); + return header; + } + + protected void lookForBody() throws SOAPException { + NameImpl bodyName = getBodyName(null); + + BodyImpl bodyChildElement = (BodyImpl) findChild(bodyName); + body = bodyChildElement; + } + + public SOAPBody addBody() throws SOAPException { + return addBody(null); + } + + public SOAPBody addBody(String prefix) throws SOAPException { + lookForBody(); + + if (prefix == null || prefix.equals("")) { + prefix = getPrefix(); + } + + if (body == null) { + NameImpl bodyName = getBodyName(prefix); + body = (BodyImpl) createElement(bodyName); + insertBefore(body, null); + body.ensureNamespaceIsDeclared(bodyName.getPrefix(), bodyName.getURI()); + } else { + log.severe("SAAJ0122.impl.body.already.exists"); + throw new SOAPExceptionImpl("Can't add a body when one is already present."); + } + + return body; + } + + protected SOAPElement addElement(Name name) throws SOAPException { + if (getBodyName(null).equals(name)) { + return addBody(name.getPrefix()); + } + if (getHeaderName(null).equals(name)) { + return addHeader(name.getPrefix()); + } + + return super.addElement(name); + } + + protected SOAPElement addElement(QName name) throws SOAPException { + if (getBodyName(null).equals(NameImpl.convertToName(name))) { + return addBody(name.getPrefix()); + } + if (getHeaderName(null).equals(NameImpl.convertToName(name))) { + return addHeader(name.getPrefix()); + } + + return super.addElement(name); + } + + public SOAPBody getBody() throws SOAPException { + lookForBody(); + return body; + } + + public Source getContent() { + return new DOMSource(getOwnerDocument()); + } + + public Name createName(String localName, String prefix, String uri) + throws SOAPException { + + // validating parameters before passing them on + // to make sure that the namespace specification rules are followed + + // reserved xmlns prefix cannot be used. + if ("xmlns".equals(prefix)) { + log.severe("SAAJ0123.impl.no.reserved.xmlns"); + throw new SOAPExceptionImpl("Cannot declare reserved xmlns prefix"); + } + // Qualified name cannot be xmlns. + if ((prefix == null) && ("xmlns".equals(localName))) { + log.severe("SAAJ0124.impl.qualified.name.cannot.be.xmlns"); + throw new SOAPExceptionImpl("Qualified name cannot be xmlns"); + } + + return NameImpl.create(localName, prefix, uri); + } + + public Name createName(String localName, String prefix) + throws SOAPException { + String namespace = getNamespaceURI(prefix); + if (namespace == null) { + log.log( + Level.SEVERE, + "SAAJ0126.impl.cannot.locate.ns", + new String[] { prefix }); + throw new SOAPExceptionImpl( + "Unable to locate namespace for prefix " + prefix); + } + return NameImpl.create(localName, prefix, namespace); + } + + public Name createName(String localName) throws SOAPException { + return NameImpl.createFromUnqualifiedName(localName); + } + + public void setOmitXmlDecl(String value) { + this.omitXmlDecl = value; + } + + public void setXmlDecl(String value) { + this.xmlDecl = value; + } + + private String getOmitXmlDecl() { + return this.omitXmlDecl; + } + + public void setCharsetEncoding(String value) { + charset = value; + } + + public void output(OutputStream out) throws IOException { + try { +// materializeBody(); + Transformer transformer = + EfficientStreamingTransformer.newTransformer(); + + transformer.setOutputProperty( + OutputKeys.OMIT_XML_DECLARATION, "yes"); + /*omitXmlDecl);*/ + // no equivalent for "setExpandEmptyElements" + transformer.setOutputProperty( + OutputKeys.ENCODING, + charset); + + if (omitXmlDecl.equals("no") && xmlDecl == null) { + xmlDecl = ""; + } + + StreamResult result = new StreamResult(out); + if (xmlDecl != null) { + OutputStreamWriter writer = new OutputStreamWriter(out, charset); + writer.write(xmlDecl); + writer.flush(); + result = new StreamResult(writer); + } + + if (log.isLoggable(Level.FINE)) { + log.log(Level.FINE, "SAAJ0190.impl.set.xml.declaration", + new String[] { omitXmlDecl }); + log.log(Level.FINE, "SAAJ0191.impl.set.encoding", + new String[] { charset }); + } + + //StreamResult result = new StreamResult(out); + transformer.transform(getContent(), result); + } catch (Exception ex) { + throw new IOException(ex.getMessage()); + } + } + + /** + * Serialize to FI if boolean parameter set. + */ + public void output(OutputStream out, boolean isFastInfoset) + throws IOException + { + if (!isFastInfoset) { + output(out); + } + else { + try { + // Run transform and generate FI output from content + Source source = getContent(); + Transformer transformer = EfficientStreamingTransformer.newTransformer(); + transformer.transform(getContent(), + FastInfosetReflection.FastInfosetResult_new(out)); + } + catch (Exception ex) { + throw new IOException(ex.getMessage()); + } + } + } + + // public void prettyPrint(OutputStream out) throws IOException { + // if (getDocument() == null) + // initDocument(); + // + // OutputFormat format = OutputFormat.createPrettyPrint(); + // + // format.setIndentSize(2); + // format.setNewlines(true); + // format.setTrimText(true); + // format.setPadText(true); + // format.setExpandEmptyElements(false); + // + // XMLWriter writer = new XMLWriter(out, format); + // writer.write(getDocument()); + // } + // + // public void prettyPrint(Writer out) throws IOException { + // if (getDocument() == null) + // initDocument(); + // + // OutputFormat format = OutputFormat.createPrettyPrint(); + // + // format.setIndentSize(2); + // format.setNewlines(true); + // format.setTrimText(true); + // format.setPadText(true); + // format.setExpandEmptyElements(false); + // + // XMLWriter writer = new XMLWriter(out, format); + // writer.write(getDocument()); + // } + + + public SOAPElement setElementQName(QName newName) throws SOAPException { + log.log(Level.SEVERE, + "SAAJ0146.impl.invalid.name.change.requested", + new Object[] {elementQName.getLocalPart(), + newName.getLocalPart()}); + throw new SOAPException("Cannot change name for " + + elementQName.getLocalPart() + " to " + + newName.getLocalPart()); + } + + @Override + public void setStaxBridge(StaxBridge bridge) throws SOAPException { + //set it on the body + ((BodyImpl) getBody()).setStaxBridge(bridge); + } + + @Override + public StaxBridge getStaxBridge() throws SOAPException { + return ((BodyImpl) getBody()).getStaxBridge(); + } + + @Override + public XMLStreamReader getPayloadReader() throws SOAPException { + return ((BodyImpl) getBody()).getPayloadReader(); + } + + @Override + public void writeTo(final XMLStreamWriter writer) throws XMLStreamException, SOAPException { + StaxBridge readBridge = this.getStaxBridge(); + if (readBridge != null && readBridge instanceof StaxLazySourceBridge) { +// StaxSoapWriteBridge writingBridge = new StaxSoapWriteBridge(this); +// writingBridge.write(writer); + final String soapEnvNS = this.getNamespaceURI(); + final DOMStreamReader reader = new DOMStreamReader(this); + XMLStreamReaderToXMLStreamWriter writingBridge = new XMLStreamReaderToXMLStreamWriter(); + writingBridge.bridge( new XMLStreamReaderToXMLStreamWriter.Breakpoint(reader, writer) { + public boolean proceedAfterStartElement() { + if ("Body".equals(reader.getLocalName()) && soapEnvNS.equals(reader.getNamespaceURI()) ){ + return false; + } else + return true; + } + });//bridgeToBodyStartTag + ((StaxLazySourceBridge)readBridge).writePayloadTo(writer); + writer.writeEndElement();//body + writer.writeEndElement();//env + writer.writeEndDocument(); + writer.flush(); + } else { + LazyEnvelopeStaxReader lazyEnvReader = new LazyEnvelopeStaxReader(this); + XMLStreamReaderToXMLStreamWriter writingBridge = new XMLStreamReaderToXMLStreamWriter(); + writingBridge.bridge(lazyEnvReader, writer); +// writingBridge.bridge(new XMLStreamReaderToXMLStreamWriter.Breakpoint(lazyEnvReader, writer)); + } + //Assume the staxBridge is exhausted now since we would have read the body reader + ((BodyImpl) getBody()).setPayloadStreamRead(); + } + + @Override + public QName getPayloadQName() throws SOAPException { + return ((BodyImpl) getBody()).getPayloadQName(); + } + + @Override + public String getPayloadAttributeValue(String localName) throws SOAPException { + return ((BodyImpl) getBody()).getPayloadAttributeValue(localName); + } + + @Override + public String getPayloadAttributeValue(QName qName) throws SOAPException { + return ((BodyImpl) getBody()).getPayloadAttributeValue(qName); + } + + @Override + public boolean isLazy() { + try { + return ((BodyImpl) getBody()).isLazy(); + } catch (SOAPException e) { + return false; + } + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultElementImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultElementImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,62 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.impl; + +import java.util.logging.Level; + +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPException; +import javax.xml.soap.SOAPElement; +import javax.xml.soap.SOAPFaultElement; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public abstract class FaultElementImpl + extends ElementImpl + implements SOAPFaultElement { + + protected FaultElementImpl(SOAPDocumentImpl ownerDoc, NameImpl qname) { + super(ownerDoc, qname); + } + + protected FaultElementImpl(SOAPDocumentImpl ownerDoc, QName qname) { + super(ownerDoc, qname); + } + + protected abstract boolean isStandardFaultElement(); + + public SOAPElement setElementQName(QName newName) throws SOAPException { + log.log(Level.SEVERE, + "SAAJ0146.impl.invalid.name.change.requested", + new Object[] {elementQName.getLocalPart(), + newName.getLocalPart()}); + throw new SOAPException("Cannot change name for " + + elementQName.getLocalPart() + " to " + + newName.getLocalPart()); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/FaultImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,346 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.impl; + +import java.util.Locale; +import java.util.logging.Level; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import org.w3c.dom.Element; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public abstract class FaultImpl extends ElementImpl implements SOAPFault { + + /* This can also represent a fault reason element */ + protected SOAPFaultElement faultStringElement; + + /* This can also represent a fault role element */ + protected SOAPFaultElement faultActorElement; + + protected SOAPFaultElement faultCodeElement; + + protected Detail detail; + + protected FaultImpl(SOAPDocumentImpl ownerDoc, NameImpl name) { + super(ownerDoc, name); + } + + + protected abstract NameImpl getDetailName(); + protected abstract NameImpl getFaultCodeName(); + protected abstract NameImpl getFaultStringName(); + protected abstract NameImpl getFaultActorName(); + protected abstract DetailImpl createDetail(); + protected abstract FaultElementImpl createSOAPFaultElement(String localName); + protected abstract FaultElementImpl createSOAPFaultElement(QName qname); + protected abstract FaultElementImpl createSOAPFaultElement(Name qname); + protected abstract void checkIfStandardFaultCode(String faultCode, String uri) throws SOAPException; + protected abstract void finallySetFaultCode(String faultcode) throws SOAPException; + protected abstract boolean isStandardFaultElement(String localName); + protected abstract QName getDefaultFaultCode(); + + + protected void findFaultCodeElement() { + this.faultCodeElement = + (SOAPFaultElement) findAndConvertChildElement(getFaultCodeName()); + } + + protected void findFaultActorElement() { + this.faultActorElement = + (SOAPFaultElement) findAndConvertChildElement(getFaultActorName()); + } + + protected void findFaultStringElement() { + this.faultStringElement = + (SOAPFaultElement) findAndConvertChildElement(getFaultStringName()); + } + + public void setFaultCode(String faultCode) throws SOAPException { + setFaultCode( + NameImpl.getLocalNameFromTagName(faultCode), + NameImpl.getPrefixFromTagName(faultCode), + null); + } + + public void setFaultCode(String faultCode, String prefix, String uri) + throws SOAPException { + + if (prefix == null || "".equals(prefix)) { + if (uri != null && !"".equals(uri)) { + prefix = getNamespacePrefix(uri); + if (prefix == null || "".equals(prefix)) { + prefix = "ns0"; + } + } + } + if (this.faultCodeElement == null) + findFaultCodeElement(); + + if (this.faultCodeElement == null) + this.faultCodeElement = addFaultCodeElement(); + else + this.faultCodeElement.removeContents(); + + if (uri == null || "".equals(uri)) { + uri = this.faultCodeElement.getNamespaceURI(prefix); + } + if (uri == null || "".equals(uri)) { + if (prefix != null && !"".equals(prefix)) { + //cannot allow an empty URI for a non-Empty prefix + log.log(Level.SEVERE, "SAAJ0140.impl.no.ns.URI", new Object[]{prefix + ":" + faultCode}); + throw new SOAPExceptionImpl("Empty/Null NamespaceURI specified for faultCode \"" + prefix + ":" + faultCode + "\""); + } else { + uri = ""; + } + } + checkIfStandardFaultCode(faultCode, uri); + ((FaultElementImpl) this.faultCodeElement).ensureNamespaceIsDeclared(prefix, uri); + + if (prefix == null || "".equals(prefix)) { + finallySetFaultCode(faultCode); + } else { + finallySetFaultCode(prefix + ":" + faultCode); + } + } + + public void setFaultCode(Name faultCodeQName) throws SOAPException { + setFaultCode( + faultCodeQName.getLocalName(), + faultCodeQName.getPrefix(), + faultCodeQName.getURI()); + } + + public void setFaultCode(QName faultCodeQName) throws SOAPException { + setFaultCode( + faultCodeQName.getLocalPart(), + faultCodeQName.getPrefix(), + faultCodeQName.getNamespaceURI()); + } + + protected static QName convertCodeToQName( + String code, + SOAPElement codeContainingElement) { + + int prefixIndex = code.indexOf(':'); + if (prefixIndex == -1) { + return new QName(code); + } + + String prefix = code.substring(0, prefixIndex); + String nsName =((ElementImpl) codeContainingElement).lookupNamespaceURI(prefix); + //((ElementImpl) codeContainingElement).getNamespaceURI(prefix); + return new QName(nsName, getLocalPart(code), prefix); + } + + protected void initializeDetail() { + NameImpl detailName = getDetailName(); + detail = (Detail) findAndConvertChildElement(detailName); + } + + public Detail getDetail() { + if (detail == null) + initializeDetail(); + if ((detail != null) && (detail.getParentNode() == null)) { + // a detach node was called on it + detail = null; + } + return detail; + } + + public Detail addDetail() throws SOAPException { + if (detail == null) + initializeDetail(); + if (detail == null) { + detail = createDetail(); + addNode(detail); + return detail; + } else { + // Log + throw new SOAPExceptionImpl("Error: Detail already exists"); + } + } + + public boolean hasDetail() { + return (getDetail() != null); + } + + public abstract void setFaultActor(String faultActor) throws SOAPException; + + public String getFaultActor() { + if (this.faultActorElement == null) + findFaultActorElement(); + if (this.faultActorElement != null) { + return this.faultActorElement.getValue(); + } + return null; + } + + public SOAPElement setElementQName(QName newName) throws SOAPException { + + log.log( + Level.SEVERE, + "SAAJ0146.impl.invalid.name.change.requested", + new Object[] {elementQName.getLocalPart(), newName.getLocalPart()}); + throw new SOAPException( + "Cannot change name for " + elementQName.getLocalPart() + " to " + newName.getLocalPart()); + } + + protected SOAPElement convertToSoapElement(Element element) { + if (element instanceof SOAPFaultElement) { + return (SOAPElement) element; + } else if (element instanceof SOAPElement) { + SOAPElement soapElement = (SOAPElement) element; + if (getDetailName().equals(soapElement.getElementName())) { + return replaceElementWithSOAPElement(element, createDetail()); + } else { + String localName = + soapElement.getElementName().getLocalName(); + if (isStandardFaultElement(localName)) + return replaceElementWithSOAPElement( + element, + createSOAPFaultElement(soapElement.getElementQName())); + return soapElement; + } + } else { + Name elementName = NameImpl.copyElementName(element); + ElementImpl newElement; + if (getDetailName().equals(elementName)) { + newElement = (ElementImpl) createDetail(); + } else { + String localName = elementName.getLocalName(); + if (isStandardFaultElement(localName)) + newElement = + (ElementImpl) createSOAPFaultElement(elementName); + else + newElement = (ElementImpl) createElement(elementName); + } + return replaceElementWithSOAPElement(element, newElement); + } + } + + protected SOAPFaultElement addFaultCodeElement() throws SOAPException { + if (this.faultCodeElement == null) + findFaultCodeElement(); + if (this.faultCodeElement == null) { + this.faultCodeElement = + addSOAPFaultElement(getFaultCodeName().getLocalName()); + return this.faultCodeElement; + } else { + throw new SOAPExceptionImpl("Error: Faultcode already exists"); + } + } + + private SOAPFaultElement addFaultStringElement() throws SOAPException { + if (this.faultStringElement == null) + findFaultStringElement(); + if (this.faultStringElement == null) { + this.faultStringElement = + addSOAPFaultElement(getFaultStringName().getLocalName()); + return this.faultStringElement; + } else { + // Log + throw new SOAPExceptionImpl("Error: Faultstring already exists"); + } + } + + private SOAPFaultElement addFaultActorElement() throws SOAPException { + if (this.faultActorElement == null) + findFaultActorElement(); + if (this.faultActorElement == null) { + this.faultActorElement = + addSOAPFaultElement(getFaultActorName().getLocalName()); + return this.faultActorElement; + } else { + // Log + throw new SOAPExceptionImpl("Error: Faultactor already exists"); + } + } + + protected SOAPElement addElement(Name name) throws SOAPException { + if (getDetailName().equals(name)) { + return addDetail(); + } else if(getFaultCodeName().equals(name)) { + return addFaultCodeElement(); + } else if(getFaultStringName().equals(name)) { + return addFaultStringElement(); + } else if(getFaultActorName().equals(name)) { + return addFaultActorElement(); + } + return super.addElement(name); + } + + protected SOAPElement addElement(QName name) throws SOAPException { + return addElement(NameImpl.convertToName(name)); + } + + protected FaultElementImpl addSOAPFaultElement(String localName) + throws SOAPException { + + FaultElementImpl faultElem = createSOAPFaultElement(localName); + addNode(faultElem); + return faultElem; + } + + /** + * Convert an xml:lang attribute value into a Locale object + */ + protected static Locale xmlLangToLocale(String xmlLang) { + if (xmlLang == null) { + return null; + } + + // Spec uses hyphen as separator + int index = xmlLang.indexOf("-"); + + // Accept underscore as separator as well + if (index == -1) { + index = xmlLang.indexOf("_"); + } + + if (index == -1) { + // No separator so assume only a language component + return new Locale(xmlLang, ""); + } + + String language = xmlLang.substring(0, index); + String country = xmlLang.substring(index + 1); + return new Locale(language, country); + } + + protected static String localeToXmlLang(Locale locale) { + String xmlLang = locale.getLanguage(); + String country = locale.getCountry(); + if (!"".equals(country)) { + xmlLang += "-" + country; + } + return xmlLang; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderElementImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderElementImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,135 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.impl; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public abstract class HeaderElementImpl + extends ElementImpl + implements SOAPHeaderElement { + + protected static Name RELAY_ATTRIBUTE_LOCAL_NAME = + NameImpl.createFromTagName("relay"); + protected static Name MUST_UNDERSTAND_ATTRIBUTE_LOCAL_NAME = + NameImpl.createFromTagName("mustUnderstand"); + + public HeaderElementImpl(SOAPDocumentImpl ownerDoc, Name qname) { + super(ownerDoc, qname); + } + public HeaderElementImpl(SOAPDocumentImpl ownerDoc, QName qname) { + super(ownerDoc, qname); + } + + protected abstract NameImpl getActorAttributeName(); + protected abstract NameImpl getRoleAttributeName(); + protected abstract NameImpl getMustunderstandAttributeName(); + protected abstract boolean getMustunderstandAttributeValue(String str); + protected abstract String getMustunderstandLiteralValue(boolean mu); + protected abstract NameImpl getRelayAttributeName(); + protected abstract boolean getRelayAttributeValue(String str); + protected abstract String getRelayLiteralValue(boolean mu); + protected abstract String getActorOrRole(); + + + public void setParentElement(SOAPElement element) throws SOAPException { + if (!(element instanceof SOAPHeader)) { + log.severe("SAAJ0130.impl.header.elem.parent.mustbe.header"); + throw new SOAPException("Parent of a SOAPHeaderElement has to be a SOAPHeader"); + } + + super.setParentElement(element); + } + + public void setActor(String actorUri) { + try { + removeAttribute(getActorAttributeName()); + addAttribute((Name) getActorAttributeName(), actorUri); + } catch (SOAPException ex) { + } + } + + //SOAP 1.2 supports Role + public void setRole(String roleUri) throws SOAPException { + // runtime exception thrown if called for SOAP 1.1 + removeAttribute(getRoleAttributeName()); + addAttribute((Name) getRoleAttributeName(), roleUri); + } + + + Name actorAttNameWithoutNS = NameImpl.createFromTagName("actor"); + + public String getActor() { + String actor = getAttributeValue(getActorAttributeName()); + return actor; + } + + Name roleAttNameWithoutNS = NameImpl.createFromTagName("role"); + + public String getRole() { + // runtime exception thrown for 1.1 + String role = getAttributeValue(getRoleAttributeName()); + return role; + } + + public void setMustUnderstand(boolean mustUnderstand) { + try { + removeAttribute(getMustunderstandAttributeName()); + addAttribute( + (Name) getMustunderstandAttributeName(), + getMustunderstandLiteralValue(mustUnderstand)); + } catch (SOAPException ex) { + } + } + + public boolean getMustUnderstand() { + String mu = getAttributeValue(getMustunderstandAttributeName()); + + if (mu != null) + return getMustunderstandAttributeValue(mu); + + return false; + } + + public void setRelay(boolean relay) throws SOAPException { + // runtime exception thrown for 1.1 + removeAttribute(getRelayAttributeName()); + addAttribute( + (Name) getRelayAttributeName(), + getRelayLiteralValue(relay)); + } + + public boolean getRelay() { + String mu = getAttributeValue(getRelayAttributeName()); + if (mu != null) + return getRelayAttributeValue(mu); + + return false; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/HeaderImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,306 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.impl; + +import java.util.*; +import java.util.logging.Level; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import org.w3c.dom.Element; +import org.w3c.dom.Node; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public abstract class HeaderImpl extends ElementImpl implements SOAPHeader { + protected static final boolean MUST_UNDERSTAND_ONLY = false; + + protected HeaderImpl(SOAPDocumentImpl ownerDoc, NameImpl name) { + super(ownerDoc, name); + } + + protected abstract SOAPHeaderElement createHeaderElement(Name name) + throws SOAPException; + protected abstract SOAPHeaderElement createHeaderElement(QName name) + throws SOAPException; + protected abstract NameImpl getNotUnderstoodName(); + protected abstract NameImpl getUpgradeName(); + protected abstract NameImpl getSupportedEnvelopeName(); + + public SOAPHeaderElement addHeaderElement(Name name) throws SOAPException { + SOAPElement newHeaderElement = + ElementFactory.createNamedElement( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name.getLocalName(), + name.getPrefix(), + name.getURI()); + if (newHeaderElement == null + || !(newHeaderElement instanceof SOAPHeaderElement)) { + newHeaderElement = createHeaderElement(name); + } + + // header elements must be namespace qualified + // check that URI is not empty, ensuring that the element is NS qualified. + String uri = newHeaderElement.getElementQName().getNamespaceURI(); + if ((uri == null) || ("").equals(uri)) { + log.severe("SAAJ0131.impl.header.elems.ns.qualified"); + throw new SOAPExceptionImpl("HeaderElements must be namespace qualified"); + } + addNode(newHeaderElement); + return (SOAPHeaderElement) newHeaderElement; + } + + public SOAPHeaderElement addHeaderElement(QName name) throws SOAPException { + SOAPElement newHeaderElement = + ElementFactory.createNamedElement( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name.getLocalPart(), + name.getPrefix(), + name.getNamespaceURI()); + if (newHeaderElement == null + || !(newHeaderElement instanceof SOAPHeaderElement)) { + newHeaderElement = createHeaderElement(name); + } + + // header elements must be namespace qualified + // check that URI is not empty, ensuring that the element is NS qualified. + String uri = newHeaderElement.getElementQName().getNamespaceURI(); + if ((uri == null) || ("").equals(uri)) { + log.severe("SAAJ0131.impl.header.elems.ns.qualified"); + throw new SOAPExceptionImpl("HeaderElements must be namespace qualified"); + } + addNode(newHeaderElement); + return (SOAPHeaderElement) newHeaderElement; + } + + protected SOAPElement addElement(Name name) throws SOAPException { + return addHeaderElement(name); + } + + protected SOAPElement addElement(QName name) throws SOAPException { + return addHeaderElement(name); + } + + public Iterator examineHeaderElements(String actor) { + return getHeaderElementsForActor(actor, false, false); + } + + public Iterator extractHeaderElements(String actor) { + return getHeaderElementsForActor(actor, true, false); + } + + protected Iterator getHeaderElementsForActor( + String actor, + boolean detach, + boolean mustUnderstand) { + if (actor == null || actor.equals("")) { + log.severe("SAAJ0132.impl.invalid.value.for.actor.or.role"); + throw new IllegalArgumentException("Invalid value for actor or role"); + } + return getHeaderElements(actor, detach, mustUnderstand); + } + + protected Iterator getHeaderElements( + String actor, + boolean detach, + boolean mustUnderstand) { + List elementList = new ArrayList(); + + Iterator eachChild = getChildElements(); + + Object currentChild = iterate(eachChild); + while (currentChild != null) { + if (!(currentChild instanceof SOAPHeaderElement)) { + currentChild = iterate(eachChild); + } else { + HeaderElementImpl currentElement = + (HeaderElementImpl) currentChild; + currentChild = iterate(eachChild); + + boolean isMustUnderstandMatching = + (!mustUnderstand || currentElement.getMustUnderstand()); + boolean doAdd = false; + if (actor == null && isMustUnderstandMatching) { + doAdd = true; + } else { + String currentActor = currentElement.getActorOrRole(); + if (currentActor == null) { + currentActor = ""; + } + + if (currentActor.equalsIgnoreCase(actor) + && isMustUnderstandMatching) { + doAdd = true; + } + } + + if (doAdd) { + elementList.add(currentElement); + if (detach) { + currentElement.detachNode(); + } + } + } + } + + return elementList.listIterator(); + } + + private Object iterate(Iterator each) { + return each.hasNext() ? each.next() : null; + } + + public void setParentElement(SOAPElement element) throws SOAPException { + if (!(element instanceof SOAPEnvelope)) { + log.severe("SAAJ0133.impl.header.parent.mustbe.envelope"); + throw new SOAPException("Parent of SOAPHeader has to be a SOAPEnvelope"); + } + super.setParentElement(element); + } + + // overriding ElementImpl's method to ensure that HeaderElements are + // namespace qualified. Holds for both SOAP versions. + // TODO - This check needs to be made for other addChildElement() methods + // as well. + public SOAPElement addChildElement(String localName) throws SOAPException { + + SOAPElement element = super.addChildElement(localName); + // check that URI is not empty, ensuring that the element is NS qualified. + String uri = element.getElementName().getURI(); + if ((uri == null) || ("").equals(uri)) { + log.severe("SAAJ0134.impl.header.elems.ns.qualified"); + throw new SOAPExceptionImpl("HeaderElements must be namespace qualified"); + } + return element; + } + + public Iterator examineAllHeaderElements() { + return getHeaderElements(null, false, MUST_UNDERSTAND_ONLY); + } + + public Iterator examineMustUnderstandHeaderElements(String actor) { + return getHeaderElements(actor, false, true); + + } + + public Iterator extractAllHeaderElements() { + return getHeaderElements(null, true, false); + } + + public SOAPHeaderElement addUpgradeHeaderElement(Iterator supportedSoapUris) + throws SOAPException { + if (supportedSoapUris == null) { + log.severe("SAAJ0411.ver1_2.no.null.supportedURIs"); + throw new SOAPException("Argument cannot be null; iterator of supportedURIs cannot be null"); + } + if (!supportedSoapUris.hasNext()) { + log.severe("SAAJ0412.ver1_2.no.empty.list.of.supportedURIs"); + throw new SOAPException("List of supported URIs cannot be empty"); + } + Name upgradeName = getUpgradeName(); + SOAPHeaderElement upgradeHeaderElement = + (SOAPHeaderElement) addChildElement(upgradeName); + Name supportedEnvelopeName = getSupportedEnvelopeName(); + int i = 0; + while (supportedSoapUris.hasNext()) { + SOAPElement subElement = + upgradeHeaderElement.addChildElement(supportedEnvelopeName); + String ns = "ns" + Integer.toString(i); + subElement.addAttribute( + NameImpl.createFromUnqualifiedName("qname"), + ns + ":Envelope"); + subElement.addNamespaceDeclaration( + ns, + (String) supportedSoapUris.next()); + i ++; + } + return upgradeHeaderElement; + } + + public SOAPHeaderElement addUpgradeHeaderElement(String supportedSoapUri) + throws SOAPException { + return addUpgradeHeaderElement(new String[] {supportedSoapUri}); + } + + public SOAPHeaderElement addUpgradeHeaderElement(String[] supportedSoapUris) + throws SOAPException { + + if (supportedSoapUris == null) { + log.severe("SAAJ0411.ver1_2.no.null.supportedURIs"); + throw new SOAPException("Argument cannot be null; array of supportedURIs cannot be null"); + } + if (supportedSoapUris.length == 0) { + log.severe("SAAJ0412.ver1_2.no.empty.list.of.supportedURIs"); + throw new SOAPException("List of supported URIs cannot be empty"); + } + Name upgradeName = getUpgradeName(); + SOAPHeaderElement upgradeHeaderElement = + (SOAPHeaderElement) addChildElement(upgradeName); + Name supportedEnvelopeName = getSupportedEnvelopeName(); + for (int i = 0; i < supportedSoapUris.length; i ++) { + SOAPElement subElement = + upgradeHeaderElement.addChildElement(supportedEnvelopeName); + String ns = "ns" + Integer.toString(i); + subElement.addAttribute( + NameImpl.createFromUnqualifiedName("qname"), + ns + ":Envelope"); + subElement.addNamespaceDeclaration(ns, supportedSoapUris[i]); + } + return upgradeHeaderElement; + } + + protected SOAPElement convertToSoapElement(Element element) { + if (element instanceof SOAPHeaderElement) { + return (SOAPElement) element; + } else { + SOAPHeaderElement headerElement; + try { + headerElement = + createHeaderElement(NameImpl.copyElementName(element)); + } catch (SOAPException e) { + throw new ClassCastException("Could not convert Element to SOAPHeaderElement: " + e.getMessage()); + } + return replaceElementWithSOAPElement( + element, + (ElementImpl) headerElement); + } + } + + public SOAPElement setElementQName(QName newName) throws SOAPException { + log.log(Level.SEVERE, + "SAAJ0146.impl.invalid.name.change.requested", + new Object[] {elementQName.getLocalPart(), + newName.getLocalPart()}); + throw new SOAPException("Cannot change name for " + + elementQName.getLocalPart() + " to " + + newName.getLocalPart()); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,86 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for impl +# Error messages +SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: Parent of a SOAPBodyElement has to be a SOAPBody +SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Unable to locate namespace for prefix {0} +SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Cannot add fragments which contain elements which are in the SOAP namespace +SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Encoding style {0} should be a valid URI +SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: Cannot pass NULL to setParentElement +SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Cannot setValue on an Element that does not have an only child of type Text + +SAAJ0110.impl.fault.already.exists=SAAJ0110: Error: Fault already exists +SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: Parent of SOAPBody has to be a SOAPEnvelope + +SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: Cannot pass NULL to setParentElement +SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Cannot split text from a Comment Node +SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Cannot replace whole text from a Comment Node + +SAAJ0120.impl.header.already.exists=SAAJ0120: Can't add a header when one is already present +SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: First child of Envelope must be either a Header or Body +SAAJ0122.impl.body.already.exists=SAAJ0122: Can't add a body when one is already present +SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Cannot declare reserved xmlns prefix +SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Qualified name cannot be xmlns +#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null +SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Unable to locate namespace for prefix {0} +SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: Cannot pass NULL to setParentElement + +SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: Parent of a SOAPHeaderElement has to be a SOAPHeader +SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements must be namespace qualified +SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Invalid value for actor or role +SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: Parent of SOAPHeader has to be a SOAPEnvelope +SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements must be namespace qualified + +SAAJ0140.impl.no.ns.URI=SAAJ0140: Empty/Null NamespaceURI specified for faultCode {0} +SAAJ0141.impl.detail.exists=SAAJ0141: Detail already exists +SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Reason/Text not supported by this SOAP version, try SOAP 1.2 or later +SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Node not supported by this SOAP version, try SOAP 1.2 or later +SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Role not supported by this SOAP version, try SOAP 1.2 or later +SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: Cannot pass NULL to setParentElement +SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Cannot change name of element {0} to {1} +SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Cannot change the URI for prefix {0} from {1} to {2} in setElementQName +SAAJ0148.impl.invalid.prefix.for.uri=Non-empty namespace URI: {0} for an empty prefix in SetElementQName +SAAJ0149.impl.null.prefix=SAAJ0149: prefix cannot be "null" when creating a QName + +SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Cannot extract Document from body +SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Unable to extract Document from body + +# Debug messages +SAAJ0150.impl.added.attr=SAAJ0150: Added attribute {0} +SAAJ0151.impl.no.children=SAAJ0151: Cannot find node containing value: there are no children +SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Cannot find node containing value: first child is not a Text node +SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Cannot find node containing value: There is more than one child node +SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: A SOAPFault element can only be added as a child of SOAPBody +SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: A Detail element can only be added as a child of a SOAPFault +SAAJ0156.impl.adding.fault.error=SAAJ0156: Cannot add SOAPFault, a SOAPFault should be the only child of a SOAPBody +SAAJ0157.impl.detail.exists.error=SAAJ0157: Cannot add Detail, Detail already exists +SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAP Version mismatch encountered when trying to add SOAPFault to SOAPBody +SAAJ0159.impl.version.mismatch.detail=SAAJ0159: SOAP Version mismatch encountered when trying to add Detail to SOAPFault + +# Info messages +SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omit XML declaration set to {0} +SAAJ0191.impl.set.encoding=SAAJ0191: Encoding is set to {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_de.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_de.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,86 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for impl +# Error messages +SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: \u00DCbergeordnetes Element von SOAPBodyElement muss ein SOAPBody sein +SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Namespace f\u00FCr Pr\u00E4fix {0} kann nicht gefunden werden +SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Es k\u00F6nnen keine Fragmente hinzugef\u00FCgt werden, die Elemente enthalten, die im SOAP-Namespace enthalten sind +SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Codierungsstil {0} muss ein g\u00FCltiger URI sein +SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: NULL kann nicht an setParentElement \u00FCbergeben werden +SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: setValue ist bei einem Element nicht m\u00F6glich, das nicht ein einziges untergeordnetes Element vom Typ Text hat + +SAAJ0110.impl.fault.already.exists=SAAJ0110: Fehler: Fault ist bereits vorhanden +SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: \u00DCbergeordnetes Element von SOAPBody muss SOAPEnvelope sein + +SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: NULL kann nicht an setParentElement \u00FCbergeben werden +SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Text aus einem Kommentarknoten kann nicht geteilt werden +SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Gesamter Text aus einem Kommentarknoten kann nicht ersetzt werden + +SAAJ0120.impl.header.already.exists=SAAJ0120: Es kann kein Header hinzugef\u00FCgt werden, wenn bereits ein Header vorhanden ist +SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Erstes untergeordnetes Element von Envelope muss "Header" oder "Body" sein +SAAJ0122.impl.body.already.exists=SAAJ0122: Es kann kein Nachrichtentext hinzugef\u00FCgt werden, wenn bereits ein Nachrichtentext vorhanden ist +SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Reserviertes xmlns-Pr\u00E4fix kann nicht deklariert werden +SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Vollst\u00E4ndiger Name darf nicht xmlns sein +#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null +SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Namespace f\u00FCr Pr\u00E4fix {0} kann nicht gefunden werden +SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: NULL kann nicht an setParentElement \u00FCbergeben werden + +SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: \u00DCbergeordnetes Element von SOAPHeaderElement muss ein SOAPHeader sein +SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements muss mit Namespace angegeben werden +SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Ung\u00FCltiger Wert f\u00FCr Actor oder Rolle +SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: \u00DCbergeordnetes Element von SOAPHeader muss SOAPEnvelope sein +SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements muss mit Namespace angegeben werden + +SAAJ0140.impl.no.ns.URI=SAAJ0140: Leerer/Null-NamespaceURI f\u00FCr faultCode {0} angegeben +SAAJ0141.impl.detail.exists=SAAJ0141: Detail ist bereits vorhanden +SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Ursache/Text wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her +SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Knoten wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her +SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Rolle wird von dieser SOAP-Version nicht unterst\u00FCtzt, versuchen Sie SOAP 1.2 oder h\u00F6her +SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: NULL kann nicht an setParentElement \u00FCbergeben werden +SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Name des Elements {0} kann nicht in {1} ge\u00E4ndert werden +SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Der URI f\u00FCr Pr\u00E4fix {0} kann nicht von {1} in {2} in setElementQName ge\u00E4ndert werden +SAAJ0148.impl.invalid.prefix.for.uri=Nicht-leerer Namespace-URI: {0} f\u00FCr ein leeres Pr\u00E4fix in SetElementQName +SAAJ0149.impl.null.prefix=SAAJ0149: Pr\u00E4fix darf bei der Erstellung eines QName nicht "null" sein + +SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Dokument kann nicht aus Nachrichtentext extrahiert werden +SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Dokument kann nicht aus Nachrichtentext extrahiert werden + +# Debug messages +SAAJ0150.impl.added.attr=SAAJ0150: Attribut {0} hinzugef\u00FCgt +SAAJ0151.impl.no.children=SAAJ0151: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: es sind keine untergeordneten Elemente vorhanden +SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: erstes untergeordnetes Element ist kein Textknoten +SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Knoten, der Wert enth\u00E4lt, kann nicht gefunden werden: Es ist mehr als ein untergeordneter Knoten vorhanden +SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: Ein SOAPFault-Element kann nur als untergeordnetes Element von SOAPBody hinzugef\u00FCgt werden +SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Ein "Detail"-Element kann nur als untergeordnetes Element von SOAPFault hinzugef\u00FCgt werden +SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault kann nicht hinzugef\u00FCgt werden, SOAPFault muss das einzige untergeordnete Element von SOAPBody sein +SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden +SAAJ0158.impl.version.mismatch.fault=SAAJ0158: Nicht \u00FCbereinstimmende SOAP-Version beim Versuch aufgetreten, SOAPFault zu SOAPBody hinzuzuf\u00FCgen +SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Nicht \u00FCbereinstimmende SOAP-Version beim Versuch aufgetreten, Detail zu SOAPBody hinzuzuf\u00FCgen + +# Info messages +SAAJ0190.impl.set.xml.declaration=SAAJ0190: Deklaration "Omit XML" auf {0} gesetzt +SAAJ0191.impl.set.encoding=SAAJ0191: Codierung ist auf {0} gesetzt diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_es.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_es.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,86 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for impl +# Error messages +SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: el principal de un SOAPBodyElement tiene que ser un SOAPBody +SAAJ0102.impl.cannot.locate.ns=SAAJ0102: no se ha encontrado el espacio de nombres para el prefijo {0} +SAAJ0103.impl.cannot.add.fragements=SAAJ0103: no se pueden agregar fragmentos que contengan elementos que se encuentren en el espacio de nombres de SOAP +SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: el estilo de codificaci\u00F3n {0} debe ser un URI v\u00E1lido +SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: no se puede transferir NULL a setParentElement +SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: no se puede definir un valor en un elemento que no tenga un \u00FAnico secundario de tipo Text + +SAAJ0110.impl.fault.already.exists=SAAJ0110: Error: ya existe el fallo +SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: el principal de SOAPBody tiene que ser SOAPEnvelope + +SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: no se puede transferir NULL a setParentElement +SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: no se puede dividir el texto de un nodo de comentarios +SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: no se puede sustituir el texto completo de un nodo de comentarios + +SAAJ0120.impl.header.already.exists=SAAJ0120: no se puede agregar una cabecera si ya hay una +SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: el primer secundario de Envelope debe ser Header o Body +SAAJ0122.impl.body.already.exists=SAAJ0120: no se puede agregar un cuerpo si ya hay uno +SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: no se puede declarar el prefijo xmlns reservado +SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: el nombre cualificado no puede ser xmlns +#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null +SAAJ0126.impl.cannot.locate.ns=SAAJ0126: no se ha encontrado el espacio de nombres para el prefijo {0} +SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: no se puede transferir NULL a setParentElement + +SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: el principal de SOAPHeaderElement tiene que ser SOAPHeader +SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements debe estar cualificado por espacio de nombres +SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: valor no v\u00E1lido para actor o rol +SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: el principal de SOAPHeader tiene que ser SOAPEnvelope +SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements debe estar cualificado por espacio de nombres + +SAAJ0140.impl.no.ns.URI=SAAJ0140: se ha especificado un URI de espacio de nombres vac\u00EDo o nulo para el c\u00F3digo de fallo {0} +SAAJ0141.impl.detail.exists=SAAJ0141: ya existe el detalle +SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: el fallo/motivo/texto no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior +SAAJ0143.impl.node.not.supported=SAAJ0143: El fallo/nodo no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior +SAAJ0144.impl.role.not.supported=SAAJ0143: el fallo/rol no est\u00E1 soportado en esta versi\u00F3n de SOAP. Pruebe SOAP 1.2 o posterior +SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: no se puede transferir NULL a setParentElement +SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: no se puede cambiar el nombre del elemento {0} por {1} +SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: no se puede cambiar el URI del prefijo {0} de {1} a {2} en setElementQName +SAAJ0148.impl.invalid.prefix.for.uri=URI de espacio de nombres no vac\u00EDo: {0} para un prefijo vac\u00EDo en SetElementQName +SAAJ0149.impl.null.prefix=SAAJ0149: el prefijo no puede ser "null" al crear un QName + +SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: no se puede extraer el documento del cuerpo +SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: no se ha podido extraer el documento del cuerpo + +# Debug messages +SAAJ0150.impl.added.attr=SAAJ0150: se ha agregado el atributo {0} +SAAJ0151.impl.no.children=SAAJ0151: no se ha encontrado el nodo que contiene el valor: no hay secundarios +SAAJ0152.impl.first.child.not.text.node=SAAJ0152: no se ha encontrado el nodo que contiene el valor: el primer secundario no es un nodo de texto +SAAJ0153.impl.multiple.children.same.value=SAAJ0153: no se ha encontrado el nodo que contiene el valor: hay m\u00E1s de un nodo secundario +SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: un elemento SOAPFault s\u00F3lo se puede agregar como secundario de SOAPBody +SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: un elemento Detail s\u00F3lo se puede agregar como secundario de SOAPFault +SAAJ0156.impl.adding.fault.error=SAAJ0156: no se puede agregar SOAPFault; SOAPFault debe ser el \u00FAnico secundario de SOAPBody +SAAJ0157.impl.detail.exists.error=SAAJ0157: no se puede agregar el detalle. El detalle ya existe +SAAJ0158.impl.version.mismatch.fault=SAAJ0158: se ha encontrado un error de coincidencia de la versi\u00F3n de SOAP al intentar agregar SOAPFault a SOAPBody +SAAJ0159.impl.version.mismatch.detail=SAAJ0159: se ha encontrado un error de coincidencia de la versi\u00F3n de SOAP al intentar agregar Detail a SOAPFault + +# Info messages +SAAJ0190.impl.set.xml.declaration=SAAJ0190: omita la declaraci\u00F3n XML definida en {0} +SAAJ0191.impl.set.encoding=SAAJ0191: la codificaci\u00F3n se ha definido en {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_fr.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_fr.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,86 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for impl +# Error messages +SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101 : le parent d'un \u00E9l\u00E9ment SOAPBodyElement doit \u00EAtre un \u00E9l\u00E9ment SOAPBody +SAAJ0102.impl.cannot.locate.ns=SAAJ0102 : impossible de localiser l''espace de noms pour le pr\u00E9fixe {0} +SAAJ0103.impl.cannot.add.fragements=SAAJ0103 : impossible d'ajouter les fragments qui contiennent les \u00E9l\u00E9ments figurant dans l'espace de noms SOAP +SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105 : le style d''encodage {0} doit \u00EAtre un URI valide +SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106 : impossible de transmettre la valeur NULL \u00E0 setParentElement +SAAJ0107.impl.elem.child.not.single.text=SAAJ0107 : impossible de d\u00E9finir la valeur sur un \u00E9l\u00E9ment qui ne comporte aucun enfant unique de type Text + +SAAJ0110.impl.fault.already.exists=SAAJ0110 : erreur : l'erreur existe d\u00E9j\u00E0 +SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111 : le parent de SOAPBody doit \u00EAtre un \u00E9l\u00E9ment SOAPEnvelope + +SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112 : impossible de transmettre la valeur NULL \u00E0 setParentElement +SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113 : impossible de s\u00E9parer le texte d'un noeud de commentaire +SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114 : impossible de remplacer l'ensemble du texte \u00E0 partir d'un noeud de commentaire + +SAAJ0120.impl.header.already.exists=SAAJ0120 : impossible d'ajouter un en-t\u00EAte lorsqu'il en existe d\u00E9j\u00E0 un +SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121 : le premier enfant de Envelope doit \u00EAtre un \u00E9l\u00E9ment Header ou Body +SAAJ0122.impl.body.already.exists=SAAJ0122 : impossible d'ajouter un corps lorsqu'il en existe d\u00E9j\u00E0 un +SAAJ0123.impl.no.reserved.xmlns=SAAJ0123 : impossible de d\u00E9clarer le pr\u00E9fixe xmlns r\u00E9serv\u00E9 +SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124 : le nom qualifi\u00E9 ne peut pas \u00EAtre xmlns +#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null +SAAJ0126.impl.cannot.locate.ns=SAAJ0126 : impossible de localiser l''espace de noms pour le pr\u00E9fixe {0} +SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127 : impossible de transmettre la valeur NULL \u00E0 setParentElement + +SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130 : le parent d'un \u00E9l\u00E9ment SOAPHeaderElement doit \u00EAtre un \u00E9l\u00E9ment SOAPHeader +SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131 : les \u00E9l\u00E9ments Header doivent \u00EAtre des espaces de noms qualifi\u00E9s +SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132 : valeur non valide pour l'acteur ou le r\u00F4le +SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133 : le parent de SOAPHeader doit \u00EAtre un \u00E9l\u00E9ment SOAPEnvelope +SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134 : les \u00E9l\u00E9ments Header doivent \u00EAtre des espaces de noms qualifi\u00E9s + +SAAJ0140.impl.no.ns.URI=SAAJ0140 : NamespaceURI vide/NULL indiqu\u00E9 pour faultCode {0} +SAAJ0141.impl.detail.exists=SAAJ0141 : l'\u00E9l\u00E9ment Detail existe d\u00E9j\u00E0 +SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Reason/Text non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur +SAAJ0143.impl.node.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Node non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur +SAAJ0144.impl.role.not.supported=SAAJ0142 : \u00E9l\u00E9ments Fault/Role non pris en charge par cette version SOAP, essayez SOAP 1.2 ou sup\u00E9rieur +SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145 : impossible de transmettre la valeur NULL \u00E0 setParentElement +SAAJ0146.impl.invalid.name.change.requested=SAAJ0146 : impossible de modifier le nom de l''\u00E9l\u00E9ment {0} en {1} +SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147 : impossible de modifier l''URI pour le pr\u00E9fixe {0} de {1} en {2} dans setElementQName +SAAJ0148.impl.invalid.prefix.for.uri=URI d''espace de noms non vide : {0} pour un pr\u00E9fixe vide dans SetElementQName +SAAJ0149.impl.null.prefix=SAAJ0149 : le pr\u00E9fixe ne peut pas \u00EAtre "NULL" lors de la cr\u00E9ation d'un QName + +SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250 : impossible d'extraire le document du corps +SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251 : impossible d'extraire le document du corps + +# Debug messages +SAAJ0150.impl.added.attr=SAAJ0150 : attribut {0} ajout\u00E9 +SAAJ0151.impl.no.children=SAAJ0151 : noeud contenant la valeur introuvable : il n'existe aucun enfant +SAAJ0152.impl.first.child.not.text.node=SAAJ0151 : noeud contenant la valeur introuvable : le premier enfant n'est pas un noeud Text +SAAJ0153.impl.multiple.children.same.value=SAAJ0151 : noeud contenant la valeur introuvable : il existe plusieurs noeuds enfant +SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154 : un \u00E9l\u00E9ment SOAPFault peut \u00EAtre ajout\u00E9 uniquement en tant qu'enfant de SOAPBody +SAAJ0155.impl.adding.detail.nonfault=SAAJ0155 : un \u00E9l\u00E9ment Detail peut \u00EAtre ajout\u00E9 uniquement en tant qu'enfant d'un \u00E9l\u00E9ment SOAPFault +SAAJ0156.impl.adding.fault.error=SAAJ0156 : impossible d'ajouter SOAPFault ; un \u00E9l\u00E9ment SOAPFault doit \u00EAtre le seul enfant d'un \u00E9l\u00E9ment SOAPBody +SAAJ0157.impl.detail.exists.error=SAAJ0157 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0 +SAAJ0158.impl.version.mismatch.fault=SAAJ0158 : non-concordance de versions SOAP d\u00E9tect\u00E9e lors de la tentative d'ajout de SOAPFault \u00E0 SOAPBody +SAAJ0159.impl.version.mismatch.detail=SAAJ0158 : non-concordance de versions SOAP d\u00E9tect\u00E9e lors de la tentative d'ajout de Detail \u00E0 SOAPFault + +# Info messages +SAAJ0190.impl.set.xml.declaration=SAAJ0190 : omettre la d\u00E9claration XML d\u00E9finie sur {0} +SAAJ0191.impl.set.encoding=SAAJ0191 : l''encodage est d\u00E9fini sur {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_it.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_it.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,86 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for impl +# Error messages +SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: L'elemento padre di un SOAPBodyElement deve essere un SOAPBody +SAAJ0102.impl.cannot.locate.ns=SAAJ0102: Impossibile trovare lo spazio di nomi per il prefisso {0} +SAAJ0103.impl.cannot.add.fragements=SAAJ0103: Impossibile aggiungere frammenti che contengono elementi presenti nello spazio di nomi SOAP +SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: Lo stile di codifica {0} deve essere un URI valido +SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: Impossibile passare NULL a setParentElement +SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Impossibile usare setValue su un elemento che non ha solo un elemento figlio di tipo Text + +SAAJ0110.impl.fault.already.exists=SAAJ0110: Errore: Fault esiste gi\u00E0 +SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: L'elemento padre di SOAPBody deve essere un SOAPEnvelope + +SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: Impossibile passare NULL a setParentElement +SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: Impossibile dividere il testo di un Comment Node +SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: Impossibile sostituire tutto il testo di un Comment Node + +SAAJ0120.impl.header.already.exists=SAAJ0120: Impossibile aggiungere un'intestazione quando ne \u00E8 gi\u00E0 presente una +SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Il primo elemento figlio di Envelope deve essere Header o Body +SAAJ0122.impl.body.already.exists=SAAJ0122: Impossibile aggiungere un corpo quando ne \u00E8 gi\u00E0 presente uno +SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: Impossibile dichiarare riservato il prefisso xmlns +SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: Il nome qualificato non pu\u00F2 essere xmlns +#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null +SAAJ0126.impl.cannot.locate.ns=SAAJ0126: Impossibile trovare lo spazio di nomi per il prefisso {0} +SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: Impossibile passare NULL a setParentElement + +SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: L'elemento padre di un SOAPHeaderElement deve essere un SSOAPHeader +SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements deve essere qualificato per lo spazio di nomi +SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: Valore non valido per l'attore o il ruolo +SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: L'elemento padre di SOAPHeader deve essere un SOAPEnvelope +SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements deve essere qualificato per lo spazio di nomi + +SAAJ0140.impl.no.ns.URI=SAAJ0140: URI dello spazio di nomi vuoto/nullo specificato per faultCode {0} +SAAJ0141.impl.detail.exists=SAAJ0141: Detail esiste gi\u00E0 +SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: Fault/Reason/Text non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva +SAAJ0143.impl.node.not.supported=SAAJ0143: Fault/Node non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva +SAAJ0144.impl.role.not.supported=SAAJ0144: Fault/Role non supportato da questa versione SOAP. Tentare la versione SOAP 1.2 o successiva +SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: Impossibile passare NULL a setParentElement +SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: Impossibile modificare il nome dell''elemento {0} in {1} +SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: Impossibile modificare l''URI per il prefisso {0} da {1} a {2} in setElementQName +SAAJ0148.impl.invalid.prefix.for.uri=URI dello spazio di nomi non vuoto: {0} per un prefisso vuoto in SetElementQName +SAAJ0149.impl.null.prefix=SAAJ0149: Il prefisso non pu\u00F2 essere "null" durante la creazione di un QName + +SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: Impossibile estrarre Document dal corpo +SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: Impossibile estrarre Document dal corpo + +# Debug messages +SAAJ0150.impl.added.attr=SAAJ0150: Attributo {0} aggiunto +SAAJ0151.impl.no.children=SAAJ0151: Impossibile trovare il nodo contenente il valore: non sono presenti elementi figlio +SAAJ0152.impl.first.child.not.text.node=SAAJ0152: Impossibile trovare il nodo contenente il valore: il primo elemento figlio non \u00E8 un nodo testo +SAAJ0153.impl.multiple.children.same.value=SAAJ0153: Impossibile trovare il nodo contenente il valore: sono presenti pi\u00F9 nodi figlio +SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: Un elemento SOAPFault pu\u00F2 essere aggiunto solo come elemento figlio di SOAPBody +SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Un elemento Detail pu\u00F2 essere aggiunto solo come elemento figlio di un SOAPFault +SAAJ0156.impl.adding.fault.error=SAAJ0156: Impossibile aggiungere SOAPFault. SOAPFault deve essere l'unico elemento figlio di SOAPBody +SAAJ0157.impl.detail.exists.error=SAAJ0157: Impossibile aggiungere Detail. Detail esiste gi\u00E0. +SAAJ0158.impl.version.mismatch.fault=SAAJ0158: Mancata corrispondenza della versione SOAP rilevata durante il tentativo di aggiungere SOAPFault a SOAPBody +SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Mancata corrispondenza della versione SOAP rilevata durante il tentativo di aggiungere il dettaglio a SOAPFault + +# Info messages +SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omettere la dichiarazione XML impostata su {0} +SAAJ0191.impl.set.encoding=SAAJ0191: La codifica \u00E8 impostata su {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ja.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ja.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,86 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for impl +# Error messages +SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement\u306E\u89AA\u306FSOAPBody\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u63A5\u982D\u8F9E{0}\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 +SAAJ0103.impl.cannot.add.fragements=SAAJ0103: SOAP\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306B\u5B58\u5728\u3059\u308B\u8981\u7D20\u3092\u542B\u3080\u30D5\u30E9\u30B0\u30E1\u30F3\u30C8\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 +SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u30FB\u30B9\u30BF\u30A4\u30EB{0}\u306F\u6709\u52B9\u306AURI\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u30BF\u30A4\u30D7\u304C\u30C6\u30AD\u30B9\u30C8\u306E\u552F\u4E00\u306E\u5B50\u304C\u306A\u3044\u8981\u7D20\u306B\u5024\u3092\u8A2D\u5B9A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 + +SAAJ0110.impl.fault.already.exists=SAAJ0110: \u30A8\u30E9\u30FC: \u30D5\u30A9\u30EB\u30C8\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059 +SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody\u306E\u89AA\u306FSOAPEnvelope\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 + +SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u30B3\u30E1\u30F3\u30C8\u30FB\u30CE\u30FC\u30C9\u304B\u3089\u30C6\u30AD\u30B9\u30C8\u3092\u5206\u5272\u3067\u304D\u307E\u305B\u3093 +SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u30B3\u30E1\u30F3\u30C8\u30FB\u30CE\u30FC\u30C9\u304B\u3089\u30C6\u30AD\u30B9\u30C8\u5168\u4F53\u3092\u7F6E\u63DB\u3067\u304D\u307E\u305B\u3093 + +SAAJ0120.impl.header.already.exists=SAAJ0120: \u30D8\u30C3\u30C0\u30FC\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 +SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\u306E\u6700\u521D\u306E\u5B50\u306FHeader\u307E\u305F\u306FBody\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +SAAJ0122.impl.body.already.exists=SAAJ0122: \u672C\u6587\u304C\u3059\u3067\u306B\u5B58\u5728\u3059\u308B\u5834\u5408\u306F\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093 +SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u4E88\u7D04\u6E08\u306Exmlns\u63A5\u982D\u8F9E\u3092\u5BA3\u8A00\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u4FEE\u98FE\u540D\u3092xmlns\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null +SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u63A5\u982D\u8F9E{0}\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093 +SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 + +SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement\u306E\u89AA\u306FSOAPHeader\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \u30A2\u30AF\u30BF\u30FC\u307E\u305F\u306F\u30ED\u30FC\u30EB\u306E\u5024\u304C\u7121\u52B9\u3067\u3059 +SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader\u306E\u89AA\u306FSOAPEnvelope\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 + +SAAJ0140.impl.no.ns.URI=SAAJ0140: faultCode {0}\u306B\u6307\u5B9A\u3055\u308C\u305FNamespaceURI\u304C\u7A7A/Null\u3067\u3059 +SAAJ0141.impl.detail.exists=SAAJ0141: Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059 +SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u7406\u7531/\u30C6\u30AD\u30B9\u30C8\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044 +SAAJ0143.impl.node.not.supported=SAAJ0143: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u30CE\u30FC\u30C9\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044 +SAAJ0144.impl.role.not.supported=SAAJ0144: \u3053\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u3067\u306F\u30D5\u30A9\u30EB\u30C8/\u30ED\u30FC\u30EB\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093\u3002SOAP 1.2\u4EE5\u4E0A\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044 +SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: NULL\u3092setParentElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u8981\u7D20{0}\u306E\u540D\u524D\u3092{1}\u306B\u5909\u66F4\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: setElementQName\u306E\u63A5\u982D\u8F9E{0}\u306EURI\u3092{1}\u304B\u3089{2}\u306B\u5909\u66F4\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName\u306E\u7A7A\u306E\u63A5\u982D\u8F9E\u306B\u7A7A\u767D\u4EE5\u5916\u306E\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9URI: {0}\u304C\u6307\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 +SAAJ0149.impl.null.prefix=SAAJ0149: QName\u3092\u4F5C\u6210\u3059\u308B\u5834\u5408\u3001\u63A5\u982D\u8F9E\u3092\u300Cnull\u300D\u306B\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 + +SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u672C\u6587\u304B\u3089\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093 +SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u672C\u6587\u304B\u3089\u30C9\u30AD\u30E5\u30E1\u30F3\u30C8\u3092\u62BD\u51FA\u3067\u304D\u307E\u305B\u3093 + +# Debug messages +SAAJ0150.impl.added.attr=SAAJ0150: \u5C5E\u6027{0}\u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F +SAAJ0151.impl.no.children=SAAJ0151: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u5B50\u304C\u3042\u308A\u307E\u305B\u3093 +SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u6700\u521D\u306E\u5B50\u304C\u30C6\u30AD\u30B9\u30C8\u30FB\u30CE\u30FC\u30C9\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u5024\u3092\u542B\u3080\u30CE\u30FC\u30C9\u304C\u898B\u3064\u304B\u308A\u307E\u305B\u3093: \u8907\u6570\u306E\u5B50\u30CE\u30FC\u30C9\u304C\u3042\u308A\u307E\u3059 +SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault\u8981\u7D20\u306FSOAPBody\u306E\u5B50\u3068\u3057\u3066\u306E\u307F\u8FFD\u52A0\u3067\u304D\u307E\u3059 +SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail\u8981\u7D20\u306FSOAPFault\u306E\u5B50\u3068\u3057\u3066\u306E\u307F\u8FFD\u52A0\u3067\u304D\u307E\u3059 +SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002SOAPFault\u306FSOAPBody\u306E\u552F\u4E00\u306E\u5B50\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059 +SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAPFault\u3092SOAPBody\u306B\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306BSOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F +SAAJ0159.impl.version.mismatch.detail=SAAJ0159: Detail\u3092SOAPFault\u306B\u8FFD\u52A0\u3057\u3088\u3046\u3068\u3057\u305F\u3068\u304D\u306BSOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u306E\u4E0D\u4E00\u81F4\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F + +# Info messages +SAAJ0190.impl.set.xml.declaration=SAAJ0190: Omit XML\u5BA3\u8A00\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 +SAAJ0191.impl.set.encoding=SAAJ0191: \u30A8\u30F3\u30B3\u30FC\u30C7\u30A3\u30F3\u30B0\u304C{0}\u306B\u8A2D\u5B9A\u3055\u308C\u3066\u3044\u307E\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ko.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_ko.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,86 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for impl +# Error messages +SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement\uC758 \uC0C1\uC704\uB294 SOAPBody\uC5EC\uC57C \uD569\uB2C8\uB2E4. +SAAJ0102.impl.cannot.locate.ns=SAAJ0102: {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0103.impl.cannot.add.fragements=SAAJ0103: SOAP \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC788\uB294 \uC694\uC18C\uAC00 \uD3EC\uD568\uB41C \uB2E8\uD3B8\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \uC778\uCF54\uB529 \uC2A4\uD0C0\uC77C {0}\uC740(\uB294) \uC801\uD569\uD55C URI\uC5EC\uC57C \uD569\uB2C8\uB2E4. +SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: Text \uC720\uD615\uC758 \uC720\uC77C\uD55C \uD558\uC704\uAC00 \uD3EC\uD568\uB418\uC9C0 \uC54A\uC740 \uC694\uC18C\uC5D0 \uB300\uD574 \uAC12\uC744 \uC124\uC815\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. + +SAAJ0110.impl.fault.already.exists=SAAJ0110: \uC624\uB958: Fault\uAC00 \uC874\uC7AC\uD569\uB2C8\uB2E4. +SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody\uC758 \uC0C1\uC704\uB294 SOAPEnvelope\uC5EC\uC57C \uD569\uB2C8\uB2E4. + +SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \uC8FC\uC11D \uB178\uB4DC\uC5D0\uC11C \uD14D\uC2A4\uD2B8\uB97C \uBD84\uD560\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \uC8FC\uC11D \uB178\uB4DC\uC758 \uC804\uCCB4 \uD14D\uC2A4\uD2B8\uB97C \uBC14\uAFC0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. + +SAAJ0120.impl.header.already.exists=SAAJ0120: Header\uAC00 \uC874\uC7AC\uD558\uB294 \uACBD\uC6B0 Header\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\uC758 \uCCAB\uBC88\uC9F8 \uD558\uC704\uB294 Header \uB610\uB294 Body\uC5EC\uC57C \uD569\uB2C8\uB2E4. +SAAJ0122.impl.body.already.exists=SAAJ0122: Body\uAC00 \uC874\uC7AC\uD558\uB294 \uACBD\uC6B0 Body\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \uC608\uC57D\uB41C xmlns \uC811\uB450\uC5B4\uB97C \uC120\uC5B8\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \uC815\uADDC\uD654\uB41C \uC774\uB984\uC740 xmlns\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null +SAAJ0126.impl.cannot.locate.ns=SAAJ0126: {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. + +SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement\uC758 \uC0C1\uC704\uB294 SOAPHeader\uC5EC\uC57C \uD569\uB2C8\uB2E4. +SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4. +SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \uC791\uC5C5\uC790 \uB610\uB294 \uB864\uC5D0 \uB300\uD55C \uAC12\uC774 \uBD80\uC801\uD569\uD569\uB2C8\uB2E4. +SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader\uC758 \uC0C1\uC704\uB294 SOAPEnvelope\uC5EC\uC57C \uD569\uB2C8\uB2E4. +SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4. + +SAAJ0140.impl.no.ns.URI=SAAJ0140: faultCode {0}\uC5D0 \uB300\uD574 \uBE48/\uB110 NamespaceURI\uAC00 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0141.impl.detail.exists=SAAJ0141: Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. +SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Reason/Text\uAC00 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624. +SAAJ0143.impl.node.not.supported=SAAJ0143: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Node\uAC00 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624. +SAAJ0144.impl.role.not.supported=SAAJ0144: \uC774 SOAP \uBC84\uC804\uC5D0\uC11C\uB294 Fault/Role\uC774 \uC9C0\uC6D0\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2 \uB610\uB294 \uC774\uD6C4 \uBC84\uC804\uC744 \uC0AC\uC6A9\uD574 \uBCF4\uC2ED\uC2DC\uC624. +SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: setParentElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: {0} \uC694\uC18C\uC758 \uC774\uB984\uC744 {1}(\uC73C)\uB85C \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: setElementQName\uC5D0\uC11C {0} \uC811\uB450\uC5B4\uC5D0 \uB300\uD55C URI\uB97C {1}\uC5D0\uC11C {2}(\uC73C)\uB85C \uBCC0\uACBD\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName\uC5D0 \uBE48 \uC811\uB450\uC5B4\uC5D0 \uB300\uD574 \uBE44\uC5B4 \uC788\uC9C0 \uC54A\uC740 \uB124\uC784\uC2A4\uD398\uC774\uC2A4 URI {0}\uC774(\uAC00) \uC788\uC2B5\uB2C8\uB2E4. +SAAJ0149.impl.null.prefix=SAAJ0149: QName\uC744 \uC0DD\uC131\uD558\uB294 \uACBD\uC6B0 \uC811\uB450\uC5B4\uB294 "null"\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. + +SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \uBCF8\uBB38\uC5D0\uC11C \uBB38\uC11C\uB97C \uCD94\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \uBCF8\uBB38\uC5D0\uC11C \uBB38\uC11C\uB97C \uCD94\uCD9C\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. + +# Debug messages +SAAJ0150.impl.added.attr=SAAJ0150: {0} \uC18D\uC131\uC744 \uCD94\uAC00\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0151.impl.no.children=SAAJ0151: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uD558\uC704 \uD56D\uBAA9\uC774 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uCCAB\uBC88\uC9F8 \uD558\uC704\uAC00 \uD14D\uC2A4\uD2B8 \uB178\uB4DC\uAC00 \uC544\uB2D9\uB2C8\uB2E4. +SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \uAC12\uC774 \uD3EC\uD568\uB41C \uB178\uB4DC\uB97C \uCC3E\uC744 \uC218 \uC5C6\uC74C: \uD558\uC704 \uB178\uB4DC\uAC00 \uB450 \uAC1C \uC774\uC0C1 \uC788\uC2B5\uB2C8\uB2E4. +SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \uC694\uC18C\uB294 SOAPBody\uC758 \uD558\uC704\uB85C\uB9CC \uCD94\uAC00\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. +SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail \uC694\uC18C\uB294 SOAPFault\uC758 \uD558\uC704\uB85C\uB9CC \uCD94\uAC00\uD560 \uC218 \uC788\uC2B5\uB2C8\uB2E4. +SAAJ0156.impl.adding.fault.error=SAAJ0156: SOAPFault\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. SOAPFault\uB294 SOAPBody\uC758 \uC720\uC77C\uD55C \uD558\uC704\uC5EC\uC57C \uD569\uB2C8\uB2E4. +SAAJ0157.impl.detail.exists.error=SAAJ0157: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. +SAAJ0158.impl.version.mismatch.fault=SAAJ0158: SOAPBody\uC5D0 SOAPFault\uB97C \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 SOAP \uBC84\uC804 \uBD88\uC77C\uCE58\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. +SAAJ0159.impl.version.mismatch.detail=SAAJ0159: SOAPFault\uC5D0 Detail\uC744 \uCD94\uAC00\uD558\uB824\uACE0 \uC2DC\uB3C4\uD558\uB294 \uC911 SOAP \uBC84\uC804 \uBD88\uC77C\uCE58\uAC00 \uBC1C\uC0DD\uD588\uC2B5\uB2C8\uB2E4. + +# Info messages +SAAJ0190.impl.set.xml.declaration=SAAJ0190: XML \uC120\uC5B8 \uC0DD\uB7B5\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. +SAAJ0191.impl.set.encoding=SAAJ0191: \uC778\uCF54\uB529\uC774 {0}(\uC73C)\uB85C \uC124\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_pt_BR.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_pt_BR.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,86 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for impl +# Error messages +SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: o pai de um SOAPBodyElement deve ser um SOAPBody +SAAJ0102.impl.cannot.locate.ns=SAAJ0102: n\u00E3o \u00E9 poss\u00EDvel localizar o namespace do prefixo {0} +SAAJ0103.impl.cannot.add.fragements=SAAJ0103: n\u00E3o \u00E9 poss\u00EDvel adicionar fragmentos que cont\u00EAm elementos que est\u00E3o no namespace de SOAP +SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: estilo {0} de codifica\u00E7\u00E3o deve ser um URI v\u00E1lido +SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement +SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: n\u00E3o \u00E9 poss\u00EDvel setValue em um Elemento que n\u00E3o tem um s\u00F3 filho do tipo Texto + +SAAJ0110.impl.fault.already.exists=SAAJ0110: erro: j\u00E1 existe falha +SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: o pai de SOAPBody deve ser um SOAPEnvelope + +SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement +SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: n\u00E3o \u00E9 poss\u00EDvel dividir o texto de um N\u00F3 do Coment\u00E1rio +SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: n\u00E3o \u00E9 poss\u00EDvel substituir todo o texto de um N\u00F3 de Coment\u00E1rio + +SAAJ0120.impl.header.already.exists=SAAJ0120: n\u00E3o \u00E9 poss\u00EDvel adicionar um cabe\u00E7alho quando h\u00E1 houver um +SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: o primeiro filho do Envelope deve ser um Cabe\u00E7alho ou um Corpo +SAAJ0122.impl.body.already.exists=SAAJ0122: n\u00E3o \u00E9 poss\u00EDvel adicionar um corpo quando j\u00E1 houver um +SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: n\u00E3o \u00E9 poss\u00EDvel declarar o prefixo xmlns reservado +SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: o nome qualificado n\u00E3o pode ser xmlns +#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null +SAAJ0126.impl.cannot.locate.ns=SAAJ0126: n\u00E3o \u00E9 poss\u00EDvel localizar namespace para o prefixo {0} +SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement + +SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: o pai de um SOAPHeaderElement deve ser um SOAPHeader +SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements deve ser um namespace qualificado +SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: valor inv\u00E1lido para ator ou atribui\u00E7\u00E3o +SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: o pai de um SOAPHeader deve ser um SOAPEnvelope +SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements deve ser um namespace qualificado + +SAAJ0140.impl.no.ns.URI=SAAJ0140: NamespaceURI Vazio/Nulo especificado para faultCode {0} +SAAJ0141.impl.detail.exists=SAAJ0141: o detalhe j\u00E1 existe +SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: falha/motivo/texto n\u00E3o suportado por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior +SAAJ0143.impl.node.not.supported=SAAJ0143: falha/n\u00F3 n\u00E3o suportados por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior +SAAJ0144.impl.role.not.supported=SAAJ0144: falha/atribui\u00E7\u00E3o n\u00E3o suportada por esta vers\u00E3o de SOAP, tente SOAP 1.2 ou posterior +SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: n\u00E3o \u00E9 poss\u00EDvel informar NULL como setParentElement +SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: n\u00E3o \u00E9 poss\u00EDvel alterar o nome do elemento {0} para {1} +SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: n\u00E3o \u00E9 poss\u00EDvel alterar o URI do prefixo {0} de {1} para {2} no setElementQName +SAAJ0148.impl.invalid.prefix.for.uri=URI de namespace n\u00E3o vazio: {0} para um prefixo vazio no SetElementQName +SAAJ0149.impl.null.prefix=SAAJ0149: o prefixo n\u00E3o pode ser "nulo" ao criar um QName + +SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: n\u00E3o \u00E9 poss\u00EDvel extrair o Documento do corpo +SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: n\u00E3o \u00E9 poss\u00EDvel extrair o documento do corpo + +# Debug messages +SAAJ0150.impl.added.attr=SAAJ0150: atributo {0} adicionado +SAAJ0151.impl.no.children=SAAJ0151: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: n\u00E3o h\u00E1 filhos +SAAJ0152.impl.first.child.not.text.node=SAAJ0152: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: o primeiro filho n\u00E3o \u00E9 um n\u00F3 de Texto +SAAJ0153.impl.multiple.children.same.value=SAAJ0153: n\u00E3o \u00E9 poss\u00EDvel localizar o n\u00F3 que cont\u00E9m o valor: h\u00E1 mais de um n\u00F3 filho +SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: um elemento de SOAPFault s\u00F3 pode ser adicionado como filho de SOAPBody +SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: um elemento de Detalhe s\u00F3 pode ser adicionado como um filho de um SOAPFault +SAAJ0156.impl.adding.fault.error=SAAJ0156: n\u00E3o \u00E9 poss\u00EDvel adicionar SOAPFault, um SOAPFault deve ser filho s\u00F3 de um SOAPBody +SAAJ0157.impl.detail.exists.error=SAAJ0157: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe +SAAJ0158.impl.version.mismatch.fault=SAAJ0158: incompatibilidade da vers\u00E3o SOAP encontrada ao tentar adicionar SOAPFault ao SOAPBody +SAAJ0159.impl.version.mismatch.detail=SAAJ0159: incompatibilidade da vers\u00E3o SOAP encontrada ao tentar adicionar Detalhes \u00E0 SOAPFault + +# Info messages +SAAJ0190.impl.set.xml.declaration=SAAJ0190: omitir conjunto de declara\u00E7\u00F5es de XML para {0} +SAAJ0191.impl.set.encoding=SAAJ0191: codifica\u00E7\u00E3o definida como {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_CN.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_CN.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,86 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for impl +# Error messages +SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPBody +SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u627E\u4E0D\u5230\u524D\u7F00{0}\u7684\u540D\u79F0\u7A7A\u95F4 +SAAJ0103.impl.cannot.add.fragements=SAAJ0103: \u65E0\u6CD5\u6DFB\u52A0\u5305\u542B\u4F4D\u4E8E SOAP \u540D\u79F0\u7A7A\u95F4\u4E2D\u7684\u5143\u7D20\u7684\u7247\u6BB5 +SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u7F16\u7801\u6837\u5F0F{0}\u5E94\u8BE5\u662F\u6709\u6548\u7684 URI +SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement +SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u5BF9\u4E8E\u5E76\u975E\u53EA\u5177\u6709\u6587\u672C\u7C7B\u578B\u5B50\u7EA7\u7684\u5143\u7D20, \u4E0D\u80FD\u6267\u884C setValue + +SAAJ0110.impl.fault.already.exists=SAAJ0110: \u9519\u8BEF: \u6545\u969C\u5DF2\u5B58\u5728 +SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPEnvelope + +SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement +SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u65E0\u6CD5\u62C6\u5206\u6765\u81EA\u6CE8\u91CA\u8282\u70B9\u7684\u6587\u672C +SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u65E0\u6CD5\u66FF\u6362\u6765\u81EA\u6CE8\u91CA\u8282\u70B9\u7684\u5168\u90E8\u6587\u672C + +SAAJ0120.impl.header.already.exists=SAAJ0120: \u5F53\u6807\u5934\u5DF2\u5B58\u5728\u65F6, \u65E0\u6CD5\u6DFB\u52A0\u6807\u5934 +SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: \u4FE1\u5C01\u7684\u7B2C\u4E00\u4E2A\u5B50\u7EA7\u5FC5\u987B\u662F\u6807\u5934\u6216\u6B63\u6587 +SAAJ0122.impl.body.already.exists=SAAJ0122: \u5F53\u6B63\u6587\u5DF2\u5B58\u5728\u65F6, \u65E0\u6CD5\u6DFB\u52A0\u6B63\u6587 +SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u65E0\u6CD5\u58F0\u660E\u4FDD\u7559\u7684 xmlns \u524D\u7F00 +SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u9650\u5B9A\u540D\u4E0D\u80FD\u662F xmlns +#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null +SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u627E\u4E0D\u5230\u524D\u7F00{0}\u7684\u540D\u79F0\u7A7A\u95F4 +SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement + +SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPHeader +SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4 +SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: \u64CD\u4F5C\u8005\u6216\u89D2\u8272\u7684\u503C\u65E0\u6548 +SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader \u7684\u7236\u7EA7\u5FC5\u987B\u662F SOAPEnvelope +SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4 + +SAAJ0140.impl.no.ns.URI=SAAJ0140: \u4E3A faultCode {0} \u6307\u5B9A\u7684 NamespaceURI \u5FC5\u987B\u4E3A\u7A7A/\u7A7A\u503C +SAAJ0141.impl.detail.exists=SAAJ0141: \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728 +SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u539F\u56E0/\u6587\u672C, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C +SAAJ0143.impl.node.not.supported=SAAJ0143: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u8282\u70B9, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C +SAAJ0144.impl.role.not.supported=SAAJ0144: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u6301\u6545\u969C/\u89D2\u8272, \u8BF7\u5C1D\u8BD5 SOAP 1.2 \u6216\u66F4\u9AD8\u7248\u672C +SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 setParentElement +SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u65E0\u6CD5\u5C06\u5143\u7D20{0}\u7684\u540D\u79F0\u66F4\u6539\u4E3A{1} +SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: \u65E0\u6CD5\u5C06 setElementQName \u4E2D\u524D\u7F00{0}\u7684 URI \u4ECE {1} \u66F4\u6539\u4E3A {2} +SAAJ0148.impl.invalid.prefix.for.uri=\u975E\u7A7A\u540D\u79F0\u7A7A\u95F4 URI: {0} \u7528\u4E8E SetElementQName \u4E2D\u7684\u7A7A\u524D\u7F00 +SAAJ0149.impl.null.prefix=SAAJ0149: \u521B\u5EFA QName \u65F6, \u524D\u7F00\u4E0D\u80FD\u4E3A "\u7A7A\u503C" + +SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u65E0\u6CD5\u4ECE\u6B63\u6587\u4E2D\u63D0\u53D6\u6587\u6863 +SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u65E0\u6CD5\u4ECE\u6B63\u6587\u4E2D\u63D0\u53D6\u6587\u6863 + +# Debug messages +SAAJ0150.impl.added.attr=SAAJ0150: \u5DF2\u6DFB\u52A0\u5C5E\u6027{0} +SAAJ0151.impl.no.children=SAAJ0151: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u6CA1\u6709\u4EFB\u4F55\u5B50\u7EA7 +SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u7B2C\u4E00\u4E2A\u5B50\u7EA7\u4E0D\u662F\u6587\u672C\u8282\u70B9 +SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u8282\u70B9: \u5B58\u5728\u591A\u4E2A\u5B50\u8282\u70B9 +SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \u5143\u7D20\u53EA\u80FD\u4F5C\u4E3A SOAPBody \u7684\u5B50\u7EA7\u6DFB\u52A0 +SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: \u8BE6\u7EC6\u4FE1\u606F\u5143\u7D20\u53EA\u80FD\u4F5C\u4E3A SOAPFault \u7684\u5B50\u7EA7\u6DFB\u52A0 +SAAJ0156.impl.adding.fault.error=SAAJ0156: \u65E0\u6CD5\u6DFB\u52A0 SOAPFault, SOAPFault \u53EA\u5E94\u8BE5\u662F SOAPBody \u7684\u5B50\u7EA7 +SAAJ0157.impl.detail.exists.error=SAAJ0157: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728 +SAAJ0158.impl.version.mismatch.fault=SAAJ0158: \u5C1D\u8BD5\u5C06 SOAPFault \u6DFB\u52A0\u5230 SOAPBody \u65F6\u9047\u5230 SOAP \u7248\u672C\u4E0D\u5339\u914D\u60C5\u51B5 +SAAJ0159.impl.version.mismatch.detail=SAAJ0159: \u5C1D\u8BD5\u5C06\u8BE6\u7EC6\u4FE1\u606F\u6DFB\u52A0\u5230 SOAPFault \u65F6\u9047\u5230 SOAP \u7248\u672C\u4E0D\u5339\u914D\u60C5\u51B5 + +# Info messages +SAAJ0190.impl.set.xml.declaration=SAAJ0190: \u9057\u6F0F XML \u58F0\u660E\u8BBE\u7F6E\u4E3A{0} +SAAJ0191.impl.set.encoding=SAAJ0191: \u7F16\u7801\u8BBE\u7F6E\u4E3A{0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_TW.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/LocalStrings_zh_TW.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,86 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for impl +# Error messages +SAAJ0101.impl.parent.of.body.elem.mustbe.body=SAAJ0101: SOAPBodyElement \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPBody +SAAJ0102.impl.cannot.locate.ns=SAAJ0102: \u627E\u4E0D\u5230\u524D\u7F6E\u78BC {0} \u7684\u547D\u540D\u7A7A\u9593 +SAAJ0103.impl.cannot.add.fragements=SAAJ0103: \u7121\u6CD5\u65B0\u589E\u5305\u542B SOAP \u547D\u540D\u7A7A\u9593\u4E2D\u4E4B\u5143\u7D20\u7684\u7247\u6BB5 +SAAJ0105.impl.encoding.style.mustbe.valid.URI=SAAJ0105: \u7DE8\u78BC\u6A23\u5F0F {0} \u61C9\u662F\u6709\u6548\u7684 URI +SAAJ0106.impl.no.null.to.parent.elem=SAAJ0106: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement +SAAJ0107.impl.elem.child.not.single.text=SAAJ0107: \u7121\u6CD5\u5728\u4E0D\u542B\u552F\u4E00 Text \u985E\u578B\u5B50\u9805\u7684\u300C\u5143\u7D20\u300D\u4E0A\u4F7F\u7528 setValue + +SAAJ0110.impl.fault.already.exists=SAAJ0110: \u932F\u8AA4: Fault \u5DF2\u7D93\u5B58\u5728 +SAAJ0111.impl.body.parent.must.be.envelope=SAAJ0111: SOAPBody \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPEnvelope + +SAAJ0112.impl.no.null.to.parent.elem=SAAJ0112: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement +SAAJ0113.impl.cannot.split.text.from.comment=SAAJ0113: \u4E0D\u80FD\u5F9E\u300CComment \u7BC0\u9EDE\u300D\u5206\u5272\u6587\u5B57 +SAAJ0114.impl.cannot.replace.wholetext.from.comment=SAAJ0114: \u4E0D\u80FD\u5F9E\u300CComment \u7BC0\u9EDE\u300D\u53D6\u4EE3\u6574\u500B\u6587\u5B57 + +SAAJ0120.impl.header.already.exists=SAAJ0120: \u6A19\u982D\u5DF2\u7D93\u5B58\u5728\u6642\u4E0D\u80FD\u65B0\u589E\u6A19\u982D +SAAJ0121.impl.invalid.first.child.of.envelope=SAAJ0121: Envelope\u7684\u7B2C\u4E00\u500B\u5B50\u9805\u5FC5\u9808\u662F Header \u6216 Body +SAAJ0122.impl.body.already.exists=SAAJ0122: \u4E3B\u9AD4\u5DF2\u7D93\u5B58\u5728\u6642\u4E0D\u80FD\u65B0\u589E\u4E3B\u9AD4 +SAAJ0123.impl.no.reserved.xmlns=SAAJ0123: \u4E0D\u80FD\u5BA3\u544A\u4FDD\u7559\u7684 xmlns \u524D\u7F6E\u78BC +SAAJ0124.impl.qualified.name.cannot.be.xmlns=SAAJ0124: \u5B8C\u6574\u540D\u7A31\u4E0D\u80FD\u662F xmlns +#SAAJ0125.impl.URI.cannot.be.null=SAAJ0125: URI cannot be null +SAAJ0126.impl.cannot.locate.ns=SAAJ0126: \u627E\u4E0D\u5230\u524D\u7F6E\u78BC {0} \u7684\u547D\u540D\u7A7A\u9593 +SAAJ0127.impl.no.null.for.parent.elem=SAAJ0127: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement + +SAAJ0130.impl.header.elem.parent.mustbe.header=SAAJ0130: SOAPHeaderElement \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPHeader +SAAJ0131.impl.header.elems.ns.qualified=SAAJ0131: HeaderElements \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593 +SAAJ0132.impl.invalid.value.for.actor.or.role=SAAJ0132: actor \u6216 role \u7684\u503C\u7121\u6548 +SAAJ0133.impl.header.parent.mustbe.envelope=SAAJ0133: SOAPHeader \u7684\u7236\u9805\u5FC5\u9808\u662F SOAPEnvelope +SAAJ0134.impl.header.elems.ns.qualified=SAAJ0134: HeaderElements \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593 + +SAAJ0140.impl.no.ns.URI=SAAJ0140: \u70BA faultCode {0} \u6307\u5B9A\u7684\u662F\u7A7A\u7684/\u7A7A\u503C NamespaceURI +SAAJ0141.impl.detail.exists=SAAJ0141: Detail \u5DF2\u7D93\u5B58\u5728 +SAAJ0142.impl.reason.or.text.not.supported=SAAJ0142: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Reason/Text, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C +SAAJ0143.impl.node.not.supported=SAAJ0143: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Node, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C +SAAJ0144.impl.role.not.supported=SAAJ0144: \u6B64 SOAP \u7248\u672C\u4E0D\u652F\u63F4 Fault/Role, \u8ACB\u5617\u8A66 SOAP 1.2 \u6216\u66F4\u65B0\u7248\u672C +SAAJ0145.impl.no.null.to.parent.elem=SAAJ0145: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 setParentElement +SAAJ0146.impl.invalid.name.change.requested=SAAJ0146: \u4E0D\u80FD\u5C07\u5143\u7D20 {0} \u7684\u540D\u7A31\u8B8A\u66F4\u70BA {1} +SAAJ0147.impl.invalid.uri.change.requested=SAAJ0147: \u4E0D\u80FD\u5C07 setElementQName \u4E2D\u524D\u7F6E\u78BC {0} \u7684 URI \u5F9E {1} \u8B8A\u66F4\u70BA {2} +SAAJ0148.impl.invalid.prefix.for.uri=SetElementQName \u4E2D\u7684\u7A7A\u524D\u7F6E\u78BC\u6709\u975E\u7A7A\u767D\u7684\u547D\u540D\u7A7A\u9593 URI: {0} +SAAJ0149.impl.null.prefix=SAAJ0149: \u5EFA\u7ACB QName \u6642, \u524D\u7F6E\u78BC\u4E0D\u80FD\u662F "null" + +SAAJ0250.impl.body.should.have.exactly.one.child=SAAJ0250: \u4E0D\u80FD\u5F9E\u4E3B\u9AD4\u64F7\u53D6 Document +SAAJ0251.impl.cannot.extract.document.from.body=SAAJ0251: \u7121\u6CD5\u5F9E\u4E3B\u9AD4\u64F7\u53D6 Document + +# Debug messages +SAAJ0150.impl.added.attr=SAAJ0150: \u5DF2\u65B0\u589E\u5C6C\u6027 {0} +SAAJ0151.impl.no.children=SAAJ0151: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u6C92\u6709\u5B50\u9805 +SAAJ0152.impl.first.child.not.text.node=SAAJ0152: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u7B2C\u4E00\u500B\u5B50\u9805\u4E0D\u662F Text \u7BC0\u9EDE +SAAJ0153.impl.multiple.children.same.value=SAAJ0153: \u627E\u4E0D\u5230\u5305\u542B\u503C\u7684\u7BC0\u9EDE: \u6709\u4E00\u500B\u4EE5\u4E0A\u7684\u5B50\u7BC0\u9EDE +SAAJ0154.impl.adding.fault.to.nonbody=SAAJ0154: SOAPFault \u5143\u7D20\u53EA\u80FD\u65B0\u589E\u6210\u70BA SOAPBody \u7684\u5B50\u9805 +SAAJ0155.impl.adding.detail.nonfault=SAAJ0155: Detail \u5143\u7D20\u53EA\u80FD\u65B0\u589E\u6210\u70BA SOAPFault \u7684\u5B50\u9805 +SAAJ0156.impl.adding.fault.error=SAAJ0156: \u7121\u6CD5\u65B0\u589E SOAPFault, SOAPFault \u61C9\u70BA SOAPBody \u7684\u552F\u4E00\u5B50\u9805 +SAAJ0157.impl.detail.exists.error=SAAJ0157: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728 +SAAJ0158.impl.version.mismatch.fault=SAAJ0158: \u5617\u8A66\u65B0\u589E SOAPFault \u81F3 SOAPBody \u6642, \u767C\u751F SOAP \u7248\u672C\u4E0D\u7B26 +SAAJ0159.impl.version.mismatch.detail=SAAJ0159: \u5617\u8A66\u65B0\u589E Detail \u81F3 SOAPFault \u6642, \u767C\u751F SOAP \u7248\u672C\u4E0D\u7B26 + +# Info messages +SAAJ0190.impl.set.xml.declaration=SAAJ0190: \u7701\u7565\u8A2D\u70BA {0} \u7684 XML \u5BA3\u544A +SAAJ0191.impl.set.encoding=SAAJ0191: \u7DE8\u78BC\u5DF2\u8A2D\u70BA {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPCommentImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPCommentImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.impl; + +import java.util.ResourceBundle; +import java.util.logging.Logger; + +import javax.xml.soap.SOAPElement; +import javax.xml.soap.SOAPException; + +import org.w3c.dom.DOMException; +import org.w3c.dom.Text; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + +public class SOAPCommentImpl + extends com.sun.org.apache.xerces.internal.dom.CommentImpl + implements javax.xml.soap.Text, org.w3c.dom.Comment { + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings"); + protected static ResourceBundle rb = + log.getResourceBundle(); + + public SOAPCommentImpl(SOAPDocumentImpl ownerDoc, String text) { + super(ownerDoc, text); + } + + public String getValue() { + String nodeValue = getNodeValue(); + return (nodeValue.equals("") ? null : nodeValue); + } + + public void setValue(String text) { + setNodeValue(text); + } + + + public void setParentElement(SOAPElement element) throws SOAPException { + if (element == null) { + log.severe("SAAJ0112.impl.no.null.to.parent.elem"); + throw new SOAPException("Cannot pass NULL to setParentElement"); + } + ((ElementImpl) element).addNode(this); + } + + public SOAPElement getParentElement() { + return (SOAPElement) getParentNode(); + } + + public void detachNode() { + org.w3c.dom.Node parent = getParentNode(); + if (parent != null) { + parent.removeChild(this); + } + } + + public void recycleNode() { + detachNode(); + // TBD + // - add this to the factory so subsequent + // creations can reuse this object. + } + + public boolean isComment() { + return true; + } + + public Text splitText(int offset) throws DOMException { + log.severe("SAAJ0113.impl.cannot.split.text.from.comment"); + throw new UnsupportedOperationException("Cannot split text from a Comment Node."); + } + + public Text replaceWholeText(String content) throws DOMException { + log.severe("SAAJ0114.impl.cannot.replace.wholetext.from.comment"); + throw new UnsupportedOperationException("Cannot replace Whole Text from a Comment Node."); + } + + public String getWholeText() { + //TODO: maybe we have to implement this in future. + throw new UnsupportedOperationException("Not Supported"); + } + + public boolean isElementContentWhitespace() { + //TODO: maybe we have to implement this in future. + throw new UnsupportedOperationException("Not Supported"); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPTextImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/SOAPTextImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.impl; + +import java.util.logging.Logger; + +import javax.xml.soap.SOAPElement; +import javax.xml.soap.SOAPException; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + +public class SOAPTextImpl + extends com.sun.org.apache.xerces.internal.dom.TextImpl + implements javax.xml.soap.Text, org.w3c.dom.Text { + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_IMPL_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.impl.LocalStrings"); + + public SOAPTextImpl(SOAPDocumentImpl ownerDoc, String text) { + super(ownerDoc, text); + } + + public String getValue() { + String nodeValue = getNodeValue(); + return (nodeValue.equals("") ? null : nodeValue); + } + + public void setValue(String text) { + setNodeValue(text); + } + + public void setParentElement(SOAPElement parent) throws SOAPException { + if (parent == null) { + log.severe("SAAJ0126.impl.cannot.locate.ns"); + throw new SOAPException("Cannot pass NULL to setParentElement"); + } + ((ElementImpl) parent).addNode(this); + } + + public SOAPElement getParentElement() { + return (SOAPElement) getParentNode(); + } + + + public void detachNode() { + org.w3c.dom.Node parent = getParentNode(); + if (parent != null) { + parent.removeChild(this); + } + } + + public void recycleNode() { + detachNode(); + // TBD + // - add this to the factory so subsequent + // creations can reuse this object. + } + + public boolean isComment() { + String txt = getNodeValue(); + if (txt == null) { + return false; + } + return txt.startsWith(""); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/TreeException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/impl/TreeException.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,32 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.impl; + +public class TreeException extends RuntimeException { + public TreeException(String reason) { + super(reason); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,30 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for name pkg +# Error messages +SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Cannot create a name from a null tag +SAAJ0202.name.invalid.arg.format=SAAJ0202: Argument "{0}" must be of the form: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_de.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_de.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,30 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for name pkg +# Error messages +SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Name kann nicht aus einem Null-Tag erstellt werden +SAAJ0202.name.invalid.arg.format=SAAJ0202: Argument "{0}" muss folgende Form aufweisen: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_es.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_es.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,30 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for name pkg +# Error messages +SAAJ0201.name.not.created.from.null.tag=SAAJ0201: no se puede crear un nombre desde una etiqueta nula +SAAJ0202.name.invalid.arg.format=SAAJ0202: El argumento "{0}" debe tener el formato: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_fr.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_fr.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,30 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for name pkg +# Error messages +SAAJ0201.name.not.created.from.null.tag=SAAJ0201 : impossible de cr\u00E9er un nom \u00E0 partir d'une balise NULL +SAAJ0202.name.invalid.arg.format=SAAJ0202 : l''argument "{0}" doit avoir le format suivant : prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_it.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_it.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,30 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for name pkg +# Error messages +SAAJ0201.name.not.created.from.null.tag=SAAJ0201: Impossibile creare un nome da una tag nulla +SAAJ0202.name.invalid.arg.format=SAAJ0202: L''argomento "{0}" deve avere il formato: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ja.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ja.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,30 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for name pkg +# Error messages +SAAJ0201.name.not.created.from.null.tag=SAAJ0201: null\u306E\u30BF\u30B0\u304B\u3089\u540D\u524D\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093 +SAAJ0202.name.invalid.arg.format=SAAJ0202: \u5F15\u6570"{0}"\u306Fprefix:localName\u306E\u5F62\u5F0F\u306B\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ko.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_ko.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,30 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for name pkg +# Error messages +SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \uB110 \uD0DC\uADF8\uC5D0\uC11C \uC774\uB984\uC744 \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0202.name.invalid.arg.format=SAAJ0202: "{0}" \uC778\uC218\uB294 prefix:localName \uD615\uC2DD\uC774\uC5B4\uC57C \uD569\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_pt_BR.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_pt_BR.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,30 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for name pkg +# Error messages +SAAJ0201.name.not.created.from.null.tag=SAAJ0201: n\u00E3o \u00E9 poss\u00EDvel criar um nome a partir de uma tag nula +SAAJ0202.name.invalid.arg.format=SAAJ0202: o argumento "{0}" deve estar no formato: prefix.localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_CN.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_CN.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,30 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for name pkg +# Error messages +SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \u65E0\u6CD5\u4ECE\u7A7A\u503C\u6807\u8BB0\u521B\u5EFA\u540D\u79F0 +SAAJ0202.name.invalid.arg.format=SAAJ0202: \u53C2\u6570 "{0}" \u5FC5\u987B\u91C7\u7528\u4EE5\u4E0B\u5F62\u5F0F: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_TW.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/LocalStrings_zh_TW.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,30 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for name pkg +# Error messages +SAAJ0201.name.not.created.from.null.tag=SAAJ0201: \u7121\u6CD5\u5F9E\u7A7A\u503C\u6A19\u8A18\u5EFA\u7ACB\u540D\u7A31 +SAAJ0202.name.invalid.arg.format=SAAJ0202: \u5F15\u6578 "{0}" \u7684\u683C\u5F0F\u5FC5\u9808\u662F: prefix:localName diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/NameImpl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/name/NameImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,561 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.soap.name; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.xml.namespace.QName; +import javax.xml.soap.Name; +import javax.xml.soap.SOAPConstants; + +//import com.sun.org.apache.xerces.internal.xni.NamespaceContext; +import org.w3c.dom.Element; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + +public class NameImpl implements Name { + public static final String XML_NAMESPACE_PREFIX = "xml"; + public static final String XML_SCHEMA_NAMESPACE_PREFIX = "xs"; + public static final String SOAP_ENVELOPE_PREFIX = "SOAP-ENV"; + + public static final String XML_NAMESPACE = + "http://www.w3.org/XML/1998/namespace"; + public static final String SOAP11_NAMESPACE = + SOAPConstants.URI_NS_SOAP_ENVELOPE; + public static final String SOAP12_NAMESPACE = + SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE; + public static final String XML_SCHEMA_NAMESPACE = + "http://www.w3.org/2001/XMLSchema"; + + protected String uri = ""; + protected String localName = ""; + protected String prefix = ""; + private String qualifiedName = null; + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.NAMING_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.name.LocalStrings"); + + /** + * XML Information Set REC + * all namespace attributes (including those named xmlns, + * whose [prefix] property has no value) have a namespace URI of http://www.w3.org/2000/xmlns/ + */ + public final static String XMLNS_URI = "http://www.w3.org/2000/xmlns/".intern(); + + protected NameImpl(String name) { + this.localName = name == null ? "" : name; + } + + protected NameImpl(String name, String prefix, String uri) { + this.uri = uri == null ? "" : uri; + this.localName = name == null ? "" : name; + this.prefix = prefix == null ? "" : prefix; + + if (this.prefix.equals("xmlns") && this.uri.equals("")) { + this.uri = XMLNS_URI; + } + if (this.uri.equals(XMLNS_URI) && this.prefix.equals("")) { + this.prefix = "xmlns"; + } + } + + public static Name convertToName(QName qname) { + return new NameImpl(qname.getLocalPart(), + qname.getPrefix(), + qname.getNamespaceURI()); + } + + public static QName convertToQName(Name name) { + return new QName(name.getURI(), + name.getLocalName(), + name.getPrefix()); + } + + public static NameImpl createFromUnqualifiedName(String name) { + return new NameImpl(name); + } + + public static Name createFromTagName(String tagName) { + return createFromTagAndUri(tagName, ""); + } + + public static Name createFromQualifiedName( + String qualifiedName, + String uri) { + return createFromTagAndUri(qualifiedName, uri); + } + + protected static Name createFromTagAndUri(String tagName, String uri) { + if (tagName == null) { + log.severe("SAAJ0201.name.not.created.from.null.tag"); + throw new IllegalArgumentException("Cannot create a name from a null tag."); + } + int index = tagName.indexOf(':'); + if (index < 0) { + return new NameImpl(tagName, "", uri); + } else { + return new NameImpl( + tagName.substring(index + 1), + tagName.substring(0, index), + uri); + } + } + + protected static int getPrefixSeparatorIndex(String qualifiedName) { + int index = qualifiedName.indexOf(':'); + if (index < 0) { + log.log( + Level.SEVERE, + "SAAJ0202.name.invalid.arg.format", + new String[] { qualifiedName }); + throw new IllegalArgumentException( + "Argument \"" + + qualifiedName + + "\" must be of the form: \"prefix:localName\""); + } + return index; + } + + public static String getPrefixFromQualifiedName(String qualifiedName) { + return qualifiedName.substring( + 0, + getPrefixSeparatorIndex(qualifiedName)); + } + + public static String getLocalNameFromQualifiedName(String qualifiedName) { + return qualifiedName.substring( + getPrefixSeparatorIndex(qualifiedName) + 1); + } + + public static String getPrefixFromTagName(String tagName) { + if (isQualified(tagName)) { + return getPrefixFromQualifiedName(tagName); + } + return ""; + } + + public static String getLocalNameFromTagName(String tagName) { + if (isQualified(tagName)) { + return getLocalNameFromQualifiedName(tagName); + } + return tagName; + } + + public static boolean isQualified(String tagName) { + return tagName.indexOf(':') >= 0; + } + + public static NameImpl create(String name, String prefix, String uri) { + if (prefix == null) + prefix = ""; + if (uri == null) + uri = ""; + if (name == null) + name = ""; + + if (!uri.equals("") && !name.equals("")) { + if (uri.equals(NameImpl.SOAP11_NAMESPACE)) { + if (name.equalsIgnoreCase("Envelope")) + return createEnvelope1_1Name(prefix); + else if (name.equalsIgnoreCase("Header")) + return createHeader1_1Name(prefix); + else if (name.equalsIgnoreCase("Body")) + return createBody1_1Name(prefix); + else if (name.equalsIgnoreCase("Fault")) + return createFault1_1Name(prefix); + else + return new SOAP1_1Name(name, prefix); + } else if (uri.equals(SOAP12_NAMESPACE)) { + if (name.equalsIgnoreCase("Envelope")) + return createEnvelope1_2Name(prefix); + else if (name.equalsIgnoreCase("Header")) + return createHeader1_2Name(prefix); + else if (name.equalsIgnoreCase("Body")) + return createBody1_2Name(prefix); + else if ( + name.equals("Fault") + || name.equals("Reason") + || name.equals("Detail")) + return createFault1_2Name(name, prefix); + else if (name.equals("Code") || name.equals("Subcode")) + return createCodeSubcode1_2Name(prefix, name); + else + return new SOAP1_2Name(name, prefix); + } + + } + return new NameImpl(name, prefix, uri); + } + + public static String createQName(String prefix, String localName) { + if (prefix == null || prefix.equals("")) { + return localName; + } + return prefix + ":" + localName; + } + + public boolean equals(Object obj) { + if (!(obj instanceof Name)) { + return false; + } + + Name otherName = (Name) obj; + + if (!uri.equals(otherName.getURI())) { + return false; + } + + if (!localName.equals(otherName.getLocalName())) { + return false; + } + + return true; + } + + public int hashCode() { + return localName.hashCode(); + } + + /** + * Get the local name part of this XML Name. + * + * @return a string for the local name. + */ + public String getLocalName() { + return localName; + } + + /* getQualifiedName is inherited from QName */ + + /** + * Returns the prefix associated with the namespace of the name. + * + * @return the prefix as a string. + */ + public String getPrefix() { + return prefix; + } + + /** + * Returns the URI associated of the namespace. + * + * @return the uri as a string. + */ + public String getURI() { + return uri; + } + + /** + * Returns a String version of the name suitable for use in an XML document. + */ + public String getQualifiedName() { + if (qualifiedName == null) { + if (prefix != null && prefix.length() > 0) { + qualifiedName = prefix + ":" + localName; + } else { + qualifiedName = localName; + } + } + return qualifiedName; + } + + /** + * Create a name object for a SOAP1.1 Envelope. + */ + public static NameImpl createEnvelope1_1Name(String prefix) { + return new Envelope1_1Name(prefix); + } + + /** + * Create a name object for a SOAP1.2 Envelope. + */ + public static NameImpl createEnvelope1_2Name(String prefix) { + return new Envelope1_2Name(prefix); + } + + /** + * Create a name object for a SOAP1.1 Header. + */ + public static NameImpl createHeader1_1Name(String prefix) { + return new Header1_1Name(prefix); + } + + /** + * Create a name object for a SOAP1.2 Header. + */ + public static NameImpl createHeader1_2Name(String prefix) { + return new Header1_2Name(prefix); + } + + /** + * Create a name object for a SOAP1.1 Body. + */ + public static NameImpl createBody1_1Name(String prefix) { + return new Body1_1Name(prefix); + } + + /** + * Create a name object for a SOAP1.2 Body. + */ + public static NameImpl createBody1_2Name(String prefix) { + return new Body1_2Name(prefix); + } + + /** + * Create a name object for a SOAP1.1 Fault. + */ + public static NameImpl createFault1_1Name(String prefix) { + return new Fault1_1Name(prefix); + } + + /** + * Create a name object for a SOAP1.2 NotUnderstood element. + */ + public static NameImpl createNotUnderstood1_2Name(String prefix) { + return new NotUnderstood1_2Name(prefix); + } + + /** + * Create a name object for a SOAP1.2 Upgrade element. + */ + public static NameImpl createUpgrade1_2Name(String prefix) { + return new Upgrade1_2Name(prefix); + } + + /** + * Create a name object for a SOAP1.2 SupportedEnvelope Upgrade element. + */ + public static NameImpl createSupportedEnvelope1_2Name(String prefix) { + return new SupportedEnvelope1_2Name(prefix); + } + + /** + * Create a name object for a SOAP1.2 + * Fault, Reason or Detail. + * + * @param localName Local Name of element + */ + public static NameImpl createFault1_2Name( + String localName, + String prefix) { + return new Fault1_2Name(localName, prefix); + } + + /** + * Create a name object for a SOAP1.2 Fault/Code or Subcode. + * + * @param localName Either "Code" or "Subcode" + */ + public static NameImpl createCodeSubcode1_2Name( + String prefix, + String localName) { + return new CodeSubcode1_2Name(localName, prefix); + } + + /** + * Create a name object for a SOAP1.1 Fault Detail. + */ + public static NameImpl createDetail1_1Name() { + return new Detail1_1Name(); + } + + public static NameImpl createDetail1_1Name(String prefix) { + return new Detail1_1Name(prefix); + } + + public static NameImpl createFaultElement1_1Name(String localName) { + return new FaultElement1_1Name(localName); + } + + public static NameImpl createFaultElement1_1Name(String localName, + String prefix) { + return new FaultElement1_1Name(localName, prefix); + } + + public static NameImpl createSOAP11Name(String string) { + return new SOAP1_1Name(string, null); + } + public static NameImpl createSOAP12Name(String string) { + return new SOAP1_2Name(string, null); + } + + public static NameImpl createSOAP12Name(String localName, String prefix) { + return new SOAP1_2Name(localName, prefix); + } + + public static NameImpl createXmlName(String localName) { + return new NameImpl(localName, XML_NAMESPACE_PREFIX, XML_NAMESPACE); + } + + public static Name copyElementName(Element element) { + String localName = element.getLocalName(); + String prefix = element.getPrefix(); + String uri = element.getNamespaceURI(); + return create(localName, prefix, uri); + } + + +static class SOAP1_1Name extends NameImpl { + SOAP1_1Name(String name, String prefix) { + super( + name, + (prefix == null || prefix.equals("")) + ? NameImpl.SOAP_ENVELOPE_PREFIX + : prefix, + NameImpl.SOAP11_NAMESPACE); + } +} + +static class Envelope1_1Name extends SOAP1_1Name { + Envelope1_1Name(String prefix) { + super("Envelope", prefix); + } +} + +static class Header1_1Name extends SOAP1_1Name { + Header1_1Name(String prefix) { + super("Header", prefix); + } +} + +static class Body1_1Name extends SOAP1_1Name { + Body1_1Name(String prefix) { + super("Body", prefix); + } +} + +static class Fault1_1Name extends NameImpl { + Fault1_1Name(String prefix) { + super( + "Fault", + (prefix == null || prefix.equals("")) + ? SOAP_ENVELOPE_PREFIX + : prefix, + SOAP11_NAMESPACE); + } +} + +static class Detail1_1Name extends NameImpl { + Detail1_1Name() { + super("detail"); + } + + Detail1_1Name(String prefix) { + super("detail", prefix, ""); + } +} + +static class FaultElement1_1Name extends NameImpl { + FaultElement1_1Name(String localName) { + super(localName); + } + + FaultElement1_1Name(String localName, String prefix) { + super(localName, prefix, ""); + } +} + +static class SOAP1_2Name extends NameImpl { + SOAP1_2Name(String name, String prefix) { + super( + name, + (prefix == null || prefix.equals("")) + ? SOAPConstants.SOAP_ENV_PREFIX + : prefix, + SOAP12_NAMESPACE); + } +} + +static class Envelope1_2Name extends SOAP1_2Name { + Envelope1_2Name(String prefix) { + super("Envelope", prefix); + } +} + +static class Header1_2Name extends SOAP1_2Name { + Header1_2Name(String prefix) { + super("Header", prefix); + } +} + +static class Body1_2Name extends SOAP1_2Name { + Body1_2Name(String prefix) { + super("Body", prefix); + } +} + +static class Fault1_2Name extends NameImpl { + Fault1_2Name(String name, String prefix) { + super( + (name == null || name.equals("")) ? "Fault" : name, + (prefix == null || prefix.equals("")) + ? SOAPConstants.SOAP_ENV_PREFIX + : prefix, + SOAP12_NAMESPACE); + } +} + +static class NotUnderstood1_2Name extends NameImpl { + NotUnderstood1_2Name(String prefix) { + super( + "NotUnderstood", + (prefix == null || prefix.equals("")) + ? SOAPConstants.SOAP_ENV_PREFIX + : prefix, + SOAP12_NAMESPACE); + } +} + +static class Upgrade1_2Name extends NameImpl { + Upgrade1_2Name(String prefix) { + super( + "Upgrade", + (prefix == null || prefix.equals("")) + ? SOAPConstants.SOAP_ENV_PREFIX + : prefix, + SOAP12_NAMESPACE); + } +} + +static class SupportedEnvelope1_2Name extends NameImpl { + SupportedEnvelope1_2Name(String prefix) { + super( + "SupportedEnvelope", + (prefix == null || prefix.equals("")) + ? SOAPConstants.SOAP_ENV_PREFIX + : prefix, + SOAP12_NAMESPACE); + } +} + +static class CodeSubcode1_2Name extends SOAP1_2Name { + CodeSubcode1_2Name(String prefix, String localName) { + super(prefix, localName); + } +} + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Body1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Body1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,83 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import java.util.Locale; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public class Body1_1Impl extends BodyImpl { + public Body1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) { + super(ownerDocument, NameImpl.createBody1_1Name(prefix)); + } + + public SOAPFault addSOAP12Fault(QName faultCode, String faultReason, Locale locale) { + // log message here + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + protected NameImpl getFaultName(String name) { + // Ignore name + return NameImpl.createFault1_1Name(null); + } + + protected SOAPBodyElement createBodyElement(Name name) { + return new BodyElement1_1Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name); + } + + protected SOAPBodyElement createBodyElement(QName name) { + return new BodyElement1_1Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name); + } + + protected QName getDefaultFaultCode() { + return new QName(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE, "Server"); + } + + protected boolean isFault(SOAPElement child) { + // SOAP 1.1 faults always use the default name + return child.getElementName().equals(getFaultName(null)); + } + + protected SOAPFault createFaultElement() { + return new Fault1_1Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), getPrefix()); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/BodyElement1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/BodyElement1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import javax.xml.namespace.QName; +import javax.xml.soap.Name; +import javax.xml.soap.SOAPElement; +import javax.xml.soap.SOAPException; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.BodyElementImpl; + +public class BodyElement1_1Impl extends BodyElementImpl { + + public BodyElement1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) { + super(ownerDoc, qname); + } + public BodyElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) { + super(ownerDoc, qname); + } + public SOAPElement setElementQName(QName newName) throws SOAPException { + BodyElementImpl copy = + new BodyElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName); + return replaceElementWithSOAPElement(this,copy); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Detail1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Detail1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,59 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import javax.xml.namespace.QName; +import javax.xml.soap.DetailEntry; +import javax.xml.soap.Name; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.DetailImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public class Detail1_1Impl extends DetailImpl { + + public Detail1_1Impl(SOAPDocumentImpl ownerDoc, String prefix) { + super(ownerDoc, NameImpl.createDetail1_1Name(prefix)); + } + public Detail1_1Impl(SOAPDocumentImpl ownerDoc) { + super(ownerDoc, NameImpl.createDetail1_1Name()); + } + protected DetailEntry createDetailEntry(Name name) { + return new DetailEntry1_1Impl( + (SOAPDocumentImpl) getOwnerDocument(), + name); + } + protected DetailEntry createDetailEntry(QName name) { + return new DetailEntry1_1Impl( + (SOAPDocumentImpl) getOwnerDocument(), + name); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/DetailEntry1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/DetailEntry1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,53 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import javax.xml.namespace.QName; +import javax.xml.soap.Name; +import javax.xml.soap.SOAPElement; +import javax.xml.soap.SOAPException; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.DetailEntryImpl; + +public class DetailEntry1_1Impl extends DetailEntryImpl { + + public DetailEntry1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) { + super(ownerDoc, qname); + } + public DetailEntry1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) { + super(ownerDoc, qname); + } + public SOAPElement setElementQName(QName newName) throws SOAPException { + DetailEntryImpl copy = + new DetailEntry1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName); + return replaceElementWithSOAPElement(this,copy); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Envelope1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Envelope1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,63 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import javax.xml.soap.SOAPException; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public class Envelope1_1Impl extends EnvelopeImpl { + + public Envelope1_1Impl(SOAPDocumentImpl ownerDoc, String prefix){ + super(ownerDoc, NameImpl.createEnvelope1_1Name(prefix)); + } + Envelope1_1Impl( + SOAPDocumentImpl ownerDoc, + String prefix, + boolean createHeader, + boolean createBody) + throws SOAPException { + super( + ownerDoc, + NameImpl.createEnvelope1_1Name(prefix), + createHeader, + createBody); + } + protected NameImpl getBodyName(String prefix) { + return NameImpl.createBody1_1Name(prefix); + } + + protected NameImpl getHeaderName(String prefix) { + return NameImpl.createHeader1_1Name(prefix); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Fault1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Fault1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,387 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import java.util.Iterator; +import java.util.Locale; +import java.util.logging.Logger; +import java.util.logging.Level; + +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPElement; +import javax.xml.soap.SOAPFaultElement; +import javax.xml.soap.SOAPException; +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.Name; +import javax.xml.soap.Name; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.*; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; + + +public class Fault1_1Impl extends FaultImpl { + + protected static final Logger log = + Logger.getLogger( + LogDomainConstants.SOAP_VER1_1_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings"); + + public Fault1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) { + super(ownerDocument, NameImpl.createFault1_1Name(prefix)); + } + + protected NameImpl getDetailName() { + return NameImpl.createDetail1_1Name(); + } + + protected NameImpl getFaultCodeName() { + return NameImpl.createFromUnqualifiedName("faultcode"); + } + + protected NameImpl getFaultStringName() { + return NameImpl.createFromUnqualifiedName("faultstring"); + } + + protected NameImpl getFaultActorName() { + return NameImpl.createFromUnqualifiedName("faultactor"); + } + + protected DetailImpl createDetail() { + return new Detail1_1Impl( + ((SOAPDocument) getOwnerDocument()).getDocument()); + } + + protected FaultElementImpl createSOAPFaultElement(String localName) { + return new FaultElement1_1Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + localName); + } + + protected void checkIfStandardFaultCode(String faultCode, String uri) + throws SOAPException { + // SOAP 1.1 doesn't seem to mandate using faultcode from a particular + // set of values. + // Also need to be backward compatible. + } + + protected void finallySetFaultCode(String faultcode) throws SOAPException { + this.faultCodeElement.addTextNode(faultcode); + } + + public String getFaultCode() { + if (this.faultCodeElement == null) + findFaultCodeElement(); + return this.faultCodeElement.getValue(); + } + + public Name getFaultCodeAsName() { + + String faultcodeString = getFaultCode(); + if (faultcodeString == null) { + return null; + } + int prefixIndex = faultcodeString.indexOf(':'); + if (prefixIndex == -1) { + // Not a valid SOAP message, but we return the unqualified name + // anyway since some apps do not strictly conform to SOAP + // specs. A message that does not contain a + // element itself is also not valid in which case we return + // null instead of throwing an exception so this is consistent. + return NameImpl.createFromUnqualifiedName(faultcodeString); + } + + // Get the prefix and map it to a namespace name (AKA namespace URI) + String prefix = faultcodeString.substring(0, prefixIndex); + if (this.faultCodeElement == null) + findFaultCodeElement(); + String nsName = this.faultCodeElement.getNamespaceURI(prefix); + return NameImpl.createFromQualifiedName(faultcodeString, nsName); + } + + public QName getFaultCodeAsQName() { + String faultcodeString = getFaultCode(); + if (faultcodeString == null) { + return null; + } + if (this.faultCodeElement == null) + findFaultCodeElement(); + return convertCodeToQName(faultcodeString, this.faultCodeElement); + } + + public void setFaultString(String faultString) throws SOAPException { + + if (this.faultStringElement == null) + findFaultStringElement(); + + if (this.faultStringElement == null) + this.faultStringElement = addSOAPFaultElement("faultstring"); + else { + this.faultStringElement.removeContents(); + //this.faultStringElement.removeAttributeNS("http://www.w3.org/XML/1998/namespace", "lang"); + this.faultStringElement.removeAttribute("xml:lang"); + } + + this.faultStringElement.addTextNode(faultString); + } + + public String getFaultString() { + if (this.faultStringElement == null) + findFaultStringElement(); + return this.faultStringElement.getValue(); + + } + + public Locale getFaultStringLocale() { + if (this.faultStringElement == null) + findFaultStringElement(); + if (this.faultStringElement != null) { + String xmlLangAttr = + this.faultStringElement.getAttributeValue( + NameImpl.createFromUnqualifiedName("xml:lang")); + if (xmlLangAttr != null) + return xmlLangToLocale(xmlLangAttr); + } + return null; + } + + public void setFaultString(String faultString, Locale locale) + throws SOAPException { + setFaultString(faultString); + this.faultStringElement.addAttribute( + NameImpl.createFromTagName("xml:lang"), + localeToXmlLang(locale)); + } + + protected boolean isStandardFaultElement(String localName) { + if (localName.equalsIgnoreCase("detail") || + localName.equalsIgnoreCase("faultcode") || + localName.equalsIgnoreCase("faultstring") || + localName.equalsIgnoreCase("faultactor")) { + return true; + } + return false; + } + + public void appendFaultSubcode(QName subcode) { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + "appendFaultSubcode"); + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + public void removeAllFaultSubcodes() { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + "removeAllFaultSubcodes"); + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + public Iterator getFaultSubcodes() { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + "getFaultSubcodes"); + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + public String getFaultReasonText(Locale locale) { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + "getFaultReasonText"); + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + public Iterator getFaultReasonTexts() { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + "getFaultReasonTexts"); + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + public Iterator getFaultReasonLocales() { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + "getFaultReasonLocales"); + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + public void addFaultReasonText(String text, java.util.Locale locale) + throws SOAPException { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + "addFaultReasonText"); + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + public String getFaultRole() { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + "getFaultRole"); + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + public void setFaultRole(String uri) { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + "setFaultRole"); + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + public String getFaultNode() { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + "getFaultNode"); + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + public void setFaultNode(String uri) { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + "setFaultNode"); + throw new UnsupportedOperationException("Not supported in SOAP 1.1"); + } + + protected QName getDefaultFaultCode() { + return new QName(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE, "Server"); + } + + public SOAPElement addChildElement(SOAPElement element) + throws SOAPException { + String localName = element.getLocalName(); + if ("Detail".equalsIgnoreCase(localName)) { + if (hasDetail()) { + log.severe("SAAJ0305.ver1_2.detail.exists.error"); + throw new SOAPExceptionImpl("Cannot add Detail, Detail already exists"); + } + } + return super.addChildElement(element); + } + + protected FaultElementImpl createSOAPFaultElement(QName qname) { + return new FaultElement1_1Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + qname); + } + + protected FaultElementImpl createSOAPFaultElement(Name qname) { + return new FaultElement1_1Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + (NameImpl)qname); + } + + public void setFaultCode(String faultCode, String prefix, String uri) + throws SOAPException { + if (prefix == null || "".equals(prefix)) { + if (uri != null && !"".equals(uri)) { + prefix = getNamespacePrefix(uri); + if (prefix == null || "".equals(prefix)) { + prefix = "ns0"; + } + } + } + + if (this.faultCodeElement == null) + findFaultCodeElement(); + + if (this.faultCodeElement == null) + this.faultCodeElement = addFaultCodeElement(); + else + this.faultCodeElement.removeContents(); + + if (uri == null || "".equals(uri)) { + if (prefix != null && !"".equals("prefix")) { + uri = this.faultCodeElement.getNamespaceURI(prefix); + } + } + + if (uri == null || "".equals(uri)) { + if (prefix != null && !"".equals(prefix)) { + //cannot allow an empty URI for a non-Empty prefix + log.log(Level.SEVERE, "SAAJ0307.impl.no.ns.URI", new Object[]{prefix + ":" + faultCode}); + throw new SOAPExceptionImpl("Empty/Null NamespaceURI specified for faultCode \"" + prefix + ":" + faultCode + "\""); + } else { + uri = ""; + } + } + + checkIfStandardFaultCode(faultCode, uri); + ((FaultElementImpl) this.faultCodeElement).ensureNamespaceIsDeclared(prefix, uri); + + if (prefix == null || "".equals(prefix)) { + finallySetFaultCode(faultCode); + } else { + finallySetFaultCode(prefix + ":" + faultCode); + } + } + + private boolean standardFaultCode(String faultCode) { + if (faultCode.equals("VersionMismatch") || faultCode.equals("MustUnderstand") + || faultCode.equals("Client") || faultCode.equals("Server")) { + return true; + } + if (faultCode.startsWith("VersionMismatch.") || faultCode.startsWith("MustUnderstand.") + || faultCode.startsWith("Client.") || faultCode.startsWith("Server.")) { + return true; + } + return false; + } + + public void setFaultActor(String faultActor) throws SOAPException { + if (this.faultActorElement == null) + findFaultActorElement(); + if (this.faultActorElement != null) + this.faultActorElement.detachNode(); + if (faultActor == null) + return; + this.faultActorElement = + createSOAPFaultElement(getFaultActorName()); + this.faultActorElement.addTextNode(faultActor); + if (hasDetail()) { + insertBefore(this.faultActorElement, this.detail); + return; + } + addNode(this.faultActorElement); + + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/FaultElement1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/FaultElement1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,81 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPElement; +import javax.xml.soap.SOAPException; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.FaultElementImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public class FaultElement1_1Impl extends FaultElementImpl { + + public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, NameImpl qname) { + super(ownerDoc, qname); + } + + public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) { + super(ownerDoc, qname); + } + + public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, + String localName) { + super(ownerDoc, NameImpl.createFaultElement1_1Name(localName)); + } + + public FaultElement1_1Impl(SOAPDocumentImpl ownerDoc, + String localName, + String prefix) { + super(ownerDoc, + NameImpl.createFaultElement1_1Name(localName, prefix)); + } + + protected boolean isStandardFaultElement() { + String localName = elementQName.getLocalPart(); + if (localName.equalsIgnoreCase("faultcode") || + localName.equalsIgnoreCase("faultstring") || + localName.equalsIgnoreCase("faultactor")) { + return true; + } + return false; + } + + public SOAPElement setElementQName(QName newName) throws SOAPException { + if (!isStandardFaultElement()) { + FaultElement1_1Impl copy = + new FaultElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName); + return replaceElementWithSOAPElement(this,copy); + } else { + return super.setElementQName(newName); + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Header1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Header1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,97 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import java.util.List; +import java.util.Iterator; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + +public class Header1_1Impl extends HeaderImpl { + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings"); + + public Header1_1Impl(SOAPDocumentImpl ownerDocument, String prefix) { + super(ownerDocument, NameImpl.createHeader1_1Name(prefix)); + } + + protected NameImpl getNotUnderstoodName() { + log.log( + Level.SEVERE, + "SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1", + new String[] { "getNotUnderstoodName" }); + throw new UnsupportedOperationException("Not supported by SOAP 1.1"); + } + + protected NameImpl getUpgradeName() { + return NameImpl.create( + "Upgrade", + getPrefix(), + SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE); + } + + protected NameImpl getSupportedEnvelopeName() { + return NameImpl.create( + "SupportedEnvelope", + getPrefix(), + SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE); + } + + public SOAPHeaderElement addNotUnderstoodHeaderElement(QName name) + throws SOAPException { + log.log( + Level.SEVERE, + "SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1", + new String[] { "addNotUnderstoodHeaderElement" }); + throw new UnsupportedOperationException("Not supported by SOAP 1.1"); + } + + protected SOAPHeaderElement createHeaderElement(Name name) { + return new HeaderElement1_1Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name); + } + protected SOAPHeaderElement createHeaderElement(QName name) { + return new HeaderElement1_1Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/HeaderElement1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/HeaderElement1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,121 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.xml.namespace.QName; +import javax.xml.soap.Name; +import javax.xml.soap.SOAPException; +import javax.xml.soap.SOAPElement; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + +public class HeaderElement1_1Impl extends HeaderElementImpl { + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings"); + + public HeaderElement1_1Impl(SOAPDocumentImpl ownerDoc, Name qname) { + super(ownerDoc, qname); + } + public HeaderElement1_1Impl(SOAPDocumentImpl ownerDoc, QName qname) { + super(ownerDoc, qname); + } + + public SOAPElement setElementQName(QName newName) throws SOAPException { + HeaderElementImpl copy = + new HeaderElement1_1Impl((SOAPDocumentImpl) getOwnerDocument(), newName); + return replaceElementWithSOAPElement(this,copy); + } + + protected NameImpl getActorAttributeName() { + return NameImpl.create("actor", null, NameImpl.SOAP11_NAMESPACE); + } + + // role not supported by SOAP 1.1 + protected NameImpl getRoleAttributeName() { + log.log( + Level.SEVERE, + "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1", + new String[] { "Role" }); + throw new UnsupportedOperationException("Role not supported by SOAP 1.1"); + } + + protected NameImpl getMustunderstandAttributeName() { + return NameImpl.create("mustUnderstand", null, NameImpl.SOAP11_NAMESPACE); + } + + // mustUnderstand attribute has literal value "1" or "0" + protected String getMustunderstandLiteralValue(boolean mustUnderstand) { + return (mustUnderstand == true ? "1" : "0"); + } + + protected boolean getMustunderstandAttributeValue(String mu) { + if ("1".equals(mu) || "true".equalsIgnoreCase(mu)) + return true; + return false; + } + + // relay not supported by SOAP 1.1 + protected NameImpl getRelayAttributeName() { + log.log( + Level.SEVERE, + "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1", + new String[] { "Relay" }); + throw new UnsupportedOperationException("Relay not supported by SOAP 1.1"); + } + + protected String getRelayLiteralValue(boolean relayAttr) { + log.log( + Level.SEVERE, + "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1", + new String[] { "Relay" }); + throw new UnsupportedOperationException("Relay not supported by SOAP 1.1"); + } + + protected boolean getRelayAttributeValue(String mu) { + log.log( + Level.SEVERE, + "SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1", + new String[] { "Relay" }); + throw new UnsupportedOperationException("Relay not supported by SOAP 1.1"); + } + + protected String getActorOrRole() { + return getActor(); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,36 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_1 pkg + +# Error messages +SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Operation {0} not supported by SOAP 1.1 +SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attribute {0} not supported by SOAP 1.1 +SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Operation {0} not supported by SOAP 1.1 +SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream does not represent a valid SOAP 1.1 Message +SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Cannot add Detail, Detail already exists +SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Namespace Warning, Standard Faultcode {0}, should ideally be in SOAP 1.1 Namespace +SAAJ0307.impl.no.ns.URI=SAAJ0307: Empty/Null NamespaceURI specified for faultCode {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_de.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_de.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,36 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_1 pkg + +# Error messages +SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Vorgang {0} von SOAP 1.1 nicht unterst\u00FCtzt +SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attribut {0} von SOAP 1.1 nicht unterst\u00FCtzt +SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Vorgang {0} von SOAP 1.1 nicht unterst\u00FCtzt +SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream stellt keine g\u00FCltige SOAP 1.1-Nachricht dar +SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden +SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Namespace-Warnung, Standard-Faultcode {0}, sollte im Idealfall in SOAP 1.1 Namespace enthalten sein +SAAJ0307.impl.no.ns.URI=SAAJ0307: Leerer/Null-NamespaceURI f\u00FCr faultCode {0} angegeben diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_es.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_es.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,36 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_1 pkg + +# Error messages +SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: la operaci\u00F3n {0} no est\u00E1 soportada en SOAP 1.1 +SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: el atributo {0} no est\u00E1 soportado en SOAP 1.1 +SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: la operaci\u00F3n {0} no est\u00E1 soportada en SOAP 1.1 +SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream no representa un mensaje de SOAP 1.1 v\u00E1lido +SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: no se puede agregar el detalle. El detalle ya existe +SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: advertencia de espacio de nombres; lo recomendable es que el c\u00F3digo de fallo est\u00E1ndar {0} est\u00E9 en un espacio de nombres de SOAP 1.1 +SAAJ0307.impl.no.ns.URI=SAAJ0307: se ha especificado un URI de espacio de nombres vac\u00EDo o nulo para el c\u00F3digo de fallo {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_fr.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_fr.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,36 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_1 pkg + +# Error messages +SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301 : op\u00E9ration {0} non prise en charge par SOAP 1.1 +SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302 : attribut {0} non pris en charge par SOAP 1.1 +SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303 : op\u00E9ration {0} non prise en charge par SOAP 1.1 +SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304 : InputStream ne repr\u00E9sente pas un message SOAP 1.1 valide +SAAJ0305.ver1_2.detail.exists.error=SAAJ0157 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0 +SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306 : avertissement d''espace de noms, Faultcode standard {0}, doit id\u00E9alement \u00EAtre dans l''espace de noms SOAP 1.1 +SAAJ0307.impl.no.ns.URI=SAAJ0307 : NamespaceURI vide/NULL indiqu\u00E9 pour faultCode {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_it.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_it.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,36 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_1 pkg + +# Error messages +SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: Operazione {0} non supportata da SOAP 1.1 +SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: Attributo {0} non supportato da SOAP 1.1 +SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: Operazione {0} non supportata da SOAP 1.1 +SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream non rappresenta un messaggio SOAP 1.1 valido +SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Impossibile aggiungere Detail. Detail esiste gi\u00E0. +SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: L''avvertenza dello spazio di nomi, codice di errore standard {0}, dovrebbe trovarsi nello spazio di nomi SOAP 1.1 +SAAJ0307.impl.no.ns.URI=SAAJ0307: NamespaceURI nomi vuoto/nullo specificato per faultCode {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ja.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ja.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,36 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_1 pkg + +# Error messages +SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: \u64CD\u4F5C{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: \u5C5E\u6027{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: \u64CD\u4F5C{0}\u306FSOAP 1.1\u3067\u306F\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u307E\u305B\u3093 +SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream\u306F\u6709\u52B9\u306ASOAP 1.1\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u3057\u3066\u3044\u307E\u305B\u3093 +SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059 +SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u8B66\u544A\u3001\u6A19\u6E96\u306EFaultcode {0}\u3001SOAP 1.1\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +SAAJ0307.impl.no.ns.URI=SAAJ0307: faultCode {0}\u306B\u6307\u5B9A\u3055\u308C\u305FNamespaceURI\u304C\u7A7A/Null\u3067\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ko.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_ko.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,36 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_1 pkg + +# Error messages +SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC791\uC5C5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC18D\uC131\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1\uC5D0\uC11C\uB294 {0} \uC791\uC5C5\uC744 \uC9C0\uC6D0\uD558\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream\uC774 \uC801\uD569\uD55C SOAP 1.1 \uBA54\uC2DC\uC9C0\uB97C \uB098\uD0C0\uB0B4\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. +SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \uB124\uC784\uC2A4\uD398\uC774\uC2A4 \uACBD\uACE0\uC785\uB2C8\uB2E4. \uD45C\uC900 Faultcode {0}\uC740(\uB294) SOAP 1.1 \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5D0 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4. +SAAJ0307.impl.no.ns.URI=SAAJ0307: faultCode {0}\uC5D0 \uB300\uD574 \uBE48/\uB110 NamespaceURI\uAC00 \uC9C0\uC815\uB418\uC5C8\uC2B5\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_pt_BR.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_pt_BR.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,36 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_1 pkg + +# Error messages +SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: opera\u00E7\u00E3o {0} n\u00E3o suportada por SOAP 1.1 +SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: o atributo {0} n\u00E3o \u00E9 suportado por SOAP 1.1 +SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: opera\u00E7\u00E3o {0} n\u00E3o suportada por SOAP 1.1 +SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: o InputStream n\u00E3o representa uma Mensagem SOAP 1.2 v\u00E1lida +SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe +SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: Advert\u00EAncia de Namespace, C\u00F3digo de falha Padr\u00E3o {0}, devem estar no Namespace SOAP 1.1 +SAAJ0307.impl.no.ns.URI=SAAJ0307: NamespaceURI Vazio/Nulo especificado para faultCode {0} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_CN.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_CN.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,36 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_1 pkg + +# Error messages +SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1 \u4E0D\u652F\u6301\u64CD\u4F5C{0} +SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1 \u4E0D\u652F\u6301\u5C5E\u6027{0} +SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1 \u4E0D\u652F\u6301\u64CD\u4F5C{0} +SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream \u4E0D\u8868\u793A\u6709\u6548\u7684 SOAP 1.1 \u6D88\u606F +SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728 +SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u540D\u79F0\u7A7A\u95F4\u8B66\u544A, \u6807\u51C6\u6545\u969C\u4EE3\u7801 {0} \u6700\u9002\u5408\u5728 SOAP 1.1 \u540D\u79F0\u7A7A\u95F4\u4E2D\u4F7F\u7528 +SAAJ0307.impl.no.ns.URI=SAAJ0307: \u4E3A faultCode {0} \u6307\u5B9A\u7684 NamespaceURI \u5FC5\u987B\u4E3A\u7A7A/\u7A7A\u503C diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_TW.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/LocalStrings_zh_TW.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,36 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_1 pkg + +# Error messages +SAAJ0301.ver1_1.hdr.op.unsupported.in.SOAP1.1=SAAJ0301: SOAP 1.1 \u4E0D\u652F\u63F4\u4F5C\u696D {0} +SAAJ0302.ver1_1.hdr.attr.unsupported.in.SOAP1.1=SAAJ0302: SOAP 1.1 \u4E0D\u652F\u63F4\u5C6C\u6027 {0} +SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1=SAAJ0303: SOAP 1.1 \u4E0D\u652F\u63F4\u4F5C\u696D {0} +SAAJ0304.ver1_1.msg.invalid.SOAP1.1=SAAJ0304: InputStream \u4E0D\u4EE3\u8868\u6709\u6548\u7684 SOAP 1.1 \u8A0A\u606F +SAAJ0305.ver1_2.detail.exists.error=SAAJ0305: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728 +SAAJ0306.ver1_1.faultcode.incorrect.namespace=SAAJ0306: \u547D\u540D\u7A7A\u9593\u8B66\u544A, \u6A19\u6E96 Faultcode {0}, \u61C9\u8A72\u4F4D\u65BC SOAP 1.1 \u547D\u540D\u7A7A\u9593\u4E2D +SAAJ0307.impl.no.ns.URI=SAAJ0307: \u70BA faultCode {0} \u6307\u5B9A\u7684\u662F\u7A7A\u7684/\u7A7A\u503C NamespaceURI diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Message1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/Message1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,131 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import java.io.IOException; +import java.io.InputStream; +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.xml.soap.*; +import javax.xml.stream.XMLStreamReader; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType; +import com.sun.xml.internal.messaging.saaj.soap.MessageImpl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + +public class Message1_1Impl extends MessageImpl implements SOAPConstants { + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings"); + + public Message1_1Impl() { + super(); + } + + public Message1_1Impl(boolean isFastInfoset, boolean acceptFastInfoset) { + super(isFastInfoset, acceptFastInfoset); + } + + public Message1_1Impl(SOAPMessage msg) { + super(msg); + } + + // unused. can we delete this? - Kohsuke + public Message1_1Impl(MimeHeaders headers, InputStream in) + throws IOException, SOAPExceptionImpl { + super(headers, in); + } + + public Message1_1Impl(MimeHeaders headers, ContentType ct, int stat, InputStream in) + throws SOAPExceptionImpl { + super(headers,ct,stat,in); + } + + public Message1_1Impl(MimeHeaders headers, ContentType ct, int stat, XMLStreamReader reader) + throws SOAPExceptionImpl { + super(headers,ct,stat,reader); + } + + public SOAPPart getSOAPPart() { + if (soapPartImpl == null) { + soapPartImpl = new SOAPPart1_1Impl(this); + } + return soapPartImpl; + } + + protected boolean isCorrectSoapVersion(int contentTypeId) { + return (contentTypeId & SOAP1_1_FLAG) != 0; + } + + public String getAction() { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + new String[] { "Action" }); + throw new UnsupportedOperationException("Operation not supported by SOAP 1.1"); + } + + public void setAction(String type) { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + new String[] { "Action" }); + throw new UnsupportedOperationException("Operation not supported by SOAP 1.1"); + } + + public String getCharset() { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + new String[] { "Charset" }); + throw new UnsupportedOperationException("Operation not supported by SOAP 1.1"); + } + + public void setCharset(String charset) { + log.log( + Level.SEVERE, + "SAAJ0303.ver1_1.msg.op.unsupported.in.SOAP1.1", + new String[] { "Charset" }); + throw new UnsupportedOperationException("Operation not supported by SOAP 1.1"); + } + + protected String getExpectedContentType() { + return isFastInfoset ? "application/fastinfoset" : "text/xml"; + } + + protected String getExpectedAcceptHeader() { + String accept = "text/xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"; + return acceptFastInfoset ? ("application/fastinfoset, " + accept) : accept; + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPFactory1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPFactory1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,70 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import javax.xml.soap.Detail; +import javax.xml.soap.SOAPException; +import javax.xml.soap.SOAPFault; + +import javax.xml.namespace.QName; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl; + +public class SOAPFactory1_1Impl extends SOAPFactoryImpl { + protected SOAPDocumentImpl createDocument() { + return (new SOAPPart1_1Impl()).getDocument(); + } + + public Detail createDetail() throws SOAPException { + return new Detail1_1Impl(createDocument()); + } + + public SOAPFault createFault(String reasonText, QName faultCode) + throws SOAPException { + if (faultCode == null) { + throw new IllegalArgumentException("faultCode argument for createFault was passed NULL"); + } + if (reasonText == null) { + throw new IllegalArgumentException("reasonText argument for createFault was passed NULL"); + } + Fault1_1Impl fault = new Fault1_1Impl(createDocument(), null); + fault.setFaultCode(faultCode); + fault.setFaultString(reasonText); + return fault; + } + + public SOAPFault createFault() throws SOAPException { + Fault1_1Impl fault = new Fault1_1Impl(createDocument(), null); + fault.setFaultCode(fault.getDefaultFaultCode()); + fault.setFaultString("Fault string, and possibly fault code, not set"); + return fault; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPMessageFactory1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPMessageFactory1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import java.io.IOException; +import java.io.InputStream; + +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl; +import com.sun.xml.internal.messaging.saaj.soap.MessageImpl; + +public class SOAPMessageFactory1_1Impl extends MessageFactoryImpl { + + public SOAPMessage createMessage() throws SOAPException { + return new Message1_1Impl(); + } + + public SOAPMessage createMessage(boolean isFastInfoset, + boolean acceptFastInfoset) throws SOAPException + { + return new Message1_1Impl(isFastInfoset, acceptFastInfoset); + } + + public SOAPMessage createMessage(MimeHeaders headers, InputStream in) throws IOException, SOAPExceptionImpl { + + if (headers == null) { + headers = new MimeHeaders(); + } + + if (getContentType(headers) == null) { + headers.setHeader("Content-Type", SOAPConstants.SOAP_1_1_CONTENT_TYPE); + } + + MessageImpl msg = new Message1_1Impl(headers, in); + msg.setLazyAttachments(lazyAttachments); + return msg; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPPart1_1Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_1/SOAPPart1_1Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,98 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_1; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPException; +import javax.xml.transform.Source; + +import com.sun.xml.internal.messaging.saaj.soap.*; +import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; +import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser; + +public class SOAPPart1_1Impl extends SOAPPartImpl implements SOAPConstants { + + protected static final Logger log = + Logger.getLogger(LogDomainConstants.SOAP_VER1_1_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.ver1_1.LocalStrings"); + + public SOAPPart1_1Impl() { + super(); + } + + public SOAPPart1_1Impl(MessageImpl message) { + super(message); + } + + protected String getContentType() { + return isFastInfoset() ? "application/fastinfoset" : "text/xml"; + } + + protected Envelope createEnvelopeFromSource() throws SOAPException { + // Record the presence of xml declaration before the envelope gets + // created. + XMLDeclarationParser parser = lookForXmlDecl(); + Source tmp = source; + source = null; + EnvelopeImpl envelope = + (EnvelopeImpl) EnvelopeFactory.createEnvelope(tmp, this); + + if (!envelope.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE)) { + log.severe("SAAJ0304.ver1_1.msg.invalid.SOAP1.1"); + throw new SOAPException("InputStream does not represent a valid SOAP 1.1 Message"); + } + + if (parser != null && !omitXmlDecl) { + envelope.setOmitXmlDecl("no"); + envelope.setXmlDecl(parser.getXmlDeclaration()); + envelope.setCharsetEncoding(parser.getEncoding()); + } + return envelope; + } + + protected Envelope createEmptyEnvelope(String prefix) + throws SOAPException { + return new Envelope1_1Impl(getDocument(), prefix, true, true); + } + + protected SOAPPartImpl duplicateType() { + return new SOAPPart1_1Impl(); + } + + @Override + public String getSOAPNamespace() { + return SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE; + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Body1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Body1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,197 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import java.util.logging.Logger; +import java.util.Locale; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import org.w3c.dom.Node; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public class Body1_2Impl extends BodyImpl { + + protected static final Logger log = + Logger.getLogger(Body1_2Impl.class.getName(), + "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); + + public Body1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) { + super(ownerDocument, NameImpl.createBody1_2Name(prefix)); + } + + protected NameImpl getFaultName(String name) { + return NameImpl.createFault1_2Name(name, null); + } + + protected SOAPBodyElement createBodyElement(Name name) { + return new BodyElement1_2Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name); + } + protected SOAPBodyElement createBodyElement(QName name) { + return new BodyElement1_2Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name); + } + + protected QName getDefaultFaultCode() { + return SOAPConstants.SOAP_RECEIVER_FAULT; + } + + public SOAPFault addFault() throws SOAPException { + if (hasAnyChildElement()) { + log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); + throw new SOAPExceptionImpl( + "No other element except Fault allowed in SOAPBody"); + } + return super.addFault(); + } + + /* + * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle + * attribute to SOAP Body (SOAP 1.2 spec, part 1, section 5.1.1) + */ + public void setEncodingStyle(String encodingStyle) throws SOAPException { + log.severe("SAAJ0401.ver1_2.no.encodingstyle.in.body"); + throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Body"); + } + + /* + * Override addAttribute of ElementImpl to restrict adding encodingStyle + * attribute to SOAP Body (SOAP 1.2 spec, part 1, section 5.1.1) + */ + public SOAPElement addAttribute(Name name, String value) + throws SOAPException { + if (name.getLocalName().equals("encodingStyle") + && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) { + + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } + + public SOAPElement addAttribute(QName name, String value) + throws SOAPException { + if (name.getLocalPart().equals("encodingStyle") + && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) { + + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } + + protected boolean isFault(SOAPElement child) { + return (child.getElementName().getURI().equals( + SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE) && + child.getElementName().getLocalName().equals( + "Fault")); + } + + protected SOAPFault createFaultElement() { + return new Fault1_2Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), getPrefix()); + } + + /* + * section 5.4 of SOAP1.2 candidate recommendation says that a + * SOAP message MUST contain a single Fault element as the only + * child element of the SOAP Body. + */ + public SOAPBodyElement addBodyElement(Name name) throws SOAPException { + if (hasFault()) { + log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); + throw new SOAPExceptionImpl( + "No other element except Fault allowed in SOAPBody"); + } + return super.addBodyElement(name); + } + + public SOAPBodyElement addBodyElement(QName name) throws SOAPException { + if (hasFault()) { + log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); + throw new SOAPExceptionImpl( + "No other element except Fault allowed in SOAPBody"); + } + return super.addBodyElement(name); + } + + protected SOAPElement addElement(Name name) throws SOAPException { + if (hasFault()) { + log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); + throw new SOAPExceptionImpl( + "No other element except Fault allowed in SOAPBody"); + } + return super.addElement(name); + } + + protected SOAPElement addElement(QName name) throws SOAPException { + if (hasFault()) { + log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); + throw new SOAPExceptionImpl( + "No other element except Fault allowed in SOAPBody"); + } + return super.addElement(name); + } + + public SOAPElement addChildElement(Name name) throws SOAPException { + if (hasFault()) { + log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); + throw new SOAPExceptionImpl( + "No other element except Fault allowed in SOAPBody"); + } + return super.addChildElement(name); + } + + public SOAPElement addChildElement(QName name) throws SOAPException { + if (hasFault()) { + log.severe("SAAJ0402.ver1_2.only.fault.allowed.in.body"); + throw new SOAPExceptionImpl( + "No other element except Fault allowed in SOAPBody"); + } + return super.addChildElement(name); + } + + private boolean hasAnyChildElement() { + Node currentNode = getFirstChild(); + while (currentNode != null) { + if (currentNode.getNodeType() == Node.ELEMENT_NODE) + return true; + currentNode = currentNode.getNextSibling(); + } + return false; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/BodyElement1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/BodyElement1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import javax.xml.namespace.QName; +import javax.xml.soap.Name; +import javax.xml.soap.SOAPException; +import javax.xml.soap.SOAPElement; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.BodyElementImpl; + +public class BodyElement1_2Impl extends BodyElementImpl { + + public BodyElement1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) { + super(ownerDoc, qname); + } + + public BodyElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) { + super(ownerDoc, qname); + } + + public SOAPElement setElementQName(QName newName) throws SOAPException { + BodyElementImpl copy = + new BodyElement1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName); + return replaceElementWithSOAPElement(this,copy); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Detail1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Detail1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,95 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import java.util.logging.Logger; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.DetailImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public class Detail1_2Impl extends DetailImpl { + + protected static final Logger log = + Logger.getLogger(Detail1_2Impl.class.getName(), + "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); + + public Detail1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) { + super(ownerDocument, NameImpl.createSOAP12Name("Detail", prefix)); + } + + public Detail1_2Impl(SOAPDocumentImpl ownerDocument) { + super(ownerDocument, NameImpl.createSOAP12Name("Detail")); + } + + protected DetailEntry createDetailEntry(Name name) { + return new DetailEntry1_2Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name); + } + + protected DetailEntry createDetailEntry(QName name) { + return new DetailEntry1_2Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name); + } + + /* + * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle + * attribute to SOAP Detail (SOAP 1.2 spec, part 1, section 5.1.1) + */ + public void setEncodingStyle(String encodingStyle) throws SOAPException { + log.severe("SAAJ0403.ver1_2.no.encodingStyle.in.detail"); + throw new SOAPExceptionImpl("EncodingStyle attribute cannot appear in Detail"); + } + + public SOAPElement addAttribute(Name name, String value) + throws SOAPException { + if (name.getLocalName().equals("encodingStyle") + && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) { + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } + + public SOAPElement addAttribute(QName name, String value) + throws SOAPException { + if (name.getLocalPart().equals("encodingStyle") + && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) { + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/DetailEntry1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/DetailEntry1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import javax.xml.namespace.QName; +import javax.xml.soap.Name; +import javax.xml.soap.SOAPException; +import javax.xml.soap.SOAPElement; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.DetailEntryImpl; + +public class DetailEntry1_2Impl extends DetailEntryImpl { + + public DetailEntry1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) { + super(ownerDoc, qname); + } + + public DetailEntry1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) { + super(ownerDoc, qname); + } + + public SOAPElement setElementQName(QName newName) throws SOAPException { + DetailEntryImpl copy = + new DetailEntry1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName); + return replaceElementWithSOAPElement(this,copy); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Envelope1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Envelope1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,147 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import java.util.logging.Logger; +import java.util.logging.Level; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public class Envelope1_2Impl extends EnvelopeImpl { + + protected static final Logger log = + Logger.getLogger(Envelope1_2Impl.class.getName(), + "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); + + public Envelope1_2Impl(SOAPDocumentImpl ownerDoc, String prefix) { + super(ownerDoc, NameImpl.createEnvelope1_2Name(prefix)); + } + + public Envelope1_2Impl( + SOAPDocumentImpl ownerDoc, + String prefix, + boolean createHeader, + boolean createBody) + throws SOAPException { + super( + ownerDoc, + NameImpl.createEnvelope1_2Name(prefix), + createHeader, + createBody); + } + + protected NameImpl getBodyName(String prefix) { + return NameImpl.createBody1_2Name(prefix); + } + + protected NameImpl getHeaderName(String prefix) { + return NameImpl.createHeader1_2Name(prefix); + } + + /* + * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle + * attribute to SOAP Envelope (SOAP 1.2 spec, part 1, section 5.1.1) + */ + public void setEncodingStyle(String encodingStyle) throws SOAPException { + log.severe("SAAJ0404.ver1_2.no.encodingStyle.in.envelope"); + throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Envelope"); + } + + /* + * Override addAttribute of ElementImpl to restrict adding encodingStyle + * attribute to SOAP Envelope (SOAP 1.2 spec, part 1, section 5.1.1) + */ + public SOAPElement addAttribute(Name name, String value) + throws SOAPException { + if (name.getLocalName().equals("encodingStyle") + && name.getURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) { + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } + + public SOAPElement addAttribute(QName name, String value) + throws SOAPException { + if (name.getLocalPart().equals("encodingStyle") + && name.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) { + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } + + + /* + * Override addChildElement method to ensure that no element + * is added after body in SOAP 1.2. + */ + public SOAPElement addChildElement(Name name) throws SOAPException { + // check if body already exists + if (getBody() != null) { + log.severe("SAAJ0405.ver1_2.body.must.last.in.envelope"); + throw new SOAPExceptionImpl( + "Body must be the last element in" + " SOAP Envelope"); + } + return super.addChildElement(name); + } + + public SOAPElement addChildElement(QName name) throws SOAPException { + // check if body already exists + if (getBody() != null) { + log.severe("SAAJ0405.ver1_2.body.must.last.in.envelope"); + throw new SOAPExceptionImpl( + "Body must be the last element in" + " SOAP Envelope"); + } + return super.addChildElement(name); + } + + + /* + * Ideally we should be overriding other addChildElement() methods as well + * but we are not adding them here since internally all those call the + * method addChildElement(Name name). + * In future, if this behaviour changes, then we would need to override + * all the rest of them as well. + * + */ + + public SOAPElement addTextNode(String text) throws SOAPException { + log.log( + Level.SEVERE, + "SAAJ0416.ver1_2.adding.text.not.legal", + getElementQName()); + throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Envelope is not legal"); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Fault1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Fault1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,562 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import java.util.*; +import java.util.logging.Logger; +import java.util.logging.Level; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.*; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + + +public class Fault1_2Impl extends FaultImpl { + + protected static final Logger log = + Logger.getLogger( + LogDomainConstants.SOAP_VER1_2_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); + + private static final QName textName = + new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Text"); + private final QName valueName = + new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Value", getPrefix()); + private final QName subcodeName = + new QName(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE, "Subcode", getPrefix()); + + private SOAPElement innermostSubCodeElement = null; + + public Fault1_2Impl(SOAPDocumentImpl ownerDoc, String name, String prefix) { + super(ownerDoc, NameImpl.createFault1_2Name(name, prefix)); + } + + public Fault1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) { + super(ownerDocument, NameImpl.createFault1_2Name(null, prefix)); + } + + protected NameImpl getDetailName() { + return NameImpl.createSOAP12Name("Detail", getPrefix()); + } + + protected NameImpl getFaultCodeName() { + return NameImpl.createSOAP12Name("Code", getPrefix()); + } + + protected NameImpl getFaultStringName() { + return getFaultReasonName(); + } + + protected NameImpl getFaultActorName() { + return getFaultRoleName(); + } + + private NameImpl getFaultRoleName() { + return NameImpl.createSOAP12Name("Role", getPrefix()); + } + + private NameImpl getFaultReasonName() { + return NameImpl.createSOAP12Name("Reason", getPrefix()); + } + + private NameImpl getFaultReasonTextName() { + return NameImpl.createSOAP12Name("Text", getPrefix()); + } + + private NameImpl getFaultNodeName() { + return NameImpl.createSOAP12Name("Node", getPrefix()); + } + + private static NameImpl getXmlLangName() { + return NameImpl.createXmlName("lang"); + } + + protected DetailImpl createDetail() { + return new Detail1_2Impl( + ((SOAPDocument) getOwnerDocument()).getDocument()); + } + + protected FaultElementImpl createSOAPFaultElement(String localName) { + return new FaultElement1_2Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + localName); + } + + protected void checkIfStandardFaultCode(String faultCode, String uri) + throws SOAPException { + QName qname = new QName(uri, faultCode); + if (SOAPConstants.SOAP_DATAENCODINGUNKNOWN_FAULT.equals(qname) || + SOAPConstants.SOAP_MUSTUNDERSTAND_FAULT.equals(qname) || + SOAPConstants.SOAP_RECEIVER_FAULT.equals(qname) || + SOAPConstants.SOAP_SENDER_FAULT.equals(qname) || + SOAPConstants.SOAP_VERSIONMISMATCH_FAULT.equals(qname)) + return; + log.log( + Level.SEVERE, + "SAAJ0435.ver1_2.code.not.standard", + qname); + throw new SOAPExceptionImpl(qname + " is not a standard Code value"); + } + + protected void finallySetFaultCode(String faultcode) throws SOAPException { + SOAPElement value = this.faultCodeElement.addChildElement(valueName); + value.addTextNode(faultcode); + } + + private void findReasonElement() { + findFaultStringElement(); + } + + public Iterator getFaultReasonTexts() throws SOAPException { + // Fault Reason has similar semantics as faultstring + if (this.faultStringElement == null) + findReasonElement(); + Iterator eachTextElement = + this.faultStringElement.getChildElements(textName); + List texts = new ArrayList(); + while (eachTextElement.hasNext()) { + SOAPElement textElement = (SOAPElement) eachTextElement.next(); + Locale thisLocale = getLocale(textElement); + if (thisLocale == null) { + log.severe("SAAJ0431.ver1_2.xml.lang.missing"); + throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element"); + } + texts.add(textElement.getValue()); + } + if (texts.isEmpty()) { + log.severe("SAAJ0434.ver1_2.text.element.not.present"); + throw new SOAPExceptionImpl("env:Text must be present inside env:Reason"); + } + return texts.iterator(); + } + + public void addFaultReasonText(String text, java.util.Locale locale) + throws SOAPException { + + if (locale == null) { + log.severe("SAAJ0430.ver1_2.locale.required"); + throw new SOAPException("locale is required and must not be null"); + } + + // Fault Reason has similar semantics as faultstring + if (this.faultStringElement == null) + findReasonElement(); + SOAPElement reasonText; + + if (this.faultStringElement == null) { + this.faultStringElement = addSOAPFaultElement("Reason"); + reasonText = + this.faultStringElement.addChildElement( + getFaultReasonTextName()); + } else { + removeDefaultFaultString(); + reasonText = getFaultReasonTextElement(locale); + if (reasonText != null) { + reasonText.removeContents(); + } else { + reasonText = + this.faultStringElement.addChildElement( + getFaultReasonTextName()); + } + } + + String xmlLang = localeToXmlLang(locale); + reasonText.addAttribute(getXmlLangName(), xmlLang); + reasonText.addTextNode(text); + } + + private void removeDefaultFaultString() throws SOAPException { + SOAPElement reasonText = getFaultReasonTextElement(Locale.getDefault()); + if (reasonText != null) { + String defaultFaultString = + "Fault string, and possibly fault code, not set"; + if (defaultFaultString.equals(reasonText.getValue())) { + reasonText.detachNode(); + } + } + } + + public String getFaultReasonText(Locale locale) throws SOAPException { + + if (locale == null) + return null; + + // Fault Reason has similar semantics as faultstring + if (this.faultStringElement == null) + findReasonElement(); + + if (this.faultStringElement != null) { + SOAPElement textElement = getFaultReasonTextElement(locale); + if (textElement != null) { + textElement.normalize(); + return textElement.getFirstChild().getNodeValue(); + } + } + + return null; + } + + public Iterator getFaultReasonLocales() throws SOAPException { + // Fault Reason has similar semantics as faultstring + if (this.faultStringElement == null) + findReasonElement(); + Iterator eachTextElement = + this.faultStringElement.getChildElements(textName); + List localeSet = new ArrayList(); + while (eachTextElement.hasNext()) { + SOAPElement textElement = (SOAPElement) eachTextElement.next(); + Locale thisLocale = getLocale(textElement); + if (thisLocale == null) { + log.severe("SAAJ0431.ver1_2.xml.lang.missing"); + throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element"); + } + localeSet.add(thisLocale); + } + if (localeSet.isEmpty()) { + log.severe("SAAJ0434.ver1_2.text.element.not.present"); + throw new SOAPExceptionImpl("env:Text elements with mandatory xml:lang attributes must be present inside env:Reason"); + } + return localeSet.iterator(); + } + + public Locale getFaultStringLocale() { + Locale locale = null; + try { + locale = (Locale) getFaultReasonLocales().next(); + } catch (SOAPException e) {} + return locale; + } + + /* + * This method assumes that locale and faultStringElement are non-null + */ + private SOAPElement getFaultReasonTextElement(Locale locale) + throws SOAPException { + + // Fault Reason has similar semantics as faultstring + Iterator eachTextElement = + this.faultStringElement.getChildElements(textName); + while (eachTextElement.hasNext()) { + SOAPElement textElement = (SOAPElement) eachTextElement.next(); + Locale thisLocale = getLocale(textElement); + if (thisLocale == null) { + log.severe("SAAJ0431.ver1_2.xml.lang.missing"); + throw new SOAPExceptionImpl("\"xml:lang\" attribute is not present on the Text element"); + } + if (thisLocale.equals(locale)) { + return textElement; + } + } + return null; + } + + public String getFaultNode() { + SOAPElement faultNode = findAndConvertChildElement(getFaultNodeName()); + if (faultNode == null) { + return null; + } + return faultNode.getValue(); + } + + public void setFaultNode(String uri) throws SOAPException { + SOAPElement faultNode = findAndConvertChildElement(getFaultNodeName()); + if (faultNode != null) { + faultNode.detachNode(); + } + faultNode = createSOAPFaultElement(getFaultNodeName()); + faultNode = faultNode.addTextNode(uri); + if (getFaultRole() != null) { + insertBefore(faultNode, this.faultActorElement); + return; + } + if (hasDetail()) { + insertBefore(faultNode, this.detail); + return; + } + addNode(faultNode); + } + + public String getFaultRole() { + return getFaultActor(); + } + + public void setFaultRole(String uri) throws SOAPException { + if (this.faultActorElement == null) + findFaultActorElement(); + if (this.faultActorElement != null) + this.faultActorElement.detachNode(); + this.faultActorElement = + createSOAPFaultElement(getFaultActorName()); + this.faultActorElement.addTextNode(uri); + if (hasDetail()) { + insertBefore(this.faultActorElement, this.detail); + return; + } + addNode(this.faultActorElement); + } + + public String getFaultCode() { + if (this.faultCodeElement == null) + findFaultCodeElement(); + Iterator codeValues = + this.faultCodeElement.getChildElements(valueName); + return ((SOAPElement) codeValues.next()).getValue(); + } + + public QName getFaultCodeAsQName() { + String faultcode = getFaultCode(); + if (faultcode == null) { + return null; + } + if (this.faultCodeElement == null) + findFaultCodeElement(); + Iterator valueElements = + this.faultCodeElement.getChildElements(valueName); + return convertCodeToQName( + faultcode, + (SOAPElement) valueElements.next()); + } + + public Name getFaultCodeAsName() { + String faultcode = getFaultCode(); + if (faultcode == null) { + return null; + } + if (this.faultCodeElement == null) + findFaultCodeElement(); + Iterator valueElements = + this.faultCodeElement.getChildElements(valueName); + return NameImpl.convertToName( + convertCodeToQName( + faultcode, + (SOAPElement) valueElements.next())); + } + + public String getFaultString() { + String reason = null; + try { + //reason = getFaultReasonText(Locale.getDefault()); + //if (reason == null) + reason = (String) getFaultReasonTexts().next(); + } catch (SOAPException e) {} + return reason; + } + + public void setFaultString(String faultString) throws SOAPException { + addFaultReasonText(faultString, Locale.getDefault()); + } + + public void setFaultString( + String faultString, + Locale locale) + throws SOAPException { + addFaultReasonText(faultString, locale); + } + + public void appendFaultSubcode(QName subcode) throws SOAPException { + if (subcode == null) { + return; + } + if (subcode.getNamespaceURI() == null || + "".equals(subcode.getNamespaceURI())) { + + log.severe("SAAJ0432.ver1_2.subcode.not.ns.qualified"); + throw new SOAPExceptionImpl("A Subcode must be namespace-qualified"); + } + if (innermostSubCodeElement == null) { + if (faultCodeElement == null) + findFaultCodeElement(); + innermostSubCodeElement = faultCodeElement; + } + String prefix = null; + if (subcode.getPrefix() == null || "".equals(subcode.getPrefix())) { + prefix = + ((ElementImpl) innermostSubCodeElement).getNamespacePrefix( + subcode.getNamespaceURI()); + } else + prefix = subcode.getPrefix(); + if (prefix == null || "".equals(prefix)) { + prefix = "ns1"; + } + innermostSubCodeElement = + innermostSubCodeElement.addChildElement(subcodeName); + SOAPElement subcodeValueElement = + innermostSubCodeElement.addChildElement(valueName); + ((ElementImpl) subcodeValueElement).ensureNamespaceIsDeclared( + prefix, + subcode.getNamespaceURI()); + subcodeValueElement.addTextNode(prefix + ":" + subcode.getLocalPart()); + } + + public void removeAllFaultSubcodes() { + if (this.faultCodeElement == null) + findFaultCodeElement(); + Iterator subcodeElements = + this.faultCodeElement.getChildElements(subcodeName); + if (subcodeElements.hasNext()) { + SOAPElement subcode = (SOAPElement) subcodeElements.next(); + subcode.detachNode(); + } + } + + public Iterator getFaultSubcodes() { + if (this.faultCodeElement == null) + findFaultCodeElement(); + final List subcodeList = new ArrayList(); + SOAPElement currentCodeElement = this.faultCodeElement; + Iterator subcodeElements = + currentCodeElement.getChildElements(subcodeName); + while (subcodeElements.hasNext()) { + currentCodeElement = (ElementImpl) subcodeElements.next(); + Iterator valueElements = + currentCodeElement.getChildElements(valueName); + SOAPElement valueElement = (SOAPElement) valueElements.next(); + String code = valueElement.getValue(); + subcodeList.add(convertCodeToQName(code, valueElement)); + subcodeElements = currentCodeElement.getChildElements(subcodeName); + } + //return subcodeList.iterator(); + return new Iterator() { + Iterator subCodeIter = subcodeList.iterator(); + + public boolean hasNext() { + return subCodeIter.hasNext(); + } + + public Object next() { + return subCodeIter.next(); + } + + public void remove() { + throw new UnsupportedOperationException( + "Method remove() not supported on SubCodes Iterator"); + } + }; + } + + private static Locale getLocale(SOAPElement reasonText) { + return xmlLangToLocale(reasonText.getAttributeValue(getXmlLangName())); + } + + /* + * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle + * attribute to SOAP Fault (SOAP 1.2 spec, part 1, section 5.1.1) + */ + public void setEncodingStyle(String encodingStyle) throws SOAPException { + log.severe("SAAJ0407.ver1_2.no.encodingStyle.in.fault"); + throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Fault"); + } + + public SOAPElement addAttribute(Name name, String value) + throws SOAPException { + if (name.getLocalName().equals("encodingStyle") + && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) { + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } + + public SOAPElement addAttribute(QName name, String value) + throws SOAPException { + if (name.getLocalPart().equals("encodingStyle") + && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) { + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } + + public SOAPElement addTextNode(String text) throws SOAPException { + log.log( + Level.SEVERE, + "SAAJ0416.ver1_2.adding.text.not.legal", + getElementQName()); + throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Fault is not legal"); + } + + public SOAPElement addChildElement(SOAPElement element) + throws SOAPException { + String localName = element.getLocalName(); + if ("Detail".equalsIgnoreCase(localName)) { + if (hasDetail()) { + log.severe("SAAJ0436.ver1_2.detail.exists.error"); + throw new SOAPExceptionImpl("Cannot add Detail, Detail already exists"); + } + String uri = element.getElementQName().getNamespaceURI(); + if (!uri.equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) { + log.severe("SAAJ0437.ver1_2.version.mismatch.error"); + throw new SOAPExceptionImpl("Cannot add Detail, Incorrect SOAP version specified for Detail element"); + } + } + if (element instanceof Detail1_2Impl) { + ElementImpl importedElement = (ElementImpl) importElement(element); + addNode(importedElement); + return convertToSoapElement(importedElement); + } else + return super.addChildElement(element); + } + + protected boolean isStandardFaultElement(String localName) { + if (localName.equalsIgnoreCase("code") || + localName.equalsIgnoreCase("reason") || + localName.equalsIgnoreCase("node") || + localName.equalsIgnoreCase("role") || + localName.equalsIgnoreCase("detail")) { + return true; + } + return false; + } + + protected QName getDefaultFaultCode() { + return SOAPConstants.SOAP_SENDER_FAULT; + } + + protected FaultElementImpl createSOAPFaultElement(QName qname) { + return new FaultElement1_2Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + qname); + } + + protected FaultElementImpl createSOAPFaultElement(Name qname) { + return new FaultElement1_2Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + (NameImpl)qname); + } + + public void setFaultActor(String faultActor) throws SOAPException { + this.setFaultRole(faultActor); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/FaultElement1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/FaultElement1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,99 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPException; +import javax.xml.soap.SOAPElement; +import javax.xml.soap.Name; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.FaultElementImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; + +public class FaultElement1_2Impl extends FaultElementImpl { + + public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, NameImpl qname) { + super(ownerDoc, qname); + } + + public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) { + super(ownerDoc, qname); + } + + public FaultElement1_2Impl(SOAPDocumentImpl ownerDoc, String localName) { + super(ownerDoc, NameImpl.createSOAP12Name(localName)); + } + + protected boolean isStandardFaultElement() { + String localName = elementQName.getLocalPart(); + if (localName.equalsIgnoreCase("code") || + localName.equalsIgnoreCase("reason") || + localName.equalsIgnoreCase("node") || + localName.equalsIgnoreCase("role")) { + return true; + } + return false; + } + + public SOAPElement setElementQName(QName newName) throws SOAPException { + if (!isStandardFaultElement()) { + FaultElement1_2Impl copy = + new FaultElement1_2Impl((SOAPDocumentImpl) getOwnerDocument(), newName); + return replaceElementWithSOAPElement(this,copy); + } else { + return super.setElementQName(newName); + } + } + + public void setEncodingStyle(String encodingStyle) throws SOAPException { + log.severe("SAAJ0408.ver1_2.no.encodingStyle.in.fault.child"); + throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on a Fault child element"); + } + + public SOAPElement addAttribute(Name name, String value) + throws SOAPException { + if (name.getLocalName().equals("encodingStyle") + && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) { + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } + + public SOAPElement addAttribute(QName name, String value) + throws SOAPException { + if (name.getLocalPart().equals("encodingStyle") + && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) { + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Header1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Header1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,159 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import java.util.List; +import java.util.Iterator; +import java.util.logging.Logger; +import java.util.logging.Level; + +import javax.xml.namespace.QName; +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument; +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; +import com.sun.xml.internal.messaging.saaj.util.LogDomainConstants; + + +public class Header1_2Impl extends HeaderImpl { + + protected static final Logger log = + Logger.getLogger( + LogDomainConstants.SOAP_VER1_2_DOMAIN, + "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); + + public Header1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) { + super(ownerDocument, NameImpl.createHeader1_2Name(prefix)); + } + + protected NameImpl getNotUnderstoodName() { + return NameImpl.createNotUnderstood1_2Name(null); + } + + protected NameImpl getUpgradeName() { + return NameImpl.createUpgrade1_2Name(null); + } + + protected NameImpl getSupportedEnvelopeName() { + return NameImpl.createSupportedEnvelope1_2Name(null); + } + + public SOAPHeaderElement addNotUnderstoodHeaderElement(final QName sourceName) + throws SOAPException { + + if (sourceName == null) { + log.severe("SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader"); + throw new SOAPException("Cannot pass NULL to addNotUnderstoodHeaderElement"); + } + if ("".equals(sourceName.getNamespaceURI())) { + log.severe("SAAJ0417.ver1_2.qname.not.ns.qualified"); + throw new SOAPException("The qname passed to addNotUnderstoodHeaderElement must be namespace-qualified"); + } + String prefix = sourceName.getPrefix(); + if ("".equals(prefix)) { + prefix = "ns1"; + } + Name notunderstoodName = getNotUnderstoodName(); + SOAPHeaderElement notunderstoodHeaderElement = + (SOAPHeaderElement) addChildElement(notunderstoodName); + notunderstoodHeaderElement.addAttribute( + NameImpl.createFromUnqualifiedName("qname"), + getQualifiedName( + new QName( + sourceName.getNamespaceURI(), + sourceName.getLocalPart(), + prefix))); + notunderstoodHeaderElement.addNamespaceDeclaration( + prefix, + sourceName.getNamespaceURI()); + return notunderstoodHeaderElement; + } + + public SOAPElement addTextNode(String text) throws SOAPException { + log.log( + Level.SEVERE, + "SAAJ0416.ver1_2.adding.text.not.legal", + getElementQName()); + throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Header is not legal"); + } + + protected SOAPHeaderElement createHeaderElement(Name name) + throws SOAPException { + String uri = name.getURI(); + if (uri == null || uri.equals("")) { + log.severe("SAAJ0413.ver1_2.header.elems.must.be.ns.qualified"); + throw new SOAPExceptionImpl("SOAP 1.2 header elements must be namespace qualified"); + } + return new HeaderElement1_2Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name); + } + + protected SOAPHeaderElement createHeaderElement(QName name) + throws SOAPException { + String uri = name.getNamespaceURI(); + if (uri == null || uri.equals("")) { + log.severe("SAAJ0413.ver1_2.header.elems.must.be.ns.qualified"); + throw new SOAPExceptionImpl("SOAP 1.2 header elements must be namespace qualified"); + } + return new HeaderElement1_2Impl( + ((SOAPDocument) getOwnerDocument()).getDocument(), + name); + } + + public void setEncodingStyle(String encodingStyle) throws SOAPException { + log.severe("SAAJ0409.ver1_2.no.encodingstyle.in.header"); + throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Header"); + } + + public SOAPElement addAttribute(Name name, String value) + throws SOAPException { + if (name.getLocalName().equals("encodingStyle") + && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) { + + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } + + public SOAPElement addAttribute(QName name, String value) + throws SOAPException { + if (name.getLocalPart().equals("encodingStyle") + && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) { + + setEncodingStyle(value); + } + return super.addAttribute(name, value); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/HeaderElement1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/HeaderElement1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,104 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import java.util.logging.Logger; + +import javax.xml.namespace.QName; +import javax.xml.soap.Name; +import javax.xml.soap.SOAPElement; +import javax.xml.soap.SOAPException; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.HeaderElementImpl; +import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl; + +public class HeaderElement1_2Impl extends HeaderElementImpl { + + private static final Logger log = + Logger.getLogger(HeaderElement1_2Impl.class.getName(), + "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); + + public HeaderElement1_2Impl(SOAPDocumentImpl ownerDoc, Name qname) { + super(ownerDoc, qname); + } + public HeaderElement1_2Impl(SOAPDocumentImpl ownerDoc, QName qname) { + super(ownerDoc, qname); + } + + public SOAPElement setElementQName(QName newName) throws SOAPException { + HeaderElementImpl copy = + new HeaderElement1_2Impl((SOAPDocumentImpl)getOwnerDocument(), newName); + return replaceElementWithSOAPElement(this,copy); + } + + protected NameImpl getRoleAttributeName() { + return NameImpl.create("role", null, NameImpl.SOAP12_NAMESPACE); + } + + // Actor equivalent to Role in SOAP 1.2 + protected NameImpl getActorAttributeName() { + return getRoleAttributeName(); + } + + protected NameImpl getMustunderstandAttributeName() { + return NameImpl.create("mustUnderstand", null, NameImpl.SOAP12_NAMESPACE); + } + + // mustUnderstand attribute has literal value "true" or "false" + protected String getMustunderstandLiteralValue(boolean mustUnderstand) { + return (mustUnderstand == true ? "true" : "false"); + } + + protected boolean getMustunderstandAttributeValue(String mu) { + if (mu.equals("true") || mu.equals("1")) + return true; + return false; + } + + protected NameImpl getRelayAttributeName() { + return NameImpl.create("relay", null, NameImpl.SOAP12_NAMESPACE); + } + + //relay attribute has literal value "true" or "false" + protected String getRelayLiteralValue(boolean relay) { + return (relay == true ? "true" : "false"); + } + + protected boolean getRelayAttributeValue(String relay) { + if (relay.equals("true") || relay.equals("1")) + return true; + return false; + } + + protected String getActorOrRole() { + return getRole(); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_2 pkg + +SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle attribute cannot appear on Body +SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: No other element except Fault allowed in SOAPBody +SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle attribute cannot appear on Detail +SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle attribute cannot appear on Envelope +SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body must be last element in SOAPEnvelope +SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope cannot contain anything other than Header and Body +SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle attribute cannot appear on Fault +SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle attribute cannot appear on a Fault child element +SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle attribute cannot appear on Header +SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: Cannot pass NULL to addNotUnderstoodHeaderElement +SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: Argument cannot be null; supportedURIs cannot be null +SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: List of supported URIs cannot be empty +SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 header elements must be namespace qualified +#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 +SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream does not represent a valid SOAP 1.2 Message +# {0} - element qname +SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: Adding text to {0} is not legal +SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: The QName passed to addNotUnderstoodHeaderElement must be namespace-qualified + +#SOAPFault related errors +SAAJ0430.ver1_2.locale.required=SAAJ0430: locale is required and must not be null +SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang" attribute is not present on the Text element +SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: A Subcode must be namespace-qualified +#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} +SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text must be present inside env:Reason +SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} is not a standard Code value +SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Cannot add Detail, Detail already exists +SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Incorrect SOAP version for Detail element, expected SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_de.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_de.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_2 pkg + +SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle-Attribut darf nicht in Nachrichtentext enthalten sein +SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: Kein anderes Element au\u00DFer Fault in SOAPBody zul\u00E4ssig +SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle-Attribut darf nicht in Detail enthalten sein +SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle-Attribut darf nicht in Envelope enthalten sein +SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: "Body" muss letztes Element in SOAPEnvelope sein +SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope darf nur "Header" und "Body" enthalten +SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle-Attribut darf nicht in Fault enthalten sein +SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle-Attribut darf nicht in einem untergeordneten "Fault"-Element enthalten sein +SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle-Attribut darf nicht in "Header" enthalten sein +SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: NULL kann nicht an addNotUnderstoodHeaderElement \u00FCbergeben werden +SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: Argument darf nicht null sein; supportedURIs d\u00FCrfen nicht null sein +SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: Liste der unterst\u00FCtzten URIs darf nicht leer sein +SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 Header-Elemente m\u00FCssen namespace-f\u00E4hig sein +#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 +SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream stellt keine g\u00FCltige SOAP 1.2-Nachricht dar +# {0} - element qname +SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: Hinzuf\u00FCgen von Text zu {0} ist nicht zul\u00E4ssig +SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: Der QName, der an addNotUnderstoodHeaderElement \u00FCbergeben wird, muss namespace-f\u00E4hig sein + +#SOAPFault related errors +SAAJ0430.ver1_2.locale.required=SAAJ0430: Gebietsschema ist erforderlich und darf nicht null sein +SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang"-Attribut ist in "Text"-Element nicht vorhanden +SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Ein Subcode muss namespace-f\u00E4hig sein +#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} +SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text muss innerhalb von env:Reason vorhanden sein +SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} ist kein Standardcodewert +SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail kann nicht hinzugef\u00FCgt werden, Detail ist bereits vorhanden +SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Falsche SOAP-Version f\u00FCr Detail-Element, SOAP 1.2 erwartet diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_es.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_es.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_2 pkg + +SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: el atributo encodingStyle no puede aparecer en el cuerpo +SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: no se permite ning\u00FAn otro elemento, aparte de Fault, en SOAPBody +SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: el atributo encodingStyle no puede aparecer en Detail +SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: el atributo encodingStyle no puede aparecer en Envelope +SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: el cuerpo debe ser el \u00FAltimo elemento en SOAPEnvelope +SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: el elemento Envelope no puede contener nada que no sea Header y Body +SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: el atributo encodingStyle no puede aparecer en Fault +SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: el atributo encodingStyle no puede aparecer en un elemento secundario Fault +SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: el atributo encodingStyle no puede aparecer en Header +SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: no se puede transferir NULL a addNotUnderstoodHeaderElement +SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: el argumento no puede ser nulo y las URI soportadas no pueden ser nulas +SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: la lista de URI soportadas no puede estar vac\u00EDa +SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: los elementos de la cabecera de SOAP 1.2 deben estar cualificados por espacio de nombres +#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 +SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream no representa un mensaje de SOAP 1.2 v\u00E1lido +# {0} - element qname +SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: no es v\u00E1lido agregar texto a {0} +SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: el QName que se ha transferido a addNotUnderstoodHeaderElement debe estar cualificado por espacio de nombres + +#SOAPFault related errors +SAAJ0430.ver1_2.locale.required=SAAJ0430: la configuraci\u00F3n regional es necesaria y no debe ser nula +SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: el atributo "xml:lang" no se encuentra en el elemento de texto +SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: el subc\u00F3digo debe estar cualificado por espacio de nombres +#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} +SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:text debe encontrarse dentro de env:Reason +SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} no es un valor de c\u00F3digo est\u00E1ndar +SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: no se puede agregar el detalle. El detalle ya existe +SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: versi\u00F3n de SOAP incorrecta para el elemento Detail; se esperaba SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_fr.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_fr.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_2 pkg + +SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Body +SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402 : aucun autre \u00E9l\u00E9ment que Fault n'est autoris\u00E9 dans SOAPBody +SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Detail +SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Envelope +SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405 : Body doit \u00EAtre le dernier \u00E9l\u00E9ment de SOAPEnvelope +SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406 : Envelope peut contenir uniquement les \u00E9l\u00E9ments Header et Body +SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Fault +SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur un \u00E9l\u00E9ment enfant Fault +SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401 : l'attribut encodingStyle ne peut pas appara\u00EEtre sur l'\u00E9l\u00E9ment Header +SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410 : impossible de transmettre la valeur NULL \u00E0 addNotUnderstoodHeaderElement +SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411 : l'argument ne peut pas \u00EAtre NULL, supportedURIs ne peut pas \u00EAtre NULL +SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412 : la liste des URI pris en charge ne peut pas \u00EAtre vide +SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413 : les \u00E9l\u00E9ments d'en-t\u00EAte SOAP 1.2 ne doivent pas \u00EAtre un espace de noms qualifi\u00E9 +#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 +SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415 : InputStream ne repr\u00E9sente pas un message SOAP 1.2 valide +# {0} - element qname +SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416 : l''ajout de texte \u00E0 {0} est interdit +SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417 : le QName transmis \u00E0 addNotUnderstoodHeaderElement doit \u00EAtre un espace de noms qualifi\u00E9 + +#SOAPFault related errors +SAAJ0430.ver1_2.locale.required=SAAJ0430 : l'environnement local est requis et ne doit pas \u00EAtre NULL +SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431 : l'attribut "xml:lang" ne figure pas sur l'\u00E9l\u00E9ment Text +SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432 : un sous-code doit \u00EAtre un espace de noms qualifi\u00E9 +#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} +SAAJ0434.ver1_2.text.element.not.present=SAAJ0434 : env:Text doit \u00EAtre pr\u00E9sent dans env:Reason +SAAJ0435.ver1_2.code.not.standard=SAAJ0435 : {0} n''est pas une valeur Code standard +SAAJ0436.ver1_2.detail.exists.error=SAAJ0436 : impossible d'ajouter l'\u00E9l\u00E9ment Detail, il existe d\u00E9j\u00E0 +SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437 : version SOAP incorrecte pour l'\u00E9l\u00E9ment Detail, SOAP 1.2 attendu diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_it.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_it.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_2 pkg + +SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: l'attributo encodingStyle non pu\u00F2 essere presente in Body +SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: In SOAPBody non sono consentiti elementi diversi da Fault +SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: l'attributo encodingStyle non pu\u00F2 essere presente in Detail +SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: l'attributo encodingStyle non pu\u00F2 essere presente in Envelope +SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body deve essere l'ultimo elemento in SOAPEnvelope +SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope non pu\u00F2 contenere elementi diversi da Header e Body +SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: l'attributo encodingStyle non pu\u00F2 essere presente in Fault +SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: l'attributo encodingStyle non pu\u00F2 essere presente in un elemento figlio di Fault +SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: l'attributo encodingStyle non pu\u00F2 essere presente in Header +SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: Impossibile passare NULL a addNotUnderstoodHeaderElement +SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: L'argomento non pu\u00F2 essere nullo. Gli URI supportati non possono essere nulli +SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: La lista di URI supportati non pu\u00F2 essere vuota +SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: Gli elementi dell'intestazione SOAP 1.2 devono essere qualificati per lo spazio di nomi +#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 +SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream non rappresenta un messaggio SOAP 1.2 valido +# {0} - element qname +SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: L''aggiunta di testo a {0} non \u00E8 valida +SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: Il QName passato a addNotUnderstoodHeaderElement deve essere qualificato per lo spazio di nomi + +#SOAPFault related errors +SAAJ0430.ver1_2.locale.required=SAAJ0430: Le impostazioni nazionali sono obbligatorie e non devono essere nulle +SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: L'attributo "xml:lang" non \u00E8 presente nell'elemento Text +SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Un codice secondario deve essere qualificato per lo spazio di nomi +#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} +SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text deve essere presente in env:Reason +SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} non \u00E8 un valore di codice standard +SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Impossibile aggiungere Detail. Detail esiste gi\u00E0. +SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Versione SOAP errata per l'elemento Detail. Prevista SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ja.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ja.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_2 pkg + +SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle\u5C5E\u6027\u3092Body\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: Fault\u4EE5\u5916\u306E\u4ED6\u306E\u8981\u7D20\u306FSOAPBody\u3067\u306F\u4F7F\u7528\u3067\u304D\u307E\u305B\u3093 +SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle\u5C5E\u6027\u3092Detail\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle\u5C5E\u6027\u3092Envelope\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body\u306FSOAPEnvelope\u306E\u6700\u5F8C\u306E\u8981\u7D20\u3067\u3042\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope\u306BHeader\u304A\u3088\u3073Body\u4EE5\u5916\u306E\u3082\u306E\u3092\u542B\u3081\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle\u5C5E\u6027\u3092Fault\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle\u5C5E\u6027\u3092Fault\u5B50\u8981\u7D20\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle\u5C5E\u6027\u3092Header\u306B\u8868\u793A\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: NULL\u3092addNotUnderstoodHeaderElement\u306B\u6E21\u3059\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093 +SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u5F15\u6570\u306Fnull\u306B\u3067\u304D\u307E\u305B\u3093\u3002supportedURIs\u306Fnull\u306B\u3067\u304D\u307E\u305B\u3093 +SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u3044\u308BURI\u306E\u30EA\u30B9\u30C8\u306F\u7A7A\u306B\u3067\u304D\u307E\u305B\u3093 +SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2\u306E\u30D8\u30C3\u30C0\u30FC\u8981\u7D20\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 +SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream\u306F\u6709\u52B9\u306ASOAP 1.2\u30E1\u30C3\u30BB\u30FC\u30B8\u3092\u8868\u3057\u3066\u3044\u307E\u305B\u3093 +# {0} - element qname +SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: {0}\u3078\u306E\u30C6\u30AD\u30B9\u30C8\u306E\u8FFD\u52A0\u306F\u6709\u52B9\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: addNotUnderstoodHeaderElement\u306B\u6E21\u3055\u308C\u308BQName\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 + +#SOAPFault related errors +SAAJ0430.ver1_2.locale.required=SAAJ0430: \u30ED\u30B1\u30FC\u30EB\u306F\u5FC5\u9808\u3067\u3042\u308A\u3001null\u306B\u3067\u304D\u307E\u305B\u3093 +SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang"\u5C5E\u6027\u304CText\u8981\u7D20\u306B\u5B58\u5728\u3057\u307E\u305B\u3093 +SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Subcode\u306F\u30CD\u30FC\u30E0\u30B9\u30DA\u30FC\u30B9\u3067\u4FEE\u98FE\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} +SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text\u306Fenv:Reason\u5185\u306B\u5B58\u5728\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059 +SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\u306F\u6A19\u6E96\u306E\u30B3\u30FC\u30C9\u5024\u3067\u306F\u3042\u308A\u307E\u305B\u3093 +SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail\u3092\u8FFD\u52A0\u3067\u304D\u307E\u305B\u3093\u3002Detail\u306F\u3059\u3067\u306B\u5B58\u5728\u3057\u307E\u3059 +SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail\u8981\u7D20\u306ESOAP\u30D0\u30FC\u30B8\u30E7\u30F3\u304C\u7121\u52B9\u3067\u3059\u3002SOAP 1.2\u304C\u4E88\u671F\u3055\u308C\u307E\u3059 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ko.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_ko.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_2 pkg + +SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle \uC18D\uC131\uC740 Body\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody\uC5D0\uC11C\uB294 Fault\uB97C \uC81C\uC678\uD55C \uB2E4\uB978 \uC694\uC18C\uAC00 \uD5C8\uC6A9\uB418\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle \uC18D\uC131\uC740 Detail\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle \uC18D\uC131\uC740 Envelope\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body\uB294 SOAPEnvelope\uC758 \uB9C8\uC9C0\uB9C9 \uC694\uC18C\uC5EC\uC57C \uD569\uB2C8\uB2E4. +SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope\uC5D0\uB294 Header\uC640 Body \uC774\uC678\uC758 \uB2E4\uB978 \uC694\uC18C\uAC00 \uD3EC\uD568\uB420 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle \uC18D\uC131\uC740 Fault\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle \uC18D\uC131\uC740 Fault \uD558\uC704 \uC694\uC18C\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle \uC18D\uC131\uC740 Header\uC5D0 \uB098\uD0C0\uB0A0 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: addNotUnderstoodHeaderElement\uC5D0 NULL\uC744 \uC804\uB2EC\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \uC778\uC218\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. supportedURIs\uB294 \uB110\uC77C \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \uC9C0\uC6D0\uB418\uB294 URI \uBAA9\uB85D\uC740 \uBE44\uC6CC \uB458 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 Header \uC694\uC18C\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4. +#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 +SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream\uC774 \uC801\uD569\uD55C SOAP 1.2 \uBA54\uC2DC\uC9C0\uB97C \uB098\uD0C0\uB0B4\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. +# {0} - element qname +SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: {0}\uC5D0 \uD14D\uC2A4\uD2B8\uB97C \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: addNotUnderstoodHeaderElement\uC5D0 \uC804\uB2EC\uB41C QName\uC740 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4. + +#SOAPFault related errors +SAAJ0430.ver1_2.locale.required=SAAJ0430: \uB85C\uCF00\uC77C\uC774 \uD544\uC694\uD558\uBA70 \uB110\uC774 \uC544\uB2C8\uC5B4\uC57C \uD569\uB2C8\uB2E4. +SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: "xml:lang" \uC18D\uC131\uC774 Text \uC694\uC18C\uC5D0 \uC5C6\uC2B5\uB2C8\uB2E4. +SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: \uD558\uC704 \uCF54\uB4DC\uB294 \uC815\uADDC\uD654\uB41C \uB124\uC784\uC2A4\uD398\uC774\uC2A4\uC5EC\uC57C \uD569\uB2C8\uB2E4. +#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} +SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text\uB294 env:Reason\uC5D0 \uC788\uC5B4\uC57C \uD569\uB2C8\uB2E4. +SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\uC740(\uB294) \uD45C\uC900 \uCF54\uB4DC \uAC12\uC774 \uC544\uB2D9\uB2C8\uB2E4. +SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: Detail\uC744 \uCD94\uAC00\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. Detail\uC774 \uC874\uC7AC\uD569\uB2C8\uB2E4. +SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail \uC694\uC18C\uC5D0 \uB300\uD55C SOAP \uBC84\uC804\uC774 \uC62C\uBC14\uB974\uC9C0 \uC54A\uC2B5\uB2C8\uB2E4. SOAP 1.2\uAC00 \uD544\uC694\uD569\uB2C8\uB2E4. diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_pt_BR.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_pt_BR.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_2 pkg + +SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: o atributo encodingStyle n\u00E3o pode aparecer no Corpo +SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: nenhum outro elemento, exceto Falha permitido no SOAPBody +SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: o atributo encodingStyle n\u00E3o pode aparecer no Detalhe +SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: o atributo encodingStyle n\u00E3o pode aparecer no Envelope +SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: o Corpo deve ser o \u00FAltimo elemento no SOAPEnvelope +SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: o envelope n\u00E3o pode conter nada diferente de Cabe\u00E7alho e Corpo +SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: o atributo encodingStyle n\u00E3o pode aparecer na Falha +SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: o atributo encodingStyle n\u00E3o pode aparecer em um elemento-filho Falha +SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: o atributo encodingStyle n\u00E3o pode aparecer no Cabe\u00E7alho +SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: n\u00E3o \u00E9 poss\u00EDvel informar NULL para addNotUnderstoodHeaderElement +SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: o argumento n\u00E3o pode ser nulo; supportedURIs n\u00E3o pode ser nulo +SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: lista de URIs suportados n\u00E3o pode ficar vazia +SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: os elementos do cabe\u00E7alho SOAP 1.2 devem ser namespace qualificado +#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 +SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: o InputStream n\u00E3o representa uma Mensagem SOAP 1.2 v\u00E1lida +# {0} - element qname +SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: adicionar texto a {0} n\u00E3o \u00E9 v\u00E1lido +SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: o QName informado ao addNotUnderstoodHeaderElement deve ser qualificado por namespace + +#SOAPFault related errors +SAAJ0430.ver1_2.locale.required=SAAJ0430: a localidade \u00E9 obrigat\u00F3rio e n\u00E3o deve ser nula +SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: o atributo "xml:lang" n\u00E3o est\u00E1 presente no elemento Texto +SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: um subc\u00F3digo deve ser qualificado por namespace +#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} +SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text deve estar presente em env:Reason +SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} n\u00E3o \u00E9 um valor de C\u00F3digo padr\u00E3o +SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: n\u00E3o \u00E9 poss\u00EDvel adicionar Detalhe, o Detalhe j\u00E1 existe +SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: vers\u00E3o de SOAP incorreta para o elemento Detalhe, esperava SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_CN.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_CN.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_2 pkg + +SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: \u6B63\u6587\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 +SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody \u4E2D\u4E0D\u5141\u8BB8\u9664\u6545\u969C\u4E4B\u5916\u7684\u4EFB\u4F55\u5176\u4ED6\u5143\u7D20 +SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: \u8BE6\u7EC6\u4FE1\u606F\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 +SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: \u4FE1\u5C01\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 +SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: \u6B63\u6587\u5FC5\u987B\u662F SOAPEnvelope \u4E2D\u7684\u6700\u540E\u4E00\u4E2A\u5143\u7D20 +SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: \u4FE1\u5C01\u4E0D\u80FD\u5305\u542B\u9664\u6807\u5934\u548C\u6B63\u6587\u5916\u7684\u5176\u4ED6\u5185\u5BB9 +SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: \u6545\u969C\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 +SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: \u6545\u969C\u5B50\u5143\u7D20\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 +SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: \u6807\u5934\u4E0D\u80FD\u6709 encodingStyle \u5C5E\u6027 +SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: \u4E0D\u80FD\u5C06\u7A7A\u503C\u4F20\u9012\u7ED9 addNotUnderstoodHeaderElement +SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u53C2\u6570\u4E0D\u80FD\u4E3A\u7A7A\u503C; supportedURIs \u4E0D\u80FD\u4E3A\u7A7A\u503C +SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u652F\u6301\u7684 URI \u7684\u5217\u8868\u4E0D\u80FD\u4E3A\u7A7A +SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 \u6807\u5934\u5143\u7D20\u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4 +#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 +SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream \u4E0D\u8868\u793A\u6709\u6548\u7684 SOAP 1.2 \u6D88\u606F +# {0} - element qname +SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: \u5C06\u6587\u672C\u6DFB\u52A0\u5230{0}\u7684\u64CD\u4F5C\u662F\u975E\u6CD5\u7684 +SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: \u4F20\u9012\u5230 addNotUnderstoodHeaderElement \u7684 QName \u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4 + +#SOAPFault related errors +SAAJ0430.ver1_2.locale.required=SAAJ0430: \u533A\u57DF\u8BBE\u7F6E\u662F\u5FC5\u9700\u7684, \u4E0D\u80FD\u4E3A\u7A7A\u503C +SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: \u6587\u672C\u5143\u7D20\u4E0D\u5B58\u5728 "xml:lang" \u5C5E\u6027 +SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: \u5B50\u4EE3\u7801\u5FC5\u987B\u9650\u5B9A\u540D\u79F0\u7A7A\u95F4 +#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} +SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Reason \u5185\u90E8\u5FC5\u987B\u5B58\u5728 env:Text +SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0}\u4E0D\u662F\u6807\u51C6\u4EE3\u7801\u503C +SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: \u65E0\u6CD5\u6DFB\u52A0\u8BE6\u7EC6\u4FE1\u606F, \u8BE6\u7EC6\u4FE1\u606F\u5DF2\u5B58\u5728 +SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: \u8BE6\u7EC6\u4FE1\u606F\u5143\u7D20\u7684 SOAP \u7248\u672C\u4E0D\u6B63\u786E, \u5E94\u4E3A SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_TW.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/LocalStrings_zh_TW.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,56 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for ver1_2 pkg + +SAAJ0401.ver1_2.no.encodingstyle.in.body=SAAJ0401: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Body \u4E2D +SAAJ0402.ver1_2.only.fault.allowed.in.body=SAAJ0402: SOAPBody \u4E2D\u9664\u4E86 Fault \u4EE5\u5916\u4E0D\u5141\u8A31\u5176\u4ED6\u5143\u7D20 +SAAJ0403.ver1_2.no.encodingStyle.in.detail=SAAJ0403: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Detail \u4E2D +SAAJ0404.ver1_2.no.encodingStyle.in.envelope=SAAJ0404: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Envelope \u4E2D +SAAJ0405.ver1_2.body.must.last.in.envelope=SAAJ0405: Body \u5FC5\u9808\u662F SOAPEnvelope \u4E2D\u7684\u6700\u5F8C\u4E00\u500B\u5143\u7D20 +SAAJ0406.ver1_2.only.header.body.allowed.in.envelope=SAAJ0406: Envelope \u4E0D\u80FD\u5305\u542B Header \u548C Body \u4EE5\u5916\u7684\u4EFB\u4F55\u5167\u5BB9 +SAAJ0407.ver1_2.no.encodingStyle.in.fault=SAAJ0407: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Fault \u4E2D +SAAJ0408.ver1_2.no.encodingStyle.in.fault.child=SAAJ0408: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Fault \u5B50\u5143\u7D20\u4E2D +SAAJ0409.ver1_2.no.encodingstyle.in.header=SAAJ0401: encodingStyle \u5C6C\u6027\u4E0D\u80FD\u51FA\u73FE\u5728 Header \u4E2D +SAAJ0410.ver1_2.no.null.to.addNotUnderstoodHeader=SAAJ0410: \u4E0D\u80FD\u50B3\u9001 NULL \u81F3 addNotUnderstoodHeaderElement +SAAJ0411.ver1_2.no.null.supportedURIs=SAAJ0411: \u5F15\u6578\u4E0D\u80FD\u662F\u7A7A\u503C; supportedURIs \u4E0D\u80FD\u662F\u7A7A\u503C +SAAJ0412.ver1_2.no.empty.list.of.supportedURIs=SAAJ0412: \u652F\u63F4\u7684 URI \u6E05\u55AE\u4E0D\u80FD\u7A7A\u767D +SAAJ0413.ver1_2.header.elems.must.be.ns.qualified=SAAJ0413: SOAP 1.2 \u6A19\u982D\u5143\u7D20\u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593 +#SAAJ0414.ver1_2.actor.unsupported.in.soap1.2=SAAJ0414: Actor not supported by SOAP 1.2 +SAAJ0415.ver1_2.msg.invalid.soap1.2=SAAJ0415: InputStream \u4E0D\u4EE3\u8868\u6709\u6548\u7684 SOAP 1.2 \u8A0A\u606F +# {0} - element qname +SAAJ0416.ver1_2.adding.text.not.legal=SAAJ0416: \u65B0\u589E\u6587\u5B57\u81F3 {0} \u7121\u6548 +SAAJ0417.ver1_2.qname.not.ns.qualified=SAAJ0417: \u50B3\u9001\u81F3 addNotUnderstoodHeaderElement \u7684 QName \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593 + +#SOAPFault related errors +SAAJ0430.ver1_2.locale.required=SAAJ0430: \u5FC5\u9808\u6709\u5730\u5340\u8A2D\u5B9A\u4E14\u4E0D\u5F97\u70BA\u7A7A\u503C +SAAJ0431.ver1_2.xml.lang.missing=SAAJ0431: Text \u5143\u7D20\u4E0A\u6C92\u6709 "xml:lang" \u5C6C\u6027 +SAAJ0432.ver1_2.subcode.not.ns.qualified=SAAJ0432: Subcode \u5FC5\u9808\u662F\u9650\u5B9A\u7684\u547D\u540D\u7A7A\u9593 +#SAAJ0433.ver1_2.could.not.locate.prefix.for.uri=SAAJ0433: Unable to locate prefix for namespace value {0} +SAAJ0434.ver1_2.text.element.not.present=SAAJ0434: env:Text \u5FC5\u9808\u4F4D\u65BC env:Reason \u5167 +SAAJ0435.ver1_2.code.not.standard=SAAJ0435: {0} \u4E0D\u662F\u6A19\u6E96 Code \u503C +SAAJ0436.ver1_2.detail.exists.error=SAAJ0436: \u7121\u6CD5\u65B0\u589E Detail, Detail \u5DF2\u7D93\u5B58\u5728 +SAAJ0437.ver1_2.version.mismatch.error=SAAJ0437: Detail \u5143\u7D20\u7684 SOAP \u7248\u672C\u4E0D\u6B63\u78BA, \u61C9\u8A72\u662F SOAP 1.2 diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Message1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Message1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,92 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import java.io.IOException; +import java.io.InputStream; + +import javax.xml.soap.*; +import javax.xml.stream.XMLStreamReader; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.packaging.mime.internet.ContentType; +import com.sun.xml.internal.messaging.saaj.soap.MessageImpl; + +public class Message1_2Impl extends MessageImpl implements SOAPConstants{ + + public Message1_2Impl() { + super(); + } + + public Message1_2Impl(SOAPMessage msg) { + super(msg); + } + + public Message1_2Impl(boolean isFastInfoset, boolean acceptFastInfoset) { + super(isFastInfoset, acceptFastInfoset); + } + + // unused. can we delete this? - Kohsuke + public Message1_2Impl(MimeHeaders headers, InputStream in) + throws IOException, SOAPExceptionImpl { + super(headers, in); + } + + public Message1_2Impl(MimeHeaders headers, ContentType ct, int stat, InputStream in) + throws SOAPExceptionImpl { + super(headers,ct,stat,in); + } + + public Message1_2Impl(MimeHeaders headers, ContentType ct, int stat, XMLStreamReader reader) + throws SOAPExceptionImpl { + super(headers,ct,stat,reader); + } + + public SOAPPart getSOAPPart() { + if (soapPartImpl == null) + soapPartImpl = new SOAPPart1_2Impl(this); + + return soapPartImpl; + } + + protected boolean isCorrectSoapVersion(int contentTypeId) { + return (contentTypeId & SOAP1_2_FLAG) != 0; + } + + protected String getExpectedContentType() { + return isFastInfoset ? "application/soap+fastinfoset" : "application/soap+xml"; + } + + protected String getExpectedAcceptHeader() { + String accept = "application/soap+xml, text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2"; + return acceptFastInfoset ? ("application/soap+fastinfoset, " + accept) : accept; + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPFactory1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPFactory1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,71 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import javax.xml.soap.Detail; +import javax.xml.soap.SOAPException; +import javax.xml.soap.SOAPFault; + +import javax.xml.namespace.QName; + +import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl; +import com.sun.xml.internal.messaging.saaj.soap.SOAPFactoryImpl; + +public class SOAPFactory1_2Impl extends SOAPFactoryImpl { + protected SOAPDocumentImpl createDocument() { + return (new SOAPPart1_2Impl()).getDocument(); + } + + public Detail createDetail() throws SOAPException { + return new Detail1_2Impl(createDocument()); + } + + public SOAPFault createFault(String reasonText, QName faultCode) + throws SOAPException { + if (faultCode == null) { + throw new IllegalArgumentException("faultCode argument for createFault was passed NULL"); + } + if (reasonText == null) { + throw new IllegalArgumentException("reasonText argument for createFault was passed NULL"); + } + Fault1_2Impl fault = new Fault1_2Impl(createDocument(), null); + fault.setFaultCode(faultCode); + fault.setFaultString(reasonText); + return fault; + } + + public SOAPFault createFault() throws SOAPException { + Fault1_2Impl fault = new Fault1_2Impl(createDocument(), null); + fault.setFaultCode(fault.getDefaultFaultCode()); + fault.setFaultString("Fault string, and possibly fault code, not set"); + return fault; + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPMessageFactory1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPMessageFactory1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author JAX-RPC RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import java.io.IOException; +import java.io.InputStream; + +import javax.xml.soap.*; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import com.sun.xml.internal.messaging.saaj.soap.MessageFactoryImpl; +import com.sun.xml.internal.messaging.saaj.soap.MessageImpl; + +public class SOAPMessageFactory1_2Impl extends MessageFactoryImpl { + + public SOAPMessage createMessage() throws SOAPException { + return new Message1_2Impl(); + } + + public SOAPMessage createMessage(boolean isFastInfoset, + boolean acceptFastInfoset) throws SOAPException + { + return new Message1_2Impl(isFastInfoset, acceptFastInfoset); + } + + public SOAPMessage createMessage(MimeHeaders headers, InputStream in) throws IOException, SOAPExceptionImpl { + + if (headers == null) { + headers = new MimeHeaders(); + } + + if (getContentType(headers) == null) { + headers.setHeader("Content-Type", SOAPConstants.SOAP_1_2_CONTENT_TYPE); + } + + MessageImpl msg = new Message1_2Impl(headers, in); + msg.setLazyAttachments(lazyAttachments); + return msg; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPPart1_2Impl.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/SOAPPart1_2Impl.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,95 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.soap.ver1_2; + +import java.util.logging.Level; +import java.util.logging.Logger; + +import javax.xml.soap.SOAPConstants; +import javax.xml.soap.SOAPException; +import javax.xml.transform.Source; + +import com.sun.xml.internal.messaging.saaj.soap.*; +import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; +import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser; + +public class SOAPPart1_2Impl extends SOAPPartImpl implements SOAPConstants{ + + protected static final Logger log = + Logger.getLogger(SOAPPart1_2Impl.class.getName(), + "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings"); + + public SOAPPart1_2Impl() { + super(); + } + + public SOAPPart1_2Impl(MessageImpl message) { + super(message); + } + + protected String getContentType() { + return "application/soap+xml"; + } + + protected Envelope createEmptyEnvelope(String prefix) throws SOAPException { + return new Envelope1_2Impl(getDocument(), prefix, true, true); + } + + protected Envelope createEnvelopeFromSource() throws SOAPException { + XMLDeclarationParser parser = lookForXmlDecl(); + Source tmp = source; + source = null; + EnvelopeImpl envelope = (EnvelopeImpl)EnvelopeFactory.createEnvelope(tmp, this); + if (!envelope.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) { + log.severe("SAAJ0415.ver1_2.msg.invalid.soap1.2"); + throw new SOAPException("InputStream does not represent a valid SOAP 1.2 Message"); + } + + if (parser != null) { //can be null if source was a DomSource and not StreamSource + if (!omitXmlDecl) { + envelope.setOmitXmlDecl("no"); + envelope.setXmlDecl(parser.getXmlDeclaration()); + envelope.setCharsetEncoding(parser.getEncoding()); + } + } + return envelope; + + } + + protected SOAPPartImpl duplicateType() { + return new SOAPPart1_2Impl(); + } + + @Override + public String getSOAPNamespace() { + return SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE; + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/Base64.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/Base64.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,272 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + + +// Cut & paste from tomcat + +/** + * This class provides encode/decode for RFC 2045 Base64 as + * defined by RFC 2045, N. Freed and N. Borenstein. + * RFC 2045: Multipurpose Internet Mail Extensions (MIME) + * Part One: Format of Internet Message Bodies. Reference + * 1996 Available at: http://www.ietf.org/rfc/rfc2045.txt + * This class is used by XML Schema binary format validation + * + * @author Jeffrey Rodriguez + * @version + */ +public final class Base64 { + + + static private final int BASELENGTH = 255; + static private final int LOOKUPLENGTH = 63; + static private final int TWENTYFOURBITGROUP = 24; + static private final int EIGHTBIT = 8; + static private final int SIXTEENBIT = 16; + static private final int SIXBIT = 6; + static private final int FOURBYTE = 4; + + + static private final byte PAD = ( byte ) '='; + static private byte [] base64Alphabet = new byte[BASELENGTH]; + static private byte [] lookUpBase64Alphabet = new byte[LOOKUPLENGTH]; + + static { + + for (int i = 0; i= 'A'; i-- ) { + base64Alphabet[i] = (byte) (i-'A'); + } + for ( int i = 'z'; i>= 'a'; i--) { + base64Alphabet[i] = (byte) ( i-'a' + 26); + } + + for ( int i = '9'; i >= '0'; i--) { + base64Alphabet[i] = (byte) (i-'0' + 52); + } + + base64Alphabet['+'] = 62; + base64Alphabet['/'] = 63; + + for (int i = 0; i<=25; i++ ) + lookUpBase64Alphabet[i] = (byte) ('A'+i ); + + for (int i = 26, j = 0; i<=51; i++, j++ ) + lookUpBase64Alphabet[i] = (byte) ('a'+ j ); + + for (int i = 52, j = 0; i<=61; i++, j++ ) + lookUpBase64Alphabet[i] = (byte) ('0' + j ); + + } + + + static boolean isBase64( byte octect ) { + //shall we ignore white space? JEFF?? + return(octect == PAD || base64Alphabet[octect] != -1 ); + } + + + static boolean isArrayByteBase64( byte[] arrayOctect ) { + int length = arrayOctect.length; + if ( length == 0 ) + return false; + for ( int i=0; i < length; i++ ) { + if ( Base64.isBase64( arrayOctect[i] ) == false) + return false; + } + return true; + } + + /** + * Encodes hex octects into Base64 + * + * @param binaryData Array containing binaryData + * @return Encoded Base64 array + */ + public static byte[] encode( byte[] binaryData ) { + int lengthDataBits = binaryData.length*EIGHTBIT; + int fewerThan24bits = lengthDataBits%TWENTYFOURBITGROUP; + int numberTriplets = lengthDataBits/TWENTYFOURBITGROUP; + byte encodedData[] = null; + + + if ( fewerThan24bits != 0 ) //data not divisible by 24 bit + encodedData = new byte[ (numberTriplets + 1 )*4 ]; + else // 16 or 8 bit + encodedData = new byte[ numberTriplets*4 ]; + + byte k=0, l=0, b1=0,b2=0,b3=0; + + int encodedIndex = 0; + int dataIndex = 0; + int i = 0; + for ( i = 0; i>2 ]; + encodedData[encodedIndex+1] = lookUpBase64Alphabet[(b2 >>4 ) | +( k<<4 )]; + encodedData[encodedIndex+2] = lookUpBase64Alphabet[ (l <<2 ) | +( b3>>6)]; + encodedData[encodedIndex+3] = lookUpBase64Alphabet[ b3 & 0x3f ]; + } + + // form integral number of 6-bit groups + dataIndex = i*3; + encodedIndex = i*4; + if (fewerThan24bits == EIGHTBIT ) { + b1 = binaryData[dataIndex]; + k = (byte) ( b1 &0x03 ); + encodedData[encodedIndex] = lookUpBase64Alphabet[ b1 >>2 ]; + encodedData[encodedIndex + 1] = lookUpBase64Alphabet[ k<<4 ]; + encodedData[encodedIndex + 2] = PAD; + encodedData[encodedIndex + 3] = PAD; + } else if ( fewerThan24bits == SIXTEENBIT ) { + + b1 = binaryData[dataIndex]; + b2 = binaryData[dataIndex +1 ]; + l = ( byte ) ( b2 &0x0f ); + k = ( byte ) ( b1 &0x03 ); + encodedData[encodedIndex] = lookUpBase64Alphabet[ b1 >>2 ]; + encodedData[encodedIndex + 1] = lookUpBase64Alphabet[ (b2 >>4 ) +| ( k<<4 )]; + encodedData[encodedIndex + 2] = lookUpBase64Alphabet[ l<<2 ]; + encodedData[encodedIndex + 3] = PAD; + } + return encodedData; + } + + + /** + * Decodes Base64 data into octects + * + * @param binaryData Byte array containing Base64 data + * @return Array containind decoded data. + */ + public byte[] decode( byte[] base64Data ) { + int numberQuadruple = base64Data.length/FOURBYTE; + byte decodedData[] = null; + byte b1=0,b2=0,b3=0, b4=0, marker0=0, marker1=0; + + // Throw away anything not in base64Data + // Adjust size + + int encodedIndex = 0; + int dataIndex = 0; + decodedData = new byte[ numberQuadruple*3 + 1 ]; + + for (int i = 0; i>4 ) ; + decodedData[encodedIndex+1] = (byte)(((b2 & 0xf)<<4 ) |( +(b3>>2) & 0xf) ); + decodedData[encodedIndex+2] = (byte)( b3<<6 | b4 ); + } else if ( marker0 == PAD ) { //Two PAD e.g. 3c[Pad][Pad] + decodedData[encodedIndex] = (byte)( b1 <<2 | b2>>4 ) ; + decodedData[encodedIndex+1] = (byte)((b2 & 0xf)<<4 ); + decodedData[encodedIndex+2] = (byte) 0; + } else if ( marker1 == PAD ) { //One PAD e.g. 3cQ[Pad] + b3 = base64Alphabet[ marker0 ]; + + decodedData[encodedIndex] = (byte)( b1 <<2 | b2>>4 ); + decodedData[encodedIndex+1] = (byte)(((b2 & 0xf)<<4 ) |( +(b3>>2) & 0xf) ); + decodedData[encodedIndex+2] = (byte)( b3<<6); + } + encodedIndex += 3; + } + return decodedData; + + } + + static final int base64[]= { + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 62, 64, 64, 64, 63, + 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 64, 64, 64, 64, 64, 64, + 64, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, + 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 64, 64, 64, 64, 64, + 64, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, + 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, + 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64 + }; + + public static String base64Decode( String orig ) { + char chars[]=orig.toCharArray(); + StringBuffer sb=new StringBuffer(); + int i=0; + + int shift = 0; // # of excess bits stored in accum + int acc = 0; + + for (i=0; i= 64 ) { + if( chars[i] != '=' ) + System.out.println("Wrong char in base64: " + chars[i]); + } else { + acc= ( acc << 6 ) | v; + shift += 6; + if ( shift >= 8 ) { + shift -= 8; + sb.append( (char) ((acc >> shift) & 0xff)); + } + } + } + return sb.toString(); + } + + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteInputStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteInputStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,65 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + +import java.io.ByteArrayInputStream; +import java.io.IOException; + +// This class just gives access to the underlying buffer without copying. + +public class ByteInputStream extends ByteArrayInputStream { + private static final byte[] EMPTY_ARRAY = new byte[0]; + + public ByteInputStream() { + this(EMPTY_ARRAY, 0); + } + + public ByteInputStream(byte buf[], int length) { + super(buf, 0, length); + } + + public ByteInputStream(byte buf[], int offset, int length) { + super(buf, offset, length); + } + + public byte[] getBytes() { + return buf; + } + + public int getCount() { + return count; + } + + public void close() throws IOException { + reset(); + } + + public void setBuf(byte[] buf) { + this.buf = buf; + this.pos = 0; + this.count = buf.length; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteOutputStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ByteOutputStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,180 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + +import java.io.BufferedOutputStream; +import java.io.IOException; +import java.io.OutputStream; +import java.io.InputStream; +import java.io.ByteArrayInputStream; + +/** + * Customized {@link BufferedOutputStream}. + * + *

    + * Compared to {@link BufferedOutputStream}, + * this class: + * + *

      + *
    1. doesn't do synchronization + *
    2. allows access to the raw buffer + *
    3. almost no parameter check + */ +public final class ByteOutputStream extends OutputStream { + /** + * The buffer where data is stored. + */ + protected byte[] buf; + + /** + * The number of valid bytes in the buffer. + */ + protected int count = 0; + + public ByteOutputStream() { + this(1024); + } + + public ByteOutputStream(int size) { + buf = new byte[size]; + } + + /** + * Copies all the bytes from this input into this buffer. + */ + public void write(InputStream in) throws IOException { + if (in instanceof ByteArrayInputStream) { + int size = in.available(); + ensureCapacity(size); + count += in.read(buf,count,size); + return; + } + while(true) { + int cap = buf.length-count; + int sz = in.read(buf,count,cap); + if(sz<0) return; // hit EOS + + count += sz; + if(cap==sz) + // the buffer filled up. double the buffer + ensureCapacity(count); + } + } + + public void write(int b) { + ensureCapacity(1); + buf[count] = (byte) b; + count++; + } + + /** + * Ensure that the buffer has at least this much space. + */ + private void ensureCapacity(int space) { + int newcount = space + count; + if (newcount > buf.length) { + byte[] newbuf = new byte[Math.max(buf.length << 1, newcount)]; + System.arraycopy(buf, 0, newbuf, 0, count); + buf = newbuf; + } + } + + public void write(byte[] b, int off, int len) { + ensureCapacity(len); + System.arraycopy(b, off, buf, count, len); + count += len; + } + + public void write(byte[] b) { + write(b, 0, b.length); + } + + /** + * Writes a string as ASCII string. + */ + public void writeAsAscii(String s) { + int len = s.length(); + + ensureCapacity(len); + + int ptr = count; + for( int i=0; iDOMDocumentParser.parse() method via reflection. + */ + static Method fiDOMDocumentParser_parse; + + /** + * FI DOMDocumentSerializer constructor using reflection. + */ + static Constructor fiDOMDocumentSerializer_new; + + /** + * FI FastInfosetSource.serialize(Document) method via reflection. + */ + static Method fiDOMDocumentSerializer_serialize; + + /** + * FI FastInfosetSource.setOutputStream(OutputStream) method via reflection. + */ + static Method fiDOMDocumentSerializer_setOutputStream; + + /** + * FI FastInfosetSource constructor using reflection. + */ + static Class fiFastInfosetSource_class; + + /** + * FI FastInfosetSource constructor using reflection. + */ + static Constructor fiFastInfosetSource_new; + + /** + * FI FastInfosetSource.getInputStream() method via reflection. + */ + static Method fiFastInfosetSource_getInputStream; + + /** + * FI FastInfosetSource.setInputSTream() method via reflection. + */ + static Method fiFastInfosetSource_setInputStream; + + /** + * FI FastInfosetResult constructor using reflection. + */ + static Constructor fiFastInfosetResult_new; + + /** + * FI FastInfosetResult.getOutputSTream() method via reflection. + */ + static Method fiFastInfosetResult_getOutputStream; + + static { + try { + Class clazz = Class.forName("com.sun.xml.internal.fastinfoset.dom.DOMDocumentParser"); + fiDOMDocumentParser_new = clazz.getConstructor((Class[]) null); + fiDOMDocumentParser_parse = clazz.getMethod("parse", + new Class[] { org.w3c.dom.Document.class, java.io.InputStream.class }); + + clazz = Class.forName("com.sun.xml.internal.fastinfoset.dom.DOMDocumentSerializer"); + fiDOMDocumentSerializer_new = clazz.getConstructor((Class[])null); + fiDOMDocumentSerializer_serialize = clazz.getMethod("serialize", + new Class[] { org.w3c.dom.Node.class }); + fiDOMDocumentSerializer_setOutputStream = clazz.getMethod("setOutputStream", + new Class[] { java.io.OutputStream.class }); + + fiFastInfosetSource_class = clazz = Class.forName("com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource"); + fiFastInfosetSource_new = clazz.getConstructor( + new Class[] { java.io.InputStream.class }); + fiFastInfosetSource_getInputStream = clazz.getMethod("getInputStream", (Class[]) null); + fiFastInfosetSource_setInputStream = clazz.getMethod("setInputStream", + new Class[] { java.io.InputStream.class }); + + clazz = Class.forName("com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetResult"); + fiFastInfosetResult_new = clazz.getConstructor( + new Class[] { java.io.OutputStream.class }); + fiFastInfosetResult_getOutputStream = clazz.getMethod("getOutputStream", (Class[]) null); + } + catch (Exception e) { + // falls through + } + } + + // -- DOMDocumentParser ---------------------------------------------- + + public static Object DOMDocumentParser_new() throws Exception { + if (fiDOMDocumentParser_new == null) { + throw new RuntimeException("Unable to locate Fast Infoset implementation"); + } + return fiDOMDocumentParser_new.newInstance((Object[])null); + } + + public static void DOMDocumentParser_parse(Object parser, + Document d, InputStream s) throws Exception + { + if (fiDOMDocumentParser_parse == null) { + throw new RuntimeException("Unable to locate Fast Infoset implementation"); + } + fiDOMDocumentParser_parse.invoke(parser, new Object[] { d, s }); + } + + // -- DOMDocumentSerializer------------------------------------------- + + public static Object DOMDocumentSerializer_new() throws Exception { + if (fiDOMDocumentSerializer_new == null) { + throw new RuntimeException("Unable to locate Fast Infoset implementation"); + } + return fiDOMDocumentSerializer_new.newInstance((Object[])null); + } + + public static void DOMDocumentSerializer_serialize(Object serializer, Node node) + throws Exception + { + if (fiDOMDocumentSerializer_serialize == null) { + throw new RuntimeException("Unable to locate Fast Infoset implementation"); + } + fiDOMDocumentSerializer_serialize.invoke(serializer, new Object[] { node }); + } + + public static void DOMDocumentSerializer_setOutputStream(Object serializer, + OutputStream os) throws Exception + { + if (fiDOMDocumentSerializer_setOutputStream == null) { + throw new RuntimeException("Unable to locate Fast Infoset implementation"); + } + fiDOMDocumentSerializer_setOutputStream.invoke(serializer, new Object[] { os }); + } + + // -- FastInfosetSource ---------------------------------------------- + + public static boolean isFastInfosetSource(Source source) { + return source.getClass().getName().equals( + "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetSource"); + } + + public static Class getFastInfosetSource_class() { + if (fiFastInfosetSource_class == null) { + throw new RuntimeException("Unable to locate Fast Infoset implementation"); + } + + return fiFastInfosetSource_class; + } + public static Source FastInfosetSource_new(InputStream is) + throws Exception + { + if (fiFastInfosetSource_new == null) { + throw new RuntimeException("Unable to locate Fast Infoset implementation"); + } + return (Source) fiFastInfosetSource_new.newInstance(new Object[] { is }); + } + + public static InputStream FastInfosetSource_getInputStream(Source source) + throws Exception + { + if (fiFastInfosetSource_getInputStream == null) { + throw new RuntimeException("Unable to locate Fast Infoset implementation"); + } + return (InputStream) fiFastInfosetSource_getInputStream.invoke(source, (Object[])null); + } + + public static void FastInfosetSource_setInputStream(Source source, + InputStream is) throws Exception + { + if (fiFastInfosetSource_setInputStream == null) { + throw new RuntimeException("Unable to locate Fast Infoset implementation"); + } + fiFastInfosetSource_setInputStream.invoke(source, new Object[] { is }); + } + + // -- FastInfosetResult ---------------------------------------------- + + public static boolean isFastInfosetResult(Result result) { + return result.getClass().getName().equals( + "com.sun.xml.internal.org.jvnet.fastinfoset.FastInfosetResult"); + } + + public static Result FastInfosetResult_new(OutputStream os) + throws Exception + { + if (fiFastInfosetResult_new == null) { + throw new RuntimeException("Unable to locate Fast Infoset implementation"); + } + return (Result) fiFastInfosetResult_new.newInstance(new Object[] { os }); + } + + public static OutputStream FastInfosetResult_getOutputStream(Result result) + throws Exception + { + if (fiFastInfosetResult_getOutputStream == null) { + throw new RuntimeException("Unable to locate Fast Infoset implementation"); + } + return (OutputStream) fiFastInfosetResult_getOutputStream.invoke(result, (Object[])null); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/FinalArrayList.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/FinalArrayList.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,47 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * {@link ArrayList} with a final marker to help JIT. + * @author Kohsuke Kawaguchi + */ +public final class FinalArrayList extends ArrayList { + public FinalArrayList(int initialCapacity) { + super(initialCapacity); + } + + public FinalArrayList() { + } + + public FinalArrayList(Collection collection) { + super(collection); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/JAXMStreamSource.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/JAXMStreamSource.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,92 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + +import java.io.*; + +import javax.xml.transform.stream.StreamSource; + + +/** + * + * @author Anil Vijendran + */ +public class JAXMStreamSource extends StreamSource { + InputStream in; + Reader reader; + private static final boolean lazyContentLength; + static { + lazyContentLength = SAAJUtil.getSystemBoolean("saaj.lazy.contentlength"); + } + public JAXMStreamSource(InputStream is) throws IOException { + if (lazyContentLength) { + in = is; + } else if (is instanceof ByteInputStream) { + this.in = (ByteInputStream) is; + } else { + ByteOutputStream bout = null; + try { + bout = new ByteOutputStream(); + bout.write(is); + this.in = bout.newInputStream(); + } finally { + if (bout != null) + bout.close(); + } + } + } + + public JAXMStreamSource(Reader rdr) throws IOException { + + if (lazyContentLength) { + this.reader = rdr; + return; + } + CharWriter cout = new CharWriter(); + char[] temp = new char[1024]; + int len; + + while (-1 != (len = rdr.read(temp))) + cout.write(temp, 0, len); + + this.reader = new CharReader(cout.getChars(), cout.getCount()); + } + + public InputStream getInputStream() { + return in; + } + + public Reader getReader() { + return reader; + } + + public void reset() throws IOException { + if (in != null) + in.reset(); + if (reader != null) + reader.reset(); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/JaxmURI.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/JaxmURI.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,1380 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + +// Imported from: org.apache.xerces.util +// Needed to work around differences in JDK1.2 and 1.3 and deal with userInfo + +import java.io.IOException; +import java.io.Serializable; + + +/********************************************************************** +* A class to represent a Uniform Resource Identifier (URI). This class +* is designed to handle the parsing of URIs and provide access to +* the various components (scheme, host, port, userinfo, path, query +* string and fragment) that may constitute a URI. +*

      +* Parsing of a URI specification is done according to the URI +* syntax described in RFC 2396 +* . Every URI consists +* of a scheme, followed by a colon (':'), followed by a scheme-specific +* part. For URIs that follow the "generic URI" syntax, the scheme- +* specific part begins with two slashes ("//") and may be followed +* by an authority segment (comprised of user information, host, and +* port), path segment, query segment and fragment. Note that RFC 2396 +* no longer specifies the use of the parameters segment and excludes +* the "user:password" syntax as part of the authority segment. If +* "user:password" appears in a URI, the entire user/password string +* is stored as userinfo. +*

      +* For URIs that do not follow the "generic URI" syntax (e.g. mailto), +* the entire scheme-specific part is treated as the "path" portion +* of the URI. +*

      +* Note that, unlike the java.net.URL class, this class does not provide +* any built-in network access functionality nor does it provide any +* scheme-specific functionality (for example, it does not know a +* default port for a specific scheme). Rather, it only knows the +* grammar and basic set of operations that can be applied to a URI. +* +* @version +* +**********************************************************************/ + public class JaxmURI implements Serializable { + + /******************************************************************* + * MalformedURIExceptions are thrown in the process of building a URI + * or setting fields on a URI when an operation would result in an + * invalid URI specification. + * + ********************************************************************/ + public static class MalformedURIException extends IOException { + + /****************************************************************** + * Constructs a MalformedURIException with no specified + * detail message. + ******************************************************************/ + public MalformedURIException() { + super(); + } + + /***************************************************************** + * Constructs a MalformedURIException with the + * specified detail message. + * + * @param p_msg the detail message. + ******************************************************************/ + public MalformedURIException(String p_msg) { + super(p_msg); + } + } + + /** reserved characters */ + private static final String RESERVED_CHARACTERS = ";/?:@&=+$,"; + + /** URI punctuation mark characters - these, combined with + alphanumerics, constitute the "unreserved" characters */ + private static final String MARK_CHARACTERS = "-_.!~*'() "; + + /** scheme can be composed of alphanumerics and these characters */ + private static final String SCHEME_CHARACTERS = "+-."; + + /** userinfo can be composed of unreserved, escaped and these + characters */ + private static final String USERINFO_CHARACTERS = ";:&=+$,"; + + /** Stores the scheme (usually the protocol) for this URI. */ + private String m_scheme = null; + + /** If specified, stores the userinfo for this URI; otherwise null */ + private String m_userinfo = null; + + /** If specified, stores the host for this URI; otherwise null */ + private String m_host = null; + + /** If specified, stores the port for this URI; otherwise -1 */ + private int m_port = -1; + + /** If specified, stores the path for this URI; otherwise null */ + private String m_path = null; + + /** If specified, stores the query string for this URI; otherwise + null. */ + private String m_queryString = null; + + /** If specified, stores the fragment for this URI; otherwise null */ + private String m_fragment = null; + + private static boolean DEBUG = false; + + /** + * Construct a new and uninitialized URI. + */ + public JaxmURI() { + } + + /** + * Construct a new URI from another URI. All fields for this URI are + * set equal to the fields of the URI passed in. + * + * @param p_other the URI to copy (cannot be null) + */ + public JaxmURI(JaxmURI p_other) { + initialize(p_other); + } + + /** + * Construct a new URI from a URI specification string. If the + * specification follows the "generic URI" syntax, (two slashes + * following the first colon), the specification will be parsed + * accordingly - setting the scheme, userinfo, host,port, path, query + * string and fragment fields as necessary. If the specification does + * not follow the "generic URI" syntax, the specification is parsed + * into a scheme and scheme-specific part (stored as the path) only. + * + * @param p_uriSpec the URI specification string (cannot be null or + * empty) + * + * @exception MalformedURIException if p_uriSpec violates any syntax + * rules + */ + public JaxmURI(String p_uriSpec) throws MalformedURIException { + this((JaxmURI)null, p_uriSpec); + } + + /** + * Construct a new URI from a base URI and a URI specification string. + * The URI specification string may be a relative URI. + * + * @param p_base the base URI (cannot be null if p_uriSpec is null or + * empty) + * @param p_uriSpec the URI specification string (cannot be null or + * empty if p_base is null) + * + * @exception MalformedURIException if p_uriSpec violates any syntax + * rules + */ + public JaxmURI(JaxmURI p_base, String p_uriSpec) throws MalformedURIException { + initialize(p_base, p_uriSpec); + } + + /** + * Construct a new URI that does not follow the generic URI syntax. + * Only the scheme and scheme-specific part (stored as the path) are + * initialized. + * + * @param p_scheme the URI scheme (cannot be null or empty) + * @param p_schemeSpecificPart the scheme-specific part (cannot be + * null or empty) + * + * @exception MalformedURIException if p_scheme violates any + * syntax rules + */ + public JaxmURI(String p_scheme, String p_schemeSpecificPart) + throws MalformedURIException { + if (p_scheme == null || p_scheme.trim().length() == 0) { + throw new MalformedURIException( + "Cannot construct URI with null/empty scheme!"); + } + if (p_schemeSpecificPart == null || + p_schemeSpecificPart.trim().length() == 0) { + throw new MalformedURIException( + "Cannot construct URI with null/empty scheme-specific part!"); + } + setScheme(p_scheme); + setPath(p_schemeSpecificPart); + } + + /** + * Construct a new URI that follows the generic URI syntax from its + * component parts. Each component is validated for syntax and some + * basic semantic checks are performed as well. See the individual + * setter methods for specifics. + * + * @param p_scheme the URI scheme (cannot be null or empty) + * @param p_host the hostname or IPv4 address for the URI + * @param p_path the URI path - if the path contains '?' or '#', + * then the query string and/or fragment will be + * set from the path; however, if the query and + * fragment are specified both in the path and as + * separate parameters, an exception is thrown + * @param p_queryString the URI query string (cannot be specified + * if path is null) + * @param p_fragment the URI fragment (cannot be specified if path + * is null) + * + * @exception MalformedURIException if any of the parameters violates + * syntax rules or semantic rules + */ + public JaxmURI(String p_scheme, String p_host, String p_path, + String p_queryString, String p_fragment) + throws MalformedURIException { + this(p_scheme, null, p_host, -1, p_path, p_queryString, p_fragment); + } + + /** + * Construct a new URI that follows the generic URI syntax from its + * component parts. Each component is validated for syntax and some + * basic semantic checks are performed as well. See the individual + * setter methods for specifics. + * + * @param p_scheme the URI scheme (cannot be null or empty) + * @param p_userinfo the URI userinfo (cannot be specified if host + * is null) + * @param p_host the hostname or IPv4 address for the URI + * @param p_port the URI port (may be -1 for "unspecified"; cannot + * be specified if host is null) + * @param p_path the URI path - if the path contains '?' or '#', + * then the query string and/or fragment will be + * set from the path; however, if the query and + * fragment are specified both in the path and as + * separate parameters, an exception is thrown + * @param p_queryString the URI query string (cannot be specified + * if path is null) + * @param p_fragment the URI fragment (cannot be specified if path + * is null) + * + * @exception MalformedURIException if any of the parameters violates + * syntax rules or semantic rules + */ + public JaxmURI(String p_scheme, String p_userinfo, + String p_host, int p_port, String p_path, + String p_queryString, String p_fragment) + throws MalformedURIException { + if (p_scheme == null || p_scheme.trim().length() == 0) { + throw new MalformedURIException("Scheme is required!"); + } + + if (p_host == null) { + if (p_userinfo != null) { + throw new MalformedURIException( + "Userinfo may not be specified if host is not specified!"); + } + if (p_port != -1) { + throw new MalformedURIException( + "Port may not be specified if host is not specified!"); + } + } + + if (p_path != null) { + if (p_path.indexOf('?') != -1 && p_queryString != null) { + throw new MalformedURIException( + "Query string cannot be specified in path and query string!"); + } + + if (p_path.indexOf('#') != -1 && p_fragment != null) { + throw new MalformedURIException( + "Fragment cannot be specified in both the path and fragment!"); + } + } + + setScheme(p_scheme); + setHost(p_host); + setPort(p_port); + setUserinfo(p_userinfo); + setPath(p_path); + setQueryString(p_queryString); + setFragment(p_fragment); + } + + /** + * Initialize all fields of this URI from another URI. + * + * @param p_other the URI to copy (cannot be null) + */ + private void initialize(JaxmURI p_other) { + m_scheme = p_other.getScheme(); + m_userinfo = p_other.getUserinfo(); + m_host = p_other.getHost(); + m_port = p_other.getPort(); + m_path = p_other.getPath(); + m_queryString = p_other.getQueryString(); + m_fragment = p_other.getFragment(); + } + + /** + * Initializes this URI from a base URI and a URI specification string. + * See RFC 2396 Section 4 and Appendix B for specifications on parsing + * the URI and Section 5 for specifications on resolving relative URIs + * and relative paths. + * + * @param p_base the base URI (may be null if p_uriSpec is an absolute + * URI) + * @param p_uriSpec the URI spec string which may be an absolute or + * relative URI (can only be null/empty if p_base + * is not null) + * + * @exception MalformedURIException if p_base is null and p_uriSpec + * is not an absolute URI or if + * p_uriSpec violates syntax rules + */ + private void initialize(JaxmURI p_base, String p_uriSpec) + throws MalformedURIException { + if (p_base == null && + (p_uriSpec == null || p_uriSpec.trim().length() == 0)) { + throw new MalformedURIException( + "Cannot initialize URI with empty parameters."); + } + + // just make a copy of the base if spec is empty + if (p_uriSpec == null || p_uriSpec.trim().length() == 0) { + initialize(p_base); + return; + } + + String uriSpec = p_uriSpec.trim(); + int uriSpecLen = uriSpec.length(); + int index = 0; + + // Check for scheme, which must be before `/'. Also handle names with + // DOS drive letters ('D:'), so 1-character schemes are not allowed. + int colonIdx = uriSpec.indexOf(':'); + int slashIdx = uriSpec.indexOf('/'); + if ((colonIdx < 2) || (colonIdx > slashIdx && slashIdx != -1)) { + int fragmentIdx = uriSpec.indexOf('#'); + // A standalone base is a valid URI according to spec + if (p_base == null && fragmentIdx != 0 ) { + throw new MalformedURIException("No scheme found in URI."); + } + } + else { + initializeScheme(uriSpec); + index = m_scheme.length()+1; + } + + // two slashes means generic URI syntax, so we get the authority + if (((index+1) < uriSpecLen) && + (uriSpec.substring(index).startsWith("//"))) { + index += 2; + int startPos = index; + + // get authority - everything up to path, query or fragment + char testChar = '\0'; + while (index < uriSpecLen) { + testChar = uriSpec.charAt(index); + if (testChar == '/' || testChar == '?' || testChar == '#') { + break; + } + index++; + } + + // if we found authority, parse it out, otherwise we set the + // host to empty string + if (index > startPos) { + initializeAuthority(uriSpec.substring(startPos, index)); + } + else { + m_host = ""; + } + } + + initializePath(uriSpec.substring(index)); + + // Resolve relative URI to base URI - see RFC 2396 Section 5.2 + // In some cases, it might make more sense to throw an exception + // (when scheme is specified is the string spec and the base URI + // is also specified, for example), but we're just following the + // RFC specifications + if (p_base != null) { + + // check to see if this is the current doc - RFC 2396 5.2 #2 + // note that this is slightly different from the RFC spec in that + // we don't include the check for query string being null + // - this handles cases where the urispec is just a query + // string or a fragment (e.g. "?y" or "#s") - + // see which + // identified this as a bug in the RFC + if (m_path.length() == 0 && m_scheme == null && + m_host == null) { + m_scheme = p_base.getScheme(); + m_userinfo = p_base.getUserinfo(); + m_host = p_base.getHost(); + m_port = p_base.getPort(); + m_path = p_base.getPath(); + + if (m_queryString == null) { + m_queryString = p_base.getQueryString(); + } + return; + } + + // check for scheme - RFC 2396 5.2 #3 + // if we found a scheme, it means absolute URI, so we're done + if (m_scheme == null) { + m_scheme = p_base.getScheme(); + } + else { + return; + } + + // check for authority - RFC 2396 5.2 #4 + // if we found a host, then we've got a network path, so we're done + if (m_host == null) { + m_userinfo = p_base.getUserinfo(); + m_host = p_base.getHost(); + m_port = p_base.getPort(); + } + else { + return; + } + + // check for absolute path - RFC 2396 5.2 #5 + if (m_path.length() > 0 && + m_path.startsWith("/")) { + return; + } + + // if we get to this point, we need to resolve relative path + // RFC 2396 5.2 #6 + String path = ""; + String basePath = p_base.getPath(); + + // 6a - get all but the last segment of the base URI path + if (basePath != null) { + int lastSlash = basePath.lastIndexOf('/'); + if (lastSlash != -1) { + path = basePath.substring(0, lastSlash+1); + } + } + + // 6b - append the relative URI path + path = path.concat(m_path); + + // 6c - remove all "./" where "." is a complete path segment + index = -1; + while ((index = path.indexOf("/./")) != -1) { + path = path.substring(0, index+1).concat(path.substring(index+3)); + } + + // 6d - remove "." if path ends with "." as a complete path segment + if (path.endsWith("/.")) { + path = path.substring(0, path.length()-1); + } + + // 6e - remove all "/../" where "" is a complete + // path segment not equal to ".." + index = 1; + int segIndex = -1; + String tempString = null; + + while ((index = path.indexOf("/../", index)) > 0) { + tempString = path.substring(0, path.indexOf("/../")); + segIndex = tempString.lastIndexOf('/'); + if (segIndex != -1) { + if (!tempString.substring(segIndex++).equals("..")) { + path = path.substring(0, segIndex).concat(path.substring(index+4)); + } + else + index += 4; + } + else + index += 4; + } + + // 6f - remove ending "/.." where "" is a + // complete path segment + if (path.endsWith("/..")) { + tempString = path.substring(0, path.length()-3); + segIndex = tempString.lastIndexOf('/'); + if (segIndex != -1) { + path = path.substring(0, segIndex+1); + } + } + m_path = path; + } + } + + /** + * Initialize the scheme for this URI from a URI string spec. + * + * @param p_uriSpec the URI specification (cannot be null) + * + * @exception MalformedURIException if URI does not have a conformant + * scheme + */ + private void initializeScheme(String p_uriSpec) + throws MalformedURIException { + int uriSpecLen = p_uriSpec.length(); + int index = 0; + String scheme = null; + char testChar = '\0'; + + while (index < uriSpecLen) { + testChar = p_uriSpec.charAt(index); + if (testChar == ':' || testChar == '/' || + testChar == '?' || testChar == '#') { + break; + } + index++; + } + scheme = p_uriSpec.substring(0, index); + + if (scheme.length() == 0) { + throw new MalformedURIException("No scheme found in URI."); + } + else { + setScheme(scheme); + } + } + + /** + * Initialize the authority (userinfo, host and port) for this + * URI from a URI string spec. + * + * @param p_uriSpec the URI specification (cannot be null) + * + * @exception MalformedURIException if p_uriSpec violates syntax rules + */ + private void initializeAuthority(String p_uriSpec) + throws MalformedURIException { + int index = 0; + int start = 0; + int end = p_uriSpec.length(); + char testChar = '\0'; + String userinfo = null; + + // userinfo is everything up @ + if (p_uriSpec.indexOf('@', start) != -1) { + while (index < end) { + testChar = p_uriSpec.charAt(index); + if (testChar == '@') { + break; + } + index++; + } + userinfo = p_uriSpec.substring(start, index); + index++; + } + + // host is everything up to ':' + String host = null; + start = index; + while (index < end) { + testChar = p_uriSpec.charAt(index); + if (testChar == ':') { + break; + } + index++; + } + host = p_uriSpec.substring(start, index); + int port = -1; + if (host.length() > 0) { + // port + if (testChar == ':') { + index++; + start = index; + while (index < end) { + index++; + } + String portStr = p_uriSpec.substring(start, index); + if (portStr.length() > 0) { + for (int i = 0; i < portStr.length(); i++) { + if (!isDigit(portStr.charAt(i))) { + throw new MalformedURIException( + portStr + + " is invalid. Port should only contain digits!"); + } + } + try { + port = Integer.parseInt(portStr); + } + catch (NumberFormatException nfe) { + // can't happen + } + } + } + } + setHost(host); + setPort(port); + setUserinfo(userinfo); + } + + /** + * Initialize the path for this URI from a URI string spec. + * + * @param p_uriSpec the URI specification (cannot be null) + * + * @exception MalformedURIException if p_uriSpec violates syntax rules + */ + private void initializePath(String p_uriSpec) + throws MalformedURIException { + if (p_uriSpec == null) { + throw new MalformedURIException( + "Cannot initialize path from null string!"); + } + + int index = 0; + int start = 0; + int end = p_uriSpec.length(); + char testChar = '\0'; + + // path - everything up to query string or fragment + while (index < end) { + testChar = p_uriSpec.charAt(index); + if (testChar == '?' || testChar == '#') { + break; + } + // check for valid escape sequence + if (testChar == '%') { + if (index+2 >= end || + !isHex(p_uriSpec.charAt(index+1)) || + !isHex(p_uriSpec.charAt(index+2))) { + throw new MalformedURIException( + "Path contains invalid escape sequence!"); + } + } + else if (!isReservedCharacter(testChar) && + !isUnreservedCharacter(testChar)) { + throw new MalformedURIException( + "Path contains invalid character: " + testChar); + } + index++; + } + m_path = p_uriSpec.substring(start, index); + + // query - starts with ? and up to fragment or end + if (testChar == '?') { + index++; + start = index; + while (index < end) { + testChar = p_uriSpec.charAt(index); + if (testChar == '#') { + break; + } + if (testChar == '%') { + if (index+2 >= end || + !isHex(p_uriSpec.charAt(index+1)) || + !isHex(p_uriSpec.charAt(index+2))) { + throw new MalformedURIException( + "Query string contains invalid escape sequence!"); + } + } + else if (!isReservedCharacter(testChar) && + !isUnreservedCharacter(testChar)) { + throw new MalformedURIException( + "Query string contains invalid character:" + testChar); + } + index++; + } + m_queryString = p_uriSpec.substring(start, index); + } + + // fragment - starts with # + if (testChar == '#') { + index++; + start = index; + while (index < end) { + testChar = p_uriSpec.charAt(index); + + if (testChar == '%') { + if (index+2 >= end || + !isHex(p_uriSpec.charAt(index+1)) || + !isHex(p_uriSpec.charAt(index+2))) { + throw new MalformedURIException( + "Fragment contains invalid escape sequence!"); + } + } + else if (!isReservedCharacter(testChar) && + !isUnreservedCharacter(testChar)) { + throw new MalformedURIException( + "Fragment contains invalid character:"+testChar); + } + index++; + } + m_fragment = p_uriSpec.substring(start, index); + } + } + + /** + * Get the scheme for this URI. + * + * @return the scheme for this URI + */ + public String getScheme() { + return m_scheme; + } + + /** + * Get the scheme-specific part for this URI (everything following the + * scheme and the first colon). See RFC 2396 Section 5.2 for spec. + * + * @return the scheme-specific part for this URI + */ + public String getSchemeSpecificPart() { + StringBuffer schemespec = new StringBuffer(); + + if (m_userinfo != null || m_host != null || m_port != -1) { + schemespec.append("//"); + } + + if (m_userinfo != null) { + schemespec.append(m_userinfo); + schemespec.append('@'); + } + + if (m_host != null) { + schemespec.append(m_host); + } + + if (m_port != -1) { + schemespec.append(':'); + schemespec.append(m_port); + } + + if (m_path != null) { + schemespec.append((m_path)); + } + + if (m_queryString != null) { + schemespec.append('?'); + schemespec.append(m_queryString); + } + + if (m_fragment != null) { + schemespec.append('#'); + schemespec.append(m_fragment); + } + + return schemespec.toString(); + } + + /** + * Get the userinfo for this URI. + * + * @return the userinfo for this URI (null if not specified). + */ + public String getUserinfo() { + return m_userinfo; + } + + /** + * Get the host for this URI. + * + * @return the host for this URI (null if not specified). + */ + public String getHost() { + return m_host; + } + + /** + * Get the port for this URI. + * + * @return the port for this URI (-1 if not specified). + */ + public int getPort() { + return m_port; + } + + /** + * Get the path for this URI (optionally with the query string and + * fragment). + * + * @param p_includeQueryString if true (and query string is not null), + * then a "?" followed by the query string + * will be appended + * @param p_includeFragment if true (and fragment is not null), + * then a "#" followed by the fragment + * will be appended + * + * @return the path for this URI possibly including the query string + * and fragment + */ + public String getPath(boolean p_includeQueryString, + boolean p_includeFragment) { + StringBuffer pathString = new StringBuffer(m_path); + + if (p_includeQueryString && m_queryString != null) { + pathString.append('?'); + pathString.append(m_queryString); + } + + if (p_includeFragment && m_fragment != null) { + pathString.append('#'); + pathString.append(m_fragment); + } + return pathString.toString(); + } + + /** + * Get the path for this URI. Note that the value returned is the path + * only and does not include the query string or fragment. + * + * @return the path for this URI. + */ + public String getPath() { + return m_path; + } + + /** + * Get the query string for this URI. + * + * @return the query string for this URI. Null is returned if there + * was no "?" in the URI spec, empty string if there was a + * "?" but no query string following it. + */ + public String getQueryString() { + return m_queryString; + } + + /** + * Get the fragment for this URI. + * + * @return the fragment for this URI. Null is returned if there + * was no "#" in the URI spec, empty string if there was a + * "#" but no fragment following it. + */ + public String getFragment() { + return m_fragment; + } + + /** + * Set the scheme for this URI. The scheme is converted to lowercase + * before it is set. + * + * @param p_scheme the scheme for this URI (cannot be null) + * + * @exception MalformedURIException if p_scheme is not a conformant + * scheme name + */ + public void setScheme(String p_scheme) throws MalformedURIException { + if (p_scheme == null) { + throw new MalformedURIException( + "Cannot set scheme from null string!"); + } + if (!isConformantSchemeName(p_scheme)) { + throw new MalformedURIException("The scheme is not conformant."); + } + + m_scheme = p_scheme.toLowerCase(); + } + + /** + * Set the userinfo for this URI. If a non-null value is passed in and + * the host value is null, then an exception is thrown. + * + * @param p_userinfo the userinfo for this URI + * + * @exception MalformedURIException if p_userinfo contains invalid + * characters + */ + public void setUserinfo(String p_userinfo) throws MalformedURIException { + if (p_userinfo == null) { + m_userinfo = null; + } + else { + if (m_host == null) { + throw new MalformedURIException( + "Userinfo cannot be set when host is null!"); + } + + // userinfo can contain alphanumerics, mark characters, escaped + // and ';',':','&','=','+','$',',' + int index = 0; + int end = p_userinfo.length(); + char testChar = '\0'; + while (index < end) { + testChar = p_userinfo.charAt(index); + if (testChar == '%') { + if (index+2 >= end || + !isHex(p_userinfo.charAt(index+1)) || + !isHex(p_userinfo.charAt(index+2))) { + throw new MalformedURIException( + "Userinfo contains invalid escape sequence!"); + } + } + else if (!isUnreservedCharacter(testChar) && + USERINFO_CHARACTERS.indexOf(testChar) == -1) { + throw new MalformedURIException( + "Userinfo contains invalid character:"+testChar); + } + index++; + } + } + m_userinfo = p_userinfo; + } + + /** + * Set the host for this URI. If null is passed in, the userinfo + * field is also set to null and the port is set to -1. + * + * @param p_host the host for this URI + * + * @exception MalformedURIException if p_host is not a valid IP + * address or DNS hostname. + */ + public void setHost(String p_host) throws MalformedURIException { + if (p_host == null || p_host.trim().length() == 0) { + m_host = p_host; + m_userinfo = null; + m_port = -1; + } + else if (!isWellFormedAddress(p_host)) { + throw new MalformedURIException("Host is not a well formed address!"); + } + m_host = p_host; + } + + /** + * Set the port for this URI. -1 is used to indicate that the port is + * not specified, otherwise valid port numbers are between 0 and 65535. + * If a valid port number is passed in and the host field is null, + * an exception is thrown. + * + * @param p_port the port number for this URI + * + * @exception MalformedURIException if p_port is not -1 and not a + * valid port number + */ + public void setPort(int p_port) throws MalformedURIException { + if (p_port >= 0 && p_port <= 65535) { + if (m_host == null) { + throw new MalformedURIException( + "Port cannot be set when host is null!"); + } + } + else if (p_port != -1) { + throw new MalformedURIException("Invalid port number!"); + } + m_port = p_port; + } + + /** + * Set the path for this URI. If the supplied path is null, then the + * query string and fragment are set to null as well. If the supplied + * path includes a query string and/or fragment, these fields will be + * parsed and set as well. Note that, for URIs following the "generic + * URI" syntax, the path specified should start with a slash. + * For URIs that do not follow the generic URI syntax, this method + * sets the scheme-specific part. + * + * @param p_path the path for this URI (may be null) + * + * @exception MalformedURIException if p_path contains invalid + * characters + */ + public void setPath(String p_path) throws MalformedURIException { + if (p_path == null) { + m_path = null; + m_queryString = null; + m_fragment = null; + } + else { + initializePath(p_path); + } + } + + /** + * Append to the end of the path of this URI. If the current path does + * not end in a slash and the path to be appended does not begin with + * a slash, a slash will be appended to the current path before the + * new segment is added. Also, if the current path ends in a slash + * and the new segment begins with a slash, the extra slash will be + * removed before the new segment is appended. + * + * @param p_addToPath the new segment to be added to the current path + * + * @exception MalformedURIException if p_addToPath contains syntax + * errors + */ + public void appendPath(String p_addToPath) + throws MalformedURIException { + if (p_addToPath == null || p_addToPath.trim().length() == 0) { + return; + } + + if (!isURIString(p_addToPath)) { + throw new MalformedURIException( + "Path contains invalid character!"); + } + + if (m_path == null || m_path.trim().length() == 0) { + if (p_addToPath.startsWith("/")) { + m_path = p_addToPath; + } + else { + m_path = "/" + p_addToPath; + } + } + else if (m_path.endsWith("/")) { + if (p_addToPath.startsWith("/")) { + m_path = m_path.concat(p_addToPath.substring(1)); + } + else { + m_path = m_path.concat(p_addToPath); + } + } + else { + if (p_addToPath.startsWith("/")) { + m_path = m_path.concat(p_addToPath); + } + else { + m_path = m_path.concat("/" + p_addToPath); + } + } + } + + /** + * Set the query string for this URI. A non-null value is valid only + * if this is an URI conforming to the generic URI syntax and + * the path value is not null. + * + * @param p_queryString the query string for this URI + * + * @exception MalformedURIException if p_queryString is not null and this + * URI does not conform to the generic + * URI syntax or if the path is null + */ + public void setQueryString(String p_queryString) throws MalformedURIException { + if (p_queryString == null) { + m_queryString = null; + } + else if (!isGenericURI()) { + throw new MalformedURIException( + "Query string can only be set for a generic URI!"); + } + else if (getPath() == null) { + throw new MalformedURIException( + "Query string cannot be set when path is null!"); + } + else if (!isURIString(p_queryString)) { + throw new MalformedURIException( + "Query string contains invalid character!"); + } + else { + m_queryString = p_queryString; + } + } + + /** + * Set the fragment for this URI. A non-null value is valid only + * if this is a URI conforming to the generic URI syntax and + * the path value is not null. + * + * @param p_fragment the fragment for this URI + * + * @exception MalformedURIException if p_fragment is not null and this + * URI does not conform to the generic + * URI syntax or if the path is null + */ + public void setFragment(String p_fragment) throws MalformedURIException { + if (p_fragment == null) { + m_fragment = null; + } + else if (!isGenericURI()) { + throw new MalformedURIException( + "Fragment can only be set for a generic URI!"); + } + else if (getPath() == null) { + throw new MalformedURIException( + "Fragment cannot be set when path is null!"); + } + else if (!isURIString(p_fragment)) { + throw new MalformedURIException( + "Fragment contains invalid character!"); + } + else { + m_fragment = p_fragment; + } + } + + /** + * Determines if the passed-in Object is equivalent to this URI. + * + * @param p_test the Object to test for equality. + * + * @return true if p_test is a URI with all values equal to this + * URI, false otherwise + */ + public boolean equals(Object p_test) { + if (p_test instanceof JaxmURI) { + JaxmURI testURI = (JaxmURI) p_test; + if (((m_scheme == null && testURI.m_scheme == null) || + (m_scheme != null && testURI.m_scheme != null && + m_scheme.equals(testURI.m_scheme))) && + ((m_userinfo == null && testURI.m_userinfo == null) || + (m_userinfo != null && testURI.m_userinfo != null && + m_userinfo.equals(testURI.m_userinfo))) && + ((m_host == null && testURI.m_host == null) || + (m_host != null && testURI.m_host != null && + m_host.equals(testURI.m_host))) && + m_port == testURI.m_port && + ((m_path == null && testURI.m_path == null) || + (m_path != null && testURI.m_path != null && + m_path.equals(testURI.m_path))) && + ((m_queryString == null && testURI.m_queryString == null) || + (m_queryString != null && testURI.m_queryString != null && + m_queryString.equals(testURI.m_queryString))) && + ((m_fragment == null && testURI.m_fragment == null) || + (m_fragment != null && testURI.m_fragment != null && + m_fragment.equals(testURI.m_fragment)))) { + return true; + } + } + return false; + } + + public int hashCode() { + // No members safe to use, just default to a constant. + return 153214; + } + + /** + * Get the URI as a string specification. See RFC 2396 Section 5.2. + * + * @return the URI string specification + */ + public String toString() { + StringBuffer uriSpecString = new StringBuffer(); + + if (m_scheme != null) { + uriSpecString.append(m_scheme); + uriSpecString.append(':'); + } + uriSpecString.append(getSchemeSpecificPart()); + return uriSpecString.toString(); + } + + /** + * Get the indicator as to whether this URI uses the "generic URI" + * syntax. + * + * @return true if this URI uses the "generic URI" syntax, false + * otherwise + */ + public boolean isGenericURI() { + // presence of the host (whether valid or empty) means + // double-slashes which means generic uri + return (m_host != null); + } + + /** + * Determine whether a scheme conforms to the rules for a scheme name. + * A scheme is conformant if it starts with an alphanumeric, and + * contains only alphanumerics, '+','-' and '.'. + * + * @return true if the scheme is conformant, false otherwise + */ + public static boolean isConformantSchemeName(String p_scheme) { + if (p_scheme == null || p_scheme.trim().length() == 0) { + return false; + } + + if (!isAlpha(p_scheme.charAt(0))) { + return false; + } + + char testChar; + for (int i = 1; i < p_scheme.length(); i++) { + testChar = p_scheme.charAt(i); + if (!isAlphanum(testChar) && + SCHEME_CHARACTERS.indexOf(testChar) == -1) { + return false; + } + } + + return true; + } + + /** + * Determine whether a string is syntactically capable of representing + * a valid IPv4 address or the domain name of a network host. A valid + * IPv4 address consists of four decimal digit groups separated by a + * '.'. A hostname consists of domain labels (each of which must + * begin and end with an alphanumeric but may contain '-') separated + & by a '.'. See RFC 2396 Section 3.2.2. + * + * @return true if the string is a syntactically valid IPv4 address + * or hostname + */ + public static boolean isWellFormedAddress(String p_address) { + if (p_address == null) { + return false; + } + + String address = p_address.trim(); + int addrLength = address.length(); + if (addrLength == 0 || addrLength > 255) { + return false; + } + + if (address.startsWith(".") || address.startsWith("-")) { + return false; + } + + // rightmost domain label starting with digit indicates IP address + // since top level domain label can only start with an alpha + // see RFC 2396 Section 3.2.2 + int index = address.lastIndexOf('.'); + if (address.endsWith(".")) { + index = address.substring(0, index).lastIndexOf('.'); + } + + if (index+1 < addrLength && isDigit(p_address.charAt(index+1))) { + char testChar; + int numDots = 0; + + // make sure that 1) we see only digits and dot separators, 2) that + // any dot separator is preceded and followed by a digit and + // 3) that we find 3 dots + for (int i = 0; i < addrLength; i++) { + testChar = address.charAt(i); + if (testChar == '.') { + if (!isDigit(address.charAt(i-1)) || + (i+1 < addrLength && !isDigit(address.charAt(i+1)))) { + return false; + } + numDots++; + } + else if (!isDigit(testChar)) { + return false; + } + } + if (numDots != 3) { + return false; + } + } + else { + // domain labels can contain alphanumerics and '-" + // but must start and end with an alphanumeric + char testChar; + + for (int i = 0; i < addrLength; i++) { + testChar = address.charAt(i); + if (testChar == '.') { + if (!isAlphanum(address.charAt(i-1))) { + return false; + } + if (i+1 < addrLength && !isAlphanum(address.charAt(i+1))) { + return false; + } + } + else if (!isAlphanum(testChar) && testChar != '-') { + return false; + } + } + } + return true; + } + + + /** + * Determine whether a char is a digit. + * + * @return true if the char is betweeen '0' and '9', false otherwise + */ + private static boolean isDigit(char p_char) { + return p_char >= '0' && p_char <= '9'; + } + + /** + * Determine whether a character is a hexadecimal character. + * + * @return true if the char is betweeen '0' and '9', 'a' and 'f' + * or 'A' and 'F', false otherwise + */ + private static boolean isHex(char p_char) { + return (isDigit(p_char) || + (p_char >= 'a' && p_char <= 'f') || + (p_char >= 'A' && p_char <= 'F')); + } + + /** + * Determine whether a char is an alphabetic character: a-z or A-Z + * + * @return true if the char is alphabetic, false otherwise + */ + private static boolean isAlpha(char p_char) { + return ((p_char >= 'a' && p_char <= 'z') || + (p_char >= 'A' && p_char <= 'Z' )); + } + + /** + * Determine whether a char is an alphanumeric: 0-9, a-z or A-Z + * + * @return true if the char is alphanumeric, false otherwise + */ + private static boolean isAlphanum(char p_char) { + return (isAlpha(p_char) || isDigit(p_char)); + } + + /** + * Determine whether a character is a reserved character: + * ';', '/', '?', ':', '@', '&', '=', '+', '$' or ',' + * + * @return true if the string contains any reserved characters + */ + private static boolean isReservedCharacter(char p_char) { + return RESERVED_CHARACTERS.indexOf(p_char) != -1; + } + + /** + * Determine whether a char is an unreserved character. + * + * @return true if the char is unreserved, false otherwise + */ + private static boolean isUnreservedCharacter(char p_char) { + return (isAlphanum(p_char) || + MARK_CHARACTERS.indexOf(p_char) != -1); + } + + /** + * Determine whether a given string contains only URI characters (also + * called "uric" in RFC 2396). uric consist of all reserved + * characters, unreserved characters and escaped characters. + * + * @return true if the string is comprised of uric, false otherwise + */ + private static boolean isURIString(String p_uric) { + if (p_uric == null) { + return false; + } + int end = p_uric.length(); + char testChar = '\0'; + for (int i = 0; i < end; i++) { + testChar = p_uric.charAt(i); + if (testChar == '%') { + if (i+2 >= end || + !isHex(p_uric.charAt(i+1)) || + !isHex(p_uric.charAt(i+2))) { + return false; + } + else { + i += 2; + continue; + } + } + if (isReservedCharacter(testChar) || + isUnreservedCharacter(testChar)) { + continue; + } + else { + return false; + } + } + return true; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,33 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for util pkg +# Error messages +SAAJ0601.util.newSAXParser.exception=SAAJ0601: Can't create RejectDoctypSaxFilter because SAXParserFactory.newSAXParser threw an exception. See stack trace for details +SAAJ0602.util.getXMLReader.exception=SAAJ0602: Can't create RejectDoctypSaxFilter because SAXParser.getXMLReader threw an exception. See stack trace for details +SAAJ0603.util.setProperty.exception=SAAJ0603: Can't create RejectDoctypSaxFilter because XMLReader.setProperty threw an exception. See stack trace for details + +# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_de.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_de.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,33 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for util pkg +# Error messages +SAAJ0601.util.newSAXParser.exception=SAAJ0601: RejectDoctypSaxFilter kann nicht erstellt werden, weil SAXParserFactory.newSAXParser eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace +SAAJ0602.util.getXMLReader.exception=SAAJ0602: RejectDoctypSaxFilter kann nicht erstellt werden, weil SAXParser.getXMLReader eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace +SAAJ0603.util.setProperty.exception=SAAJ0603: RejectDoctypSaxFilter kann nicht erstellt werden, weil XMLReader.setProperty eine Ausnahme ausgel\u00F6st hat. Weitere Einzelheiten finden Sie im Stack Trace + +# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_es.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_es.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,33 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for util pkg +# Error messages +SAAJ0601.util.newSAXParser.exception=SAAJ0601: no se puede crear RejectDoctypSaxFilter, porque SAXParserFactory.newSAXParser ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n +SAAJ0602.util.getXMLReader.exception=SAAJ0602: no se puede crear RejectDoctypSaxFilter, porque SAXParser.getXMLReader ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n +SAAJ0603.util.setProperty.exception=SAAJ0603: no se puede crear RejectDoctypSaxFilter porque XMLReader.setProperty ha devuelto una excepci\u00F3n. Consulte el rastreo de pila para obtener m\u00E1s informaci\u00F3n + +# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_fr.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_fr.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,33 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for util pkg +# Error messages +SAAJ0601.util.newSAXParser.exception=SAAJ0601 : impossible de cr\u00E9er RejectDoctypSaxFilter car SAXParserFactory.newSAXParser a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile +SAAJ0602.util.getXMLReader.exception=SAAJ0602 : impossible de cr\u00E9er RejectDoctypSaxFilter car SAXParser.getXMLReader a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile +SAAJ0603.util.setProperty.exception=SAAJ0603 : impossible de cr\u00E9er RejectDoctypSaxFilter car XMLReader.setProperty a g\u00E9n\u00E9r\u00E9 une exception. Pour plus de d\u00E9tails, consultez la trace de pile + +# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_it.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_it.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,33 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for util pkg +# Error messages +SAAJ0601.util.newSAXParser.exception=SAAJ0601: Impossibile creare RejectDoctypSaxFilter poich\u00E9 SAXParserFactory.newSAXParser ha restituito un'eccezione. Vedere lo stack trace per i dettagli. +SAAJ0602.util.getXMLReader.exception=SAAJ0602: Impossibile creare RejectDoctypSaxFilter poich\u00E9 SAXParser.getXMLReader ha restituito un'eccezione. Vedere lo stack trace per i dettagli. +SAAJ0603.util.setProperty.exception=SAAJ0603: Impossibile creare RejectDoctypSaxFilter poich\u00E9 XMLReader.setProperty ha restituito un'eccezione. Vedere lo stack trace per i dettagli. + +# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ja.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ja.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,33 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for util pkg +# Error messages +SAAJ0601.util.newSAXParser.exception=SAAJ0601: SAXParserFactory.newSAXParser\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044 +SAAJ0602.util.getXMLReader.exception=SAAJ0602: SAXParser.getXMLReader\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044 +SAAJ0603.util.setProperty.exception=SAAJ0603: XMLReader.setProperty\u304C\u4F8B\u5916\u3092\u30B9\u30ED\u30FC\u3057\u305F\u305F\u3081\u3001RejectDoctypSaxFilter\u3092\u4F5C\u6210\u3067\u304D\u307E\u305B\u3093\u3002\u8A73\u7D30\u306F\u30B9\u30BF\u30C3\u30AF\u30FB\u30C8\u30EC\u30FC\u30B9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044 + +# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ko.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_ko.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,33 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for util pkg +# Error messages +SAAJ0601.util.newSAXParser.exception=SAAJ0601: SAXParserFactory.newSAXParser\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624. +SAAJ0602.util.getXMLReader.exception=SAAJ0602: SAXParser.getXMLReader\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624. +SAAJ0603.util.setProperty.exception=SAAJ0603: XMLReader.setProperty\uB85C \uC778\uD574 \uC608\uC678 \uC0AC\uD56D\uC774 \uBC1C\uC0DD\uD558\uC5EC RejectDoctypSaxFilter\uB97C \uC0DD\uC131\uD560 \uC218 \uC5C6\uC2B5\uB2C8\uB2E4. \uC790\uC138\uD55C \uB0B4\uC6A9\uC740 \uC2A4\uD0DD \uCD94\uC801\uC744 \uCC38\uC870\uD558\uC2ED\uC2DC\uC624. + +# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_pt_BR.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_pt_BR.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,33 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for util pkg +# Error messages +SAAJ0601.util.newSAXParser.exception=SAAJ0601: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque SAXParserFactory.newSAXParser gerou uma exce\u00E7\u00E3o. Consulte o rastreamento de pilha para obter detalhes +SAAJ0602.util.getXMLReader.exception=SAAJ0602: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque SAXParser.getXMLReader gerou uma exce\u00E7\u00E3o. Consulte a pilha de rastreamento para obter detalhes +SAAJ0603.util.setProperty.exception=SAAJ0603: n\u00E3o \u00E9 poss\u00EDvel criar RejectDoctypSaxFilter porque XMLReader.setProperty gerou uma exce\u00E7\u00E3o. Consulte a pilha de rastreamento para obter detalhes + +# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_CN.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_CN.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,33 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for util pkg +# Error messages +SAAJ0601.util.newSAXParser.exception=SAAJ0601: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A SAXParserFactory.newSAXParser \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A +SAAJ0602.util.getXMLReader.exception=SAAJ0602: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A SAXParser.getXMLReader \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A +SAAJ0603.util.setProperty.exception=SAAJ0603: \u65E0\u6CD5\u521B\u5EFA RejectDoctypSaxFilter, \u56E0\u4E3A XMLReader.setProperty \u629B\u51FA\u4E86\u5F02\u5E38\u9519\u8BEF\u3002\u6709\u5173\u8BE6\u7EC6\u4FE1\u606F, \u8BF7\u53C2\u9605\u5806\u6808\u8DDF\u8E2A + +# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_TW.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LocalStrings_zh_TW.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,33 @@ +# +# Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. +# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +# +# This code is free software; you can redistribute it and/or modify it +# under the terms of the GNU General Public License version 2 only, as +# published by the Free Software Foundation. Oracle designates this +# particular file as subject to the "Classpath" exception as provided +# by Oracle in the LICENSE file that accompanied this code. +# +# This code is distributed in the hope that it will be useful, but WITHOUT +# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or +# FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +# version 2 for more details (a copy is included in the LICENSE file that +# accompanied this code). +# +# You should have received a copy of the GNU General Public License version +# 2 along with this work; if not, write to the Free Software Foundation, +# Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. +# +# Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA +# or visit www.oracle.com if you need additional information or have any +# questions. +# + +# SAAJ ResourceBundle properties file +# Contains Log messages for util pkg +# Error messages +SAAJ0601.util.newSAXParser.exception=SAAJ0601: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA SAXParserFactory.newSAXParser \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A +SAAJ0602.util.getXMLReader.exception=SAAJ0602: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA SAXParser.getXMLReader \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A +SAAJ0603.util.setProperty.exception=SAAJ0603: \u7121\u6CD5\u5EFA\u7ACB RejectDoctypSaxFilter, \u56E0\u70BA XMLReader.setProperty \u767C\u751F\u7570\u5E38\u72C0\u6CC1. \u8ACB\u53C3\u95B1\u5806\u758A\u8FFD\u8E64\u4EE5\u77AD\u89E3\u8A73\u7D30\u8CC7\u8A0A + +# Info messages diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LogDomainConstants.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/LogDomainConstants.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,67 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + +/** + * @author Manveen Kaur (manveen.kaur@eng.sun.com) + */ + +/** + * This interface defines a number of constants pertaining to Logging domains. + */ + +public interface LogDomainConstants { + + public static String MODULE_TOPLEVEL_DOMAIN = + "com.sun.xml.internal.messaging.saaj"; + + // First Level Domain + public static String CLIENT_DOMAIN = + MODULE_TOPLEVEL_DOMAIN + ".client"; + + public static String SOAP_DOMAIN = + MODULE_TOPLEVEL_DOMAIN + ".soap"; + + public static String UTIL_DOMAIN = + MODULE_TOPLEVEL_DOMAIN + ".util"; + + // Second Level Domain + public static String HTTP_CONN_DOMAIN = + CLIENT_DOMAIN + ".p2p"; + + public static String NAMING_DOMAIN = + SOAP_DOMAIN + ".name"; + + public static String SOAP_IMPL_DOMAIN = + SOAP_DOMAIN + ".impl"; + + public static String SOAP_VER1_1_DOMAIN = + SOAP_DOMAIN + ".ver1_1"; + + public static String SOAP_VER1_2_DOMAIN = + SOAP_DOMAIN + ".ver1_2"; + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/MimeHeadersUtil.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/MimeHeadersUtil.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,50 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.util; + +import java.util.Iterator; + +import javax.xml.soap.MimeHeader; +import javax.xml.soap.MimeHeaders; + +public class MimeHeadersUtil { + public static MimeHeaders copy(MimeHeaders headers) { + MimeHeaders newHeaders = new MimeHeaders(); + Iterator eachHeader = headers.getAllHeaders(); + while (eachHeader.hasNext()) { + MimeHeader currentHeader = (MimeHeader) eachHeader.next(); + + newHeaders.addHeader( + currentHeader.getName(), + currentHeader.getValue()); + } + return newHeaders; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/NamespaceContextIterator.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/NamespaceContextIterator.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,122 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** +* +* @author SAAJ RI Development Team +*/ +package com.sun.xml.internal.messaging.saaj.util; + +import java.util.Iterator; +import java.util.NoSuchElementException; + +import org.w3c.dom.*; + +public class NamespaceContextIterator implements Iterator { + Node context; + NamedNodeMap attributes = null; + int attributesLength; + int attributeIndex; + Attr next = null; + Attr last = null; + boolean traverseStack = true; + + public NamespaceContextIterator(Node context) { + this.context = context; + findContextAttributes(); + } + + public NamespaceContextIterator(Node context, boolean traverseStack) { + this(context); + this.traverseStack = traverseStack; + } + + protected void findContextAttributes() { + while (context != null) { + int type = context.getNodeType(); + if (type == Node.ELEMENT_NODE) { + attributes = context.getAttributes(); + attributesLength = attributes.getLength(); + attributeIndex = 0; + return; + } else { + context = null; + } + } + } + + protected void findNext() { + while (next == null && context != null) { + for (; attributeIndex < attributesLength; ++attributeIndex) { + Node currentAttribute = attributes.item(attributeIndex); + String attributeName = currentAttribute.getNodeName(); + if (attributeName.startsWith("xmlns") + && (attributeName.length() == 5 + || attributeName.charAt(5) == ':')) { + next = (Attr) currentAttribute; + ++attributeIndex; + return; + } + } + if (traverseStack) { + context = context.getParentNode(); + findContextAttributes(); + } else { + context = null; + } + } + } + + public boolean hasNext() { + findNext(); + return next != null; + } + + public Object next() { + return getNext(); + } + + public Attr nextNamespaceAttr() { + return getNext(); + } + + protected Attr getNext() { + findNext(); + if (next == null) { + throw new NoSuchElementException(); + } + last = next; + next = null; + return last; + } + + public void remove() { + if (last == null) { + throw new IllegalStateException(); + } + ((Element) context).removeAttributeNode(last); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ParseUtil.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ParseUtil.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,93 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + + +// Cut&paste from sun.net.www.ParseUtil: decode, unescape + +public class ParseUtil { + /** + * Un-escape and return the character at position i in string s. + */ + private static char unescape(String s, int i) { + return (char) Integer.parseInt(s.substring(i+1,i+3),16); + } + + /** + * Returns a new String constructed from the specified String by replacing + * the URL escape sequences and UTF8 encoding with the characters they + * represent. + */ + public static String decode(String s) { + StringBuffer sb = new StringBuffer(); + + int i=0; + while (i> 4) { + case 0xC: case 0xD: + c2 = unescape(s, i); + i += 3; + c = (char)(((c & 0x1f) << 6) | (c2 & 0x3f)); + break; + + case 0xE: + c2 = unescape(s, i); + i += 3; + c3 = unescape(s, i); + i += 3; + c = (char)(((c & 0x0f) << 12) | + ((c2 & 0x3f) << 6) | + (c3 & 0x3f)); + break; + + default: + throw new IllegalArgumentException(); + } + } + } catch (NumberFormatException e) { + throw new IllegalArgumentException(); + } + } + + sb.append(c); + } + + return sb.toString(); + } + + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ParserPool.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/ParserPool.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,108 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + + +import org.xml.sax.SAXException; +import java.util.concurrent.ArrayBlockingQueue; +import java.util.concurrent.BlockingQueue; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.parsers.SAXParser; +import javax.xml.parsers.SAXParserFactory; +import org.xml.sax.SAXNotRecognizedException; +import org.xml.sax.SAXNotSupportedException; + + +/** + * Pool of SAXParser objects + */ +public class ParserPool { + private final BlockingQueue queue; + private SAXParserFactory factory; + + public ParserPool(int capacity) { + queue = new ArrayBlockingQueue(capacity); + //factory = SAXParserFactory.newInstance(); + factory = new com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl(); + factory.setNamespaceAware(true); + for (int i = 0; i < capacity; i++) { + try { + queue.put(factory.newSAXParser()); + } catch (InterruptedException ex) { + Thread.currentThread().interrupt(); + throw new RuntimeException(ex); + } catch (ParserConfigurationException ex) { + throw new RuntimeException(ex); + } catch (SAXException ex) { + throw new RuntimeException(ex); + } + } + } + + public SAXParser get() throws ParserConfigurationException, + SAXException { + + try { + return (SAXParser) queue.take(); + } catch (InterruptedException ex) { + throw new SAXException(ex); + } + + } + + public boolean put(SAXParser parser) { + return queue.offer(parser); + } + + public void returnParser(SAXParser saxParser) { + saxParser.reset(); + resetSaxParser(saxParser); + put(saxParser); + } + + + /** + * SAAJ Issue 46 :https://saaj.dev.java.net/issues/show_bug.cgi?id=46 + * Xerces does not provide a way to reset the SymbolTable + * So we are trying to reset it using the proprietary code below. + * Temporary Until the bug : https://jaxp.dev.java.net/issues/show_bug.cgi?id=59 + * is fixed. + * @param parser the parser from the pool whose Symbol Table needs to be reset. + */ + private void resetSaxParser(SAXParser parser) { + try { + //Object obj = parser.getProperty("http://apache.org/xml/properties/internal/symbol-table"); + com.sun.org.apache.xerces.internal.util.SymbolTable table = new com.sun.org.apache.xerces.internal.util.SymbolTable(); + parser.setProperty("http://apache.org/xml/properties/internal/symbol-table", table); + //obj = parser.getProperty("http://apache.org/xml/properties/internal/symbol-table"); + } catch (SAXNotRecognizedException ex) { + //nothing to do + } catch (SAXNotSupportedException ex) { + //nothing to do + } + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/RejectDoctypeSaxFilter.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/RejectDoctypeSaxFilter.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,182 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + +import java.util.logging.Logger; + +import javax.xml.parsers.SAXParser; +import javax.xml.soap.SOAPException; + +import org.xml.sax.*; +import org.xml.sax.ext.LexicalHandler; +import org.xml.sax.helpers.XMLFilterImpl; + +import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl; +import org.xml.sax.helpers.AttributesImpl; + +/** + * Users of this class see a SAX2 XMLReader (via XMLFilterImpl). This + * class creates a parent XMLReader via JAXP and installs itself as a SAX2 + * extension LexicalHandler which rejects document type declarations + * because they are not legal in SOAP. If the user of this class sets a + * LexicalHandler, then it forwards events to that handler. + * + * + * @author Edwin Goei + */ + +public class RejectDoctypeSaxFilter extends XMLFilterImpl implements XMLReader, LexicalHandler{ + protected static final Logger log = + Logger.getLogger(LogDomainConstants.UTIL_DOMAIN, + "com.sun.xml.internal.messaging.saaj.util.LocalStrings"); + + /** Standard SAX 2.0 ext property */ + static final String LEXICAL_HANDLER_PROP = + "http://xml.org/sax/properties/lexical-handler"; + + static final String WSU_NS = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd".intern(); + static final String SIGNATURE_LNAME = "Signature".intern(); + static final String ENCRYPTED_DATA_LNAME = "EncryptedData".intern(); + static final String DSIG_NS = "http://www.w3.org/2000/09/xmldsig#".intern(); + static final String XENC_NS = "http://www.w3.org/2001/04/xmlenc#".intern(); + static final String ID_NAME = "ID".intern(); + + /** LexicalHandler to forward events to, if any */ + private LexicalHandler lexicalHandler; + + public RejectDoctypeSaxFilter(SAXParser saxParser) throws SOAPException { + XMLReader xmlReader; + try { + xmlReader = saxParser.getXMLReader(); + } catch (Exception e) { + log.severe("SAAJ0602.util.getXMLReader.exception"); + throw new SOAPExceptionImpl( + "Couldn't get an XMLReader while constructing a RejectDoctypeSaxFilter", + e); + } + + // Set ourselves up to be the SAX LexicalHandler + try { + xmlReader.setProperty(LEXICAL_HANDLER_PROP, this); + } catch (Exception e) { + log.severe("SAAJ0603.util.setProperty.exception"); + throw new SOAPExceptionImpl( + "Couldn't set the lexical handler property while constructing a RejectDoctypeSaxFilter", + e); + } + + // Set the parent XMLReader of this SAX filter + setParent(xmlReader); + } + + /* + * Override setProperty() to capture any LexicalHandler that is set for + * forwarding of events. + */ + public void setProperty(String name, Object value) + throws SAXNotRecognizedException, SAXNotSupportedException { + if (LEXICAL_HANDLER_PROP.equals(name)) { + lexicalHandler = (LexicalHandler) value; + } else { + super.setProperty(name, value); + } + } + + // + // Beginning of SAX LexicalHandler callbacks... + // + + public void startDTD(String name, String publicId, String systemId) + throws SAXException { + throw new SAXException("Document Type Declaration is not allowed"); + } + + public void endDTD() throws SAXException { + } + + public void startEntity(String name) throws SAXException { + if (lexicalHandler != null) { + lexicalHandler.startEntity(name); + } + } + + public void endEntity(String name) throws SAXException { + if (lexicalHandler != null) { + lexicalHandler.endEntity(name); + } + } + + public void startCDATA() throws SAXException { + if (lexicalHandler != null) { + lexicalHandler.startCDATA(); + } + } + + public void endCDATA() throws SAXException { + if (lexicalHandler != null) { + lexicalHandler.endCDATA(); + } + } + + public void comment(char[] ch, int start, int length) throws SAXException { + if (lexicalHandler != null) { + lexicalHandler.comment(ch, start, length); + } + } + + // + // End of SAX LexicalHandler callbacks + // + + public void startElement(String namespaceURI, String localName, + String qName, Attributes atts) throws SAXException{ + if(atts != null ){ + boolean eos = false; + if(namespaceURI == DSIG_NS || XENC_NS == namespaceURI){ + eos = true; + } + int length = atts.getLength(); + AttributesImpl attrImpl = new AttributesImpl(); + for(int i=0; i< length;i++){ + String name = atts.getLocalName(i); + if(name!=null && (name.equals("Id"))){ + if(eos || atts.getURI(i) == WSU_NS ){ + attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i), + atts.getQName(i), ID_NAME, atts.getValue(i)); + }else{ + attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i), atts.getQName(i), atts.getType(i), atts.getValue(i)); + } + }else{ + attrImpl.addAttribute(atts.getURI(i), atts.getLocalName(i), + atts.getQName(i), atts.getType(i), atts.getValue(i)); + } + } + super.startElement(namespaceURI,localName, qName,attrImpl); + }else{ + super.startElement(namespaceURI,localName, qName, null); + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/SAAJUtil.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/SAAJUtil.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2011, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + +import java.security.AccessControlException; + +/** + * + * @author vbkumarjayanti + */ +public final class SAAJUtil { + + public static boolean getSystemBoolean(String arg) { + try { + return Boolean.getBoolean(arg); + } catch (AccessControlException ex) { + return false; + } + } + + public static String getSystemProperty(String arg) { + try { + return System.getProperty(arg); + } catch (SecurityException ex) { + return null; + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/TeeInputStream.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/TeeInputStream.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * Created on Feb 28, 2003 + * + * To change this generated comment go to + * Window>Preferences>Java>Code Generation>Code Template + */ +package com.sun.xml.internal.messaging.saaj.util; + +import java.io.*; + +/** + * @author pgoodwin + */ +public class TeeInputStream extends InputStream { + protected InputStream source; + protected OutputStream copySink; + + public TeeInputStream(InputStream source, OutputStream sink) { + super(); + this.copySink = sink; + this.source = source; + } + + public int read() throws IOException { + int result = source.read(); + copySink.write(result); + return result; + } + + public int available() throws IOException { + return source.available(); + } + + public void close() throws IOException { + source.close(); + } + + public synchronized void mark(int readlimit) { + source.mark(readlimit); + } + + public boolean markSupported() { + return source.markSupported(); + } + + public int read(byte[] b, int off, int len) throws IOException { + int result = source.read(b, off, len); + copySink.write(b, off, len); + return result; + } + + public int read(byte[] b) throws IOException { + int result = source.read(b); + copySink.write(b); + return result; + } + + public synchronized void reset() throws IOException { + source.reset(); + } + + public long skip(long n) throws IOException { + return source.skip(n); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/XMLDeclarationParser.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/XMLDeclarationParser.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,179 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util; + +import java.io.*; + +import javax.xml.transform.TransformerException; + +/* + * Class that parses the very first construct in the document i.e. + * + * + * @author Panos Kougiouris (panos@acm.org) + * @version + */ + +public class XMLDeclarationParser { + private String m_encoding; + private PushbackReader m_pushbackReader; + private boolean m_hasHeader; // preserve the case where no XML Header exists + private String xmlDecl = null; + static String gt16 = null; + static String utf16Decl = null; + static { + try { + gt16 = new String(">".getBytes("utf-16")); + utf16Decl = new String("') { + break; + } + } + int len = index; + + String decl = xmlDeclStr.toString(); + boolean utf16 = false; + boolean utf8 = false; + + int xmlIndex = decl.indexOf(utf16Decl); + if (xmlIndex > -1) { + utf16 = true; + } else { + xmlIndex = decl.indexOf(" -1) { + utf8 = true; + } + } + + // no XML decl + if (!utf16 && !utf8) { + m_pushbackReader.unread(aChar, 0, len); + return; + } + m_hasHeader = true; + + if (utf16) { + xmlDecl = new String(decl.getBytes(), "utf-16"); + xmlDecl = xmlDecl.substring(xmlDecl.indexOf("<")); + } else { + xmlDecl = decl; + } + // do we want to check that there are no other characters preceeding encodingIndex) { + throw new IOException("The 'version' attribute should preceed the 'encoding' attribute in an XML Declaration"); + } + + int stdAloneIndex = xmlDecl.indexOf("standalone"); + if ((stdAloneIndex > -1) && ((stdAloneIndex < versionIndex) || (stdAloneIndex < encodingIndex))) { + throw new IOException("The 'standalone' attribute should be the last attribute in an XML Declaration"); + } + + int eqIndex = xmlDecl.indexOf("=", encodingIndex); + if (eqIndex == -1) { + throw new IOException("Missing '=' character after 'encoding' in XML declaration"); + } + + m_encoding = parseEncoding(xmlDecl, eqIndex); + if(m_encoding.startsWith("\"")){ + m_encoding = m_encoding.substring(m_encoding.indexOf("\"")+1, m_encoding.lastIndexOf("\"")); + } else if(m_encoding.startsWith("\'")){ + m_encoding = m_encoding.substring(m_encoding.indexOf("\'")+1, m_encoding.lastIndexOf("\'")); + } + } + + //-------------------------------------------------------------------- + + public void writeTo(Writer wr) throws IOException { + if (!m_hasHeader) return; + wr.write(xmlDecl.toString()); + } + + private String parseEncoding(String xmlDeclFinal, int eqIndex) throws IOException { + java.util.StringTokenizer strTok = new java.util.StringTokenizer( + xmlDeclFinal.substring(eqIndex + 1)); + if (strTok.hasMoreTokens()) { + String encodingTok = strTok.nextToken(); + int indexofQ = encodingTok.indexOf("?"); + if (indexofQ > -1) { + return encodingTok.substring(0,indexofQ); + } else { + return encodingTok; + } + } else { + throw new IOException("Error parsing 'encoding' attribute in XML declaration"); + } + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/LazyEnvelopeStaxReader.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/LazyEnvelopeStaxReader.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,359 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util.stax; + +import javax.xml.namespace.NamespaceContext; +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPException; +import javax.xml.stream.Location; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamReader; + +import org.w3c.dom.Node; + +import com.sun.xml.internal.messaging.saaj.soap.impl.BodyImpl; +import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl; + +/** + * "Hybrid" reader which + * @author desagar + * + */ +public class LazyEnvelopeStaxReader extends com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader { +// EnvelopeImpl env; + XMLStreamReader payloadReader = null; + boolean usePayloadReaderDelegate = false; + private QName bodyQName; + + public LazyEnvelopeStaxReader(EnvelopeImpl env) throws SOAPException, XMLStreamException { + super(env); +// this.env = env; + bodyQName = new QName(env.getNamespaceURI(), "Body"); + payloadReader = env.getStaxBridge().getPayloadReader(); + int eventType = getEventType(); + while (eventType != START_ELEMENT) { + eventType = nextTag(); + } + } + + public Object getProperty(String name) throws IllegalArgumentException { + if (usePayloadReaderDelegate) return payloadReader.getProperty(name); + return super.getProperty(name); + } + + public int next() throws XMLStreamException { +// boolean previouslyUsingPayloadReader = usePayloadReaderDelegate; + //call checkReaderStatus to advance to payloadReader if needed + checkReaderStatus(true); + + if (usePayloadReaderDelegate) return payloadReader.getEventType(); + + //if we just moved to payload reader, don't advance the pointer +// if (usePayloadReaderDelegate && !previouslyUsingPayloadReader) return payloadReader.getEventType(); + +// if (usePayloadReaderDelegate) return payloadReader.next(); + return getEventType(); + } + + public void require(int type, String namespaceURI, String localName) + throws XMLStreamException { + if (usePayloadReaderDelegate) payloadReader.require(type, namespaceURI, localName); + else super.require(type, namespaceURI, localName); + } + + public String getElementText() throws XMLStreamException { + if (usePayloadReaderDelegate) return payloadReader.getElementText(); + return super.getElementText(); + } + + public int nextTag() throws XMLStreamException { + if (usePayloadReaderDelegate) return payloadReader.nextTag(); + return super.nextTag(); + } + + public boolean hasNext() throws XMLStreamException { + checkReaderStatus(false); + boolean hasNext; + if (usePayloadReaderDelegate) { + hasNext = payloadReader.hasNext(); + } else { + hasNext = super.hasNext(); + } + + /*if (!hasNext && payloadReader != null) { + usePayloadReaderDelegate = true; + hasNext = payloadReader.hasNext(); + }*/ + return hasNext; + } + + private void checkReaderStatus(boolean advanceToNext) throws XMLStreamException { + //if we are using payloadReader, make sure it is not exhausted + //if it is, return to DOM based reader for remaining end elements (body and envelope) + if (usePayloadReaderDelegate) { + if (!payloadReader.hasNext()) { + usePayloadReaderDelegate = false; + } + } else if (START_ELEMENT == getEventType()) { + //if not on payload reader, check if we need to switch to payload reader + + //if the current event is the SOAP body element start, + //and the body is lazy, switch to the payload reader + if (bodyQName.equals(getName())) { + //if we are just switching to payload reader, don't advance...payload reader + //will already be on the first payload element + usePayloadReaderDelegate = true; + advanceToNext = false; + } + } + + if (advanceToNext) { + if (usePayloadReaderDelegate) { + payloadReader.next(); + } else { + super.next(); + } + } + } + + public void close() throws XMLStreamException { + if (usePayloadReaderDelegate) payloadReader.close(); + else super.close(); + } + + public String getNamespaceURI(String prefix) { + if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(prefix); + return super.getNamespaceURI(prefix); + } + + public boolean isStartElement() { + if (usePayloadReaderDelegate) return payloadReader.isStartElement(); + return super.isStartElement(); + } + + public boolean isEndElement() { + if (usePayloadReaderDelegate) return payloadReader.isEndElement(); + return super.isEndElement(); + } + + public boolean isCharacters() { + if (usePayloadReaderDelegate) return payloadReader.isCharacters(); + return super.isEndElement(); + } + + public boolean isWhiteSpace() { + if (usePayloadReaderDelegate) return payloadReader.isWhiteSpace(); + return super.isWhiteSpace(); + } + + public String getAttributeValue(String namespaceURI, String localName) { + if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(namespaceURI, localName); + return super.getAttributeValue(namespaceURI, localName); + } + + public int getAttributeCount() { + if (usePayloadReaderDelegate) return payloadReader.getAttributeCount(); + return super.getAttributeCount(); + } + + public QName getAttributeName(int index) { + if (usePayloadReaderDelegate) return payloadReader.getAttributeName(index); + return super.getAttributeName(index); + } + + public String getAttributeNamespace(int index) { + if (usePayloadReaderDelegate) return payloadReader.getAttributeNamespace(index); + return super.getAttributeNamespace(index); + } + + public String getAttributeLocalName(int index) { + if (usePayloadReaderDelegate) return payloadReader.getAttributeLocalName(index); + return super.getAttributeLocalName(index); + } + + public String getAttributePrefix(int index) { + if (usePayloadReaderDelegate) return payloadReader.getAttributePrefix(index); + return super.getAttributePrefix(index); + } + + public String getAttributeType(int index) { + if (usePayloadReaderDelegate) return payloadReader.getAttributeType(index); + return super.getAttributeType(index); + } + + public String getAttributeValue(int index) { + if (usePayloadReaderDelegate) return payloadReader.getAttributeValue(index); + return super.getAttributeValue(index); + } + + public boolean isAttributeSpecified(int index) { + if (usePayloadReaderDelegate) return payloadReader.isAttributeSpecified(index); + return super.isAttributeSpecified(index); + } + + public int getNamespaceCount() { + if (usePayloadReaderDelegate) return payloadReader.getNamespaceCount(); + return super.getNamespaceCount(); + } + + public String getNamespacePrefix(int index) { + if (usePayloadReaderDelegate) return payloadReader.getNamespacePrefix(index); + return super.getNamespacePrefix(index); + } + + public String getNamespaceURI(int index) { + if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(index); + return super.getNamespaceURI(index); + } + + public NamespaceContext getNamespaceContext() { + if (usePayloadReaderDelegate) return payloadReader.getNamespaceContext(); + return super.getNamespaceContext(); + } + + public int getEventType() { + if (usePayloadReaderDelegate) return payloadReader.getEventType(); + return super.getEventType(); + } + + public String getText() { + if (usePayloadReaderDelegate) return payloadReader.getText(); + return super.getText(); + } + + public char[] getTextCharacters() { + if (usePayloadReaderDelegate) return payloadReader.getTextCharacters(); + return super.getTextCharacters(); + } + + public int getTextCharacters(int sourceStart, char[] target, + int targetStart, int length) throws XMLStreamException { + if (usePayloadReaderDelegate) return payloadReader.getTextCharacters(sourceStart, target, targetStart, + length); + return super.getTextCharacters(sourceStart, target, targetStart, length); + } + + public int getTextStart() { + if (usePayloadReaderDelegate) return payloadReader.getTextStart(); + return super.getTextStart(); + } + + public int getTextLength() { + if (usePayloadReaderDelegate) return payloadReader.getTextLength(); + return super.getTextLength(); + } + + public String getEncoding() { + if (usePayloadReaderDelegate) return payloadReader.getEncoding(); + return super.getEncoding(); + } + + public boolean hasText() { + if (usePayloadReaderDelegate) return payloadReader.hasText(); + return super.hasText(); + } + + public Location getLocation() { + if (usePayloadReaderDelegate) return payloadReader.getLocation(); + return super.getLocation(); + } + + public QName getName() { + if (usePayloadReaderDelegate) return payloadReader.getName(); + return super.getName(); + } + + public String getLocalName() { + if (usePayloadReaderDelegate) return payloadReader.getLocalName(); + return super.getLocalName(); + } + + public boolean hasName() { + if (usePayloadReaderDelegate) return payloadReader.hasName(); + return super.hasName(); + } + + public String getNamespaceURI() { + if (usePayloadReaderDelegate) return payloadReader.getNamespaceURI(); + return super.getNamespaceURI(); + } + + public String getPrefix() { + if (usePayloadReaderDelegate) return payloadReader.getPrefix(); + return super.getPrefix(); + } + + public String getVersion() { + if (usePayloadReaderDelegate) return payloadReader.getVersion(); + return super.getVersion(); + } + + public boolean isStandalone() { + if (usePayloadReaderDelegate) return payloadReader.isStandalone(); + return super.isStandalone(); + } + + public boolean standaloneSet() { + if (usePayloadReaderDelegate) return payloadReader.standaloneSet(); + return super.standaloneSet(); + } + + public String getCharacterEncodingScheme() { + if (usePayloadReaderDelegate) return payloadReader.getCharacterEncodingScheme(); + return super.getCharacterEncodingScheme(); + } + + public String getPITarget() { + if (usePayloadReaderDelegate) return payloadReader.getPITarget(); + return super.getPITarget(); + } + + public String getPIData() { + if (usePayloadReaderDelegate) return payloadReader.getPIData(); + return super.getPIData(); + } + + //make sure that message is not realized as a result of call + //to getFirstChild + protected Node getFirstChild(Node node) { + if (node instanceof BodyImpl) { + return ((BodyImpl) node).getFirstChildNoMaterialize(); + } else { + return node.getFirstChild(); + } + } + + protected Node getNextSibling(Node node) { + if (node instanceof BodyImpl) { + //body is not expected to have a next sibling - even if it does + //we would have to materialize the node to retrieve it. + //Since we don't want to materialize it right now, just return null + return null; + } + return node.getNextSibling(); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxReaderEx.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxReaderEx.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,147 @@ +/* + * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util.stax; + +import com.sun.xml.internal.org.jvnet.staxex.Base64Data; +import com.sun.xml.internal.org.jvnet.staxex.BinaryText; +import com.sun.xml.internal.org.jvnet.staxex.XMLStreamReaderEx; +import com.sun.xml.internal.org.jvnet.staxex.util.DOMStreamReader; +import org.w3c.dom.Node; +import org.w3c.dom.Text; + +import javax.xml.soap.SOAPElement; +import javax.xml.stream.XMLStreamException; +import java.util.Iterator; + +/** + * SaajStaxReaderEx + * + * @author shih-chang.chen@oracle.com + */ +public class SaajStaxReaderEx extends DOMStreamReader implements XMLStreamReaderEx { + //TODO extends com.sun.xml.internal.ws.streaming.DOMStreamReader + private BinaryText binaryText = null; + private Base64Data base64AttData = null; + + public SaajStaxReaderEx(SOAPElement se) { + super(se); + } + + @Override + public int next() throws XMLStreamException { + binaryText = null; + base64AttData = null; + while(true) { + int r = _next(); + switch (r) { + case CHARACTERS: + if (_current instanceof BinaryText) { + binaryText = (BinaryText) _current; + base64AttData = new Base64Data(); + base64AttData.set(binaryText.getDataHandler()); +//System.out.println("--------------- debug SaajStaxReaderEx binaryText " + binaryText); + } else { + // if we are currently at text node, make sure that this is a meaningful text node. + Node prev = _current.getPreviousSibling(); + if(prev!=null && prev.getNodeType()==Node.TEXT_NODE) + continue; // nope. this is just a continuation of previous text that should be invisible + + Text t = (Text)_current; + wholeText = t.getWholeText(); + if(wholeText.length()==0) + continue; // nope. this is empty text. + } + return CHARACTERS; + case START_ELEMENT: + splitAttributes(); + return START_ELEMENT; + default: + return r; + } + } + } + + @Override + public String getElementTextTrim() throws XMLStreamException { + // TODO Auto-generated method stub + return null; + } + + @Override + public CharSequence getPCDATA() throws XMLStreamException { + return (binaryText != null) ? base64AttData : getText(); + } + + @Override + public com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx getNamespaceContext() { + return new com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx() { + + @Override + public String getNamespaceURI(String prefix) { + return _current.lookupNamespaceURI(prefix); + } + + @Override + public String getPrefix(String uri) { + return _current.lookupPrefix(uri); + } + + @Override + public Iterator getPrefixes(String arg0) { + // TODO Auto-generated method stub + return null; + } + + @Override + public Iterator iterator() { + // TODO Auto-generated method stub + return null; + } + + }; + } + + + @Override + public int getTextLength() { + return (binaryText != null) ? base64AttData.length() : super.getTextLength(); + } + + @Override + public int getTextStart() { + return (binaryText != null) ? 0: super.getTextStart(); + } + + @Override + public char[] getTextCharacters() { + if (binaryText != null) { + char[] chars = new char[base64AttData.length()]; + base64AttData.writeTo(chars, 0); + return chars; + } + return super.getTextCharacters(); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriter.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriter.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,334 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util.stax; + +import java.util.Arrays; +import java.util.Iterator; + +import javax.xml.namespace.NamespaceContext; +import javax.xml.namespace.QName; +import javax.xml.soap.SOAPElement; +import javax.xml.soap.SOAPException; +import javax.xml.soap.SOAPMessage; +import javax.xml.stream.XMLStreamException; +import javax.xml.stream.XMLStreamWriter; + +import org.w3c.dom.Comment; +import org.w3c.dom.Node; + +/** + * SaajStaxWriter builds a SAAJ SOAPMessage by using XMLStreamWriter interface. + * + * @author shih-chang.chen@oracle.com + */ +public class SaajStaxWriter implements XMLStreamWriter { + + protected SOAPMessage soap; + protected String envURI; + protected SOAPElement currentElement; + + static final protected String Envelope = "Envelope"; + static final protected String Header = "Header"; + static final protected String Body = "Body"; + static final protected String xmlns = "xmlns"; + + public SaajStaxWriter(final SOAPMessage msg, String uri) throws SOAPException { + soap = msg; + this.envURI = uri; + } + + public SOAPMessage getSOAPMessage() { + return soap; + } + + protected SOAPElement getEnvelope() throws SOAPException { + return soap.getSOAPPart().getEnvelope(); + } + + @Override + public void writeStartElement(final String localName) throws XMLStreamException { + try { + currentElement = currentElement.addChildElement(localName); + } catch (SOAPException e) { + throw new XMLStreamException(e); + } + } + + @Override + public void writeStartElement(final String ns, final String ln) throws XMLStreamException { + writeStartElement(null, ln, ns); + } + + @Override + public void writeStartElement(final String prefix, final String ln, final String ns) throws XMLStreamException { + try { + if (envURI.equals(ns)) { + if (Envelope.equals(ln)) { + currentElement = getEnvelope(); + fixPrefix(prefix); + return; + } else if (Header.equals(ln)) { + currentElement = soap.getSOAPHeader(); + fixPrefix(prefix); + return; + } else if (Body.equals(ln)) { + currentElement = soap.getSOAPBody(); + fixPrefix(prefix); + return; + } + } + currentElement = (prefix == null) ? + currentElement.addChildElement(new QName(ns, ln)) : + currentElement.addChildElement(ln, prefix, ns); + } catch (SOAPException e) { + throw new XMLStreamException(e); + } + } + + private void fixPrefix(final String prfx) throws XMLStreamException { + fixPrefix(prfx, currentElement); + } + + private void fixPrefix(final String prfx, SOAPElement element) throws XMLStreamException { + String oldPrfx = element.getPrefix(); + if (prfx != null && !prfx.equals(oldPrfx)) { + element.setPrefix(prfx); + } + } + + @Override + public void writeEmptyElement(final String uri, final String ln) throws XMLStreamException { + writeStartElement(null, ln, uri); + } + + @Override + public void writeEmptyElement(final String prefix, final String ln, final String uri) throws XMLStreamException { + writeStartElement(prefix, ln, uri); + } + + @Override + public void writeEmptyElement(final String ln) throws XMLStreamException { + writeStartElement(null, ln, null); + } + + @Override + public void writeEndElement() throws XMLStreamException { + if (currentElement != null) currentElement = currentElement.getParentElement(); + } + + @Override + public void writeEndDocument() throws XMLStreamException { + } + + @Override + public void close() throws XMLStreamException { + } + + @Override + public void flush() throws XMLStreamException { + } + + @Override + public void writeAttribute(final String ln, final String val) throws XMLStreamException { + writeAttribute(null, null, ln, val); + } + + @Override + public void writeAttribute(final String prefix, final String ns, final String ln, final String value) throws XMLStreamException { + try { + if (ns == null) { + if (prefix == null && xmlns.equals(ln)) { + currentElement.addNamespaceDeclaration("", value); + } else { + currentElement.setAttributeNS("", ln, value); + } + } else { + QName name = (prefix == null) ? new QName(ns, ln) : new QName(ns, ln, prefix); + currentElement.addAttribute(name, value); + } + } catch (SOAPException e) { + throw new XMLStreamException(e); + } + } + + @Override + public void writeAttribute(final String ns, final String ln, final String val) throws XMLStreamException { + writeAttribute(null, ns, ln, val); + } + + @Override + public void writeNamespace(String prefix, final String uri) throws XMLStreamException { + + // make prefix default if null or "xmlns" (according to javadoc) + if (prefix == null || "xmlns".equals(prefix)) { + prefix = ""; + } + + try { + currentElement.addNamespaceDeclaration(prefix, uri); + } catch (SOAPException e) { + throw new XMLStreamException(e); + } + } + + @Override + public void writeDefaultNamespace(final String uri) throws XMLStreamException { + writeNamespace("", uri); + } + + @Override + public void writeComment(final String data) throws XMLStreamException { + Comment c = soap.getSOAPPart().createComment(data); + currentElement.appendChild(c); + } + + @Override + public void writeProcessingInstruction(final String target) throws XMLStreamException { + Node n = soap.getSOAPPart().createProcessingInstruction(target, ""); + currentElement.appendChild(n); + } + + @Override + public void writeProcessingInstruction(final String target, final String data) throws XMLStreamException { + Node n = soap.getSOAPPart().createProcessingInstruction(target, data); + currentElement.appendChild(n); + } + + @Override + public void writeCData(final String data) throws XMLStreamException { + Node n = soap.getSOAPPart().createCDATASection(data); + currentElement.appendChild(n); + } + + @Override + public void writeDTD(final String dtd) throws XMLStreamException { + //TODO ... Don't do anything here + } + + @Override + public void writeEntityRef(final String name) throws XMLStreamException { + Node n = soap.getSOAPPart().createEntityReference(name); + currentElement.appendChild(n); + } + + @Override + public void writeStartDocument() throws XMLStreamException { + } + + @Override + public void writeStartDocument(final String version) throws XMLStreamException { + if (version != null) soap.getSOAPPart().setXmlVersion(version); + } + + @Override + public void writeStartDocument(final String encoding, final String version) throws XMLStreamException { + if (version != null) soap.getSOAPPart().setXmlVersion(version); + if (encoding != null) { + try { + soap.setProperty(SOAPMessage.CHARACTER_SET_ENCODING, encoding); + } catch (SOAPException e) { + throw new XMLStreamException(e); + } + } + } + + @Override + public void writeCharacters(final String text) throws XMLStreamException { + try { + currentElement.addTextNode(text); + } catch (SOAPException e) { + throw new XMLStreamException(e); + } + } + + @Override + public void writeCharacters(final char[] text, final int start, final int len) throws XMLStreamException { + char[] chr = (start == 0 && len == text.length) ? text : Arrays.copyOfRange(text, start, start + len); + try { + currentElement.addTextNode(new String(chr)); + } catch (SOAPException e) { + throw new XMLStreamException(e); + } + } + + @Override + public String getPrefix(final String uri) throws XMLStreamException { + return currentElement.lookupPrefix(uri); + } + + @Override + public void setPrefix(final String prefix, final String uri) throws XMLStreamException { + try { + this.currentElement.addNamespaceDeclaration(prefix, uri); + } catch (SOAPException e) { + throw new XMLStreamException(e); + } + } + + @Override + public void setDefaultNamespace(final String uri) throws XMLStreamException { + setPrefix("", uri); + } + + @Override + public void setNamespaceContext(final NamespaceContext context)throws XMLStreamException { + throw new UnsupportedOperationException(); + } + + @Override + public Object getProperty(final String name) throws IllegalArgumentException { + //TODO the following line is to make eclipselink happy ... they are aware of this problem - + if (javax.xml.stream.XMLOutputFactory.IS_REPAIRING_NAMESPACES.equals(name)) return Boolean.FALSE; + return null; + } + + @Override + public NamespaceContext getNamespaceContext() { + return new NamespaceContext() { + public String getNamespaceURI(final String prefix) { + return currentElement.getNamespaceURI(prefix); + } + public String getPrefix(final String namespaceURI) { + return currentElement.lookupPrefix(namespaceURI); + } + public Iterator getPrefixes(final String namespaceURI) { + return new Iterator() { + String prefix = getPrefix(namespaceURI); + public boolean hasNext() { + return (prefix != null); + } + public Object next() { + if (!hasNext()) throw new java.util.NoSuchElementException(); + String next = prefix; + prefix = null; + return next; + } + public void remove() {} + }; + } + }; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriterEx.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/stax/SaajStaxWriterEx.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,245 @@ +/* + * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package com.sun.xml.internal.messaging.saaj.util.stax; + +import java.io.OutputStream; +import java.util.Arrays; +import java.util.Iterator; +import java.util.UUID; + +import javax.activation.DataHandler; +import javax.xml.bind.attachment.AttachmentMarshaller; +import javax.xml.soap.SOAPException; +import javax.xml.soap.SOAPMessage; +import javax.xml.stream.XMLStreamException; + +import com.sun.xml.internal.org.jvnet.staxex.Base64Data; +import com.sun.xml.internal.org.jvnet.staxex.BinaryText; +import com.sun.xml.internal.org.jvnet.staxex.MtomEnabled; +import com.sun.xml.internal.org.jvnet.staxex.NamespaceContextEx; +import com.sun.xml.internal.org.jvnet.staxex.StreamingDataHandler; +import com.sun.xml.internal.org.jvnet.staxex.XMLStreamWriterEx; +import com.sun.xml.internal.org.jvnet.staxex.util.MtomStreamWriter; +// +//import com.sun.xml.internal.ws.api.message.saaj.SaajStaxWriter; +//import com.sun.xml.internal.ws.developer.StreamingDataHandler; +//import com.sun.xml.internal.ws.streaming.MtomStreamWriter; + +/** + * SaajStaxWriterEx converts XMLStreamWriterEx calls to build an orasaaj SOAPMessage with BinaryTextImpl. + * + * @author shih-chang.chen@oracle.com + */ +public class SaajStaxWriterEx extends SaajStaxWriter implements XMLStreamWriterEx, MtomStreamWriter { + + static final protected String xopNS = "http://www.w3.org/2004/08/xop/include"; + static final protected String Include = "Include"; + static final protected String href = "href"; + + private enum State {xopInclude, others}; + private State state = State.others; + private BinaryText binaryText; + + public SaajStaxWriterEx(SOAPMessage msg, String uri) throws SOAPException { + super(msg, uri); + } + + public void writeStartElement(String prefix, String ln, String ns) throws XMLStreamException { + if (xopNS.equals(ns) && Include.equals(ln)) { + state = State.xopInclude; + return; + } else { + super.writeStartElement(prefix, ln, ns); + } + } + + @Override + public void writeEndElement() throws XMLStreamException { + if (state.equals(State.xopInclude)) { + state = State.others; + } else { + super.writeEndElement(); + } + } + + @Override + public void writeAttribute(String prefix, String ns, String ln, String value) throws XMLStreamException { + if (binaryText != null && href.equals(ln)) { + return; + } else { + super.writeAttribute(prefix, ns, ln, value); + } + } + +// @Override +// public void writeComment(String data) throws XMLStreamException { +// ((ElementImpl)currentElement).addCommentNode(data); +// } +// +// @Override +// public void writeCData(String data) throws XMLStreamException { +// CDataTextImpl cdt = new CDataTextImpl(soap.getSOAPPart(), data); +// currentElement.appendChild(cdt); +// } + + @Override + public NamespaceContextEx getNamespaceContext() { + return new NamespaceContextEx() { + public String getNamespaceURI(String prefix) { + return currentElement.getNamespaceURI(prefix); + } + public String getPrefix(String namespaceURI) { + return currentElement.lookupPrefix(namespaceURI); + } + public Iterator getPrefixes(final String namespaceURI) { + return new Iterator() { + String prefix = getPrefix(namespaceURI); + public boolean hasNext() { + return (prefix != null); + } + public Object next() { + if (prefix == null) throw new java.util.NoSuchElementException(); + String next = prefix; + prefix = null; + return next; + } + public void remove() {} + }; + } + public Iterator iterator() { + return new Iterator() { + public boolean hasNext() { return false; } + public Binding next() { return null; } + public void remove() {} + }; + } + }; + } + + @Override + public void writeBinary(DataHandler data) throws XMLStreamException { +// binaryText = BinaryTextImpl.createBinaryTextFromDataHandler((MessageImpl)soap, null, currentElement.getOwnerDocument(), data); +// currentElement.appendChild(binaryText); + addBinaryText(data); + } + + @Override + public OutputStream writeBinary(String arg0) throws XMLStreamException { + return null; + } + + @Override + public void writeBinary(byte[] data, int offset, int length, String contentType) throws XMLStreamException { +// if (mtomThreshold == -1 || mtomThreshold > length) return null; + byte[] bytes = (offset == 0 && length == data.length) ? data : Arrays.copyOfRange(data, offset, offset + length); + if (currentElement instanceof MtomEnabled) { + binaryText = ((MtomEnabled) currentElement).addBinaryText(bytes); + } else { + throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement); + } + } + + @Override + public void writePCDATA(CharSequence arg0) throws XMLStreamException { + if (arg0 instanceof Base64Data) { + // The fix of StreamReaderBufferCreator preserves this dataHandler + addBinaryText(((Base64Data) arg0).getDataHandler()); + } else { + // We should not normally get here as we expect a DataHandler, + // but this is the most general solution. If we do get + // something other than a Data Handler, create a Text node with + // the data. Another alternative would be to throw an exception, + // but in the most general case, we don't know whether this input + // is expected. + try { + currentElement.addTextNode(arg0.toString()); + } catch (SOAPException e) { + throw new XMLStreamException("Cannot add Text node", e); + } + } + } + + static private String encodeCid() { + String cid = "example.jaxws.sun.com"; + String name = UUID.randomUUID() + "@"; + return name + cid; + } + + private String addBinaryText(DataHandler data) { + String hrefOrCid = null; + if (data instanceof StreamingDataHandler) { + hrefOrCid = ((StreamingDataHandler) data).getHrefCid(); + } + if (hrefOrCid == null) hrefOrCid = encodeCid(); + + String prefixedCid = (hrefOrCid.startsWith("cid:")) ? hrefOrCid : "cid:" + hrefOrCid; + // Should we do the threshold processing on DataHandler ? But that would be + // expensive as DataHolder need to read the data again from its source + //binaryText = BinaryTextImpl.createBinaryTextFromDataHandler((MessageImpl) soap, prefixedCid, currentElement.getOwnerDocument(), data); + //currentElement.appendChild(binaryText); + if (currentElement instanceof MtomEnabled) { + binaryText = ((MtomEnabled) currentElement).addBinaryText(prefixedCid, data); + } else { + throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement); + } + return hrefOrCid; + } + + public AttachmentMarshaller getAttachmentMarshaller() { + return new AttachmentMarshaller() { + @Override + public String addMtomAttachment(DataHandler data, String ns, String ln) { +// if (mtomThreshold == -1) return null; + String hrefOrCid = addBinaryText(data); +// return binaryText.getHref(); + return hrefOrCid; + } + + @Override + public String addMtomAttachment(byte[] data, int offset, int length, String mimeType, String ns, String ln) { +// if (mtomThreshold == -1 || mtomThreshold > length) return null; + byte[] bytes = (offset == 0 && length == data.length) ? data : Arrays.copyOfRange(data, offset, offset + length); +// binaryText = (BinaryTextImpl) ((ElementImpl) currentElement).addAsBase64TextNode(bytes); + if (currentElement instanceof MtomEnabled) { + binaryText = ((MtomEnabled) currentElement).addBinaryText(bytes); + } else { + throw new IllegalStateException("The currentElement is not MtomEnabled " + currentElement); + } + return binaryText.getHref(); + } + + @Override + public String addSwaRefAttachment(DataHandler data) { + return "cid:"+encodeCid(); + } + + @Override + public boolean isXOPPackage() { + return true; + } + }; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/transform/EfficientStreamingTransformer.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/com/sun/xml/internal/messaging/saaj/util/transform/EfficientStreamingTransformer.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,423 @@ +/* + * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * EfficientStreamingTransformer.java + * + * Created on July 29, 2002, 3:49 PM + */ + +package com.sun.xml.internal.messaging.saaj.util.transform; + +import java.io.*; + +import java.net.URISyntaxException; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.dom.DOMResult; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; + +import org.w3c.dom.Document; + +import com.sun.xml.internal.messaging.saaj.util.XMLDeclarationParser; +import com.sun.xml.internal.messaging.saaj.util.FastInfosetReflection; +import java.net.URI; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; + +/** + * This class is a proxy for a Transformer object with optimizations + * for certain cases. If source and result are of type stream, then + * bytes are simply copied whenever possible (note that this assumes + * that the input is well formed). In addition, it provides support for + * FI using native DOM parsers and serializers. + * + * @author Panos Kougiouris panos@acm.org + * @author Santiago.PericasGeertsen@sun.com + * + */ +public class EfficientStreamingTransformer + extends javax.xml.transform.Transformer { + + //static final String version; + //static final String vendor; + // removing static : security issue : CR 6813167Z + private final TransformerFactory transformerFactory = TransformerFactory.newInstance(); + + /** + removing support for Java 1.4 and 1.3 : CR6658158 + static { + version = System.getProperty("java.vm.version"); + vendor = System.getProperty("java.vm.vendor"); + if (vendor.startsWith("Sun") && + (version.startsWith("1.4") || version.startsWith("1.3"))) { + transformerFactory = + new com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl(); + } + }*/ + + /** + * TransformerFactory instance. + */ + + /** + * Underlying XSLT transformer. + */ + private Transformer m_realTransformer = null; + + /** + * Undelying FI DOM parser. + */ + private Object m_fiDOMDocumentParser = null; + + /** + * Underlying FI DOM serializer. + */ + private Object m_fiDOMDocumentSerializer = null; + + private EfficientStreamingTransformer() { + } + + private void materialize() throws TransformerException { + if (m_realTransformer == null) { + m_realTransformer = transformerFactory.newTransformer(); + } + } + + public void clearParameters() { + if (m_realTransformer != null) + m_realTransformer.clearParameters(); + } + + public javax.xml.transform.ErrorListener getErrorListener() { + try { + materialize(); + return m_realTransformer.getErrorListener(); + } catch (TransformerException e) { + // will be caught later + } + return null; + } + + public java.util.Properties getOutputProperties() { + try { + materialize(); + return m_realTransformer.getOutputProperties(); + } catch (TransformerException e) { + // will be caught later + } + return null; + } + + public String getOutputProperty(String str) + throws java.lang.IllegalArgumentException { + try { + materialize(); + return m_realTransformer.getOutputProperty(str); + } catch (TransformerException e) { + // will be caught later + } + return null; + } + + public Object getParameter(String str) { + try { + materialize(); + return m_realTransformer.getParameter(str); + } catch (TransformerException e) { + // will be caught later + } + return null; + } + + public javax.xml.transform.URIResolver getURIResolver() { + try { + materialize(); + return m_realTransformer.getURIResolver(); + } catch (TransformerException e) { + // will be caught later + } + return null; + } + + public void setErrorListener( + javax.xml.transform.ErrorListener errorListener) + throws java.lang.IllegalArgumentException { + try { + materialize(); + m_realTransformer.setErrorListener(errorListener); + } catch (TransformerException e) { + // will be caught later + } + } + + public void setOutputProperties(java.util.Properties properties) + throws java.lang.IllegalArgumentException { + try { + materialize(); + m_realTransformer.setOutputProperties(properties); + } catch (TransformerException e) { + // will be caught later + } + } + + public void setOutputProperty(String str, String str1) + throws java.lang.IllegalArgumentException { + try { + materialize(); + m_realTransformer.setOutputProperty(str, str1); + } catch (TransformerException e) { + // will be caught later + } + } + + public void setParameter(String str, Object obj) { + try { + materialize(); + m_realTransformer.setParameter(str, obj); + } catch (TransformerException e) { + // will be caught later + } + } + + public void setURIResolver(javax.xml.transform.URIResolver uRIResolver) { + try { + materialize(); + m_realTransformer.setURIResolver(uRIResolver); + } catch (TransformerException e) { + // will be caught later + } + } + + private InputStream getInputStreamFromSource(StreamSource s) + throws TransformerException { + + InputStream stream = s.getInputStream(); + if (stream != null) + return stream; + + if (s.getReader() != null) + return null; + + String systemId = s.getSystemId(); + if (systemId != null) { + try { + String fileURL = systemId; + + if (systemId.startsWith("file:///")) + { + /* + systemId is: + file:///:/some/path/file.xml + or + file:///some/path/file.xml + */ + + String absolutePath = systemId.substring(7); + /* + /:/some/path/file.xml + or + /some/path/file.xml + */ + + boolean hasDriveDesignator = absolutePath.indexOf(":") > 0; + if (hasDriveDesignator) { + String driveDesignatedPath = absolutePath.substring(1); + /* + :/some/path/file.xml */ + fileURL = driveDesignatedPath; + } + else { + /* + /some/path/file.xml */ + fileURL = absolutePath; + } + } + //return new FileInputStream(fileURL); + try { + return new FileInputStream(new File(new URI(fileURL))); + } catch (URISyntaxException ex) { + throw new TransformerException(ex); + } + } catch (IOException e) { + throw new TransformerException(e.toString()); + } + } + + throw new TransformerException("Unexpected StreamSource object"); + } + + //------------------------------------------------------------------------ + + public void transform( + javax.xml.transform.Source source, + javax.xml.transform.Result result) + throws javax.xml.transform.TransformerException + { + // StreamSource -> StreamResult + if ((source instanceof StreamSource) + && (result instanceof StreamResult)) { + try { + StreamSource streamSource = (StreamSource) source; + InputStream is = getInputStreamFromSource(streamSource); + + OutputStream os = ((StreamResult) result).getOutputStream(); + if (os == null) + // TODO: We might want to fix this if it were to be used beyond + // XmlDataContentHandler that we know uses only OutputStream + throw new TransformerException("Unexpected StreamResult object contains null OutputStream"); + + if (is != null) { + if (is.markSupported()) + is.mark(Integer.MAX_VALUE); + int num; + byte[] b = new byte[8192]; + while ((num = is.read(b)) != -1) { + os.write(b, 0, num); + } + if (is.markSupported()) + is.reset(); + return; + } + + Reader reader = streamSource.getReader(); + if (reader != null) { + + if (reader.markSupported()) + reader.mark(Integer.MAX_VALUE); + + PushbackReader pushbackReader = new PushbackReader(reader, 4096); + //some size to unread + XMLDeclarationParser ev = + new XMLDeclarationParser(pushbackReader); + try { + ev.parse(); + } catch (Exception ex) { + throw new TransformerException( + "Unable to run the JAXP transformer on a stream " + + ex.getMessage()); + } + Writer writer = + new OutputStreamWriter(os /*, ev.getEncoding()*/); + ev.writeTo(writer); // doesn't write any, if no header + + int num; + char[] ac = new char[8192]; + while ((num = pushbackReader.read(ac)) != -1) { + writer.write(ac, 0, num); + } + writer.flush(); + + if (reader.markSupported()) + reader.reset(); + return; + } + } catch (IOException e) { + e.printStackTrace(); + throw new TransformerException(e.toString()); + } + + throw new TransformerException("Unexpected StreamSource object"); + } + // FastInfosetSource -> DOMResult + else if (FastInfosetReflection.isFastInfosetSource(source) + && (result instanceof DOMResult)) + { + try { + // Use reflection to avoid a static dep with FI + if (m_fiDOMDocumentParser == null) { + m_fiDOMDocumentParser = FastInfosetReflection.DOMDocumentParser_new(); + } + + // m_fiDOMDocumentParser.parse(document, source.getInputStream()) + FastInfosetReflection.DOMDocumentParser_parse( + m_fiDOMDocumentParser, + (Document) ((DOMResult) result).getNode(), + FastInfosetReflection.FastInfosetSource_getInputStream(source)); + + // We're done! + return; + } + catch (Exception e) { + throw new TransformerException(e); + } + } + // DOMSource -> FastInfosetResult + else if ((source instanceof DOMSource) + && FastInfosetReflection.isFastInfosetResult(result)) + { + try { + // Use reflection to avoid a static dep with FI + if (m_fiDOMDocumentSerializer == null) { + m_fiDOMDocumentSerializer = FastInfosetReflection.DOMDocumentSerializer_new(); + } + + // m_fiDOMDocumentSerializer.setOutputStream(result.getOutputStream()) + FastInfosetReflection.DOMDocumentSerializer_setOutputStream( + m_fiDOMDocumentSerializer, + FastInfosetReflection.FastInfosetResult_getOutputStream(result)); + + // m_fiDOMDocumentSerializer.serialize(node) + FastInfosetReflection.DOMDocumentSerializer_serialize( + m_fiDOMDocumentSerializer, + ((DOMSource) source).getNode()); + + // We're done! + return; + } + catch (Exception e) { + throw new TransformerException(e); + } + } + + // All other cases -- use transformer object + + materialize(); + m_realTransformer.transform(source, result); + } + + /** + * Threadlocal to hold a Transformer instance for this thread. + * CR : 6813167 + */ + //private static ThreadLocal effTransformer = new ThreadLocal(); + + /** + * Return Transformer instance for this thread, allocating a new one if + * necessary. Note that this method does not clear global parameters, + * properties or any other data set on a previously used transformer. + */ + public static Transformer newTransformer() { + //CR : 6813167 + /*Transformer tt = (Transformer) effTransformer.get(); + if (tt == null) { + effTransformer.set(tt = new EfficientStreamingTransformer()); + } + return tt;*/ + return new EfficientStreamingTransformer(); + } + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/AttachmentPart.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/AttachmentPart.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,528 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import java.io.InputStream; +import java.io.Reader; +import java.util.Iterator; + +import javax.activation.DataHandler; + +/** + * A single attachment to a SOAPMessage object. A SOAPMessage + * object may contain zero, one, or many AttachmentPart objects. + * Each AttachmentPart object consists of two parts, + * application-specific content and associated MIME headers. The + * MIME headers consists of name/value pairs that can be used to + * identify and describe the content. + *

      + * An AttachmentPart object must conform to certain standards. + *

        + *
      1. It must conform to + * MIME [RFC2045] standards + *
      2. It MUST contain content + *
      3. The header portion MUST include the following header: + *
          + *
        • Content-Type
          + * This header identifies the type of data in the content of an + * AttachmentPart object and MUST conform to [RFC2045]. + * The following is an example of a Content-Type header: + *
          + *       Content-Type:  application/xml
          + *       
          + * The following line of code, in which ap is an + * AttachmentPart object, sets the header shown in + * the previous example. + *
          + *       ap.setMimeHeader("Content-Type", "application/xml");
          + *       
          + *

          + *

        + *
      + *

      + * There are no restrictions on the content portion of an + * AttachmentPart object. The content may be anything from a + * simple plain text object to a complex XML document or image file. + * + *

      + * An AttachmentPart object is created with the method + * SOAPMessage.createAttachmentPart. After setting its MIME headers, + * the AttachmentPart object is added to the message + * that created it with the method SOAPMessage.addAttachmentPart. + * + *

      + * The following code fragment, in which m is a + * SOAPMessage object and contentStringl is a + * String, creates an instance of AttachmentPart, + * sets the AttachmentPart object with some content and + * header information, and adds the AttachmentPart object to + * the SOAPMessage object. + *

      + *     AttachmentPart ap1 = m.createAttachmentPart();
      + *     ap1.setContent(contentString1, "text/plain");
      + *     m.addAttachmentPart(ap1);
      + * 
      + * + * + *

      + * The following code fragment creates and adds a second + * AttachmentPart instance to the same message. jpegData + * is a binary byte buffer representing the jpeg file. + *

      + *     AttachmentPart ap2 = m.createAttachmentPart();
      + *     byte[] jpegData =  ...;
      + *     ap2.setContent(new ByteArrayInputStream(jpegData), "image/jpeg");
      + *     m.addAttachmentPart(ap2);
      + * 
      + *

      + * The getContent method retrieves the contents and header from + * an AttachmentPart object. Depending on the + * DataContentHandler objects present, the returned + * Object can either be a typed Java object corresponding + * to the MIME type or an InputStream object that contains the + * content as bytes. + *

      + *     String content1 = ap1.getContent();
      + *     java.io.InputStream content2 = ap2.getContent();
      + * 
      + * + * The method clearContent removes all the content from an + * AttachmentPart object but does not affect its header information. + *
      + *     ap1.clearContent();
      + * 
      + * + * @since 1.6 + */ + +public abstract class AttachmentPart { + /** + * Returns the number of bytes in this AttachmentPart + * object. + * + * @return the size of this AttachmentPart object in bytes + * or -1 if the size cannot be determined + * @exception SOAPException if the content of this attachment is + * corrupted of if there was an exception while trying + * to determine the size. + */ + public abstract int getSize() throws SOAPException; + + /** + * Clears out the content of this AttachmentPart object. + * The MIME header portion is left untouched. + */ + public abstract void clearContent(); + + /** + * Gets the content of this AttachmentPart object as a Java + * object. The type of the returned Java object depends on (1) the + * DataContentHandler object that is used to interpret the bytes + * and (2) the Content-Type given in the header. + *

      + * For the MIME content types "text/plain", "text/html" and "text/xml", the + * DataContentHandler object does the conversions to and + * from the Java types corresponding to the MIME types. + * For other MIME types,the DataContentHandler object + * can return an InputStream object that contains the content data + * as raw bytes. + *

      + * A SAAJ-compliant implementation must, as a minimum, return a + * java.lang.String object corresponding to any content + * stream with a Content-Type value of + * text/plain, a + * javax.xml.transform.stream.StreamSource object corresponding to a + * content stream with a Content-Type value of + * text/xml, a java.awt.Image object + * corresponding to a content stream with a + * Content-Type value of image/gif or + * image/jpeg. For those content types that an + * installed DataContentHandler object does not understand, the + * DataContentHandler object is required to return a + * java.io.InputStream object with the raw bytes. + * + * @return a Java object with the content of this AttachmentPart + * object + * + * @exception SOAPException if there is no content set into this + * AttachmentPart object or if there was a data + * transformation error + */ + public abstract Object getContent() throws SOAPException; + + /** + * Gets the content of this AttachmentPart object as an + * InputStream as if a call had been made to getContent and no + * DataContentHandler had been registered for the + * content-type of this AttachmentPart. + *

      + * Note that reading from the returned InputStream would result in consuming + * the data in the stream. It is the responsibility of the caller to reset + * the InputStream appropriately before calling a Subsequent API. If a copy + * of the raw attachment content is required then the {@link #getRawContentBytes} API + * should be used instead. + * + * @return an InputStream from which the raw data contained by + * the AttachmentPart can be accessed. + * + * @throws SOAPException if there is no content set into this + * AttachmentPart object or if there was a data + * transformation error. + * + * @since 1.6, SAAJ 1.3 + * @see #getRawContentBytes + */ + public abstract InputStream getRawContent() throws SOAPException; + + /** + * Gets the content of this AttachmentPart object as a + * byte[] array as if a call had been made to getContent and no + * DataContentHandler had been registered for the + * content-type of this AttachmentPart. + * + * @return a byte[] array containing the raw data of the + * AttachmentPart. + * + * @throws SOAPException if there is no content set into this + * AttachmentPart object or if there was a data + * transformation error. + * + * @since 1.6, SAAJ 1.3 + */ + public abstract byte[] getRawContentBytes() throws SOAPException; + + /** + * Returns an InputStream which can be used to obtain the + * content of AttachmentPart as Base64 encoded + * character data, this method would base64 encode the raw bytes + * of the attachment and return. + * + * @return an InputStream from which the Base64 encoded + * AttachmentPart can be read. + * + * @throws SOAPException if there is no content set into this + * AttachmentPart object or if there was a data + * transformation error. + * + * @since 1.6, SAAJ 1.3 + */ + public abstract InputStream getBase64Content() throws SOAPException; + + /** + * Sets the content of this attachment part to that of the given + * Object and sets the value of the Content-Type + * header to the given type. The type of the + * Object should correspond to the value given for the + * Content-Type. This depends on the particular + * set of DataContentHandler objects in use. + * + * + * @param object the Java object that makes up the content for + * this attachment part + * @param contentType the MIME string that specifies the type of + * the content + * + * @exception IllegalArgumentException may be thrown if the contentType + * does not match the type of the content object, or if there + * was no DataContentHandler object for this + * content object + * + * @see #getContent + */ + public abstract void setContent(Object object, String contentType); + + /** + * Sets the content of this attachment part to that contained by the + * InputStream content and sets the value of the + * Content-Type header to the value contained in + * contentType. + *

      + * A subsequent call to getSize() may not be an exact measure + * of the content size. + * + * @param content the raw data to add to the attachment part + * @param contentType the value to set into the Content-Type + * header + * + * @exception SOAPException if an there is an error in setting the content + * @exception NullPointerException if content is null + * @since 1.6, SAAJ 1.3 + */ + public abstract void setRawContent(InputStream content, String contentType) throws SOAPException; + + /** + * Sets the content of this attachment part to that contained by the + * byte[] array content and sets the value of the + * Content-Type header to the value contained in + * contentType. + * + * @param content the raw data to add to the attachment part + * @param contentType the value to set into the Content-Type + * header + * @param offset the offset in the byte array of the content + * @param len the number of bytes that form the content + * + * @exception SOAPException if an there is an error in setting the content + * or content is null + * @since 1.6, SAAJ 1.3 + */ + public abstract void setRawContentBytes( + byte[] content, int offset, int len, String contentType) + throws SOAPException; + + + /** + * Sets the content of this attachment part from the Base64 source + * InputStream and sets the value of the + * Content-Type header to the value contained in + * contentType, This method would first decode the base64 + * input and write the resulting raw bytes to the attachment. + *

      + * A subsequent call to getSize() may not be an exact measure + * of the content size. + * + * @param content the base64 encoded data to add to the attachment part + * @param contentType the value to set into the Content-Type + * header + * + * @exception SOAPException if an there is an error in setting the content + * @exception NullPointerException if content is null + * + * @since 1.6, SAAJ 1.3 + */ + public abstract void setBase64Content( + InputStream content, String contentType) throws SOAPException; + + + /** + * Gets the DataHandler object for this AttachmentPart + * object. + * + * @return the DataHandler object associated with this + * AttachmentPart object + * + * @exception SOAPException if there is no data in + * this AttachmentPart object + */ + public abstract DataHandler getDataHandler() + throws SOAPException; + + /** + * Sets the given DataHandler object as the data handler + * for this AttachmentPart object. Typically, on an incoming + * message, the data handler is automatically set. When + * a message is being created and populated with content, the + * setDataHandler method can be used to get data from + * various data sources into the message. + * + * @param dataHandler the DataHandler object to be set + * + * @exception IllegalArgumentException if there was a problem with + * the specified DataHandler object + */ + public abstract void setDataHandler(DataHandler dataHandler); + + + /** + * Gets the value of the MIME header whose name is "Content-ID". + * + * @return a String giving the value of the + * "Content-ID" header or null if there + * is none + * @see #setContentId + */ + public String getContentId() { + String[] values = getMimeHeader("Content-ID"); + if (values != null && values.length > 0) + return values[0]; + return null; + } + + /** + * Gets the value of the MIME header whose name is "Content-Location". + * + * @return a String giving the value of the + * "Content-Location" header or null if there + * is none + */ + public String getContentLocation() { + String[] values = getMimeHeader("Content-Location"); + if (values != null && values.length > 0) + return values[0]; + return null; + } + + /** + * Gets the value of the MIME header whose name is "Content-Type". + * + * @return a String giving the value of the + * "Content-Type" header or null if there + * is none + */ + public String getContentType() { + String[] values = getMimeHeader("Content-Type"); + if (values != null && values.length > 0) + return values[0]; + return null; + } + + /** + * Sets the MIME header whose name is "Content-ID" with the given value. + * + * @param contentId a String giving the value of the + * "Content-ID" header + * + * @exception IllegalArgumentException if there was a problem with + * the specified contentId value + * @see #getContentId + */ + public void setContentId(String contentId) + { + setMimeHeader("Content-ID", contentId); + } + + + /** + * Sets the MIME header whose name is "Content-Location" with the given value. + * + * + * @param contentLocation a String giving the value of the + * "Content-Location" header + * @exception IllegalArgumentException if there was a problem with + * the specified content location + */ + public void setContentLocation(String contentLocation) + { + setMimeHeader("Content-Location", contentLocation); + } + + /** + * Sets the MIME header whose name is "Content-Type" with the given value. + * + * @param contentType a String giving the value of the + * "Content-Type" header + * + * @exception IllegalArgumentException if there was a problem with + * the specified content type + */ + public void setContentType(String contentType) + { + setMimeHeader("Content-Type", contentType); + } + + /** + * Removes all MIME headers that match the given name. + * + * @param header the string name of the MIME header/s to + * be removed + */ + public abstract void removeMimeHeader(String header); + + /** + * Removes all the MIME header entries. + */ + public abstract void removeAllMimeHeaders(); + + + /** + * Gets all the values of the header identified by the given + * String. + * + * @param name the name of the header; example: "Content-Type" + * @return a String array giving the value for the + * specified header + * @see #setMimeHeader + */ + public abstract String[] getMimeHeader(String name); + + + /** + * Changes the first header entry that matches the given name + * to the given value, adding a new header if no existing header + * matches. This method also removes all matching headers but the first.

      + * + * Note that RFC822 headers can only contain US-ASCII characters. + * + * @param name a String giving the name of the header + * for which to search + * @param value a String giving the value to be set for + * the header whose name matches the given name + * + * @exception IllegalArgumentException if there was a problem with + * the specified mime header name or value + */ + public abstract void setMimeHeader(String name, String value); + + + /** + * Adds a MIME header with the specified name and value to this + * AttachmentPart object. + *

      + * Note that RFC822 headers can contain only US-ASCII characters. + * + * @param name a String giving the name of the header + * to be added + * @param value a String giving the value of the header + * to be added + * + * @exception IllegalArgumentException if there was a problem with + * the specified mime header name or value + */ + public abstract void addMimeHeader(String name, String value); + + /** + * Retrieves all the headers for this AttachmentPart object + * as an iterator over the MimeHeader objects. + * + * @return an Iterator object with all of the Mime + * headers for this AttachmentPart object + */ + public abstract Iterator getAllMimeHeaders(); + + /** + * Retrieves all MimeHeader objects that match a name in + * the given array. + * + * @param names a String array with the name(s) of the + * MIME headers to be returned + * @return all of the MIME headers that match one of the names in the + * given array as an Iterator object + */ + public abstract Iterator getMatchingMimeHeaders(String[] names); + + /** + * Retrieves all MimeHeader objects whose name does + * not match a name in the given array. + * + * @param names a String array with the name(s) of the + * MIME headers not to be returned + * @return all of the MIME headers in this AttachmentPart object + * except those that match one of the names in the + * given array. The nonmatching MIME headers are returned as an + * Iterator object. + */ + public abstract Iterator getNonMatchingMimeHeaders(String[] names); +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Detail.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Detail.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,101 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import java.util.Iterator; + +import javax.xml.namespace.QName; + +/** + * A container for DetailEntry objects. DetailEntry + * objects give detailed error information that is application-specific and + * related to the SOAPBody object that contains it. + *

      + * A Detail object, which is part of a SOAPFault + * object, can be retrieved using the method SOAPFault.getDetail. + * The Detail interface provides two methods. One creates a new + * DetailEntry object and also automatically adds it to + * the Detail object. The second method gets a list of the + * DetailEntry objects contained in a Detail + * object. + *

      + * The following code fragment, in which sf is a SOAPFault + * object, gets its Detail object (d), adds a new + * DetailEntry object to d, and then gets a list of all the + * DetailEntry objects in d. The code also creates a + * Name object to pass to the method addDetailEntry. + * The variable se, used to create the Name object, + * is a SOAPEnvelope object. + *

      + *    Detail d = sf.getDetail();
      + *    Name name = se.createName("GetLastTradePrice", "WOMBAT",
      + *                                "http://www.wombat.org/trader");
      + *    d.addDetailEntry(name);
      + *    Iterator it = d.getDetailEntries();
      + * 
      + * + * @since 1.6 + */ +public interface Detail extends SOAPFaultElement { + + /** + * Creates a new DetailEntry object with the given + * name and adds it to this Detail object. + * + * @param name a Name object identifying the + * new DetailEntry object + * + * @exception SOAPException thrown when there is a problem in adding a + * DetailEntry object to this Detail object. + * + * @see Detail#addDetailEntry(QName qname) + */ + public DetailEntry addDetailEntry(Name name) throws SOAPException; + + /** + * Creates a new DetailEntry object with the given + * QName and adds it to this Detail object. This method + * is the preferred over the one using Name. + * + * @param qname a QName object identifying the + * new DetailEntry object + * + * @exception SOAPException thrown when there is a problem in adding a + * DetailEntry object to this Detail object. + * + * @see Detail#addDetailEntry(Name name) + * @since 1.6, SAAJ 1.3 + */ + public DetailEntry addDetailEntry(QName qname) throws SOAPException; + + /** + * Gets an Iterator over all of the DetailEntrys in this Detail object. + * + * @return an Iterator object over the DetailEntry + * objects in this Detail object + */ + public Iterator getDetailEntries(); +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/DetailEntry.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/DetailEntry.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +/** + * The content for a Detail object, giving details for + * a SOAPFault object. A DetailEntry object, + * which carries information about errors related to the SOAPBody + * object that contains it, is application-specific. + * + * @since 1.6 + */ +public interface DetailEntry extends SOAPElement { + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/FactoryFinder.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/FactoryFinder.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,236 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import java.io.*; +import java.util.Properties; + + +class FactoryFinder { + + /** + * Creates an instance of the specified class using the specified + * ClassLoader object. + * + * @exception SOAPException if the given class could not be found + * or could not be instantiated + */ + private static Object newInstance(String className, + ClassLoader classLoader) + throws SOAPException + { + try { + Class spiClass = safeLoadClass(className, classLoader); + return spiClass.newInstance(); + + } catch (ClassNotFoundException x) { + throw new SOAPException("Provider " + className + " not found", x); + } catch (Exception x) { + throw new SOAPException("Provider " + className + " could not be instantiated: " + x, x); + } + } + + /** + * Finds the implementation Class object for the given + * factory name, or null if that fails. + *

      + * This method is package private so that this code can be shared. + * + * @return the Class object of the specified message factory; + * or null + * + * @param factoryId the name of the factory to find, which is + * a system property + * @exception SOAPException if there is a SOAP error + */ + static Object find(String factoryId) + throws SOAPException + { + return find(factoryId, null, false); + } + + /** + * Finds the implementation Class object for the given + * factory name, or if that fails, finds the Class object + * for the given fallback class name. The arguments supplied must be + * used in order. If using the first argument is successful, the second + * one will not be used. + *

      + * This method is package private so that this code can be shared. + * + * @return the Class object of the specified message factory; + * may be null + * + * @param factoryId the name of the factory to find, which is + * a system property + * @param fallbackClassName the implementation class name, which is + * to be used only if nothing else + * is found; null to indicate that + * there is no fallback class name + * @exception SOAPException if there is a SOAP error + */ + static Object find(String factoryId, String fallbackClassName) + throws SOAPException + { + return find(factoryId, fallbackClassName, true); + } + + /** + * Finds the implementation Class object for the given + * factory name, or if that fails, finds the Class object + * for the given default class name, but only if tryFallback + * is true. The arguments supplied must be used in order + * If using the first argument is successful, the second one will not + * be used. Note the default class name may be needed even if fallback + * is not to be attempted, so certain error conditions can be handled. + *

      + * This method is package private so that this code can be shared. + * + * @return the Class object of the specified message factory; + * may not be null + * + * @param factoryId the name of the factory to find, which is + * a system property + * @param defaultClassName the implementation class name, which is + * to be used only if nothing else + * is found; null to indicate + * that there is no default class name + * @param tryFallback whether to try the default class as a + * fallback + * @exception SOAPException if there is a SOAP error + */ + static Object find(String factoryId, String defaultClassName, + boolean tryFallback) throws SOAPException { + ClassLoader classLoader; + try { + classLoader = Thread.currentThread().getContextClassLoader(); + } catch (Exception x) { + throw new SOAPException(x.toString(), x); + } + + // Use the system property first + try { + String systemProp = + System.getProperty( factoryId ); + if( systemProp!=null) { + return newInstance(systemProp, classLoader); + } + } catch (SecurityException se) { + } + + // try to read from $java.home/lib/jaxm.properties + try { + String javah=System.getProperty( "java.home" ); + String configFile = javah + File.separator + + "lib" + File.separator + "jaxm.properties"; + File f=new File( configFile ); + if( f.exists()) { + Properties props=new Properties(); + props.load( new FileInputStream(f)); + String factoryClassName = props.getProperty(factoryId); + return newInstance(factoryClassName, classLoader); + } + } catch(Exception ex ) { + } + + String serviceId = "META-INF/services/" + factoryId; + // try to find services in CLASSPATH + try { + InputStream is=null; + if (classLoader == null) { + is=ClassLoader.getSystemResourceAsStream(serviceId); + } else { + is=classLoader.getResourceAsStream(serviceId); + } + + if( is!=null ) { + BufferedReader rd = + new BufferedReader(new InputStreamReader(is, "UTF-8")); + + String factoryClassName = rd.readLine(); + rd.close(); + + if (factoryClassName != null && + ! "".equals(factoryClassName)) { + return newInstance(factoryClassName, classLoader); + } + } + } catch( Exception ex ) { + } + + // If not found and fallback should not be tried, return a null result. + if (!tryFallback) + return null; + + // We didn't find the class through the usual means so try the default + // (built in) factory if specified. + if (defaultClassName == null) { + throw new SOAPException( + "Provider for " + factoryId + " cannot be found", null); + } + return newInstance(defaultClassName, classLoader); + } + + /** + * Loads the class, provided that the calling thread has an access to the + * class being loaded. If this is the specified default factory class and it + * is restricted by package.access we get a SecurityException and can do a + * Class.forName() on it so it will be loaded by the bootstrap class loader. + */ + private static Class safeLoadClass(String className, + ClassLoader classLoader) + throws ClassNotFoundException { + try { + // make sure that the current thread has an access to the package of the given name. + SecurityManager s = System.getSecurityManager(); + if (s != null) { + int i = className.lastIndexOf('.'); + if (i != -1) { + s.checkPackageAccess(className.substring(0, i)); + } + } + + if (classLoader == null) + return Class.forName(className); + else + return classLoader.loadClass(className); + } catch (SecurityException se) { + // (only) default implementation can be loaded + // using bootstrap class loader: + if (isDefaultImplementation(className)) + return Class.forName(className); + + throw se; + } + } + + private static boolean isDefaultImplementation(String className) { + return MessageFactory.DEFAULT_MESSAGE_FACTORY.equals(className) || + SOAPFactory.DEFAULT_SOAP_FACTORY.equals(className) || + SOAPConnectionFactory.DEFAULT_SOAP_CONNECTION_FACTORY.equals(className) || + SAAJMetaFactory.DEFAULT_META_FACTORY_CLASS.equals(className); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/MessageFactory.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/MessageFactory.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,202 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + + +import java.io.IOException; +import java.io.InputStream; + +/** + * A factory for creating SOAPMessage objects. + *

      + * A SAAJ client can create a MessageFactory object + * using the method newInstance, as shown in the following + * lines of code. + *

      + *       MessageFactory mf = MessageFactory.newInstance();
      + *       MessageFactory mf12 = MessageFactory.newInstance(SOAPConstants.SOAP_1_2_PROTOCOL);
      + * 
      + *

      + * All MessageFactory objects, regardless of how they are + * created, will produce SOAPMessage objects that + * have the following elements by default: + *

        + *
      • A SOAPPart object + *
      • A SOAPEnvelope object + *
      • A SOAPBody object + *
      • A SOAPHeader object + *
      + * In some cases, specialized MessageFactory objects may be obtained that produce messages + * prepopulated with additional entries in the SOAPHeader object and the + * SOAPBody object. + * The content of a new SOAPMessage object depends on which of the two + * MessageFactory methods is used to create it. + *
        + *
      • createMessage()
        + * This is the method clients would normally use to create a request message. + *
      • createMessage(MimeHeaders, java.io.InputStream) -- message has + * content from the InputStream object and headers from the + * MimeHeaders object
        + * This method can be used internally by a service implementation to + * create a message that is a response to a request. + *
      + * + * @since 1.6 + */ +public abstract class MessageFactory { + + static final String DEFAULT_MESSAGE_FACTORY + = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPMessageFactory1_1Impl"; + + static private final String MESSAGE_FACTORY_PROPERTY + = "javax.xml.soap.MessageFactory"; + + /** + * Creates a new MessageFactory object that is an instance + * of the default implementation (SOAP 1.1), + * + * This method uses the following ordered lookup procedure to determine the MessageFactory implementation class to load: + *
        + *
      • Use the javax.xml.soap.MessageFactory system property. + *
      • Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard + * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the + * system property defined above. + *
      • Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API + * will look for a classname in the file META-INF/services/javax.xml.soap.MessageFactory in jars available to the runtime. + *
      • Use the SAAJMetaFactory instance to locate the MessageFactory implementation class. + *
      + + * + * @return a new instance of a MessageFactory + * + * @exception SOAPException if there was an error in creating the + * default implementation of the + * MessageFactory. + * @see SAAJMetaFactory + */ + + public static MessageFactory newInstance() throws SOAPException { + + + try { + MessageFactory factory = (MessageFactory) FactoryFinder.find( + MESSAGE_FACTORY_PROPERTY, + DEFAULT_MESSAGE_FACTORY, + false); + + if (factory != null) { + return factory; + } + return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); + + } catch (Exception ex) { + throw new SOAPException( + "Unable to create message factory for SOAP: " + +ex.getMessage()); + } + + } + + /** + * Creates a new MessageFactory object that is an instance + * of the specified implementation. May be a dynamic message factory, + * a SOAP 1.1 message factory, or a SOAP 1.2 message factory. A dynamic + * message factory creates messages based on the MIME headers specified + * as arguments to the createMessage method. + * + * This method uses the SAAJMetaFactory to locate the implementation class + * and create the MessageFactory instance. + * + * @return a new instance of a MessageFactory + * + * @param protocol a string constant representing the class of the + * specified message factory implementation. May be + * either DYNAMIC_SOAP_PROTOCOL, + * DEFAULT_SOAP_PROTOCOL (which is the same + * as) SOAP_1_1_PROTOCOL, or + * SOAP_1_2_PROTOCOL. + * + * @exception SOAPException if there was an error in creating the + * specified implementation of MessageFactory. + * @see SAAJMetaFactory + * @since 1.6, SAAJ 1.3 + */ + public static MessageFactory newInstance(String protocol) throws SOAPException { + return SAAJMetaFactory.getInstance().newMessageFactory(protocol); + } + + /** + * Creates a new SOAPMessage object with the default + * SOAPPart, SOAPEnvelope, SOAPBody, + * and SOAPHeader objects. Profile-specific message factories + * can choose to prepopulate the SOAPMessage object with + * profile-specific headers. + *

      + * Content can be added to this message's SOAPPart object, and + * the message can be sent "as is" when a message containing only a SOAP part + * is sufficient. Otherwise, the SOAPMessage object needs + * to create one or more AttachmentPart objects and + * add them to itself. Any content that is not in XML format must be + * in an AttachmentPart object. + * + * @return a new SOAPMessage object + * @exception SOAPException if a SOAP error occurs + * @exception UnsupportedOperationException if the protocol of this + * MessageFactory instance is DYNAMIC_SOAP_PROTOCOL + */ + public abstract SOAPMessage createMessage() + throws SOAPException; + + /** + * Internalizes the contents of the given InputStream object into a + * new SOAPMessage object and returns the SOAPMessage + * object. + * + * @param in the InputStream object that contains the data + * for a message + * @param headers the transport-specific headers passed to the + * message in a transport-independent fashion for creation of the + * message + * @return a new SOAPMessage object containing the data from + * the given InputStream object + * + * @exception IOException if there is a problem in reading data from + * the input stream + * + * @exception SOAPException may be thrown if the message is invalid + * + * @exception IllegalArgumentException if the MessageFactory + * requires one or more MIME headers to be present in the + * headers parameter and they are missing. + * MessageFactory implementations for + * SOAP_1_1_PROTOCOL or + * SOAP_1_2_PROTOCOL must not throw + * IllegalArgumentException for this reason. + */ + public abstract SOAPMessage createMessage(MimeHeaders headers, + InputStream in) + throws IOException, SOAPException; +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/MimeHeader.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/MimeHeader.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + + +/** + * An object that stores a MIME header name and its value. One or more + * MimeHeader objects may be contained in a MimeHeaders + * object. + * + * @see MimeHeaders + * @since 1.6 + */ +public class MimeHeader { + + private String name; + private String value; + + /** + * Constructs a MimeHeader object initialized with the given + * name and value. + * + * @param name a String giving the name of the header + * @param value a String giving the value of the header + */ + public MimeHeader(String name, String value) { + this.name = name; + this.value = value; + } + + /** + * Returns the name of this MimeHeader object. + * + * @return the name of the header as a String + */ + public String getName() { + return name; + } + + /** + * Returns the value of this MimeHeader object. + * + * @return the value of the header as a String + */ + public String getValue() { + return value; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/MimeHeaders.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/MimeHeaders.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,270 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import java.util.Iterator; +import java.util.Vector; + +/** + * A container for MimeHeader objects, which represent + * the MIME headers present in a MIME part of a message. + * + *

      This class is used primarily when an application wants to + * retrieve specific attachments based on certain MIME headers and + * values. This class will most likely be used by implementations of + * AttachmentPart and other MIME dependent parts of the SAAJ + * API. + * @see SOAPMessage#getAttachments + * @see AttachmentPart + * @since 1.6 + */ +public class MimeHeaders { + private Vector headers; + + /** + * Constructs a default MimeHeaders object initialized with + * an empty Vector object. + */ + public MimeHeaders() { + headers = new Vector(); + } + + /** + * Returns all of the values for the specified header as an array of + * String objects. + * + * @param name the name of the header for which values will be returned + * @return a String array with all of the values for the + * specified header + * @see #setHeader + */ + public String[] getHeader(String name) { + Vector values = new Vector(); + + for(int i = 0; i < headers.size(); i++) { + MimeHeader hdr = (MimeHeader) headers.elementAt(i); + if (hdr.getName().equalsIgnoreCase(name) + && hdr.getValue() != null) + values.addElement(hdr.getValue()); + } + + if (values.size() == 0) + return null; + + String r[] = new String[values.size()]; + values.copyInto(r); + return r; + } + + /** + * Replaces the current value of the first header entry whose name matches + * the given name with the given value, adding a new header if no existing header + * name matches. This method also removes all matching headers after the first one. + *

      + * Note that RFC822 headers can contain only US-ASCII characters. + * + * @param name a String with the name of the header for + * which to search + * @param value a String with the value that will replace the + * current value of the specified header + * + * @exception IllegalArgumentException if there was a problem in the + * mime header name or the value being set + * @see #getHeader + */ + public void setHeader(String name, String value) + { + boolean found = false; + + if ((name == null) || name.equals("")) + throw new IllegalArgumentException("Illegal MimeHeader name"); + + for(int i = 0; i < headers.size(); i++) { + MimeHeader hdr = (MimeHeader) headers.elementAt(i); + if (hdr.getName().equalsIgnoreCase(name)) { + if (!found) { + headers.setElementAt(new MimeHeader(hdr.getName(), + value), i); + found = true; + } + else + headers.removeElementAt(i--); + } + } + + if (!found) + addHeader(name, value); + } + + /** + * Adds a MimeHeader object with the specified name and value + * to this MimeHeaders object's list of headers. + *

      + * Note that RFC822 headers can contain only US-ASCII characters. + * + * @param name a String with the name of the header to + * be added + * @param value a String with the value of the header to + * be added + * + * @exception IllegalArgumentException if there was a problem in the + * mime header name or value being added + */ + public void addHeader(String name, String value) + { + if ((name == null) || name.equals("")) + throw new IllegalArgumentException("Illegal MimeHeader name"); + + int pos = headers.size(); + + for(int i = pos - 1 ; i >= 0; i--) { + MimeHeader hdr = (MimeHeader) headers.elementAt(i); + if (hdr.getName().equalsIgnoreCase(name)) { + headers.insertElementAt(new MimeHeader(name, value), + i+1); + return; + } + } + headers.addElement(new MimeHeader(name, value)); + } + + /** + * Remove all MimeHeader objects whose name matches the + * given name. + * + * @param name a String with the name of the header for + * which to search + */ + public void removeHeader(String name) { + for(int i = 0; i < headers.size(); i++) { + MimeHeader hdr = (MimeHeader) headers.elementAt(i); + if (hdr.getName().equalsIgnoreCase(name)) + headers.removeElementAt(i--); + } + } + + /** + * Removes all the header entries from this MimeHeaders object. + */ + public void removeAllHeaders() { + headers.removeAllElements(); + } + + + /** + * Returns all the MimeHeaders in this MimeHeaders object. + * + * @return an Iterator object over this MimeHeaders + * object's list of MimeHeader objects + */ + public Iterator getAllHeaders() { + return headers.iterator(); + } + + class MatchingIterator implements Iterator { + private boolean match; + private Iterator iterator; + private String[] names; + private Object nextHeader; + + MatchingIterator(String[] names, boolean match) { + this.match = match; + this.names = names; + this.iterator = headers.iterator(); + } + + private Object nextMatch() { + next: + while (iterator.hasNext()) { + MimeHeader hdr = (MimeHeader) iterator.next(); + + if (names == null) + return match ? null : hdr; + + for(int i = 0; i < names.length; i++) + if (hdr.getName().equalsIgnoreCase(names[i])) + if (match) + return hdr; + else + continue next; + if (!match) + return hdr; + } + return null; + } + + + public boolean hasNext() { + if (nextHeader == null) + nextHeader = nextMatch(); + return nextHeader != null; + } + + public Object next() { + // hasNext should've prefetched the header for us, + // return it. + if (nextHeader != null) { + Object ret = nextHeader; + nextHeader = null; + return ret; + } + if (hasNext()) + return nextHeader; + return null; + } + + public void remove() { + iterator.remove(); + } + } + + + /** + * Returns all the MimeHeader objects whose name matches + * a name in the given array of names. + * + * @param names an array of String objects with the names + * for which to search + * @return an Iterator object over the MimeHeader + * objects whose name matches one of the names in the given list + */ + public Iterator getMatchingHeaders(String[] names) { + return new MatchingIterator(names, true); + } + + /** + * Returns all of the MimeHeader objects whose name does not + * match a name in the given array of names. + * + * @param names an array of String objects with the names + * for which to search + * @return an Iterator object over the MimeHeader + * objects whose name does not match one of the names in the given list + */ + public Iterator getNonMatchingHeaders(String[] names) { + return new MatchingIterator(names, false); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Name.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Name.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +/** + * A representation of an XML name. This interface provides methods for + * getting the local and namespace-qualified names and also for getting the + * prefix associated with the namespace for the name. It is also possible + * to get the URI of the namespace. + *

      + * The following is an example of a namespace declaration in an element. + *

      + *   <wombat:GetLastTradePrice xmlns:wombat="http://www.wombat.org/trader">
      + * 
      + * ("xmlns" stands for "XML namespace".) + * The following + * shows what the methods in the Name interface will return. + *
        + *
      • getQualifiedName will return "prefix:LocalName" = + * "WOMBAT:GetLastTradePrice" + *
      • getURI will return "http://www.wombat.org/trader" + *
      • getLocalName will return "GetLastTracePrice" + *
      • getPrefix will return "WOMBAT" + *
      + *

      + * XML namespaces are used to disambiguate SOAP identifiers from + * application-specific identifiers. + *

      + * Name objects are created using the method + * SOAPEnvelope.createName, which has two versions. + * One method creates Name objects with + * a local name, a namespace prefix, and a namespace URI. + * and the second creates Name objects with just a local name. + * The following line of + * code, in which se is a SOAPEnvelope object, creates a new + * Name object with all three. + *

      + *     Name name = se.createName("GetLastTradePrice", "WOMBAT",
      + *                                "http://www.wombat.org/trader");
      + * 
      + * The following line of code gives an example of how a Name object + * can be used. The variable element is a SOAPElement object. + * This code creates a new SOAPElement object with the given name and + * adds it to element. + *
      + *     element.addChildElement(name);
      + * 
      + *

      + * The Name interface may be deprecated in a future release of SAAJ + * in favor of javax.xml.namespace.QName + * @see SOAPEnvelope#createName(String, String, String) SOAPEnvelope.createName + * @see SOAPFactory#createName(String, String, String) SOAPFactory.createName + * @since 1.6 + */ +public interface Name { + /** + * Gets the local name part of the XML name that this Name + * object represents. + * + * @return a string giving the local name + */ + String getLocalName(); + + /** + * Gets the namespace-qualified name of the XML name that this + * Name object represents. + * + * @return the namespace-qualified name as a string + */ + String getQualifiedName(); + + /** + * Returns the prefix that was specified when this Name object + * was initialized. This prefix is associated with the namespace for the XML + * name that this Name object represents. + * + * @return the prefix as a string + */ + String getPrefix(); + + /** + * Returns the URI of the namespace for the XML + * name that this Name object represents. + * + * @return the URI as a string + */ + String getURI(); +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Node.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Node.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,114 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +/** + * A representation of a node (element) in an XML document. + * This interface extnends the standard DOM Node interface with methods for + * getting and setting the value of a node, for + * getting and setting the parent of a node, and for removing a node. + * + * @since 1.6 + */ +public interface Node extends org.w3c.dom.Node { + /** + * Returns the value of this node if this is a Text node or the + * value of the immediate child of this node otherwise. + * If there is an immediate child of this Node that it is a + * Text node then it's value will be returned. If there is + * more than one Text node then the value of the first + * Text Node will be returned. + * Otherwise null is returned. + * + * @return a String with the text of this node if this is a + * Text node or the text contained by the first + * immediate child of this Node object that is a + * Text object if such a child exists; + * null otherwise. + */ + public String getValue(); + + /** + * If this is a Text node then this method will set its value, + * otherwise it sets the value of the immediate (Text) child of this node. + * The value of the immediate child of this node can be set only if, there is + * one child node and that node is a Text node, or if + * there are no children in which case a child Text node will be + * created. + * + * @exception IllegalStateException if the node is not a Text + * node and either has more than one child node or has a child + * node that is not a Text node. + * + * @since 1.6, SAAJ 1.2 + */ + public void setValue(String value); + + /** + * Sets the parent of this Node object to the given + * SOAPElement object. + * + * @param parent the SOAPElement object to be set as + * the parent of this Node object + * + * @exception SOAPException if there is a problem in setting the + * parent to the given element + * @see #getParentElement + */ + public void setParentElement(SOAPElement parent) throws SOAPException; + + /** + * Returns the parent element of this Node object. + * This method can throw an UnsupportedOperationException + * if the tree is not kept in memory. + * + * @return the SOAPElement object that is the parent of + * this Node object or null if this + * Node object is root + * + * @exception UnsupportedOperationException if the whole tree is not + * kept in memory + * @see #setParentElement + */ + public SOAPElement getParentElement(); + + /** + * Removes this Node object from the tree. + */ + public void detachNode(); + + /** + * Notifies the implementation that this Node + * object is no longer being used by the application and that the + * implementation is free to reuse this object for nodes that may + * be created later. + *

      + * Calling the method recycleNode implies that the method + * detachNode has been called previously. + */ + public void recycleNode(); + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SAAJMetaFactory.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SAAJMetaFactory.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,113 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +/** +* The access point for the implementation classes of the factories defined in the +* SAAJ API. All of the newInstance methods defined on factories in +* SAAJ 1.3 defer to instances of this class to do the actual object creation. +* The implementations of newInstance() methods (in SOAPFactory and MessageFactory) +* that existed in SAAJ 1.2 have been updated to also delegate to the SAAJMetaFactory when the SAAJ 1.2 +* defined lookup fails to locate the Factory implementation class name. +* +*

      +* SAAJMetaFactory is a service provider interface. There are no public methods on this +* class. +* +* @author SAAJ RI Development Team +* @since 1.6, SAAJ 1.3 +*/ + +public abstract class SAAJMetaFactory { + static private final String META_FACTORY_CLASS_PROPERTY = + "javax.xml.soap.MetaFactory"; + static final String DEFAULT_META_FACTORY_CLASS = + "com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl"; + + /** + * Creates a new instance of a concrete SAAJMetaFactory object. + * The SAAJMetaFactory is an SPI, it pulls the creation of the other factories together into a + * single place. Changing out the SAAJMetaFactory has the effect of changing out the entire SAAJ + * implementation. Service providers provide the name of their SAAJMetaFactory + * implementation. + * + * This method uses the following ordered lookup procedure to determine the SAAJMetaFactory implementation class to load: + *

        + *
      • Use the javax.xml.soap.MetaFactory system property. + *
      • Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard + * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the + * system property defined above. + *
      • Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API + * will look for a classname in the file META-INF/services/javax.xml.soap.MetaFactory in jars available to the runtime. + *
      • Default to com.sun.xml.internal.messaging.saaj.soap.SAAJMetaFactoryImpl. + *
      + * + * @return a concrete SAAJMetaFactory object + * @exception SOAPException if there is an error in creating the SAAJMetaFactory + */ + static SAAJMetaFactory getInstance() throws SOAPException { + try { + SAAJMetaFactory instance = + (SAAJMetaFactory) FactoryFinder.find( + META_FACTORY_CLASS_PROPERTY, + DEFAULT_META_FACTORY_CLASS); + return instance; + } catch (Exception e) { + throw new SOAPException( + "Unable to create SAAJ meta-factory" + e.getMessage()); + } + } + + protected SAAJMetaFactory() { } + + /** + * Creates a MessageFactory object for + * the given String protocol. + * + * @param protocol a String indicating the protocol + * @exception SOAPException if there is an error in creating the + * MessageFactory + * @see SOAPConstants#SOAP_1_1_PROTOCOL + * @see SOAPConstants#SOAP_1_2_PROTOCOL + * @see SOAPConstants#DYNAMIC_SOAP_PROTOCOL + */ + protected abstract MessageFactory newMessageFactory(String protocol) + throws SOAPException; + + /** + * Creates a SOAPFactory object for + * the given String protocol. + * + * @param protocol a String indicating the protocol + * @exception SOAPException if there is an error in creating the + * SOAPFactory + * @see SOAPConstants#SOAP_1_1_PROTOCOL + * @see SOAPConstants#SOAP_1_2_PROTOCOL + * @see SOAPConstants#DYNAMIC_SOAP_PROTOCOL + */ + protected abstract SOAPFactory newSOAPFactory(String protocol) + throws SOAPException; +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SAAJResult.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SAAJResult.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,133 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import javax.xml.transform.dom.DOMResult; + +/** + * Acts as a holder for the results of a JAXP transformation or a JAXB + * marshalling, in the form of a SAAJ tree. These results should be accessed + * by using the {@link #getResult()} method. The {@link DOMResult#getNode()} + * method should be avoided in almost all cases. + * + * @author XWS-Security Development Team + * + * @since 1.6, SAAJ 1.3 + */ +public class SAAJResult extends DOMResult { + + /** + * Creates a SAAJResult that will present results in the form + * of a SAAJ tree that supports the default (SOAP 1.1) protocol. + *

      + * This kind of SAAJResult is meant for use in situations where the + * results will be used as a parameter to a method that takes a parameter + * whose type, such as SOAPElement, is drawn from the SAAJ + * API. When used in a transformation, the results are populated into the + * SOAPPart of a SOAPMessage that is created internally. + * The SOAPPart returned by {@link DOMResult#getNode()} + * is not guaranteed to be well-formed. + * + * @throws SOAPException if there is a problem creating a SOAPMessage + * + * @since 1.6, SAAJ 1.3 + */ + public SAAJResult() throws SOAPException { + this(MessageFactory.newInstance().createMessage()); + } + + /** + * Creates a SAAJResult that will present results in the form + * of a SAAJ tree that supports the specified protocol. The + * DYNAMIC_SOAP_PROTOCOL is ambiguous in this context and will + * cause this constructor to throw an UnsupportedOperationException. + *

      + * This kind of SAAJResult is meant for use in situations where the + * results will be used as a parameter to a method that takes a parameter + * whose type, such as SOAPElement, is drawn from the SAAJ + * API. When used in a transformation the results are populated into the + * SOAPPart of a SOAPMessage that is created + * internally. The SOAPPart returned by {@link DOMResult#getNode()} + * is not guaranteed to be well-formed. + * + * @param protocol - the name of the SOAP protocol that the resulting SAAJ + * tree should support + * + * @throws SOAPException if a SOAPMessage supporting the + * specified protocol cannot be created + * + * @since 1.6, SAAJ 1.3 + */ + public SAAJResult(String protocol) throws SOAPException { + this(MessageFactory.newInstance(protocol).createMessage()); + } + + /** + * Creates a SAAJResult that will write the results into the + * SOAPPart of the supplied SOAPMessage. + * In the normal case these results will be written using DOM APIs and, + * as a result, the finished SOAPPart will not be guaranteed + * to be well-formed unless the data used to create it is also well formed. + * When used in a transformation the validity of the SOAPMessage + * after the transformation can be guaranteed only by means outside SAAJ + * specification. + * + * @param message - the message whose SOAPPart will be + * populated as a result of some transformation or + * marshalling operation + * + * @since 1.6, SAAJ 1.3 + */ + public SAAJResult(SOAPMessage message) { + super(message.getSOAPPart()); + } + + /** + * Creates a SAAJResult that will write the results as a + * child node of the SOAPElement specified. In the normal + * case these results will be written using DOM APIs and as a result may + * invalidate the structure of the SAAJ tree. This kind of + * SAAJResult should only be used when the validity of the + * incoming data can be guaranteed by means outside of the SAAJ + * specification. + * + * @param rootNode - the root to which the results will be appended + * + * @since 1.6, SAAJ 1.3 + */ + public SAAJResult(SOAPElement rootNode) { + super(rootNode); + } + + + /** + * @return the resulting Tree that was created under the specified root Node. + * @since 1.6, SAAJ 1.3 + */ + public javax.xml.soap.Node getResult() { + return (javax.xml.soap.Node)super.getNode().getFirstChild(); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPBody.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPBody.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,298 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import java.util.Locale; + +import org.w3c.dom.Document; + +import javax.xml.namespace.QName; + +/** + * An object that represents the contents of the SOAP body + * element in a SOAP message. A SOAP body element consists of XML data + * that affects the way the application-specific content is processed. + *

      + * A SOAPBody object contains SOAPBodyElement + * objects, which have the content for the SOAP body. + * A SOAPFault object, which carries status and/or + * error information, is an example of a SOAPBodyElement object. + * + * @see SOAPFault + * @since 1.6 + */ +public interface SOAPBody extends SOAPElement { + + /** + * Creates a new SOAPFault object and adds it to + * this SOAPBody object. The new SOAPFault will + * have default values set for the mandatory child elements. The type of + * the SOAPFault will be a SOAP 1.1 or a SOAP 1.2 SOAPFault + * depending on the protocol specified while creating the + * MessageFactory instance. + *

      + * A SOAPBody may contain at most one SOAPFault + * child element. + * + * @return the new SOAPFault object + * @exception SOAPException if there is a SOAP error + */ + public SOAPFault addFault() throws SOAPException; + + + /** + * Creates a new SOAPFault object and adds it to + * this SOAPBody object. The type of the + * SOAPFault will be a SOAP 1.1 or a SOAP 1.2 + * SOAPFault depending on the protocol + * specified while creating the MessageFactory instance. + *

      + * For SOAP 1.2 the faultCode parameter is the value of the + * Fault/Code/Value element and the faultString parameter + * is the value of the Fault/Reason/Text element. For SOAP 1.1 + * the faultCode parameter is the value of the faultcode + * element and the faultString parameter is the value of the faultstring + * element. + *

      + * A SOAPBody may contain at most one SOAPFault + * child element. + * + * @param faultCode a Name object giving the fault + * code to be set; must be one of the fault codes defined in the Version + * of SOAP specification in use + * @param faultString a String giving an explanation of + * the fault + * @param locale a {@link java.util.Locale} object indicating + * the native language of the faultString + * @return the new SOAPFault object + * @exception SOAPException if there is a SOAP error + * @see SOAPFault#setFaultCode + * @see SOAPFault#setFaultString + * @since 1.6, SAAJ 1.2 + */ + public SOAPFault addFault(Name faultCode, String faultString, Locale locale) throws SOAPException; + + /** + * Creates a new SOAPFault object and adds it to this + * SOAPBody object. The type of the SOAPFault + * will be a SOAP 1.1 or a SOAP 1.2 SOAPFault depending on + * the protocol specified while creating the MessageFactory + * instance. + *

      + * For SOAP 1.2 the faultCode parameter is the value of the + * Fault/Code/Value element and the faultString parameter + * is the value of the Fault/Reason/Text element. For SOAP 1.1 + * the faultCode parameter is the value of the faultcode + * element and the faultString parameter is the value of the faultstring + * element. + *

      + * A SOAPBody may contain at most one SOAPFault + * child element. + * + * @param faultCode + * a QName object giving the fault code to be + * set; must be one of the fault codes defined in the version + * of SOAP specification in use. + * @param faultString + * a String giving an explanation of the fault + * @param locale + * a {@link java.util.Locale Locale} object indicating the + * native language of the faultString + * @return the new SOAPFault object + * @exception SOAPException + * if there is a SOAP error + * @see SOAPFault#setFaultCode + * @see SOAPFault#setFaultString + * @see SOAPBody#addFault(Name faultCode, String faultString, Locale locale) + * + * @since 1.6, SAAJ 1.3 + */ + public SOAPFault addFault(QName faultCode, String faultString, Locale locale) + throws SOAPException; + + /** + * Creates a new SOAPFault object and adds it to this + * SOAPBody object. The type of the SOAPFault + * will be a SOAP 1.1 or a SOAP 1.2 SOAPFault depending on + * the protocol specified while creating the MessageFactory + * instance. + *

      + * For SOAP 1.2 the faultCode parameter is the value of the + * Fault/Code/Value element and the faultString parameter + * is the value of the Fault/Reason/Text element. For SOAP 1.1 + * the faultCode parameter is the value of the faultcode + * element and the faultString parameter is the value of the faultstring + * element. + *

      + * In case of a SOAP 1.2 fault, the default value for the mandatory xml:lang + * attribute on the Fault/Reason/Text element will be set to + * java.util.Locale.getDefault() + *

      + * A SOAPBody may contain at most one SOAPFault + * child element. + * + * @param faultCode + * a Name object giving the fault code to be set; + * must be one of the fault codes defined in the version of SOAP + * specification in use + * @param faultString + * a String giving an explanation of the fault + * @return the new SOAPFault object + * @exception SOAPException + * if there is a SOAP error + * @see SOAPFault#setFaultCode + * @see SOAPFault#setFaultString + * @since 1.6, SAAJ 1.2 + */ + public SOAPFault addFault(Name faultCode, String faultString) + throws SOAPException; + + /** + * Creates a new SOAPFault object and adds it to this SOAPBody + * object. The type of the SOAPFault + * will be a SOAP 1.1 or a SOAP 1.2 SOAPFault depending on + * the protocol specified while creating the MessageFactory + * instance. + *

      + * For SOAP 1.2 the faultCode parameter is the value of the + * Fault/Code/Value element and the faultString parameter + * is the value of the Fault/Reason/Text element. For SOAP 1.1 + * the faultCode parameter is the value of the faultcode + * element and the faultString parameter is the value of the faultstring + * element. + *

      + * In case of a SOAP 1.2 fault, the default value for the mandatory xml:lang + * attribute on the Fault/Reason/Text element will be set to + * java.util.Locale.getDefault() + *

      + * A SOAPBody may contain at most one SOAPFault + * child element + * + * @param faultCode + * a QName object giving the fault code to be + * set; must be one of the fault codes defined in the version + * of SOAP specification in use + * @param faultString + * a String giving an explanation of the fault + * @return the new SOAPFault object + * @exception SOAPException + * if there is a SOAP error + * @see SOAPFault#setFaultCode + * @see SOAPFault#setFaultString + * @see SOAPBody#addFault(Name faultCode, String faultString) + * @since 1.6, SAAJ 1.3 + */ + public SOAPFault addFault(QName faultCode, String faultString) + throws SOAPException; + + /** + * Indicates whether a SOAPFault object exists in this + * SOAPBody object. + * + * @return true if a SOAPFault object exists + * in this SOAPBody object; false + * otherwise + */ + public boolean hasFault(); + + /** + * Returns the SOAPFault object in this SOAPBody + * object. + * + * @return the SOAPFault object in this SOAPBody + * object if present, null otherwise. + */ + public SOAPFault getFault(); + + /** + * Creates a new SOAPBodyElement object with the specified + * name and adds it to this SOAPBody object. + * + * @param name + * a Name object with the name for the new SOAPBodyElement + * object + * @return the new SOAPBodyElement object + * @exception SOAPException + * if a SOAP error occurs + * @see SOAPBody#addBodyElement(javax.xml.namespace.QName) + */ + public SOAPBodyElement addBodyElement(Name name) throws SOAPException; + + + /** + * Creates a new SOAPBodyElement object with the specified + * QName and adds it to this SOAPBody object. + * + * @param qname + * a QName object with the qname for the new + * SOAPBodyElement object + * @return the new SOAPBodyElement object + * @exception SOAPException + * if a SOAP error occurs + * @see SOAPBody#addBodyElement(Name) + * @since 1.6, SAAJ 1.3 + */ + public SOAPBodyElement addBodyElement(QName qname) throws SOAPException; + + /** + * Adds the root node of the DOM {@link org.w3c.dom.Document} + * to this SOAPBody object. + *

      + * Calling this method invalidates the document parameter. + * The client application should discard all references to this Document + * and its contents upon calling addDocument. The behavior + * of an application that continues to use such references is undefined. + * + * @param document + * the Document object whose root node will be + * added to this SOAPBody. + * @return the SOAPBodyElement that represents the root node + * that was added. + * @exception SOAPException + * if the Document cannot be added + * @since 1.6, SAAJ 1.2 + */ + public SOAPBodyElement addDocument(org.w3c.dom.Document document) + throws SOAPException; + + /** + * Creates a new DOM {@link org.w3c.dom.Document} and sets + * the first child of this SOAPBody as it's document + * element. The child SOAPElement is removed as part of the + * process. + * + * @return the {@link org.w3c.dom.Document} representation + * of the SOAPBody content. + * + * @exception SOAPException + * if there is not exactly one child SOAPElement of the + * SOAPBody. + * + * @since 1.6, SAAJ 1.3 + */ + public org.w3c.dom.Document extractContentAsDocument() + throws SOAPException; +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPBodyElement.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPBodyElement.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +/** + * A SOAPBodyElement object represents the contents in + * a SOAPBody object. The SOAPFault interface + * is a SOAPBodyElement object that has been defined. + *

      + * A new SOAPBodyElement object can be created and added + * to a SOAPBody object with the SOAPBody + * method addBodyElement. In the following line of code, + * sb is a SOAPBody object, and + * myName is a Name object. + *

      + *    SOAPBodyElement sbe = sb.addBodyElement(myName);
      + * 
      + * + * @since 1.6 + */ +public interface SOAPBodyElement extends SOAPElement { +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPConnection.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPConnection.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,97 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + + +/** + * A point-to-point connection that a client can use for sending messages + * directly to a remote party (represented by a URL, for instance). + *

      + * The SOAPConnection class is optional. Some implementations may + * not implement this interface in which case the call to + * SOAPConnectionFactory.newInstance() (see below) will + * throw an UnsupportedOperationException. + *

      + * A client can obtain a SOAPConnection object using a + * {@link SOAPConnectionFactory} object as in the following example: + *

      + *      SOAPConnectionFactory factory = SOAPConnectionFactory.newInstance();
      + *      SOAPConnection con = factory.createConnection();
      + * 
      + * A SOAPConnection object can be used to send messages + * directly to a URL following the request/response paradigm. That is, + * messages are sent using the method call, which sends the + * message and then waits until it gets a reply. + * + * @since 1.6 + */ +public abstract class SOAPConnection { + + /** + * Sends the given message to the specified endpoint and blocks until + * it has returned the response. + * + * @param request the SOAPMessage object to be sent + * @param to an Object that identifies + * where the message should be sent. It is required to + * support Objects of type + * java.lang.String, + * java.net.URL, and when JAXM is present + * javax.xml.messaging.URLEndpoint + * + * @return the SOAPMessage object that is the response to the + * message that was sent + * @throws SOAPException if there is a SOAP error + */ + public abstract SOAPMessage call(SOAPMessage request, + Object to) throws SOAPException; + + /** + * Gets a message from a specific endpoint and blocks until it receives, + * + * @param to an Object that identifies where + * the request should be sent. Objects of type + * java.lang.String and + * java.net.URL must be supported. + * + * @return the SOAPMessage object that is the response to the + * get message request + * @throws SOAPException if there is a SOAP error + * @since 1.6, SAAJ 1.3 + */ + public SOAPMessage get(Object to) + throws SOAPException { + throw new UnsupportedOperationException("All subclasses of SOAPConnection must override get()"); + } + + /** + * Closes this SOAPConnection object. + * + * @throws SOAPException if there is a SOAP error + */ + public abstract void close() + throws SOAPException; +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPConnectionFactory.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPConnectionFactory.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +/** + * A factory for creating SOAPConnection objects. Implementation of this class + * is optional. If SOAPConnectionFactory.newInstance() throws an + * UnsupportedOperationException then the implementation does not support the + * SAAJ communication infrastructure. Otherwise {@link SOAPConnection} objects + * can be created by calling createConnection() on the newly + * created SOAPConnectionFactory object. + * + * @since 1.6 + */ +public abstract class SOAPConnectionFactory { + /** + * A constant representing the default value for a SOAPConnection + * object. The default is the point-to-point SOAP connection. + */ + static final String DEFAULT_SOAP_CONNECTION_FACTORY + = "com.sun.xml.internal.messaging.saaj.client.p2p.HttpSOAPConnectionFactory"; + + /** + * A constant representing the SOAPConnection class. + */ + static private final String SF_PROPERTY + = "javax.xml.soap.SOAPConnectionFactory"; + + /** + * Creates an instance of the default + * SOAPConnectionFactory object. + * + * @return a new instance of a default + * SOAPConnectionFactory object + * + * @exception SOAPException if there was an error creating the + * SOAPConnectionFactory + * + * @exception UnsupportedOperationException if newInstance is not + * supported. + */ + public static SOAPConnectionFactory newInstance() + throws SOAPException, UnsupportedOperationException + { + try { + return (SOAPConnectionFactory) + FactoryFinder.find(SF_PROPERTY, + DEFAULT_SOAP_CONNECTION_FACTORY); + } catch (Exception ex) { + throw new SOAPException("Unable to create SOAP connection factory: " + +ex.getMessage()); + } + } + + /** + * Create a new SOAPConnection. + * + * @return the new SOAPConnection object. + * + * @exception SOAPException if there was an exception creating the + * SOAPConnection object. + */ + public abstract SOAPConnection createConnection() + throws SOAPException; +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPConstants.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPConstants.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,203 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import javax.xml.namespace.QName; + +/** + * The definition of constants pertaining to the SOAP protocol. + * + * @since 1.6 + */ +public interface SOAPConstants { + /** + * Used to create MessageFactory instances that create + * SOAPMessages whose concrete type is based on the + * Content-Type MIME header passed to the + * createMessage method. If no Content-Type + * header is passed then the createMessage may throw an + * IllegalArgumentException or, in the case of the no + * argument version of createMessage, an + * UnsupportedOperationException. + * + * @since 1.6, SAAJ 1.3 + */ + public static final String DYNAMIC_SOAP_PROTOCOL = "Dynamic Protocol"; + + /** + * Used to create MessageFactory instances that create + * SOAPMessages whose behavior supports the SOAP 1.1 specification. + * + * @since 1.6, SAAJ 1.3 + */ + public static final String SOAP_1_1_PROTOCOL = "SOAP 1.1 Protocol"; + + /** + * Used to create MessageFactory instances that create + * SOAPMessages whose behavior supports the SOAP 1.2 + * specification + * + * @since 1.6, SAAJ 1.3 + */ + public static final String SOAP_1_2_PROTOCOL = "SOAP 1.2 Protocol"; + + /** + * The default protocol: SOAP 1.1 for backwards compatibility. + * + * @since 1.6, SAAJ 1.3 + */ + public static final String DEFAULT_SOAP_PROTOCOL = SOAP_1_1_PROTOCOL; + + /** + * The namespace identifier for the SOAP 1.1 envelope. + * @since 1.6, SAAJ 1.3 + */ + public static final String + URI_NS_SOAP_1_1_ENVELOPE = "http://schemas.xmlsoap.org/soap/envelope/"; + /** + * The namespace identifier for the SOAP 1.2 envelope. + * @since 1.6, SAAJ 1.3 + */ + public static final String + URI_NS_SOAP_1_2_ENVELOPE = "http://www.w3.org/2003/05/soap-envelope"; + + /** + * The namespace identifier for the SOAP 1.1 envelope, All SOAPElements in this + * namespace are defined by the SOAP 1.1 specification. + */ + public static final String + URI_NS_SOAP_ENVELOPE = URI_NS_SOAP_1_1_ENVELOPE; + + /** + * The namespace identifier for the SOAP 1.1 encoding. + * An attribute named encodingStyle in the + * URI_NS_SOAP_ENVELOPE namespace and set to the value + * URI_NS_SOAP_ENCODING can be added to an element to indicate + * that it is encoded using the rules in section 5 of the SOAP 1.1 + * specification. + */ + public static final String + URI_NS_SOAP_ENCODING = "http://schemas.xmlsoap.org/soap/encoding/"; + + /** + * The namespace identifier for the SOAP 1.2 encoding. + * @since 1.6, SAAJ 1.3 + */ + public static final String + URI_NS_SOAP_1_2_ENCODING = "http://www.w3.org/2003/05/soap-encoding"; + + /** + * The media type of the Content-Type MIME header in SOAP 1.1. + * @since 1.6, SAAJ 1.3 + */ + public static final String + SOAP_1_1_CONTENT_TYPE = "text/xml"; + + /** + * The media type of the Content-Type MIME header in SOAP 1.2. + * @since 1.6, SAAJ 1.3 + */ + public static final String + SOAP_1_2_CONTENT_TYPE = "application/soap+xml"; + + /** + * The URI identifying the next application processing a SOAP request as the intended + * actor for a SOAP 1.1 header entry (see section 4.2.2 of the SOAP 1.1 specification). + *

      + * This value can be passed to + * {@link SOAPHeader#examineMustUnderstandHeaderElements(String)}, + * {@link SOAPHeader#examineHeaderElements(String)} and + * {@link SOAPHeader#extractHeaderElements(String)} + */ + public static final String + URI_SOAP_ACTOR_NEXT = "http://schemas.xmlsoap.org/soap/actor/next"; + + /** + * The URI identifying the next application processing a SOAP request as the intended + * role for a SOAP 1.2 header entry (see section 2.2 of part 1 of the SOAP 1.2 + * specification). + * @since 1.6, SAAJ 1.3 + */ + public static final String + URI_SOAP_1_2_ROLE_NEXT = URI_NS_SOAP_1_2_ENVELOPE + "/role/next"; + + /** + * The URI specifying the role None in SOAP 1.2. + * @since 1.6, SAAJ 1.3 + */ + public static final String + URI_SOAP_1_2_ROLE_NONE = URI_NS_SOAP_1_2_ENVELOPE + "/role/none"; + + /** + * The URI identifying the ultimate receiver of the SOAP 1.2 message. + * @since 1.6, SAAJ 1.3 + */ + public static final String + URI_SOAP_1_2_ROLE_ULTIMATE_RECEIVER = + URI_NS_SOAP_1_2_ENVELOPE + "/role/ultimateReceiver"; + + /** + * The default namespace prefix for http://www.w3.org/2003/05/soap-envelope + * @since 1.6, SAAJ 1.3 + */ + public static final String SOAP_ENV_PREFIX = "env"; + + /** + * SOAP 1.2 VersionMismatch Fault + * @since 1.6, SAAJ 1.3 + */ + public static final QName SOAP_VERSIONMISMATCH_FAULT = + new QName(URI_NS_SOAP_1_2_ENVELOPE, "VersionMismatch", SOAP_ENV_PREFIX); + + /** + * SOAP 1.2 MustUnderstand Fault + * @since 1.6, SAAJ 1.3 + */ + public static final QName SOAP_MUSTUNDERSTAND_FAULT = + new QName(URI_NS_SOAP_1_2_ENVELOPE, "MustUnderstand", SOAP_ENV_PREFIX); + + /** + * SOAP 1.2 DataEncodingUnknown Fault + * @since 1.6, SAAJ 1.3 + */ + public static final QName SOAP_DATAENCODINGUNKNOWN_FAULT = + new QName(URI_NS_SOAP_1_2_ENVELOPE, "DataEncodingUnknown", SOAP_ENV_PREFIX); + + /** + * SOAP 1.2 Sender Fault + * @since 1.6, SAAJ 1.3 + */ + public static final QName SOAP_SENDER_FAULT = + new QName(URI_NS_SOAP_1_2_ENVELOPE, "Sender", SOAP_ENV_PREFIX); + + /** + * SOAP 1.2 Receiver Fault + * @since 1.6, SAAJ 1.3 + */ + public static final QName SOAP_RECEIVER_FAULT = + new QName(URI_NS_SOAP_1_2_ENVELOPE, "Receiver", SOAP_ENV_PREFIX); + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPElement.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPElement.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,526 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import java.util.Iterator; + +import javax.xml.namespace.QName; + +/** + * An object representing an element of a SOAP message that is allowed but not + * specifically prescribed by a SOAP specification. This interface serves as the + * base interface for those objects that are specifically prescribed by a SOAP + * specification. + *

      + * Methods in this interface that are required to return SAAJ specific objects + * may "silently" replace nodes in the tree as required to successfully return + * objects of the correct type. See {@link #getChildElements()} and + * {@link javax.xml.soap} + * for details. + * + * @since 1.6 + */ +public interface SOAPElement extends Node, org.w3c.dom.Element { + + /** + * Creates a new SOAPElement object initialized with the + * given Name object and adds the new element to this + * SOAPElement object. + *

      + * This method may be deprecated in a future release of SAAJ in favor of + * addChildElement(javax.xml.namespace.QName) + * + * @param name a Name object with the XML name for the + * new element + * + * @return the new SOAPElement object that was created + * @exception SOAPException if there is an error in creating the + * SOAPElement object + * @see SOAPElement#addChildElement(javax.xml.namespace.QName) + */ + public SOAPElement addChildElement(Name name) throws SOAPException; + + /** + * Creates a new SOAPElement object initialized with the given + * QName object and adds the new element to this SOAPElement + * object. The namespace, localname and prefix of the new + * SOAPElement are all taken from the qname argument. + * + * @param qname a QName object with the XML name for the + * new element + * + * @return the new SOAPElement object that was created + * @exception SOAPException if there is an error in creating the + * SOAPElement object + * @see SOAPElement#addChildElement(Name) + * @since 1.6, SAAJ 1.3 + */ + public SOAPElement addChildElement(QName qname) throws SOAPException; + + /** + * Creates a new SOAPElement object initialized with the + * specified local name and adds the new element to this + * SOAPElement object. + * The new SOAPElement inherits any in-scope default namespace. + * + * @param localName a String giving the local name for + * the element + * @return the new SOAPElement object that was created + * @exception SOAPException if there is an error in creating the + * SOAPElement object + */ + public SOAPElement addChildElement(String localName) throws SOAPException; + + /** + * Creates a new SOAPElement object initialized with the + * specified local name and prefix and adds the new element to this + * SOAPElement object. + * + * @param localName a String giving the local name for + * the new element + * @param prefix a String giving the namespace prefix for + * the new element + * + * @return the new SOAPElement object that was created + * @exception SOAPException if the prefix is not valid in the + * context of this SOAPElement or if there is an error in creating the + * SOAPElement object + */ + public SOAPElement addChildElement(String localName, String prefix) + throws SOAPException; + + /** + * Creates a new SOAPElement object initialized with the + * specified local name, prefix, and URI and adds the new element to this + * SOAPElement object. + * + * @param localName a String giving the local name for + * the new element + * @param prefix a String giving the namespace prefix for + * the new element + * @param uri a String giving the URI of the namespace + * to which the new element belongs + * + * @return the new SOAPElement object that was created + * @exception SOAPException if there is an error in creating the + * SOAPElement object + */ + public SOAPElement addChildElement(String localName, String prefix, + String uri) + throws SOAPException; + + /** + * Add a SOAPElement as a child of this + * SOAPElement instance. The SOAPElement + * is expected to be created by a + * SOAPFactory. Callers should not rely on the + * element instance being added as is into the XML + * tree. Implementations could end up copying the content + * of the SOAPElement passed into an instance of + * a different SOAPElement implementation. For + * instance if addChildElement() is called on a + * SOAPHeader, element will be copied + * into an instance of a SOAPHeaderElement. + * + *

      The fragment rooted in element is either added + * as a whole or not at all, if there was an error. + * + *

      The fragment rooted in element cannot contain + * elements named "Envelope", "Header" or "Body" and in the SOAP + * namespace. Any namespace prefixes present in the fragment + * should be fully resolved using appropriate namespace + * declarations within the fragment itself. + * + * @param element the SOAPElement to be added as a + * new child + * + * @exception SOAPException if there was an error in adding this + * element as a child + * + * @return an instance representing the new SOAP element that was + * actually added to the tree. + */ + public SOAPElement addChildElement(SOAPElement element) + throws SOAPException; + + /** + * Detaches all children of this SOAPElement. + *

      + * This method is useful for rolling back the construction of partially + * completed SOAPHeaders and SOAPBodys in + * preparation for sending a fault when an error condition is detected. It + * is also useful for recycling portions of a document within a SOAP + * message. + * + * @since 1.6, SAAJ 1.2 + */ + public abstract void removeContents(); + + /** + * Creates a new Text object initialized with the given + * String and adds it to this SOAPElement object. + * + * @param text a String object with the textual content to be added + * + * @return the SOAPElement object into which + * the new Text object was inserted + * @exception SOAPException if there is an error in creating the + * new Text object or if it is not legal to + * attach it as a child to this + * SOAPElement + */ + public SOAPElement addTextNode(String text) throws SOAPException; + + /** + * Adds an attribute with the specified name and value to this + * SOAPElement object. + * + * @param name a Name object with the name of the attribute + * @param value a String giving the value of the attribute + * @return the SOAPElement object into which the attribute was + * inserted + * + * @exception SOAPException if there is an error in creating the + * Attribute, or it is invalid to set + an attribute with Name + name on this SOAPElement. + * @see SOAPElement#addAttribute(javax.xml.namespace.QName, String) + */ + public SOAPElement addAttribute(Name name, String value) + throws SOAPException; + + /** + * Adds an attribute with the specified name and value to this + * SOAPElement object. + * + * @param qname a QName object with the name of the attribute + * @param value a String giving the value of the attribute + * @return the SOAPElement object into which the attribute was + * inserted + * + * @exception SOAPException if there is an error in creating the + * Attribute, or it is invalid to set + an attribute with QName + qname on this SOAPElement. + * @see SOAPElement#addAttribute(Name, String) + * @since 1.6, SAAJ 1.3 + */ + public SOAPElement addAttribute(QName qname, String value) + throws SOAPException; + + /** + * Adds a namespace declaration with the specified prefix and URI to this + * SOAPElement object. + * + * @param prefix a String giving the prefix of the namespace + * @param uri a String giving the uri of the namespace + * @return the SOAPElement object into which this + * namespace declaration was inserted. + * + * @exception SOAPException if there is an error in creating the + * namespace + */ + public SOAPElement addNamespaceDeclaration(String prefix, String uri) + throws SOAPException; + + /** + * Returns the value of the attribute with the specified name. + * + * @param name a Name object with the name of the attribute + * @return a String giving the value of the specified + * attribute, Null if there is no such attribute + * @see SOAPElement#getAttributeValue(javax.xml.namespace.QName) + */ + public String getAttributeValue(Name name); + + /** + * Returns the value of the attribute with the specified qname. + * + * @param qname a QName object with the qname of the attribute + * @return a String giving the value of the specified + * attribute, Null if there is no such attribute + * @see SOAPElement#getAttributeValue(Name) + * @since 1.6, SAAJ 1.3 + */ + public String getAttributeValue(QName qname); + + /** + * Returns an Iterator over all of the attribute + * Name objects in this + * SOAPElement object. The iterator can be used to get + * the attribute names, which can then be passed to the method + * getAttributeValue to retrieve the value of each + * attribute. + * + * @see SOAPElement#getAllAttributesAsQNames() + * @return an iterator over the names of the attributes + */ + public Iterator getAllAttributes(); + + /** + * Returns an Iterator over all of the attributes + * in this SOAPElement as QName objects. + * The iterator can be used to get the attribute QName, which can then + * be passed to the method getAttributeValue to retrieve + * the value of each attribute. + * + * @return an iterator over the QNames of the attributes + * @see SOAPElement#getAllAttributes() + * @since 1.6, SAAJ 1.3 + */ + public Iterator getAllAttributesAsQNames(); + + + /** + * Returns the URI of the namespace that has the given prefix. + * + * @param prefix a String giving the prefix of the namespace + * for which to search + * @return a String with the uri of the namespace that has + * the given prefix + */ + public String getNamespaceURI(String prefix); + + /** + * Returns an Iterator over the namespace prefix + * Strings declared by this element. The prefixes returned by + * this iterator can be passed to the method + * getNamespaceURI to retrieve the URI of each namespace. + * + * @return an iterator over the namespace prefixes in this + * SOAPElement object + */ + public Iterator getNamespacePrefixes(); + + /** + * Returns an Iterator over the namespace prefix + * Strings visible to this element. The prefixes returned by + * this iterator can be passed to the method + * getNamespaceURI to retrieve the URI of each namespace. + * + * @return an iterator over the namespace prefixes are within scope of this + * SOAPElement object + * + * @since 1.6, SAAJ 1.2 + */ + public Iterator getVisibleNamespacePrefixes(); + + /** + * Creates a QName whose namespace URI is the one associated + * with the parameter, prefix, in the context of this + * SOAPElement. The remaining elements of the new + * QName are taken directly from the parameters, + * localName and prefix. + * + * @param localName + * a String containing the local part of the name. + * @param prefix + * a String containing the prefix for the name. + * + * @return a QName with the specified localName + * and prefix, and with a namespace that is associated + * with the prefix in the context of this + * SOAPElement. This namespace will be the same as + * the one that would be returned by + * {@link #getNamespaceURI(String)} if it were given + * prefix as it's parameter. + * + * @exception SOAPException if the QName cannot be created. + * + * @since 1.6, SAAJ 1.3 + */ + public QName createQName(String localName, String prefix) + throws SOAPException; + /** + * Returns the name of this SOAPElement object. + * + * @return a Name object with the name of this + * SOAPElement object + */ + public Name getElementName(); + + /** + * Returns the qname of this SOAPElement object. + * + * @return a QName object with the qname of this + * SOAPElement object + * @see SOAPElement#getElementName() + * @since 1.6, SAAJ 1.3 + */ + public QName getElementQName(); + + /** + * Changes the name of this Element to newName if + * possible. SOAP Defined elements such as SOAPEnvelope, SOAPHeader, SOAPBody + * etc. cannot have their names changed using this method. Any attempt to do + * so will result in a SOAPException being thrown. + *

      + * Callers should not rely on the element instance being renamed as is. + * Implementations could end up copying the content of the + * SOAPElement to a renamed instance. + * + * @param newName the new name for the Element. + * + * @exception SOAPException if changing the name of this Element + * is not allowed. + * @return The renamed Node + * + * @since 1.6, SAAJ 1.3 + */ + public SOAPElement setElementQName(QName newName) throws SOAPException; + + /** + * Removes the attribute with the specified name. + * + * @param name the Name object with the name of the + * attribute to be removed + * @return true if the attribute was + * removed successfully; false if it was not + * @see SOAPElement#removeAttribute(javax.xml.namespace.QName) + */ + public boolean removeAttribute(Name name); + + /** + * Removes the attribute with the specified qname. + * + * @param qname the QName object with the qname of the + * attribute to be removed + * @return true if the attribute was + * removed successfully; false if it was not + * @see SOAPElement#removeAttribute(Name) + * @since 1.6, SAAJ 1.3 + */ + public boolean removeAttribute(QName qname); + + /** + * Removes the namespace declaration corresponding to the given prefix. + * + * @param prefix a String giving the prefix for which + * to search + * @return true if the namespace declaration was + * removed successfully; false if it was not + */ + public boolean removeNamespaceDeclaration(String prefix); + + /** + * Returns an Iterator over all the immediate child + * {@link Node}s of this element. This includes javax.xml.soap.Text + * objects as well as SOAPElement objects. + *

      + * Calling this method may cause child Element, + * SOAPElement and org.w3c.dom.Text nodes to be + * replaced by SOAPElement, SOAPHeaderElement, + * SOAPBodyElement or javax.xml.soap.Text nodes as + * appropriate for the type of this parent node. As a result the calling + * application must treat any existing references to these child nodes that + * have been obtained through DOM APIs as invalid and either discard them or + * refresh them with the values returned by this Iterator. This + * behavior can be avoided by calling the equivalent DOM APIs. See + * {@link javax.xml.soap} + * for more details. + * + * @return an iterator with the content of this SOAPElement + * object + */ + public Iterator getChildElements(); + + /** + * Returns an Iterator over all the immediate child + * {@link Node}s of this element with the specified name. All of these + * children will be SOAPElement nodes. + *

      + * Calling this method may cause child Element, + * SOAPElement and org.w3c.dom.Text nodes to be + * replaced by SOAPElement, SOAPHeaderElement, + * SOAPBodyElement or javax.xml.soap.Text nodes as + * appropriate for the type of this parent node. As a result the calling + * application must treat any existing references to these child nodes that + * have been obtained through DOM APIs as invalid and either discard them or + * refresh them with the values returned by this Iterator. This + * behavior can be avoided by calling the equivalent DOM APIs. See + * {@link javax.xml.soap} + * for more details. + * + * @param name a Name object with the name of the child + * elements to be returned + * + * @return an Iterator object over all the elements + * in this SOAPElement object with the + * specified name + * @see SOAPElement#getChildElements(javax.xml.namespace.QName) + */ + public Iterator getChildElements(Name name); + + /** + * Returns an Iterator over all the immediate child + * {@link Node}s of this element with the specified qname. All of these + * children will be SOAPElement nodes. + *

      + * Calling this method may cause child Element, + * SOAPElement and org.w3c.dom.Text nodes to be + * replaced by SOAPElement, SOAPHeaderElement, + * SOAPBodyElement or javax.xml.soap.Text nodes as + * appropriate for the type of this parent node. As a result the calling + * application must treat any existing references to these child nodes that + * have been obtained through DOM APIs as invalid and either discard them or + * refresh them with the values returned by this Iterator. This + * behavior can be avoided by calling the equivalent DOM APIs. See + * {@link javax.xml.soap} + * for more details. + * + * @param qname a QName object with the qname of the child + * elements to be returned + * + * @return an Iterator object over all the elements + * in this SOAPElement object with the + * specified qname + * @see SOAPElement#getChildElements(Name) + * @since 1.6, SAAJ 1.3 + */ + public Iterator getChildElements(QName qname); + + /** + * Sets the encoding style for this SOAPElement object + * to one specified. + * + * @param encodingStyle a String giving the encoding style + * + * @exception IllegalArgumentException if there was a problem in the + * encoding style being set. + * @exception SOAPException if setting the encodingStyle is invalid for this SOAPElement. + * @see #getEncodingStyle + */ + public void setEncodingStyle(String encodingStyle) + throws SOAPException; + /** + * Returns the encoding style for this SOAPElement object. + * + * @return a String giving the encoding style + * + * @see #setEncodingStyle + */ + public String getEncodingStyle(); +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPElementFactory.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPElementFactory.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +/** + * SOAPElementFactory is a factory for XML fragments that + * will eventually end up in the SOAP part. These fragments + * can be inserted as children of the SOAPHeader or + * SOAPBody or SOAPEnvelope. + * + *

      Elements created using this factory do not have the properties + * of an element that lives inside a SOAP header document. These + * elements are copied into the XML document tree when they are + * inserted. + * @deprecated - Use javax.xml.soap.SOAPFactory for creating SOAPElements. + * @see javax.xml.soap.SOAPFactory + * @since 1.6 + */ +public class SOAPElementFactory { + + private SOAPFactory soapFactory; + + private SOAPElementFactory(SOAPFactory soapFactory) { + this.soapFactory = soapFactory; + } + + /** + * Create a SOAPElement object initialized with the + * given Name object. + * + * @param name a Name object with the XML name for + * the new element + * + * @return the new SOAPElement object that was + * created + * + * @exception SOAPException if there is an error in creating the + * SOAPElement object + * + * @deprecated Use + * javax.xml.soap.SOAPFactory.createElement(javax.xml.soap.Name) + * instead + * + * @see javax.xml.soap.SOAPFactory#createElement(javax.xml.soap.Name) + * @see javax.xml.soap.SOAPFactory#createElement(javax.xml.namespace.QName) + */ + public SOAPElement create(Name name) throws SOAPException { + return soapFactory.createElement(name); + } + + /** + * Create a SOAPElement object initialized with the + * given local name. + * + * @param localName a String giving the local name for + * the new element + * + * @return the new SOAPElement object that was + * created + * + * @exception SOAPException if there is an error in creating the + * SOAPElement object + * + * @deprecated Use + * javax.xml.soap.SOAPFactory.createElement(String localName) instead + * + * @see javax.xml.soap.SOAPFactory#createElement(java.lang.String) + */ + public SOAPElement create(String localName) throws SOAPException { + return soapFactory.createElement(localName); + } + + /** + * Create a new SOAPElement object with the given + * local name, prefix and uri. + * + * @param localName a String giving the local name + * for the new element + * @param prefix the prefix for this SOAPElement + * @param uri a String giving the URI of the + * namespace to which the new element belongs + * + * @exception SOAPException if there is an error in creating the + * SOAPElement object + * + * @deprecated Use + * javax.xml.soap.SOAPFactory.createElement(String localName, + * String prefix, + * String uri) + * instead + * + * @see javax.xml.soap.SOAPFactory#createElement(java.lang.String, java.lang.String, java.lang.String) + */ + public SOAPElement create(String localName, String prefix, String uri) + throws SOAPException { + return soapFactory.createElement(localName, prefix, uri); + } + + /** + * Creates a new instance of SOAPElementFactory. + * + * @return a new instance of a SOAPElementFactory + * + * @exception SOAPException if there was an error creating the + * default SOAPElementFactory + */ + public static SOAPElementFactory newInstance() throws SOAPException { + try { + return new SOAPElementFactory(SOAPFactory.newInstance()); + } catch (Exception ex) { + throw new SOAPException( + "Unable to create SOAP Element Factory: " + ex.getMessage()); + } + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPEnvelope.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPEnvelope.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,202 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + + +/** + * The container for the SOAPHeader and SOAPBody portions of a + * SOAPPart object. By default, a SOAPMessage + * object is created with a SOAPPart object that has a + * SOAPEnvelope object. The SOAPEnvelope object + * by default has an empty SOAPBody object and an empty + * SOAPHeader object. The SOAPBody object is + * required, and the SOAPHeader object, though + * optional, is used in the majority of cases. If the + * SOAPHeader object is not needed, it can be deleted, + * which is shown later. + *

      + * A client can access the SOAPHeader and SOAPBody + * objects by calling the methods SOAPEnvelope.getHeader and + * SOAPEnvelope.getBody. The + * following lines of code use these two methods after starting with + * the SOAPMessage + * object message to get the SOAPPart object sp, + * which is then used to get the SOAPEnvelope object se. + * + *

      + *     SOAPPart sp = message.getSOAPPart();
      + *     SOAPEnvelope se = sp.getEnvelope();
      + *     SOAPHeader sh = se.getHeader();
      + *     SOAPBody sb = se.getBody();
      + * 
      + *

      + * It is possible to change the body or header of a SOAPEnvelope + * object by retrieving the current one, deleting it, and then adding + * a new body or header. The javax.xml.soap.Node method + * deleteNode deletes the XML element (node) on which it is + * called. For example, the following line of code deletes the + * SOAPBody object that is retrieved by the method getBody. + *

      + *      se.getBody().detachNode();
      + * 
      + * To create a SOAPHeader object to replace the one that was removed, + * a client uses + * the method SOAPEnvelope.addHeader, which creates a new header and + * adds it to the SOAPEnvelope object. Similarly, the method + * addBody creates a new SOAPBody object and adds + * it to the SOAPEnvelope object. The following code fragment + * retrieves the current header, removes it, and adds a new one. Then + * it retrieves the current body, removes it, and adds a new one. + * + *
      + *     SOAPPart sp = message.getSOAPPart();
      + *     SOAPEnvelope se = sp.getEnvelope();
      + *     se.getHeader().detachNode();
      + *     SOAPHeader sh = se.addHeader();
      + *     se.getBody().detachNode();
      + *     SOAPBody sb = se.addBody();
      + * 
      + * It is an error to add a SOAPBody or SOAPHeader + * object if one already exists. + *

      + * The SOAPEnvelope interface provides three methods for creating + * Name objects. One method creates Name objects with + * a local name, a namespace prefix, and a namesapce URI. The second method creates + * Name objects with a local name and a namespace prefix, and the third + * creates Name objects with just a local name. The following line of + * code, in which se is a SOAPEnvelope object, creates a new + * Name object with all three. + *

      + *     Name name = se.createName("GetLastTradePrice", "WOMBAT",
      + *                                "http://www.wombat.org/trader");
      + * 
      + * + * @since 1.6 + */ +public interface SOAPEnvelope extends SOAPElement { + + /** + * Creates a new Name object initialized with the + * given local name, namespace prefix, and namespace URI. + *

      + * This factory method creates Name objects for use in + * the SOAP/XML document. + * + * @param localName a String giving the local name + * @param prefix a String giving the prefix of the namespace + * @param uri a String giving the URI of the namespace + * @return a Name object initialized with the given + * local name, namespace prefix, and namespace URI + * @throws SOAPException if there is a SOAP error + */ + public abstract Name createName(String localName, String prefix, + String uri) + throws SOAPException; + + /** + * Creates a new Name object initialized with the + * given local name. + *

      + * This factory method creates Name objects for use in + * the SOAP/XML document. + * + * @param localName a String giving the local name + * @return a Name object initialized with the given + * local name + * @throws SOAPException if there is a SOAP error + */ + public abstract Name createName(String localName) + throws SOAPException; + + /** + * Returns the SOAPHeader object for + * this SOAPEnvelope object. + *

      + * A new SOAPMessage object is by default created with a + * SOAPEnvelope object that contains an empty + * SOAPHeader object. As a result, the method + * getHeader will always return a SOAPHeader + * object unless the header has been removed and a new one has not + * been added. + * + * @return the SOAPHeader object or null if + * there is none + * @exception SOAPException if there is a problem obtaining the + * SOAPHeader object + */ + public SOAPHeader getHeader() throws SOAPException; + + /** + * Returns the SOAPBody object associated with this + * SOAPEnvelope object. + *

      + * A new SOAPMessage object is by default created with a + * SOAPEnvelope object that contains an empty + * SOAPBody object. As a result, the method + * getBody will always return a SOAPBody + * object unless the body has been removed and a new one has not + * been added. + * + * @return the SOAPBody object for this + * SOAPEnvelope object or null + * if there is none + * @exception SOAPException if there is a problem obtaining the + * SOAPBody object + */ + public SOAPBody getBody() throws SOAPException; + /** + * Creates a SOAPHeader object and sets it as the + * SOAPHeader object for this SOAPEnvelope + * object. + *

      + * It is illegal to add a header when the envelope already + * contains a header. Therefore, this method should be called + * only after the existing header has been removed. + * + * @return the new SOAPHeader object + * + * @exception SOAPException if this + * SOAPEnvelope object already contains a + * valid SOAPHeader object + */ + public SOAPHeader addHeader() throws SOAPException; + /** + * Creates a SOAPBody object and sets it as the + * SOAPBody object for this SOAPEnvelope + * object. + *

      + * It is illegal to add a body when the envelope already + * contains a body. Therefore, this method should be called + * only after the existing body has been removed. + * + * @return the new SOAPBody object + * + * @exception SOAPException if this + * SOAPEnvelope object already contains a + * valid SOAPBody object + */ + public SOAPBody addBody() throws SOAPException; +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPException.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,165 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +/** + * An exception that signals that a SOAP exception has occurred. A + * SOAPException object may contain a String + * that gives the reason for the exception, an embedded + * Throwable object, or both. This class provides methods + * for retrieving reason messages and for retrieving the embedded + * Throwable object. + * + *

      Typical reasons for throwing a SOAPException + * object are problems such as difficulty setting a header, not being + * able to send a message, and not being able to get a connection with + * the provider. Reasons for embedding a Throwable + * object include problems such as input/output errors or a parsing + * problem, such as an error in parsing a header. + * + * @since 1.6 + */ +public class SOAPException extends Exception { + private Throwable cause; + + /** + * Constructs a SOAPException object with no + * reason or embedded Throwable object. + */ + public SOAPException() { + super(); + this.cause = null; + } + + /** + * Constructs a SOAPException object with the given + * String as the reason for the exception being thrown. + * + * @param reason a description of what caused the exception + */ + public SOAPException(String reason) { + super(reason); + this.cause = null; + } + + /** + * Constructs a SOAPException object with the given + * String as the reason for the exception being thrown + * and the given Throwable object as an embedded + * exception. + * + * @param reason a description of what caused the exception + * @param cause a Throwable object that is to + * be embedded in this SOAPException object + */ + public SOAPException(String reason, Throwable cause) { + super(reason); + initCause(cause); + } + + /** + * Constructs a SOAPException object initialized + * with the given Throwable object. + */ + public SOAPException(Throwable cause) { + super(cause.toString()); + initCause(cause); + } + + /** + * Returns the detail message for this SOAPException + * object. + *

      + * If there is an embedded Throwable object, and if the + * SOAPException object has no detail message of its + * own, this method will return the detail message from the embedded + * Throwable object. + * + * @return the error or warning message for this + * SOAPException or, if it has none, the + * message of the embedded Throwable object, + * if there is one + */ + public String getMessage() { + String message = super.getMessage(); + if (message == null && cause != null) { + return cause.getMessage(); + } else { + return message; + } + } + + /** + * Returns the Throwable object embedded in this + * SOAPException if there is one. Otherwise, this method + * returns null. + * + * @return the embedded Throwable object or null + * if there is none + */ + + public Throwable getCause() { + return cause; + } + + /** + * Initializes the cause field of this SOAPException + * object with the given Throwable object. + *

      + * This method can be called at most once. It is generally called from + * within the constructor or immediately after the constructor has + * returned a new SOAPException object. + * If this SOAPException object was created with the + * constructor {@link #SOAPException(Throwable)} or + * {@link #SOAPException(String,Throwable)}, meaning that its + * cause field already has a value, this method cannot be + * called even once. + * + * @param cause the Throwable object that caused this + * SOAPException object to be thrown. The value of this + * parameter is saved for later retrieval by the + * {@link #getCause()} method. A null value is + * permitted and indicates that the cause is nonexistent or + * unknown. + * @return a reference to this SOAPException instance + * @throws IllegalArgumentException if cause is this + * Throwable object. (A Throwable object + * cannot be its own cause.) + * @throws IllegalStateException if the cause for this SOAPException object + * has already been initialized + */ + public synchronized Throwable initCause(Throwable cause) { + if (this.cause != null) { + throw new IllegalStateException("Can't override cause"); + } + if (cause == this) { + throw new IllegalArgumentException("Self-causation not permitted"); + } + this.cause = cause; + + return this; + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPFactory.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPFactory.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,300 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import javax.xml.namespace.QName; + +import org.w3c.dom.Element; + +/** + * SOAPFactory is a factory for creating various objects + * that exist in the SOAP XML tree. + + * SOAPFactory can be + * used to create XML fragments that will eventually end up in the + * SOAP part. These fragments can be inserted as children of the + * {@link SOAPHeaderElement} or {@link SOAPBodyElement} or + * {@link SOAPEnvelope} or other {@link SOAPElement} objects. + * + * SOAPFactory also has methods to create + * javax.xml.soap.Detail objects as well as + * java.xml.soap.Name objects. + * + * @since 1.6 + */ +public abstract class SOAPFactory { + + /** + * A constant representing the property used to lookup the name of + * a SOAPFactory implementation class. + */ + static private final String SOAP_FACTORY_PROPERTY = + "javax.xml.soap.SOAPFactory"; + + /** + * Class name of default SOAPFactory implementation. + */ + static final String DEFAULT_SOAP_FACTORY + = "com.sun.xml.internal.messaging.saaj.soap.ver1_1.SOAPFactory1_1Impl"; + + /** + * Creates a SOAPElement object from an existing DOM + * Element. If the DOM Element that is passed in + * as an argument is already a SOAPElement then this method + * must return it unmodified without any further work. Otherwise, a new + * SOAPElement is created and a deep copy is made of the + * domElement argument. The concrete type of the return value + * will depend on the name of the domElement argument. If any + * part of the tree rooted in domElement violates SOAP rules, a + * SOAPException will be thrown. + * + * @param domElement - the Element to be copied. + * + * @return a new SOAPElement that is a copy of domElement. + * + * @exception SOAPException if there is an error in creating the + * SOAPElement object + * + * @since 1.6, SAAJ 1.3 + */ + public SOAPElement createElement(Element domElement) throws SOAPException { + throw new UnsupportedOperationException("createElement(org.w3c.dom.Element) must be overridden by all subclasses of SOAPFactory."); + } + + /** + * Creates a SOAPElement object initialized with the + * given Name object. The concrete type of the return value + * will depend on the name given to the new SOAPElement. For + * instance, a new SOAPElement with the name + * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a + * SOAPEnvelope that supports SOAP 1.2 behavior to be created. + * + * @param name a Name object with the XML name for + * the new element + * + * @return the new SOAPElement object that was + * created + * + * @exception SOAPException if there is an error in creating the + * SOAPElement object + * @see SOAPFactory#createElement(javax.xml.namespace.QName) + */ + public abstract SOAPElement createElement(Name name) throws SOAPException; + + /** + * Creates a SOAPElement object initialized with the + * given QName object. The concrete type of the return value + * will depend on the name given to the new SOAPElement. For + * instance, a new SOAPElement with the name + * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a + * SOAPEnvelope that supports SOAP 1.2 behavior to be created. + * + * @param qname a QName object with the XML name for + * the new element + * + * @return the new SOAPElement object that was + * created + * + * @exception SOAPException if there is an error in creating the + * SOAPElement object + * @see SOAPFactory#createElement(Name) + * @since 1.6, SAAJ 1.3 + */ + public SOAPElement createElement(QName qname) throws SOAPException { + throw new UnsupportedOperationException("createElement(QName) must be overridden by all subclasses of SOAPFactory."); + } + + /** + * Creates a SOAPElement object initialized with the + * given local name. + * + * @param localName a String giving the local name for + * the new element + * + * @return the new SOAPElement object that was + * created + * + * @exception SOAPException if there is an error in creating the + * SOAPElement object + */ + public abstract SOAPElement createElement(String localName) + throws SOAPException; + + + /** + * Creates a new SOAPElement object with the given + * local name, prefix and uri. The concrete type of the return value + * will depend on the name given to the new SOAPElement. For + * instance, a new SOAPElement with the name + * "{http://www.w3.org/2003/05/soap-envelope}Envelope" would cause a + * SOAPEnvelope that supports SOAP 1.2 behavior to be created. + * + * @param localName a String giving the local name + * for the new element + * @param prefix the prefix for this SOAPElement + * @param uri a String giving the URI of the + * namespace to which the new element belongs + * + * @exception SOAPException if there is an error in creating the + * SOAPElement object + */ + public abstract SOAPElement createElement( + String localName, + String prefix, + String uri) + throws SOAPException; + + /** + * Creates a new Detail object which serves as a container + * for DetailEntry objects. + *

      + * This factory method creates Detail objects for use in + * situations where it is not practical to use the SOAPFault + * abstraction. + * + * @return a Detail object + * @throws SOAPException if there is a SOAP error + * @throws UnsupportedOperationException if the protocol specified + * for the SOAPFactory was DYNAMIC_SOAP_PROTOCOL + */ + public abstract Detail createDetail() throws SOAPException; + + /** + *Creates a new SOAPFault object initialized with the given reasonText + * and faultCode + *@param reasonText the ReasonText/FaultString for the fault + *@param faultCode the FaultCode for the fault + *@return a SOAPFault object + *@throws SOAPException if there is a SOAP error + *@since 1.6, SAAJ 1.3 + */ + public abstract SOAPFault createFault(String reasonText, QName faultCode) throws SOAPException; + + /** + *Creates a new default SOAPFault object + *@return a SOAPFault object + *@throws SOAPException if there is a SOAP error + *@since 1.6, SAAJ 1.3 + */ + public abstract SOAPFault createFault() throws SOAPException; + + /** + * Creates a new Name object initialized with the + * given local name, namespace prefix, and namespace URI. + *

      + * This factory method creates Name objects for use in + * situations where it is not practical to use the SOAPEnvelope + * abstraction. + * + * @param localName a String giving the local name + * @param prefix a String giving the prefix of the namespace + * @param uri a String giving the URI of the namespace + * @return a Name object initialized with the given + * local name, namespace prefix, and namespace URI + * @throws SOAPException if there is a SOAP error + */ + public abstract Name createName( + String localName, + String prefix, + String uri) + throws SOAPException; + + /** + * Creates a new Name object initialized with the + * given local name. + *

      + * This factory method creates Name objects for use in + * situations where it is not practical to use the SOAPEnvelope + * abstraction. + * + * @param localName a String giving the local name + * @return a Name object initialized with the given + * local name + * @throws SOAPException if there is a SOAP error + */ + public abstract Name createName(String localName) throws SOAPException; + + /** + * Creates a new SOAPFactory object that is an instance of + * the default implementation (SOAP 1.1), + * + * This method uses the following ordered lookup procedure to determine the SOAPFactory implementation class to load: + *

        + *
      • Use the javax.xml.soap.SOAPFactory system property. + *
      • Use the properties file "lib/jaxm.properties" in the JRE directory. This configuration file is in standard + * java.util.Properties format and contains the fully qualified name of the implementation class with the key being the + * system property defined above. + *
      • Use the Services API (as detailed in the JAR specification), if available, to determine the classname. The Services API + * will look for a classname in the file META-INF/services/javax.xml.soap.SOAPFactory in jars available to the runtime. + *
      • Use the SAAJMetaFactory instance to locate the SOAPFactory implementation class. + *
      + * + * @return a new instance of a SOAPFactory + * + * @exception SOAPException if there was an error creating the + * default SOAPFactory + * @see SAAJMetaFactory + */ + public static SOAPFactory newInstance() + throws SOAPException + { + try { + SOAPFactory factory = (SOAPFactory) FactoryFinder.find( + SOAP_FACTORY_PROPERTY, DEFAULT_SOAP_FACTORY, false); + if (factory != null) + return factory; + return newInstance(SOAPConstants.SOAP_1_1_PROTOCOL); + } catch (Exception ex) { + throw new SOAPException( + "Unable to create SOAP Factory: " + ex.getMessage()); + } + + } + + /** + * Creates a new SOAPFactory object that is an instance of + * the specified implementation, this method uses the SAAJMetaFactory to + * locate the implementation class and create the SOAPFactory instance. + * + * @return a new instance of a SOAPFactory + * + * @param protocol a string constant representing the protocol of the + * specified SOAP factory implementation. May be + * either DYNAMIC_SOAP_PROTOCOL, + * DEFAULT_SOAP_PROTOCOL (which is the same + * as) SOAP_1_1_PROTOCOL, or + * SOAP_1_2_PROTOCOL. + * + * @exception SOAPException if there was an error creating the + * specified SOAPFactory + * @see SAAJMetaFactory + * @since 1.6, SAAJ 1.3 + */ + public static SOAPFactory newInstance(String protocol) + throws SOAPException { + return SAAJMetaFactory.getInstance().newSOAPFactory(protocol); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPFault.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPFault.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,513 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import java.util.Iterator; +import java.util.Locale; + +import javax.xml.namespace.QName; + +/** + * An element in the SOAPBody object that contains + * error and/or status information. This information may relate to + * errors in the SOAPMessage object or to problems + * that are not related to the content in the message itself. Problems + * not related to the message itself are generally errors in + * processing, such as the inability to communicate with an upstream + * server. + *

      + * Depending on the protocol specified while creating the + * MessageFactory instance, a SOAPFault has + * sub-elements as defined in the SOAP 1.1/SOAP 1.2 specification. + * + * @since 1.6 + */ +public interface SOAPFault extends SOAPBodyElement { + + /** + * Sets this SOAPFault object with the given fault code. + * + *

      Fault codes, which give information about the fault, are defined + * in the SOAP 1.1 specification. A fault code is mandatory and must + * be of type Name. This method provides a convenient + * way to set a fault code. For example, + * + *

      +     * SOAPEnvelope se = ...;
      +     * // Create a qualified name in the SOAP namespace with a localName
      +     * // of "Client". Note that prefix parameter is optional and is null
      +     * // here which causes the implementation to use an appropriate prefix.
      +     * Name qname = se.createName("Client", null,
      +     *                            SOAPConstants.URI_NS_SOAP_ENVELOPE);
      +     * SOAPFault fault = ...;
      +     * fault.setFaultCode(qname);
      +     * 
      + * It is preferable to use this method over {@link #setFaultCode(String)}. + * + * @param faultCodeQName a Name object giving the fault + * code to be set. It must be namespace qualified. + * @see #getFaultCodeAsName + * + * @exception SOAPException if there was an error in adding the + * faultcode element to the underlying XML tree. + * + * @since 1.6, SAAJ 1.2 + */ + public void setFaultCode(Name faultCodeQName) throws SOAPException; + + /** + * Sets this SOAPFault object with the given fault code. + * + * It is preferable to use this method over {@link #setFaultCode(Name)}. + * + * @param faultCodeQName a QName object giving the fault + * code to be set. It must be namespace qualified. + * @see #getFaultCodeAsQName + * + * @exception SOAPException if there was an error in adding the + * faultcode element to the underlying XML tree. + * + * @see #setFaultCode(Name) + * @see #getFaultCodeAsQName() + * + * @since 1.6, SAAJ 1.3 + */ + public void setFaultCode(QName faultCodeQName) throws SOAPException; + + /** + * Sets this SOAPFault object with the give fault code. + *

      + * Fault codes, which given information about the fault, are defined in + * the SOAP 1.1 specification. This element is mandatory in SOAP 1.1. + * Because the fault code is required to be a QName it is preferable to + * use the {@link #setFaultCode(Name)} form of this method. + * + * @param faultCode a String giving the fault code to be set. + * It must be of the form "prefix:localName" where the prefix has + * been defined in a namespace declaration. + * @see #setFaultCode(Name) + * @see #getFaultCode + * @see SOAPElement#addNamespaceDeclaration + * + * @exception SOAPException if there was an error in adding the + * faultCode to the underlying XML tree. + */ + public void setFaultCode(String faultCode) throws SOAPException; + + /** + * Gets the mandatory SOAP 1.1 fault code for this + * SOAPFault object as a SAAJ Name object. + * The SOAP 1.1 specification requires the value of the "faultcode" + * element to be of type QName. This method returns the content of the + * element as a QName in the form of a SAAJ Name object. This method + * should be used instead of the getFaultCode method since + * it allows applications to easily access the namespace name without + * additional parsing. + * + * @return a Name representing the faultcode + * @see #setFaultCode(Name) + * + * @since 1.6, SAAJ 1.2 + */ + public Name getFaultCodeAsName(); + + + /** + * Gets the fault code for this + * SOAPFault object as a QName object. + * + * @return a QName representing the faultcode + * + * @see #setFaultCode(QName) + * + * @since 1.6, SAAJ 1.3 + */ + public QName getFaultCodeAsQName(); + + /** + * Gets the Subcodes for this SOAPFault as an iterator over + * QNames. + * + * @return an Iterator that accesses a sequence of + * QNames. This Iterator should not support + * the optional remove method. The order in which the + * Subcodes are returned reflects the hierarchy of Subcodes present + * in the fault from top to bottom. + * + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Subcode. + * + * @since 1.6, SAAJ 1.3 + */ + public Iterator getFaultSubcodes(); + + /** + * Removes any Subcodes that may be contained by this + * SOAPFault. Subsequent calls to + * getFaultSubcodes will return an empty iterator until a call + * to appendFaultSubcode is made. + * + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Subcode. + * + * @since 1.6, SAAJ 1.3 + */ + public void removeAllFaultSubcodes(); + + /** + * Adds a Subcode to the end of the sequence of Subcodes contained by this + * SOAPFault. Subcodes, which were introduced in SOAP 1.2, are + * represented by a recursive sequence of subelements rooted in the + * mandatory Code subelement of a SOAP Fault. + * + * @param subcode a QName containing the Value of the Subcode. + * + * @exception SOAPException if there was an error in setting the Subcode + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Subcode. + * + * @since 1.6, SAAJ 1.3 + */ + public void appendFaultSubcode(QName subcode) throws SOAPException; + + /** + * Gets the fault code for this SOAPFault object. + * + * @return a String with the fault code + * @see #getFaultCodeAsName + * @see #setFaultCode + */ + public String getFaultCode(); + + /** + * Sets this SOAPFault object with the given fault actor. + *

      + * The fault actor is the recipient in the message path who caused the + * fault to happen. + *

      + * If this SOAPFault supports SOAP 1.2 then this call is + * equivalent to {@link #setFaultRole(String)} + * + * @param faultActor a String identifying the actor that + * caused this SOAPFault object + * @see #getFaultActor + * + * @exception SOAPException if there was an error in adding the + * faultActor to the underlying XML tree. + */ + public void setFaultActor(String faultActor) throws SOAPException; + + /** + * Gets the fault actor for this SOAPFault object. + *

      + * If this SOAPFault supports SOAP 1.2 then this call is + * equivalent to {@link #getFaultRole()} + * + * @return a String giving the actor in the message path + * that caused this SOAPFault object + * @see #setFaultActor + */ + public String getFaultActor(); + + /** + * Sets the fault string for this SOAPFault object + * to the given string. + *

      + * If this + * SOAPFault is part of a message that supports SOAP 1.2 then + * this call is equivalent to: + *

      +     *      addFaultReasonText(faultString, Locale.getDefault());
      +     * 
      + * + * @param faultString a String giving an explanation of + * the fault + * @see #getFaultString + * + * @exception SOAPException if there was an error in adding the + * faultString to the underlying XML tree. + */ + public void setFaultString(String faultString) throws SOAPException; + + /** + * Sets the fault string for this SOAPFault object + * to the given string and localized to the given locale. + *

      + * If this + * SOAPFault is part of a message that supports SOAP 1.2 then + * this call is equivalent to: + *

      +     *      addFaultReasonText(faultString, locale);
      +     * 
      + * + * @param faultString a String giving an explanation of + * the fault + * @param locale a {@link java.util.Locale Locale} object indicating + * the native language of the faultString + * @see #getFaultString + * + * @exception SOAPException if there was an error in adding the + * faultString to the underlying XML tree. + * + * @since 1.6, SAAJ 1.2 + */ + public void setFaultString(String faultString, Locale locale) + throws SOAPException; + + /** + * Gets the fault string for this SOAPFault object. + *

      + * If this + * SOAPFault is part of a message that supports SOAP 1.2 then + * this call is equivalent to: + *

      +     *    String reason = null;
      +     *    try {
      +     *        reason = (String) getFaultReasonTexts().next();
      +     *    } catch (SOAPException e) {}
      +     *    return reason;
      +     * 
      + * + * @return a String giving an explanation of + * the fault + * @see #setFaultString(String) + * @see #setFaultString(String, Locale) + */ + public String getFaultString(); + + /** + * Gets the locale of the fault string for this SOAPFault + * object. + *

      + * If this + * SOAPFault is part of a message that supports SOAP 1.2 then + * this call is equivalent to: + *

      +     *    Locale locale = null;
      +     *    try {
      +     *        locale = (Locale) getFaultReasonLocales().next();
      +     *    } catch (SOAPException e) {}
      +     *    return locale;
      +     * 
      + * + * @return a Locale object indicating the native language of + * the fault string or null if no locale was specified + * @see #setFaultString(String, Locale) + * + * @since 1.6, SAAJ 1.2 + */ + public Locale getFaultStringLocale(); + + /** + * Returns true if this SOAPFault has a Detail + * subelement and false otherwise. Equivalent to + * (getDetail()!=null). + * + * @return true if this SOAPFault has a Detail + * subelement and false otherwise. + * + * @since 1.6, SAAJ 1.3 + */ + public boolean hasDetail(); + + /** + * Returns the optional detail element for this SOAPFault + * object. + *

      + * A Detail object carries application-specific error + * information, the scope of the error information is restricted to + * faults in the SOAPBodyElement objects if this is a + * SOAP 1.1 Fault. + * + * @return a Detail object with application-specific + * error information if present, null otherwise + */ + public Detail getDetail(); + + /** + * Creates an optional Detail object and sets it as the + * Detail object for this SOAPFault + * object. + *

      + * It is illegal to add a detail when the fault already + * contains a detail. Therefore, this method should be called + * only after the existing detail has been removed. + * + * @return the new Detail object + * + * @exception SOAPException if this + * SOAPFault object already contains a + * valid Detail object + */ + public Detail addDetail() throws SOAPException; + + /** + * Returns an Iterator over a distinct sequence of + * Locales for which there are associated Reason Text items. + * Any of these Locales can be used in a call to + * getFaultReasonText in order to obtain a localized version + * of the Reason Text string. + * + * @return an Iterator over a sequence of Locale + * objects for which there are associated Reason Text items. + * + * @exception SOAPException if there was an error in retrieving + * the fault Reason locales. + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Fault Reason. + * + * @since 1.6, SAAJ 1.3 + */ + public Iterator getFaultReasonLocales() throws SOAPException; + + /** + * Returns an Iterator over a sequence of + * String objects containing all of the Reason Text items for + * this SOAPFault. + * + * @return an Iterator over env:Fault/env:Reason/env:Text items. + * + * @exception SOAPException if there was an error in retrieving + * the fault Reason texts. + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Fault Reason. + * + * @since 1.6, SAAJ 1.3 + */ + public Iterator getFaultReasonTexts() throws SOAPException; + + /** + * Returns the Reason Text associated with the given Locale. + * If more than one such Reason Text exists the first matching Text is + * returned + * + * @param locale -- the Locale for which a localized + * Reason Text is desired + * + * @return the Reason Text associated with locale + * + * @see #getFaultString + * + * @exception SOAPException if there was an error in retrieving + * the fault Reason text for the specified locale . + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Fault Reason. + * + * @since 1.6, SAAJ 1.3 + */ + public String getFaultReasonText(Locale locale) throws SOAPException; + + /** + * Appends or replaces a Reason Text item containing the specified + * text message and an xml:lang derived from + * locale. If a Reason Text item with this + * xml:lang already exists its text value will be replaced + * with text. + * The locale parameter should not be null + *

      + * Code sample: + * + *

      +     * SOAPFault fault = ...;
      +     * fault.addFaultReasonText("Version Mismatch", Locale.ENGLISH);
      +     * 
      + * + * @param text -- reason message string + * @param locale -- Locale object representing the locale of the message + * + * @exception SOAPException if there was an error in adding the Reason text + * or the locale passed was null. + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Fault Reason. + * + * @since 1.6, SAAJ 1.3 + */ + public void addFaultReasonText(String text, java.util.Locale locale) + throws SOAPException; + + /** + * Returns the optional Node element value for this + * SOAPFault object. The Node element is + * optional in SOAP 1.2. + * + * @return Content of the env:Fault/env:Node element as a String + * or null if none + * + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Fault Node. + * + * @since 1.6, SAAJ 1.3 + */ + public String getFaultNode(); + + /** + * Creates or replaces any existing Node element value for + * this SOAPFault object. The Node element + * is optional in SOAP 1.2. + * + * @exception SOAPException if there was an error in setting the + * Node for this SOAPFault object. + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Fault Node. + * + * + * @since 1.6, SAAJ 1.3 + */ + public void setFaultNode(String uri) throws SOAPException; + + /** + * Returns the optional Role element value for this + * SOAPFault object. The Role element is + * optional in SOAP 1.2. + * + * @return Content of the env:Fault/env:Role element as a String + * or null if none + * + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Fault Role. + * + * @since 1.6, SAAJ 1.3 + */ + public String getFaultRole(); + + /** + * Creates or replaces any existing Role element value for + * this SOAPFault object. The Role element + * is optional in SOAP 1.2. + * + * @param uri - the URI of the Role + * + * @exception SOAPException if there was an error in setting the + * Role for this SOAPFault object. + * + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Fault Role. + * + * @since 1.6, SAAJ 1.3 + */ + public void setFaultRole(String uri) throws SOAPException; + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPFaultElement.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPFaultElement.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,39 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +/** + * A representation of the contents in + * a SOAPFault object. The Detail interface + * is a SOAPFaultElement. + *

      + * Content is added to a SOAPFaultElement using the + * SOAPElement method addTextNode. + * + * @since 1.6 + */ +public interface SOAPFaultElement extends SOAPElement { +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPHeader.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPHeader.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,263 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import java.util.Iterator; + +import javax.xml.namespace.QName; + +/** + * A representation of the SOAP header + * element. A SOAP header element consists of XML data that affects + * the way the application-specific content is processed by the message + * provider. For example, transaction semantics, authentication information, + * and so on, can be specified as the content of a SOAPHeader + * object. + *

      + * A SOAPEnvelope object contains an empty + * SOAPHeader object by default. If the SOAPHeader + * object, which is optional, is not needed, it can be retrieved and deleted + * with the following line of code. The variable se is a + * SOAPEnvelope object. + *

      + *      se.getHeader().detachNode();
      + * 
      + * + * A SOAPHeader object is created with the SOAPEnvelope + * method addHeader. This method, which creates a new header and adds it + * to the envelope, may be called only after the existing header has been removed. + * + *
      + *      se.getHeader().detachNode();
      + *      SOAPHeader sh = se.addHeader();
      + * 
      + *

      + * A SOAPHeader object can have only SOAPHeaderElement + * objects as its immediate children. The method addHeaderElement + * creates a new HeaderElement object and adds it to the + * SOAPHeader object. In the following line of code, the + * argument to the method addHeaderElement is a Name + * object that is the name for the new HeaderElement object. + *

      + *      SOAPHeaderElement shElement = sh.addHeaderElement(name);
      + * 
      + * + * @see SOAPHeaderElement + * @since 1.6 + */ +public interface SOAPHeader extends SOAPElement { + /** + * Creates a new SOAPHeaderElement object initialized with the + * specified name and adds it to this SOAPHeader object. + * + * @param name a Name object with the name of the new + * SOAPHeaderElement object + * @return the new SOAPHeaderElement object that was + * inserted into this SOAPHeader object + * @exception SOAPException if a SOAP error occurs + * @see SOAPHeader#addHeaderElement(javax.xml.namespace.QName) + */ + public SOAPHeaderElement addHeaderElement(Name name) + throws SOAPException; + + /** + * Creates a new SOAPHeaderElement object initialized with the + * specified qname and adds it to this SOAPHeader object. + * + * @param qname a QName object with the qname of the new + * SOAPHeaderElement object + * @return the new SOAPHeaderElement object that was + * inserted into this SOAPHeader object + * @exception SOAPException if a SOAP error occurs + * @see SOAPHeader#addHeaderElement(Name) + * @since 1.6, SAAJ 1.3 + */ + public SOAPHeaderElement addHeaderElement(QName qname) + throws SOAPException; + + /** + * Returns an Iterator over all the SOAPHeaderElement objects + * in this SOAPHeader object + * that have the specified actor and that have a MustUnderstand attribute + * whose value is equivalent to true. + *

      + * In SOAP 1.2 the env:actor attribute is replaced by the env:role + * attribute, but with essentially the same semantics. + * + * @param actor a String giving the URI of the actor / role + * for which to search + * @return an Iterator object over all the + * SOAPHeaderElement objects that contain the specified + * actor / role and are marked as MustUnderstand + * @see #examineHeaderElements + * @see #extractHeaderElements + * @see SOAPConstants#URI_SOAP_ACTOR_NEXT + * + * @since 1.6, SAAJ 1.2 + */ + public Iterator examineMustUnderstandHeaderElements(String actor); + + /** + * Returns an Iterator over all the SOAPHeaderElement objects + * in this SOAPHeader object + * that have the specified actor. + * + * An actor is a global attribute that indicates the intermediate + * parties that should process a message before it reaches its ultimate + * receiver. An actor receives the message and processes it before sending + * it on to the next actor. The default actor is the ultimate intended + * recipient for the message, so if no actor attribute is included in a + * SOAPHeader object, it is sent to the ultimate receiver + * along with the message body. + *

      + * In SOAP 1.2 the env:actor attribute is replaced by the env:role + * attribute, but with essentially the same semantics. + * + * @param actor a String giving the URI of the actor / role + * for which to search + * @return an Iterator object over all the + * SOAPHeaderElement objects that contain the specified + * actor / role + * @see #extractHeaderElements + * @see SOAPConstants#URI_SOAP_ACTOR_NEXT + */ + public Iterator examineHeaderElements(String actor); + + /** + * Returns an Iterator over all the SOAPHeaderElement objects + * in this SOAPHeader object + * that have the specified actor and detaches them + * from this SOAPHeader object. + *

      + * This method allows an actor to process the parts of the + * SOAPHeader object that apply to it and to remove + * them before passing the message on to the next actor. + *

      + * In SOAP 1.2 the env:actor attribute is replaced by the env:role + * attribute, but with essentially the same semantics. + * + * @param actor a String giving the URI of the actor / role + * for which to search + * @return an Iterator object over all the + * SOAPHeaderElement objects that contain the specified + * actor / role + * + * @see #examineHeaderElements + * @see SOAPConstants#URI_SOAP_ACTOR_NEXT + */ + public Iterator extractHeaderElements(String actor); + + /** + * Creates a new NotUnderstood SOAPHeaderElement object initialized + * with the specified name and adds it to this SOAPHeader object. + * This operation is supported only by SOAP 1.2. + * + * @param name a QName object with the name of the + * SOAPHeaderElement object that was not understood. + * @return the new SOAPHeaderElement object that was + * inserted into this SOAPHeader object + * @exception SOAPException if a SOAP error occurs. + * @exception UnsupportedOperationException if this is a SOAP 1.1 Header. + * @since 1.6, SAAJ 1.3 + */ + public SOAPHeaderElement addNotUnderstoodHeaderElement(QName name) + throws SOAPException; + + /** + * Creates a new Upgrade SOAPHeaderElement object initialized + * with the specified List of supported SOAP URIs and adds it to this + * SOAPHeader object. + * This operation is supported on both SOAP 1.1 and SOAP 1.2 header. + * + * @param supportedSOAPURIs an Iterator object with the URIs of SOAP + * versions supported. + * @return the new SOAPHeaderElement object that was + * inserted into this SOAPHeader object + * @exception SOAPException if a SOAP error occurs. + * @since 1.6, SAAJ 1.3 + */ + public SOAPHeaderElement addUpgradeHeaderElement(Iterator supportedSOAPURIs) + throws SOAPException; + + /** + * Creates a new Upgrade SOAPHeaderElement object initialized + * with the specified array of supported SOAP URIs and adds it to this + * SOAPHeader object. + * This operation is supported on both SOAP 1.1 and SOAP 1.2 header. + * + * @param supportedSoapUris an array of the URIs of SOAP versions supported. + * @return the new SOAPHeaderElement object that was + * inserted into this SOAPHeader object + * @exception SOAPException if a SOAP error occurs. + * @since 1.6, SAAJ 1.3 + */ + public SOAPHeaderElement addUpgradeHeaderElement(String[] supportedSoapUris) + throws SOAPException; + + /** + * Creates a new Upgrade SOAPHeaderElement object initialized + * with the specified supported SOAP URI and adds it to this + * SOAPHeader object. + * This operation is supported on both SOAP 1.1 and SOAP 1.2 header. + * + * @param supportedSoapUri the URI of SOAP the version that is supported. + * @return the new SOAPHeaderElement object that was + * inserted into this SOAPHeader object + * @exception SOAPException if a SOAP error occurs. + * @since 1.6, SAAJ 1.3 + */ + public SOAPHeaderElement addUpgradeHeaderElement(String supportedSoapUri) + throws SOAPException; + + /** + * Returns an Iterator over all the SOAPHeaderElement objects + * in this SOAPHeader object. + * + * @return an Iterator object over all the + * SOAPHeaderElement objects contained by this + * SOAPHeader + * @see #extractAllHeaderElements + * + * @since 1.6, SAAJ 1.2 + */ + public Iterator examineAllHeaderElements(); + + /** + * Returns an Iterator over all the SOAPHeaderElement objects + * in this SOAPHeader object and detaches them + * from this SOAPHeader object. + * + * @return an Iterator object over all the + * SOAPHeaderElement objects contained by this + * SOAPHeader + * + * @see #examineAllHeaderElements + * + * @since 1.6, SAAJ 1.2 + */ + public Iterator extractAllHeaderElements(); + +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPHeaderElement.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPHeaderElement.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,168 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +/** + * An object representing the contents in the SOAP header part of the + * SOAP envelope. + * The immediate children of a SOAPHeader object can + * be represented only as SOAPHeaderElement objects. + *

      + * A SOAPHeaderElement object can have other + * SOAPElement objects as its children. + * + * @since 1.6 + */ +public interface SOAPHeaderElement extends SOAPElement { + + /** + * Sets the actor associated with this SOAPHeaderElement + * object to the specified actor. The default value of an actor is: + * SOAPConstants.URI_SOAP_ACTOR_NEXT + *

      + * If this SOAPHeaderElement supports SOAP 1.2 then this call is + * equivalent to {@link #setRole(String)} + * + * @param actorURI a String giving the URI of the actor + * to set + * + * @exception IllegalArgumentException if there is a problem in + * setting the actor. + * + * @see #getActor + */ + public void setActor(String actorURI); + + /** + * Sets the Role associated with this SOAPHeaderElement + * object to the specified Role. + * + * @param uri - the URI of the Role + * + * @throws SOAPException if there is an error in setting the role + * + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Fault Role. + * + * @since 1.6, SAAJ 1.3 + */ + public void setRole(String uri) throws SOAPException; + + /** + * Returns the uri of the actor attribute of this + * SOAPHeaderElement. + *

      + * If this SOAPHeaderElement supports SOAP 1.2 then this call is + * equivalent to {@link #getRole()} + * @return a String giving the URI of the actor + * @see #setActor + */ + public String getActor(); + + /** + * Returns the value of the Role attribute of this + * SOAPHeaderElement. + * + * @return a String giving the URI of the Role + * + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Fault Role. + * + * @since 1.6, SAAJ 1.3 + */ + public String getRole(); + + /** + * Sets the mustUnderstand attribute for this SOAPHeaderElement + * object to be either true or false. + *

      + * If the mustUnderstand attribute is on, the actor who receives the + * SOAPHeaderElement must process it correctly. This + * ensures, for example, that if the SOAPHeaderElement + * object modifies the message, that the message is being modified correctly. + * + * @param mustUnderstand true to set the mustUnderstand + * attribute to true; false to set it to false + * + * @exception IllegalArgumentException if there is a problem in + * setting the mustUnderstand attribute + * @see #getMustUnderstand + * @see #setRelay + */ + public void setMustUnderstand(boolean mustUnderstand); + + /** + * Returns the boolean value of the mustUnderstand attribute for this + * SOAPHeaderElement. + * + * @return true if the mustUnderstand attribute of this + * SOAPHeaderElement object is turned on; false + * otherwise + */ + public boolean getMustUnderstand(); + + /** + * Sets the relay attribute for this SOAPHeaderElement to be + * either true or false. + *

      + * The SOAP relay attribute is set to true to indicate that the SOAP header + * block must be relayed by any node that is targeted by the header block + * but not actually process it. This attribute is ignored on header blocks + * whose mustUnderstand attribute is set to true or that are targeted at + * the ultimate reciever (which is the default). The default value of this + * attribute is false. + * + * @param relay the new value of the relay attribute + * + * @exception SOAPException if there is a problem in setting the + * relay attribute. + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Relay attribute. + * + * @see #setMustUnderstand + * @see #getRelay + * + * @since 1.6, SAAJ 1.3 + */ + public void setRelay(boolean relay) throws SOAPException; + + /** + * Returns the boolean value of the relay attribute for this + * SOAPHeaderElement + * + * @return true if the relay attribute is turned on; + * false otherwise + * + * @exception UnsupportedOperationException if this message does not + * support the SOAP 1.2 concept of Relay attribute. + * + * @see #getMustUnderstand + * @see #setRelay + * + * @since 1.6, SAAJ 1.3 + */ + public boolean getRelay(); +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPMessage.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPMessage.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,457 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; +import java.io.OutputStream; +import java.io.IOException; + +import java.util.Iterator; + +import javax.activation.DataHandler; + +/** + * The root class for all SOAP messages. As transmitted on the "wire", a SOAP + * message is an XML document or a MIME message whose first body part is an + * XML/SOAP document. + *

      + * A SOAPMessage object consists of a SOAP part and optionally + * one or more attachment parts. The SOAP part for a SOAPMessage + * object is a SOAPPart object, which contains information used + * for message routing and identification, and which can contain + * application-specific content. All data in the SOAP Part of a message must be + * in XML format. + *

      + * A new SOAPMessage object contains the following by default: + *

        + *
      • A SOAPPart object + *
      • A SOAPEnvelope object + *
      • A SOAPBody object + *
      • A SOAPHeader object + *
      + * The SOAP part of a message can be retrieved by calling the method SOAPMessage.getSOAPPart(). + * The SOAPEnvelope object is retrieved from the SOAPPart + * object, and the SOAPEnvelope object is used to retrieve the + * SOAPBody and SOAPHeader objects. + * + *
      + *     SOAPPart sp = message.getSOAPPart();
      + *     SOAPEnvelope se = sp.getEnvelope();
      + *     SOAPBody sb = se.getBody();
      + *     SOAPHeader sh = se.getHeader();
      + * 
      + * + *

      + * In addition to the mandatory SOAPPart object, a SOAPMessage + * object may contain zero or more AttachmentPart objects, each + * of which contains application-specific data. The SOAPMessage + * interface provides methods for creating AttachmentPart + * objects and also for adding them to a SOAPMessage object. A + * party that has received a SOAPMessage object can examine its + * contents by retrieving individual attachment parts. + *

      + * Unlike the rest of a SOAP message, an attachment is not required to be in + * XML format and can therefore be anything from simple text to an image file. + * Consequently, any message content that is not in XML format must be in an + * AttachmentPart object. + *

      + * A MessageFactory object may create SOAPMessage + * objects with behavior that is specialized to a particular implementation or + * application of SAAJ. For instance, a MessageFactory object + * may produce SOAPMessage objects that conform to a particular + * Profile such as ebXML. In this case a MessageFactory object + * might produce SOAPMessage objects that are initialized with + * ebXML headers. + *

      + * In order to ensure backward source compatibility, methods that are added to + * this class after version 1.1 of the SAAJ specification are all concrete + * instead of abstract and they all have default implementations. Unless + * otherwise noted in the JavaDocs for those methods the default + * implementations simply throw an UnsupportedOperationException + * and the SAAJ implementation code must override them with methods that + * provide the specified behavior. Legacy client code does not have this + * restriction, however, so long as there is no claim made that it conforms to + * some later version of the specification than it was originally written for. + * A legacy class that extends the SOAPMessage class can be compiled and/or run + * against succeeding versions of the SAAJ API without modification. If such a + * class was correctly implemented then it will continue to behave correctly + * relative to the version of the specification against which it was written. + * + * @see MessageFactory + * @see AttachmentPart + * @since 1.6 + */ +public abstract class SOAPMessage { + /** + * Specifies the character type encoding for the SOAP Message. Valid values + * include "utf-8" and "utf-16". See vendor documentation for additional + * supported values. The default is "utf-8". + * + * @see SOAPMessage#setProperty(String, Object) SOAPMessage.setProperty + * @since 1.6, SAAJ 1.2 + */ + public static final String CHARACTER_SET_ENCODING = + "javax.xml.soap.character-set-encoding"; + + /** + * Specifies whether the SOAP Message will contain an XML declaration when + * it is sent. The only valid values are "true" and "false". The default is + * "false". + * + * @see SOAPMessage#setProperty(String, Object) SOAPMessage.setProperty + * @since 1.6, SAAJ 1.2 + */ + public static final String WRITE_XML_DECLARATION = + "javax.xml.soap.write-xml-declaration"; + + /** + * Sets the description of this SOAPMessage object's + * content with the given description. + * + * @param description a String describing the content of this + * message + * @see #getContentDescription + */ + public abstract void setContentDescription(String description); + + /** + * Retrieves a description of this SOAPMessage object's + * content. + * + * @return a String describing the content of this + * message or null if no description has been set + * @see #setContentDescription + */ + public abstract String getContentDescription(); + + /** + * Gets the SOAP part of this SOAPMessage object. + *

      + * SOAPMessage object contains one or more attachments, the + * SOAP Part must be the first MIME body part in the message. + * + * @return the SOAPPart object for this SOAPMessage + * object + */ + public abstract SOAPPart getSOAPPart(); + + /** + * Gets the SOAP Body contained in this SOAPMessage object. + *

      + * + * @return the SOAPBody object contained by this SOAPMessage + * object + * @exception SOAPException + * if the SOAP Body does not exist or cannot be retrieved + * @since 1.6, SAAJ 1.2 + */ + public SOAPBody getSOAPBody() throws SOAPException { + throw new UnsupportedOperationException("getSOAPBody must be overridden by all subclasses of SOAPMessage"); + } + + /** + * Gets the SOAP Header contained in this SOAPMessage + * object. + *

      + * + * @return the SOAPHeader object contained by this SOAPMessage + * object + * @exception SOAPException + * if the SOAP Header does not exist or cannot be retrieved + * @since 1.6, SAAJ 1.2 + */ + public SOAPHeader getSOAPHeader() throws SOAPException { + throw new UnsupportedOperationException("getSOAPHeader must be overridden by all subclasses of SOAPMessage"); + } + + /** + * Removes all AttachmentPart objects that have been added + * to this SOAPMessage object. + *

      + * This method does not touch the SOAP part. + */ + public abstract void removeAllAttachments(); + + /** + * Gets a count of the number of attachments in this message. This count + * does not include the SOAP part. + * + * @return the number of AttachmentPart objects that are + * part of this SOAPMessage object + */ + public abstract int countAttachments(); + + /** + * Retrieves all the AttachmentPart objects that are part of + * this SOAPMessage object. + * + * @return an iterator over all the attachments in this message + */ + public abstract Iterator getAttachments(); + + /** + * Retrieves all the AttachmentPart objects that have header + * entries that match the specified headers. Note that a returned + * attachment could have headers in addition to those specified. + * + * @param headers + * a MimeHeaders object containing the MIME + * headers for which to search + * @return an iterator over all attachments that have a header that matches + * one of the given headers + */ + public abstract Iterator getAttachments(MimeHeaders headers); + + /** + * Removes all the AttachmentPart objects that have header + * entries that match the specified headers. Note that the removed + * attachment could have headers in addition to those specified. + * + * @param headers + * a MimeHeaders object containing the MIME + * headers for which to search + * @since 1.6, SAAJ 1.3 + */ + public abstract void removeAttachments(MimeHeaders headers); + + + /** + * Returns an AttachmentPart object that is associated with an + * attachment that is referenced by this SOAPElement or + * null if no such attachment exists. References can be made + * via an href attribute as described in + * {@link SOAP Messages with Attachments}, + * or via a single Text child node containing a URI as + * described in the WS-I Attachments Profile 1.0 for elements of schema + * type {@link ref:swaRef}. These two mechanisms must be supported. + * The support for references via href attribute also implies that + * this method should also be supported on an element that is an + * xop:Include element ( + * {@link XOP}). + * other reference mechanisms may be supported by individual + * implementations of this standard. Contact your vendor for details. + * + * @param element The SOAPElement containing the reference to an Attachment + * @return the referenced AttachmentPart or null if no such + * AttachmentPart exists or no reference can be + * found in this SOAPElement. + * @throws SOAPException if there is an error in the attempt to access the + * attachment + * + * @since 1.6, SAAJ 1.3 + */ + public abstract AttachmentPart getAttachment(SOAPElement element) throws SOAPException; + + + /** + * Adds the given AttachmentPart object to this SOAPMessage + * object. An AttachmentPart object must be created before + * it can be added to a message. + * + * @param AttachmentPart + * an AttachmentPart object that is to become part + * of this SOAPMessage object + * @exception IllegalArgumentException + */ + public abstract void addAttachmentPart(AttachmentPart AttachmentPart); + + /** + * Creates a new empty AttachmentPart object. Note that the + * method addAttachmentPart must be called with this new + * AttachmentPart object as the parameter in order for it to + * become an attachment to this SOAPMessage object. + * + * @return a new AttachmentPart object that can be populated + * and added to this SOAPMessage object + */ + public abstract AttachmentPart createAttachmentPart(); + + /** + * Creates an AttachmentPart object and populates it using + * the given DataHandler object. + * + * @param dataHandler + * the javax.activation.DataHandler object that + * will generate the content for this SOAPMessage + * object + * @return a new AttachmentPart object that contains data + * generated by the given DataHandler object + * @exception IllegalArgumentException + * if there was a problem with the specified DataHandler + * object + * @see javax.activation.DataHandler + * @see javax.activation.DataContentHandler + */ + public AttachmentPart createAttachmentPart(DataHandler dataHandler) { + AttachmentPart attachment = createAttachmentPart(); + attachment.setDataHandler(dataHandler); + return attachment; + } + + /** + * Returns all the transport-specific MIME headers for this SOAPMessage + * object in a transport-independent fashion. + * + * @return a MimeHeaders object containing the MimeHeader + * objects + */ + public abstract MimeHeaders getMimeHeaders(); + + /** + * Creates an AttachmentPart object and populates it with + * the specified data of the specified content type. The type of the + * Object should correspond to the value given for the + * Content-Type. + * + * @param content + * an Object containing the content for the + * AttachmentPart object to be created + * @param contentType + * a String object giving the type of content; + * examples are "text/xml", "text/plain", and "image/jpeg" + * @return a new AttachmentPart object that contains the + * given data + * @exception IllegalArgumentException + * may be thrown if the contentType does not match the type + * of the content object, or if there was no + * DataContentHandler object for the given + * content object + * @see javax.activation.DataHandler + * @see javax.activation.DataContentHandler + */ + public AttachmentPart createAttachmentPart( + Object content, + String contentType) { + AttachmentPart attachment = createAttachmentPart(); + attachment.setContent(content, contentType); + return attachment; + } + + /** + * Updates this SOAPMessage object with all the changes that + * have been made to it. This method is called automatically when + * {@link SOAPMessage#writeTo(OutputStream)} is called. However, if + * changes are made to a message that was received or to one that has + * already been sent, the method saveChanges needs to be + * called explicitly in order to save the changes. The method saveChanges + * also generates any changes that can be read back (for example, a + * MessageId in profiles that support a message id). All MIME headers in a + * message that is created for sending purposes are guaranteed to have + * valid values only after saveChanges has been called. + *

      + * In addition, this method marks the point at which the data from all + * constituent AttachmentPart objects are pulled into the + * message. + *

      + * + * @exception SOAPException if there was a problem saving + * changes to this message. + */ + public abstract void saveChanges() throws SOAPException; + + /** + * Indicates whether this SOAPMessage object needs to have + * the method saveChanges called on it. + * + * @return true if saveChanges needs to be + * called; false otherwise. + */ + public abstract boolean saveRequired(); + + /** + * Writes this SOAPMessage object to the given output + * stream. The externalization format is as defined by the SOAP 1.1 with + * Attachments specification. + *

      + * If there are no attachments, just an XML stream is written out. For + * those messages that have attachments, writeTo writes a + * MIME-encoded byte stream. + *

      + * Note that this method does not write the transport-specific MIME Headers + * of the Message + * + * @param out + * the OutputStream object to which this SOAPMessage + * object will be written + * @exception IOException + * if an I/O error occurs + * @exception SOAPException + * if there was a problem in externalizing this SOAP message + */ + public abstract void writeTo(OutputStream out) + throws SOAPException, IOException; + + /** + * Associates the specified value with the specified property. If there was + * already a value associated with this property, the old value is + * replaced. + *

      + * The valid property names include + * {@link SOAPMessage#WRITE_XML_DECLARATION} and + * {@link SOAPMessage#CHARACTER_SET_ENCODING}. All of these standard SAAJ + * properties are prefixed by "javax.xml.soap". Vendors may also add + * implementation specific properties. These properties must be prefixed + * with package names that are unique to the vendor. + *

      + * Setting the property WRITE_XML_DECLARATION to "true" + * will cause an XML Declaration to be written out at the start of the SOAP + * message. The default value of "false" suppresses this declaration. + *

      + * The property CHARACTER_SET_ENCODING defaults to the value + * "utf-8" which causes the SOAP message to be encoded using + * UTF-8. Setting CHARACTER_SET_ENCODING to "utf-16" + * causes the SOAP message to be encoded using UTF-16. + *

      + * Some implementations may allow encodings in addition to UTF-8 and + * UTF-16. Refer to your vendor's documentation for details. + * + * @param property + * the property with which the specified value is to be + * associated. + * @param value + * the value to be associated with the specified property + * @exception SOAPException + * if the property name is not recognized. + * @since 1.6, SAAJ 1.2 + */ + public void setProperty(String property, Object value) + throws SOAPException { + throw new UnsupportedOperationException("setProperty must be overridden by all subclasses of SOAPMessage"); + } + + /** + * Retrieves value of the specified property. + * + * @param property + * the name of the property to retrieve + * @return the value associated with the named property or null + * if no such property exists. + * @exception SOAPException + * if the property name is not recognized. + * @since 1.6, SAAJ 1.2 + */ + public Object getProperty(String property) throws SOAPException { + throw new UnsupportedOperationException("getProperty must be overridden by all subclasses of SOAPMessage"); + } +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPPart.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/SOAPPart.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,267 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +import java.util.Iterator; + +import javax.xml.transform.Source; + +/** + * The container for the SOAP-specific portion of a SOAPMessage + * object. All messages are required to have a SOAP part, so when a + * SOAPMessage object is created, it will automatically + * have a SOAPPart object. + *

      + * A SOAPPart object is a MIME part and has the MIME headers + * Content-Id, Content-Location, and Content-Type. Because the value of + * Content-Type must be "text/xml", a SOAPPart object automatically + * has a MIME header of Content-Type with its value set to "text/xml". + * The value must be "text/xml" because content in the SOAP part of a + * message must be in XML format. Content that is not of type "text/xml" + * must be in an AttachmentPart object rather than in the + * SOAPPart object. + *

      + * When a message is sent, its SOAP part must have the MIME header Content-Type + * set to "text/xml". Or, from the other perspective, the SOAP part of any + * message that is received must have the MIME header Content-Type with a + * value of "text/xml". + *

      + * A client can access the SOAPPart object of a + * SOAPMessage object by + * calling the method SOAPMessage.getSOAPPart. The + * following line of code, in which message is a + * SOAPMessage object, retrieves the SOAP part of a message. + *

      + *   SOAPPart soapPart = message.getSOAPPart();
      + * 
      + *

      + * A SOAPPart object contains a SOAPEnvelope object, + * which in turn contains a SOAPBody object and a + * SOAPHeader object. + * The SOAPPart method getEnvelope can be used + * to retrieve the SOAPEnvelope object. + *

      + * + * @since 1.6 + */ +public abstract class SOAPPart implements org.w3c.dom.Document, Node { + + /** + * Gets the SOAPEnvelope object associated with this + * SOAPPart object. Once the SOAP envelope is obtained, it + * can be used to get its contents. + * + * @return the SOAPEnvelope object for this + * SOAPPart object + * @exception SOAPException if there is a SOAP error + */ + public abstract SOAPEnvelope getEnvelope() throws SOAPException; + + /** + * Retrieves the value of the MIME header whose name is "Content-Id". + * + * @return a String giving the value of the MIME header + * named "Content-Id" + * @see #setContentId + */ + public String getContentId() { + String[] values = getMimeHeader("Content-Id"); + if (values != null && values.length > 0) + return values[0]; + return null; + } + + /** + * Retrieves the value of the MIME header whose name is "Content-Location". + * + * @return a String giving the value of the MIME header whose + * name is "Content-Location" + * @see #setContentLocation + */ + public String getContentLocation() { + String[] values = getMimeHeader("Content-Location"); + if (values != null && values.length > 0) + return values[0]; + return null; + } + + /** + * Sets the value of the MIME header named "Content-Id" + * to the given String. + * + * @param contentId a String giving the value of the MIME + * header "Content-Id" + * + * @exception IllegalArgumentException if there is a problem in + * setting the content id + * @see #getContentId + */ + public void setContentId(String contentId) + { + setMimeHeader("Content-Id", contentId); + } + /** + * Sets the value of the MIME header "Content-Location" + * to the given String. + * + * @param contentLocation a String giving the value + * of the MIME + * header "Content-Location" + * @exception IllegalArgumentException if there is a problem in + * setting the content location. + * @see #getContentLocation + */ + public void setContentLocation(String contentLocation) + { + setMimeHeader("Content-Location", contentLocation); + } + /** + * Removes all MIME headers that match the given name. + * + * @param header a String giving the name of the MIME header(s) to + * be removed + */ + public abstract void removeMimeHeader(String header); + + /** + * Removes all the MimeHeader objects for this + * SOAPEnvelope object. + */ + public abstract void removeAllMimeHeaders(); + + /** + * Gets all the values of the MimeHeader object + * in this SOAPPart object that + * is identified by the given String. + * + * @param name the name of the header; example: "Content-Type" + * @return a String array giving all the values for the + * specified header + * @see #setMimeHeader + */ + public abstract String[] getMimeHeader(String name); + + /** + * Changes the first header entry that matches the given header name + * so that its value is the given value, adding a new header with the + * given name and value if no + * existing header is a match. If there is a match, this method clears + * all existing values for the first header that matches and sets the + * given value instead. If more than one header has + * the given name, this method removes all of the matching headers after + * the first one. + *

      + * Note that RFC822 headers can contain only US-ASCII characters. + * + * @param name a String giving the header name + * for which to search + * @param value a String giving the value to be set. + * This value will be substituted for the current value(s) + * of the first header that is a match if there is one. + * If there is no match, this value will be the value for + * a new MimeHeader object. + * + * @exception IllegalArgumentException if there was a problem with + * the specified mime header name or value + * @see #getMimeHeader + */ + public abstract void setMimeHeader(String name, String value); + + /** + * Creates a MimeHeader object with the specified + * name and value and adds it to this SOAPPart object. + * If a MimeHeader with the specified name already + * exists, this method adds the specified value to the already + * existing value(s). + *

      + * Note that RFC822 headers can contain only US-ASCII characters. + * + * @param name a String giving the header name + * @param value a String giving the value to be set + * or added + * @exception IllegalArgumentException if there was a problem with + * the specified mime header name or value + */ + public abstract void addMimeHeader(String name, String value); + + /** + * Retrieves all the headers for this SOAPPart object + * as an iterator over the MimeHeader objects. + * + * @return an Iterator object with all of the Mime + * headers for this SOAPPart object + */ + public abstract Iterator getAllMimeHeaders(); + + /** + * Retrieves all MimeHeader objects that match a name in + * the given array. + * + * @param names a String array with the name(s) of the + * MIME headers to be returned + * @return all of the MIME headers that match one of the names in the + * given array, returned as an Iterator object + */ + public abstract Iterator getMatchingMimeHeaders(String[] names); + + /** + * Retrieves all MimeHeader objects whose name does + * not match a name in the given array. + * + * @param names a String array with the name(s) of the + * MIME headers not to be returned + * @return all of the MIME headers in this SOAPPart object + * except those that match one of the names in the + * given array. The nonmatching MIME headers are returned as an + * Iterator object. + */ + public abstract Iterator getNonMatchingMimeHeaders(String[] names); + + /** + * Sets the content of the SOAPEnvelope object with the data + * from the given Source object. This Source + * must contain a valid SOAP document. + * + * @param source the javax.xml.transform.Source object with the + * data to be set + * + * @exception SOAPException if there is a problem in setting the source + * @see #getContent + */ + public abstract void setContent(Source source) throws SOAPException; + + /** + * Returns the content of the SOAPEnvelope as a JAXP Source + * object. + * + * @return the content as a javax.xml.transform.Source object + * + * @exception SOAPException if the implementation cannot convert + * the specified Source object + * @see #setContent + */ + public abstract Source getContent() throws SOAPException; +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Text.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/Text.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2004, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.xml.soap; + +/** + * A representation of a node whose value is text. A Text object + * may represent text that is content or text that is a comment. + * + * @since 1.6 + */ +public interface Text extends Node, org.w3c.dom.Text { + + /** + * Retrieves whether this Text object represents a comment. + * + * @return true if this Text object is a + * comment; false otherwise + */ + public boolean isComment(); +} diff -r 8c912c147654 -r d7609b65606b jaxws/src/java.xml.ws/share/classes/javax/xml/soap/package.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jaxws/src/java.xml.ws/share/classes/javax/xml/soap/package.html Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,92 @@ + + + + + + + + + + + Provides the API for creating and building SOAP messages. This package + is defined in the SOAP with Attachments API for JavaTM (SAAJ) 1.3 specification. +

      The API in the javax.xml.soap package allows you to do the + following:

      + +
        +
      • create a point-to-point connection to a specified endpoint
      • +
      • create a SOAP message
      • +
      • create an XML fragment
      • +
      • add content to the header of a SOAP message
      • +
      • add content to the body of a SOAP message
      • +
      • create attachment parts and add content to them
      • +
      • access/add/modify parts of a SOAP message
      • +
      • create/add/modify SOAP fault information
      • +
      • extract content from a SOAP message
      • +
      • send a SOAP request-response message
      • + +
      + +

      + + + + + + +

      +In addition the APIs in the javax.xml.soap package extend +their counterparts in the org.w3c.dom package. This means that +the SOAPPart of a SOAPMessage is also a DOM Level +2 Document, and can be manipulated as such by applications, +tools and libraries that use DOM (see http://www.w3.org/DOM/ for more information). +It is important to note that, while it is possible to use DOM APIs to add +ordinary DOM nodes to a SAAJ tree, the SAAJ APIs are still required to return +SAAJ types when examining or manipulating the tree. In order to accomplish +this the SAAJ APIs (specifically {@link javax.xml.soap.SOAPElement#getChildElements()}) +are allowed to silently replace objects that are incorrectly typed relative +to SAAJ requirements with equivalent objects of the required type. These +replacements must never cause the logical structure of the tree to change, +so from the perspective of the DOM APIs the tree will remain unchanged. However, +the physical composition of the tree will have changed so that references +to the nodes that were replaced will refer to nodes that are no longer a +part of the tree. The SAAJ APIs are not allowed to make these replacements +if they are not required so the replacement objects will never subsequently +be silently replaced by future calls to the SAAJ API. +

      +What this means in +practical terms is that an application that starts to use SAAJ APIs on a +tree after manipulating it using DOM APIs must assume that the tree has been +translated into an all SAAJ tree and that any references to objects within +the tree that were obtained using DOM APIs are no longer valid. Switching +from SAAJ APIs to DOM APIs is not allowed to cause invalid references and +neither is using SAAJ APIs exclusively. It is only switching from using DOM +APIs on a particular SAAJ tree to using SAAJ APIs that causes the risk of +invalid references.
      + + + diff -r 8c912c147654 -r d7609b65606b jdk/.hgtags --- a/jdk/.hgtags Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/.hgtags Mon Jan 12 12:52:39 2015 -0800 @@ -287,3 +287,4 @@ 6b2314173433467245261364a52fb8e347fe6342 jdk9-b42 8c6ad41974f9ab6c33d544b088648314963f2a50 jdk9-b43 8cc4dc300041eb70a7a40e4b2431a8f4d4965ea4 jdk9-b44 +9acaa4f57b0b9e3757a7b4576ca9418a75ea8287 jdk9-b45 diff -r 8c912c147654 -r d7609b65606b jdk/make/lib/LibCommon.gmk --- a/jdk/make/lib/LibCommon.gmk Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/make/lib/LibCommon.gmk Mon Jan 12 12:52:39 2015 -0800 @@ -53,24 +53,21 @@ # Find the default set of src dirs for a native library. # Param 1 - module name # Param 2 - library name -define FindSrcDirsForLib +FindSrcDirsForLib = \ $(call uniq, $(wildcard \ $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS)/native/lib$(strip $2) \ $(JDK_TOPDIR)/src/$(strip $1)/$(OPENJDK_TARGET_OS_TYPE)/native/lib$(strip $2) \ $(JDK_TOPDIR)/src/$(strip $1)/share/native/lib$(strip $2))) -endef ################################################################################ # Find lib dir for module # Param 1 - module name ifeq ($(OPENJDK_TARGET_OS_TYPE), unix) - define FindLibDirForModule - $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)$(OPENJDK_TARGET_CPU_LIBDIR) - endef + FindLibDirForModule = \ + $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1)$(OPENJDK_TARGET_CPU_LIBDIR) else - define FindLibDirForModule - $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1) - endef + FindLibDirForModule = \ + $(SUPPORT_OUTPUTDIR)/modules_libs/$(strip $1) endif ################################################################################ @@ -78,11 +75,10 @@ # Param 1 - module name # Param 2 - library name # Param 3 - subdir for library -define FindLib -$(strip \ - $(call FindLibDirForModule, $(strip $1))$(strip $3)/$(LIBRARY_PREFIX)$(strip $2)$(SHARED_LIBRARY_SUFFIX) \ -) -endef +FindLib = \ + $(call FindLibDirForModule, \ + $(strip $1))$(strip $3)/$(LIBRARY_PREFIX)$(strip $2)$(SHARED_LIBRARY_SUFFIX) + ################################################################################ # Define the header include flags needed to compile against it. diff -r 8c912c147654 -r d7609b65606b jdk/make/src/classes/build/tools/module/boot.modules --- a/jdk/make/src/classes/build/tools/module/boot.modules Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/make/src/classes/build/tools/module/boot.modules Mon Jan 12 12:52:39 2015 -0800 @@ -17,10 +17,10 @@ java.smartcardio java.sql java.sql.rowset +java.transaction java.xml java.xml.bind java.xml.crypto -java.xml.soap java.xml.ws jdk.charsets jdk.deploy diff -r 8c912c147654 -r d7609b65606b jdk/src/java.base/share/classes/java/lang/Deprecated.java --- a/jdk/src/java.base/share/classes/java/lang/Deprecated.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/src/java.base/share/classes/java/lang/Deprecated.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -34,9 +34,13 @@ * or because a better alternative exists. Compilers warn when a * deprecated program element is used or overridden in non-deprecated code. * + *

      Use of the @Deprecated annotation on a local variable + * declaration or on a parameter declaration or a package declaration + * has no effect. + * * @author Neal Gafter * @since 1.5 - * @jls 9.6.3.6 @Deprecated + * @jls 9.6.4.6 @Deprecated */ @Documented @Retention(RetentionPolicy.RUNTIME) diff -r 8c912c147654 -r d7609b65606b jdk/src/java.base/share/classes/java/math/BigInteger.java --- a/jdk/src/java.base/share/classes/java/math/BigInteger.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/src/java.base/share/classes/java/math/BigInteger.java Mon Jan 12 12:52:39 2015 -0800 @@ -265,24 +265,41 @@ // Constructors /** - * Translates a byte array containing the two's-complement binary - * representation of a BigInteger into a BigInteger. The input array is + * Translates a byte sub-array containing the two's-complement binary + * representation of a BigInteger into a BigInteger. The sub-array is + * specified via an offset into the array and a length. The sub-array is * assumed to be in big-endian byte-order: the most significant - * byte is in the zeroth element. + * byte is the element at index {@code off}. The {@code val} array is + * assumed to be unchanged for the duration of the constructor call. * - * @param val big-endian two's-complement binary representation of - * BigInteger. + * An {@code IndexOutOfBoundsException} is thrown if the length of the array + * {@code val} is non-zero and either {@code off} is negative, {@code len} + * is negative, or {@code off+len} is greater than the length of + * {@code val}. + * + * @param val byte array containing a sub-array which is the big-endian + * two's-complement binary representation of a BigInteger. + * @param off the start offset of the binary representation. + * @param len the number of bytes to use. * @throws NumberFormatException {@code val} is zero bytes long. + * @throws IndexOutOfBoundsException if the provided array offset and + * length would cause an index into the byte array to be + * negative or greater than or equal to the array length. + * @since 1.9 */ - public BigInteger(byte[] val) { - if (val.length == 0) + public BigInteger(byte[] val, int off, int len) { + if (val.length == 0) { throw new NumberFormatException("Zero length BigInteger"); - - if (val[0] < 0) { - mag = makePositive(val); + } else if ((off < 0) || (off >= val.length) || (len < 0) || + (len > val.length - off)) { // 0 <= off < val.length + throw new IndexOutOfBoundsException(); + } + + if (val[off] < 0) { + mag = makePositive(val, off, len); signum = -1; } else { - mag = stripLeadingZeroBytes(val); + mag = stripLeadingZeroBytes(val, off, len); signum = (mag.length == 0 ? 0 : 1); } if (mag.length >= MAX_MAG_LENGTH) { @@ -291,10 +308,27 @@ } /** + * Translates a byte array containing the two's-complement binary + * representation of a BigInteger into a BigInteger. The input array is + * assumed to be in big-endian byte-order: the most significant + * byte is in the zeroth element. The {@code val} array is assumed to be + * unchanged for the duration of the constructor call. + * + * @param val big-endian two's-complement binary representation of a + * BigInteger. + * @throws NumberFormatException {@code val} is zero bytes long. + */ + public BigInteger(byte[] val) { + this(val, 0, val.length); + } + + /** * This private constructor translates an int array containing the * two's-complement binary representation of a BigInteger into a * BigInteger. The input array is assumed to be in big-endian - * int-order: the most significant int is in the zeroth element. + * int-order: the most significant int is in the zeroth element. The + * {@code val} array is assumed to be unchanged for the duration of + * the constructor call. */ private BigInteger(int[] val) { if (val.length == 0) @@ -315,24 +349,44 @@ /** * Translates the sign-magnitude representation of a BigInteger into a * BigInteger. The sign is represented as an integer signum value: -1 for - * negative, 0 for zero, or 1 for positive. The magnitude is a byte array - * in big-endian byte-order: the most significant byte is in the - * zeroth element. A zero-length magnitude array is permissible, and will - * result in a BigInteger value of 0, whether signum is -1, 0 or 1. + * negative, 0 for zero, or 1 for positive. The magnitude is a sub-array of + * a byte array in big-endian byte-order: the most significant byte + * is the element at index {@code off}. A zero value of the length + * {@code len} is permissible, and will result in a BigInteger value of 0, + * whether signum is -1, 0 or 1. The {@code magnitude} array is assumed to + * be unchanged for the duration of the constructor call. + * + * An {@code IndexOutOfBoundsException} is thrown if the length of the array + * {@code magnitude} is non-zero and either {@code off} is negative, + * {@code len} is negative, or {@code off+len} is greater than the length of + * {@code magnitude}. * * @param signum signum of the number (-1 for negative, 0 for zero, 1 * for positive). * @param magnitude big-endian binary representation of the magnitude of * the number. + * @param off the start offset of the binary representation. + * @param len the number of bytes to use. * @throws NumberFormatException {@code signum} is not one of the three * legal values (-1, 0, and 1), or {@code signum} is 0 and * {@code magnitude} contains one or more non-zero bytes. + * @throws IndexOutOfBoundsException if the provided array offset and + * length would cause an index into the byte array to be + * negative or greater than or equal to the array length. + * @since 1.9 */ - public BigInteger(int signum, byte[] magnitude) { - this.mag = stripLeadingZeroBytes(magnitude); - - if (signum < -1 || signum > 1) + public BigInteger(int signum, byte[] magnitude, int off, int len) { + if (signum < -1 || signum > 1) { throw(new NumberFormatException("Invalid signum value")); + } else if ((off < 0) || (len < 0) || + (len > 0 && + ((off >= magnitude.length) || + (len > magnitude.length - off)))) { // 0 <= off < magnitude.length + throw new IndexOutOfBoundsException(); + } + + // stripLeadingZeroBytes() returns a zero length array if len == 0 + this.mag = stripLeadingZeroBytes(magnitude, off, len); if (this.mag.length == 0) { this.signum = 0; @@ -347,10 +401,33 @@ } /** + * Translates the sign-magnitude representation of a BigInteger into a + * BigInteger. The sign is represented as an integer signum value: -1 for + * negative, 0 for zero, or 1 for positive. The magnitude is a byte array + * in big-endian byte-order: the most significant byte is the + * zeroth element. A zero-length magnitude array is permissible, and will + * result in a BigInteger value of 0, whether signum is -1, 0 or 1. The + * {@code magnitude} array is assumed to be unchanged for the duration of + * the constructor call. + * + * @param signum signum of the number (-1 for negative, 0 for zero, 1 + * for positive). + * @param magnitude big-endian binary representation of the magnitude of + * the number. + * @throws NumberFormatException {@code signum} is not one of the three + * legal values (-1, 0, and 1), or {@code signum} is 0 and + * {@code magnitude} contains one or more non-zero bytes. + */ + public BigInteger(int signum, byte[] magnitude) { + this(signum, magnitude, 0, magnitude.length); + } + + /** * A constructor for internal use that translates the sign-magnitude * representation of a BigInteger into a BigInteger. It checks the * arguments and copies the magnitude so this constructor would be - * safe for external use. + * safe for external use. The {@code magnitude} array is assumed to be + * unchanged for the duration of the constructor call. */ private BigInteger(int signum, int[] magnitude) { this.mag = stripLeadingZeroInts(magnitude); @@ -467,7 +544,9 @@ /* * Constructs a new BigInteger using a char array with radix=10. - * Sign is precalculated outside and not allowed in the val. + * Sign is precalculated outside and not allowed in the val. The {@code val} + * array is assumed to be unchanged for the duration of the constructor + * call. */ BigInteger(char[] val, int sign, int len) { int cursor = 0, numDigits; @@ -1035,11 +1114,12 @@ /** * This private constructor is for internal use and assumes that its - * arguments are correct. + * arguments are correct. The {@code magnitude} array is assumed to be + * unchanged for the duration of the constructor call. */ private BigInteger(byte[] magnitude, int signum) { this.signum = (magnitude.length == 0 ? 0 : signum); - this.mag = stripLeadingZeroBytes(magnitude); + this.mag = stripLeadingZeroBytes(magnitude, 0, magnitude.length); if (mag.length >= MAX_MAG_LENGTH) { checkRange(); } @@ -3977,18 +4057,18 @@ /** * Returns a copy of the input array stripped of any leading zero bytes. */ - private static int[] stripLeadingZeroBytes(byte a[]) { - int byteLength = a.length; + private static int[] stripLeadingZeroBytes(byte a[], int off, int len) { + int indexBound = off + len; int keep; // Find first nonzero byte - for (keep = 0; keep < byteLength && a[keep] == 0; keep++) + for (keep = off; keep < indexBound && a[keep] == 0; keep++) ; // Allocate new array and copy relevant part of input array - int intLength = ((byteLength - keep) + 3) >>> 2; + int intLength = ((indexBound - keep) + 3) >>> 2; int[] result = new int[intLength]; - int b = byteLength - 1; + int b = indexBound - 1; for (int i = intLength-1; i >= 0; i--) { result[i] = a[b--] & 0xff; int bytesRemaining = b - keep + 1; @@ -4003,27 +4083,27 @@ * Takes an array a representing a negative 2's-complement number and * returns the minimal (no leading zero bytes) unsigned whose value is -a. */ - private static int[] makePositive(byte a[]) { + private static int[] makePositive(byte a[], int off, int len) { int keep, k; - int byteLength = a.length; + int indexBound = off + len; // Find first non-sign (0xff) byte of input - for (keep=0; keep < byteLength && a[keep] == -1; keep++) + for (keep=off; keep < indexBound && a[keep] == -1; keep++) ; /* Allocate output array. If all non-sign bytes are 0x00, we must * allocate space for one extra output byte. */ - for (k=keep; k < byteLength && a[k] == 0; k++) + for (k=keep; k < indexBound && a[k] == 0; k++) ; - int extraByte = (k == byteLength) ? 1 : 0; - int intLength = ((byteLength - keep + extraByte) + 3) >>> 2; + int extraByte = (k == indexBound) ? 1 : 0; + int intLength = ((indexBound - keep + extraByte) + 3) >>> 2; int result[] = new int[intLength]; /* Copy one's complement of input into output, leaving extra * byte (if it exists) == 0x00 */ - int b = byteLength - 1; + int b = indexBound - 1; for (int i = intLength-1; i >= 0; i--) { result[i] = a[b--] & 0xff; int numBytesToTransfer = Math.min(3, b-keep+1); @@ -4248,7 +4328,7 @@ message = "BigInteger: Signum not present in stream"; throw new java.io.StreamCorruptedException(message); } - int[] mag = stripLeadingZeroBytes(magnitude); + int[] mag = stripLeadingZeroBytes(magnitude, 0, magnitude.length); if ((mag.length == 0) != (sign == 0)) { String message = "BigInteger: signum-magnitude mismatch"; if (fields.defaulted("magnitude")) diff -r 8c912c147654 -r d7609b65606b jdk/src/java.base/share/classes/java/util/Formatter.java --- a/jdk/src/java.base/share/classes/java/util/Formatter.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/src/java.base/share/classes/java/util/Formatter.java Mon Jan 12 12:52:39 2015 -0800 @@ -3727,29 +3727,29 @@ exp = new StringBuilder("+00"); } } - return; - } - long adjusted = -(long) scale + (len - 1); - if (form == BigDecimalLayoutForm.DECIMAL_FLOAT) { + } else if (form == BigDecimalLayoutForm.DECIMAL_FLOAT) { // count of padding zeros - int pad = scale - len; - if (pad >= 0) { + + if (scale >= len) { // 0.xxx form mant.append("0."); dot = true; - trailingZeros(mant, pad); + trailingZeros(mant, scale - len); mant.append(coeff); } else { - if (-pad < len) { + if (scale > 0) { // xx.xx form - mant.append(coeff, 0, -pad); + int pad = len - scale; + mant.append(coeff, 0, pad); mant.append('.'); dot = true; - mant.append(coeff, -pad, -pad + scale); - } else { + mant.append(coeff, pad, len); + } else { // scale < 0 // xx form mant.append(coeff, 0, len); - trailingZeros(mant, -scale); + if (intVal.signum() != 0) { + trailingZeros(mant, -scale); + } this.scale = 0; } } @@ -3762,6 +3762,7 @@ mant.append(coeff, 1, len); } exp = new StringBuilder(); + long adjusted = -(long) scale + (len - 1); if (adjusted != 0) { long abs = Math.abs(adjusted); // require sign diff -r 8c912c147654 -r d7609b65606b jdk/src/java.base/share/classes/javax/crypto/spec/RC5ParameterSpec.java --- a/jdk/src/java.base/share/classes/javax/crypto/spec/RC5ParameterSpec.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/src/java.base/share/classes/javax/crypto/spec/RC5ParameterSpec.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -29,7 +29,7 @@ /** * This class specifies the parameters used with the - * RC5 + * RC5 * algorithm. * *

      The parameters consist of a version number, a rounds count, a word @@ -37,7 +37,7 @@ * *

      This class can be used to initialize a Cipher object that * implements the RC5 algorithm as supplied by - * RSA Security Inc., + * RSA Security LLC, * or any parties authorized by RSA Security. * * @author Jan Luehe diff -r 8c912c147654 -r d7609b65606b jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java --- a/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/src/java.base/windows/classes/sun/nio/ch/FileDispatcherImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -123,7 +123,7 @@ new PrivilegedAction() { @Override public String run() { - return System.getProperty("jdk.net.enableFastFileTransfer"); + return System.getProperty("jdk.nio.enableFastFileTransfer"); } }); boolean enable; diff -r 8c912c147654 -r d7609b65606b jdk/src/java.base/windows/native/libnet/NetworkInterface_winXP.c --- a/jdk/src/java.base/windows/native/libnet/NetworkInterface_winXP.c Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/src/java.base/windows/native/libnet/NetworkInterface_winXP.c Mon Jan 12 12:52:39 2015 -0800 @@ -81,9 +81,17 @@ DWORD ret, flags; IP_ADAPTER_ADDRESSES *adapterInfo; ULONG len; + char *error_msg_buf = NULL; + size_t error_msg_buf_size = + strlen("IP Helper Library GetAdaptersAddresses function failed" + " with error == ") + 10; + int _ret = 0; + + adapterInfo = (IP_ADAPTER_ADDRESSES *)malloc (bufsize); if (adapterInfo == NULL) { - JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure"); + JNU_ThrowByName(env, "java/lang/OutOfMemoryError", + "Native heap allocation failure"); return -1; } @@ -94,10 +102,12 @@ ret = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len); if (ret == ERROR_BUFFER_OVERFLOW) { - IP_ADAPTER_ADDRESSES * newAdapterInfo = (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len); + IP_ADAPTER_ADDRESSES * newAdapterInfo = + (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len); if (newAdapterInfo == NULL) { free(adapterInfo); - JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure"); + JNU_ThrowByName(env, "java/lang/OutOfMemoryError", + "Native heap allocation failure"); return -1; } @@ -109,8 +119,32 @@ if (ret != ERROR_SUCCESS) { free (adapterInfo); - JNU_ThrowByName(env, "java/lang/Error", - "IP Helper Library GetAdaptersAddresses function failed"); + if (ret == ERROR_INSUFFICIENT_BUFFER) { + JNU_ThrowByName(env, "java/lang/Error", + "IP Helper Library GetAdaptersAddresses function failed " + "with ERROR_INSUFFICIENT_BUFFER"); + } else if (ret == ERROR_ADDRESS_NOT_ASSOCIATED ) { + JNU_ThrowByName(env, "java/lang/Error", + "IP Helper Library GetAdaptersAddresses function failed " + "with ERROR_ADDRESS_NOT_ASSOCIATED"); + } else { + error_msg_buf = (char *)malloc(error_msg_buf_size); + if (error_msg_buf != NULL) { + memset(error_msg_buf, 0, error_msg_buf_size); + _ret = _snprintf_s(error_msg_buf, error_msg_buf_size, + _TRUNCATE, "IP Helper Library GetAdaptersAddresses " + "function failed with error == %d", ret); + if (_ret != -1) { + JNU_ThrowByName(env, "java/lang/Error", error_msg_buf); + } else { + JNU_ThrowByName(env, "java/lang/Error", + "IP Helper Library GetAdaptersAddresses function failure"); + } + } else { + JNU_ThrowByName(env, "java/lang/Error", + "IP Helper Library GetAdaptersAddresses function failed"); + } + } return -1; } *adapters = adapterInfo; @@ -126,9 +160,14 @@ DWORD flags, val; IP_ADAPTER_ADDRESSES *adapterInfo, *ptr, *ret; ULONG len; + char *error_msg_buf = NULL; + size_t error_msg_buf_size = + strlen("IP Helper Library GetAdaptersAddresses function failed with error == ") + 10; + int _ret = 0; adapterInfo = (IP_ADAPTER_ADDRESSES *)malloc (bufsize); if (adapterInfo == NULL) { - JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure"); + JNU_ThrowByName(env, "java/lang/OutOfMemoryError", + "Native heap allocation failure"); return NULL; } len = bufsize; @@ -137,10 +176,12 @@ flags |= GAA_FLAG_INCLUDE_PREFIX; val = GetAdaptersAddresses(AF_UNSPEC, flags, NULL, adapterInfo, &len); if (val == ERROR_BUFFER_OVERFLOW) { - IP_ADAPTER_ADDRESSES * newAdapterInfo = (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len); + IP_ADAPTER_ADDRESSES * newAdapterInfo = + (IP_ADAPTER_ADDRESSES *) realloc (adapterInfo, len); if (newAdapterInfo == NULL) { free(adapterInfo); - JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure"); + JNU_ThrowByName(env, "java/lang/OutOfMemoryError", + "Native heap allocation failure"); return NULL; } @@ -152,10 +193,35 @@ if (val != ERROR_SUCCESS) { free (adapterInfo); - JNU_ThrowByName(env, "java/lang/Error", - "IP Helper Library GetAdaptersAddresses function failed"); + if (val == ERROR_INSUFFICIENT_BUFFER) { + JNU_ThrowByName(env, "java/lang/Error", + "IP Helper Library GetAdaptersAddresses function failed " + "with ERROR_INSUFFICIENT_BUFFER"); + } else if (val == ERROR_ADDRESS_NOT_ASSOCIATED ) { + JNU_ThrowByName(env, "java/lang/Error", + "IP Helper Library GetAdaptersAddresses function failed " + "with ERROR_ADDRESS_NOT_ASSOCIATED"); + } else { + error_msg_buf = (char *)malloc(error_msg_buf_size); + if (error_msg_buf != NULL) { + memset(error_msg_buf, 0, error_msg_buf_size); + _ret = _snprintf_s(error_msg_buf, error_msg_buf_size, + _TRUNCATE, "IP Helper Library GetAdaptersAddresses function failed " + "with error == %d", val); + if (_ret != -1) { + JNU_ThrowByName(env, "java/lang/Error", error_msg_buf); + } else { + JNU_ThrowByName(env, "java/lang/Error", + "IP Helper Library GetAdaptersAddresses function failure"); + } + } else { + JNU_ThrowByName(env, "java/lang/Error", + "IP Helper Library GetAdaptersAddresses function failed"); + } + } return NULL; } + ptr = adapterInfo; ret = NULL; while (ptr != NULL) { @@ -168,7 +234,8 @@ ret = (IP_ADAPTER_ADDRESSES *) malloc(sizeof(IP_ADAPTER_ADDRESSES)); if (ret == NULL) { free(adapterInfo); - JNU_ThrowByName(env, "java/lang/OutOfMemoryError", "Native heap allocation failure"); + JNU_ThrowByName(env, "java/lang/OutOfMemoryError", + "Native heap allocation failure"); return NULL; } diff -r 8c912c147654 -r d7609b65606b jdk/src/java.scripting/share/classes/javax/script/ScriptEngineFactory.java --- a/jdk/src/java.scripting/share/classes/javax/script/ScriptEngineFactory.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/src/java.scripting/share/classes/javax/script/ScriptEngineFactory.java Mon Jan 12 12:52:39 2015 -0800 @@ -104,14 +104,15 @@ *

        *
      • ScriptEngine.ENGINE
      • *
      • ScriptEngine.ENGINE_VERSION
      • - *
      • ScriptEngine.NAME
      • *
      • ScriptEngine.LANGUAGE
      • *
      • ScriptEngine.LANGUAGE_VERSION
      • + *
      • ScriptEngine.NAME
      • *
      *

      * The values for these keys are the Strings returned by getEngineName, - * getEngineVersion, getName, getLanguageName and - * getLanguageVersion respectively.

      + * getEngineVersion, getLanguageName, + * getLanguageVersion for the first four keys respectively. For NAME, one of the Strings + * returned by getNames is returned.

      * A reserved key, THREADING, whose value describes the behavior of the engine * with respect to concurrent execution of scripts and maintenance of state is also defined. * These values for the THREADING key are:

      diff -r 8c912c147654 -r d7609b65606b jdk/src/java.sql/share/classes/javax/transaction/xa/XAException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/XAException.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,196 @@ +/* + * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.transaction.xa; + +/** + * The XAException is thrown by the Resource Manager (RM) to inform the + * Transaction Manager of an error encountered by the involved transaction. + * + */ +public class XAException extends Exception { + //private static final long serialVersionUID = -8249683284832867751L; + + /** + * The error code with which to create the SystemException. + * + * @serial The error code for the exception + */ + public int errorCode; + + /** + * Create an XAException. + */ + public XAException() { + super(); + } + + /** + * Create an XAException with a given string. + * + * @param s The String object containing the exception + * message. + */ + public XAException(String s) { + super(s); + } + + /** + * Create an XAException with a given error code. + * + * @param errcode The error code identifying the exception. + */ + public XAException(int errcode) { + super(); + errorCode = errcode; + } + + /** + * The inclusive lower bound of the rollback codes. + */ + public final static int XA_RBBASE = 100; + + /** + * Indicates that the rollback was caused by an unspecified reason. + */ + public final static int XA_RBROLLBACK = XA_RBBASE; + + /** + * Indicates that the rollback was caused by a communication failure. + */ + public final static int XA_RBCOMMFAIL = XA_RBBASE + 1; + + /** + * A deadlock was detected. + */ + public final static int XA_RBDEADLOCK = XA_RBBASE + 2; + + /** + * A condition that violates the integrity of the resource was detected. + */ + public final static int XA_RBINTEGRITY = XA_RBBASE + 3; + + /** + * The resource manager rolled back the transaction branch for a reason + * not on this list. + */ + public final static int XA_RBOTHER = XA_RBBASE + 4; + + /** + * A protocol error occurred in the resource manager. + */ + public final static int XA_RBPROTO = XA_RBBASE + 5; + + /** + * A transaction branch took too long. + */ + public final static int XA_RBTIMEOUT = XA_RBBASE + 6; + + /** + * May retry the transaction branch. + */ + public final static int XA_RBTRANSIENT = XA_RBBASE + 7; + + /** + * The inclusive upper bound of the rollback error code. + */ + public final static int XA_RBEND = XA_RBTRANSIENT; + + /** + * Resumption must occur where the suspension occurred. + */ + public final static int XA_NOMIGRATE = 9; + + /** + * The transaction branch may have been heuristically completed. + */ + public final static int XA_HEURHAZ = 8; + + /** + * The transaction branch has been heuristically committed. + */ + public final static int XA_HEURCOM = 7; + + /** + * The transaction branch has been heuristically rolled back. + */ + public final static int XA_HEURRB = 6; + + /** + * The transaction branch has been heuristically committed and + * rolled back. + */ + public final static int XA_HEURMIX = 5; + + /** + * Routine returned with no effect and may be reissued. + */ + public final static int XA_RETRY = 4; + + /** + * The transaction branch was read-only and has been committed. + */ + public final static int XA_RDONLY = 3; + + /** + * There is an asynchronous operation already outstanding. + */ + public final static int XAER_ASYNC = -2; + + /** + * A resource manager error has occurred in the transaction branch. + */ + public final static int XAER_RMERR = -3; + + /** + * The XID is not valid. + */ + public final static int XAER_NOTA = -4; + + /** + * Invalid arguments were given. + */ + public final static int XAER_INVAL = -5; + + /** + * Routine was invoked in an inproper context. + */ + public final static int XAER_PROTO = -6; + + /** + * Resource manager is unavailable. + */ + public final static int XAER_RMFAIL = -7; + + /** + * The XID already exists. + */ + public final static int XAER_DUPID = -8; + + /** + * The resource manager is doing work outside a global transaction. + */ + public final static int XAER_OUTSIDE = -9; +} diff -r 8c912c147654 -r d7609b65606b jdk/src/java.sql/share/classes/javax/transaction/xa/XAResource.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/XAResource.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,305 @@ +/* + * Copyright (c) 2000, 2001, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.transaction.xa; + +/** + * The XAResource interface is a Java mapping of the industry standard + * XA interface based on the X/Open CAE Specification (Distributed + * Transaction Processing: The XA Specification). + * + *

      The XA interface defines the contract between a Resource Manager + * and a Transaction Manager in a distributed transaction processing + * (DTP) environment. A JDBC driver or a JMS provider implements + * this interface to support the association between a global transaction + * and a database or message service connection. + * + *

      The XAResource interface can be supported by any transactional + * resource that is intended to be used by application programs in an + * environment where transactions are controlled by an external + * transaction manager. An example of such a resource is a database + * management system. An application may access data through multiple + * database connections. Each database connection is enlisted with + * the transaction manager as a transactional resource. The transaction + * manager obtains an XAResource for each connection participating + * in a global transaction. The transaction manager uses the + * start method + * to associate the global transaction with the resource, and it uses the + * end method to disassociate the transaction from + * the resource. The resource + * manager is responsible for associating the global transaction to all + * work performed on its data between the start and end method invocations. + * + *

      At transaction commit time, the resource managers are informed by + * the transaction manager to prepare, commit, or rollback a transaction + * according to the two-phase commit protocol.

      + * + */ +public interface XAResource { + + /** + * Commits the global transaction specified by xid. + * + * @param xid A global transaction identifier + * + * @param onePhase If true, the resource manager should use a one-phase + * commit protocol to commit the work done on behalf of xid. + * + * @exception XAException An error has occurred. Possible XAExceptions + * are XA_HEURHAZ, XA_HEURCOM, XA_HEURRB, XA_HEURMIX, XAER_RMERR, + * XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or XAER_PROTO. + * + *

      If the resource manager did not commit the transaction and the + * paramether onePhase is set to true, the resource manager may throw + * one of the XA_RB* exceptions. Upon return, the resource manager has + * rolled back the branch's work and has released all held resources. + */ + void commit(Xid xid, boolean onePhase) throws XAException; + + /** + * Ends the work performed on behalf of a transaction branch. + * The resource manager disassociates the XA resource from the + * transaction branch specified and lets the transaction + * complete. + * + *

      If TMSUSPEND is specified in the flags, the transaction branch + * is temporarily suspended in an incomplete state. The transaction + * context is in a suspended state and must be resumed via the + * start method with TMRESUME specified.

      + * + *

      If TMFAIL is specified, the portion of work has failed. + * The resource manager may mark the transaction as rollback-only

      + * + *

      If TMSUCCESS is specified, the portion of work has completed + * successfully.

      + * + * @param xid A global transaction identifier that is the same as + * the identifier used previously in the start method. + * + * @param flags One of TMSUCCESS, TMFAIL, or TMSUSPEND. + * + * @exception XAException An error has occurred. Possible XAException + * values are XAER_RMERR, XAER_RMFAILED, XAER_NOTA, XAER_INVAL, + * XAER_PROTO, or XA_RB*. + */ + void end(Xid xid, int flags) throws XAException; + + /** + * Tells the resource manager to forget about a heuristically + * completed transaction branch. + * + * @param xid A global transaction identifier. + * + * @exception XAException An error has occurred. Possible exception + * values are XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, or + * XAER_PROTO. + */ + void forget(Xid xid) throws XAException; + + /** + * Obtains the current transaction timeout value set for this + * XAResource instance. If XAResource.setTransactionTimeout + * was not used prior to invoking this method, the return value + * is the default timeout set for the resource manager; otherwise, + * the value used in the previous setTransactionTimeout + * call is returned. + * + * @return the transaction timeout value in seconds. + * + * @exception XAException An error has occurred. Possible exception + * values are XAER_RMERR and XAER_RMFAIL. + */ + int getTransactionTimeout() throws XAException; + + /** + * This method is called to determine if the resource manager + * instance represented by the target object is the same as the + * resouce manager instance represented by the parameter xares. + * + * @param xares An XAResource object whose resource manager instance + * is to be compared with the resource manager instance of the + * target object. + * + * @return true if it's the same RM instance; otherwise + * false. + * + * @exception XAException An error has occurred. Possible exception + * values are XAER_RMERR and XAER_RMFAIL. + */ + boolean isSameRM(XAResource xares) throws XAException; + + /** + * Ask the resource manager to prepare for a transaction commit + * of the transaction specified in xid. + * + * @param xid A global transaction identifier. + * + * @exception XAException An error has occurred. Possible exception + * values are: XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_NOTA, XAER_INVAL, + * or XAER_PROTO. + * + * @return A value indicating the resource manager's vote on the + * outcome of the transaction. The possible values are: XA_RDONLY + * or XA_OK. If the resource manager wants to roll back the + * transaction, it should do so by raising an appropriate XAException + * in the prepare method. + */ + int prepare(Xid xid) throws XAException; + + /** + * Obtains a list of prepared transaction branches from a resource + * manager. The transaction manager calls this method during recovery + * to obtain the list of transaction branches that are currently in + * prepared or heuristically completed states. + * + * @param flag One of TMSTARTRSCAN, TMENDRSCAN, TMNOFLAGS. TMNOFLAGS + * must be used when no other flags are set in the parameter. + * + * @exception XAException An error has occurred. Possible values are + * XAER_RMERR, XAER_RMFAIL, XAER_INVAL, and XAER_PROTO. + * + * @return The resource manager returns zero or more XIDs of the + * transaction branches that are currently in a prepared or + * heuristically completed state. If an error occurs during the + * operation, the resource manager should throw the appropriate + * XAException. + */ + Xid[] recover(int flag) throws XAException; + + /** + * Informs the resource manager to roll back work done on behalf + * of a transaction branch. + * + * @param xid A global transaction identifier. + * + * @exception XAException An error has occurred. + */ + void rollback(Xid xid) throws XAException; + + /** + * Sets the current transaction timeout value for this XAResource + * instance. Once set, this timeout value is effective until + * setTransactionTimeout is invoked again with a different + * value. To reset the timeout value to the default value used by the resource + * manager, set the value to zero. + * + * If the timeout operation is performed successfully, the method returns + * true; otherwise false. If a resource manager does not + * support explicitly setting the transaction timeout value, this method + * returns false. + * + * @param seconds The transaction timeout value in seconds. + * + * @return true if the transaction timeout value is set successfully; + * otherwise false. + * + * @exception XAException An error has occurred. Possible exception values + * are XAER_RMERR, XAER_RMFAIL, or XAER_INVAL. + */ + boolean setTransactionTimeout(int seconds) throws XAException; + + /** + * Starts work on behalf of a transaction branch specified in + * xid. + * + * If TMJOIN is specified, the start applies to joining a transaction + * previously seen by the resource manager. If TMRESUME is specified, + * the start applies to resuming a suspended transaction specified in the + * parameter xid. + * + * If neither TMJOIN nor TMRESUME is specified and the transaction + * specified by xid has previously been seen by the resource + * manager, the resource manager throws the XAException exception with + * XAER_DUPID error code. + * + * @param xid A global transaction identifier to be associated + * with the resource. + * + * @param flags One of TMNOFLAGS, TMJOIN, or TMRESUME. + * + * @exception XAException An error has occurred. Possible exceptions + * are XA_RB*, XAER_RMERR, XAER_RMFAIL, XAER_DUPID, XAER_OUTSIDE, + * XAER_NOTA, XAER_INVAL, or XAER_PROTO. + */ + void start(Xid xid, int flags) throws XAException; + + /** + * Ends a recovery scan. + */ + public final static int TMENDRSCAN = 0x00800000; + + /** + * Disassociates the caller and marks the transaction branch + * rollback-only. + */ + public final static int TMFAIL = 0x20000000; + + /** + * Caller is joining existing transaction branch. + */ + public final static int TMJOIN = 0x00200000; + + /** + * Use TMNOFLAGS to indicate no flags value is selected. + */ + public final static int TMNOFLAGS = 0x00000000; + + /** + * Caller is using one-phase optimization. + */ + public final static int TMONEPHASE = 0x40000000; + + /** + * Caller is resuming association with a suspended + * transaction branch. + */ + public final static int TMRESUME = 0x08000000; + + /** + * Starts a recovery scan. + */ + public final static int TMSTARTRSCAN = 0x01000000; + + /** + * Disassociates caller from a transaction branch. + */ + public final static int TMSUCCESS = 0x04000000; + + /** + * Caller is suspending (not ending) its association with + * a transaction branch. + */ + public final static int TMSUSPEND = 0x02000000; + + /** + * The transaction branch has been read-only and has been committed. + */ + public final static int XA_RDONLY = 0x00000003; + + /** + * The transaction work has been prepared normally. + */ + public final static int XA_OK = 0; +} diff -r 8c912c147654 -r d7609b65606b jdk/src/java.sql/share/classes/javax/transaction/xa/Xid.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/Xid.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,70 @@ +/* + * Copyright (c) 2000, 2002, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.transaction.xa; + +/** + * The Xid interface is a Java mapping of the X/Open transaction identifier + * XID structure. This interface specifies three accessor methods to + * retrieve a global transaction format ID, global transaction ID, + * and branch qualifier. The Xid interface is used by the transaction + * manager and the resource managers. This interface is not visible to + * the application programs. + */ +public interface Xid { + + /** + * Maximum number of bytes returned by getGtrid. + */ + final static int MAXGTRIDSIZE = 64; + + /** + * Maximum number of bytes returned by getBqual. + */ + final static int MAXBQUALSIZE = 64; + + /** + * Obtain the format identifier part of the XID. + * + * @return Format identifier. O means the OSI CCR format. + */ + int getFormatId(); + + /** + * Obtain the global transaction identifier part of XID as an array + * of bytes. + * + * @return Global transaction identifier. + */ + byte[] getGlobalTransactionId(); + + /** + * Obtain the transaction branch identifier part of XID as an array + * of bytes. + * + * @return Global transaction identifier. + */ + byte[] getBranchQualifier(); +} diff -r 8c912c147654 -r d7609b65606b jdk/src/java.sql/share/classes/javax/transaction/xa/package.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.sql/share/classes/javax/transaction/xa/package.html Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,41 @@ + + + + + + + + +Provides the API that defines the contract between the transaction +manager and the resource manager, which allows the transaction +manager to enlist and delist resource objects (supplied by the +resource manager driver) in JTA transactions. The driver vendor +for a specific resource manager provides the implementation of +this API. +

      +@since 1.4 + + diff -r 8c912c147654 -r d7609b65606b jdk/src/java.transaction/share/classes/javax/transaction/InvalidTransactionException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.transaction/share/classes/javax/transaction/InvalidTransactionException.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,49 @@ +/* + * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +/* + * Licensed Materials - Property of IBM + * RMI-IIOP v1.0 + * Copyright IBM Corp. 1998 1999 All Rights Reserved + * + */ + +package javax.transaction; + +/** + * This exception indicates that the request carried an invalid transaction + * context. For example, this exception could be raised if an error + * occured when trying to register a resource. + */ +@SuppressWarnings("serial") // serialVersionUID intentionally omitted +public class InvalidTransactionException extends java.rmi.RemoteException { + + public InvalidTransactionException() { + super(); + } + + public InvalidTransactionException(String msg) { + super(msg); + } +} diff -r 8c912c147654 -r d7609b65606b jdk/src/java.transaction/share/classes/javax/transaction/TransactionRequiredException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.transaction/share/classes/javax/transaction/TransactionRequiredException.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,48 @@ +/* + * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +/* + * Licensed Materials - Property of IBM + * RMI-IIOP v1.0 + * Copyright IBM Corp. 1998 1999 All Rights Reserved + * + */ + +package javax.transaction; + +/** + * This exception indicates that a request carried a null transaction context, + * but the target object requires an activate transaction. + */ +@SuppressWarnings("serial") // serialVersionUID intentionally omitted +public class TransactionRequiredException extends java.rmi.RemoteException { + + public TransactionRequiredException() { + super(); + } + + public TransactionRequiredException(String msg) { + super(msg); + } +} diff -r 8c912c147654 -r d7609b65606b jdk/src/java.transaction/share/classes/javax/transaction/TransactionRolledbackException.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.transaction/share/classes/javax/transaction/TransactionRolledbackException.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,51 @@ +/* + * Copyright (c) 1998, 1999, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +/* + * Licensed Materials - Property of IBM + * RMI-IIOP v1.0 + * Copyright IBM Corp. 1998 1999 All Rights Reserved + * + */ + +package javax.transaction; + +/** + * This exception indicates that the transaction associated with processing + * of the request has been rolled back, or marked to roll back. Thus the + * requested operation either could not be performed or was not performed + * because further computation on behalf of the transaction would be + * fruitless + */ +@SuppressWarnings("serial") // serialVersionUID intentionally omitted +public class TransactionRolledbackException extends java.rmi.RemoteException { + + public TransactionRolledbackException() { + super(); + } + + public TransactionRolledbackException(String msg) { + super(msg); + } +} diff -r 8c912c147654 -r d7609b65606b jdk/src/java.transaction/share/classes/javax/transaction/package.html --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/src/java.transaction/share/classes/javax/transaction/package.html Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,36 @@ + + + + + + + + +Contains three exceptions thrown by the ORB machinery during unmarshalling. +

      +@since 1.3 + + diff -r 8c912c147654 -r d7609b65606b jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java --- a/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/src/java.xml.crypto/share/classes/org/jcp/xml/dsig/internal/dom/DOMKeyValue.java Mon Jan 12 12:52:39 2015 -0800 @@ -21,7 +21,7 @@ * under the License. */ /* - * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. */ /* * $Id: DOMKeyValue.java 1333415 2012-05-03 12:03:51Z coheigea $ @@ -33,20 +33,19 @@ import javax.xml.crypto.dsig.*; import javax.xml.crypto.dsig.keyinfo.KeyValue; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.security.AccessController; +import java.io.IOException; +import java.math.BigInteger; import java.security.KeyException; import java.security.KeyFactory; import java.security.NoSuchAlgorithmException; -import java.security.PrivilegedActionException; -import java.security.PrivilegedExceptionAction; import java.security.PublicKey; import java.security.interfaces.DSAParams; import java.security.interfaces.DSAPublicKey; import java.security.interfaces.ECPublicKey; import java.security.interfaces.RSAPublicKey; import java.security.spec.DSAPublicKeySpec; +import java.security.spec.ECField; +import java.security.spec.ECFieldFp; import java.security.spec.ECParameterSpec; import java.security.spec.ECPoint; import java.security.spec.ECPublicKeySpec; @@ -54,6 +53,7 @@ import java.security.spec.InvalidKeySpecException; import java.security.spec.KeySpec; import java.security.spec.RSAPublicKeySpec; +import java.util.Arrays; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; @@ -325,55 +325,112 @@ private byte[] ecPublicKey; private KeyFactory eckf; private ECParameterSpec ecParams; - private Method encodePoint, decodePoint, getCurveName, - getECParameterSpec; + + // The supported curve, secp256r1 + private static final Curve SECP256R1; + static { + final String name, oid, sfield, a, b, x, y, n; + name = "secp256r1 [NIST P-256, X9.62 prime256v1]"; + oid = "1.2.840.10045.3.1.7"; + sfield = + "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"; + a = + "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC"; + b = + "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B"; + x = + "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296"; + y = + "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5"; + n = + "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"; + final int h = 1; + + BigInteger p = bigInt(sfield); + ECField field = new ECFieldFp(p); + EllipticCurve curve = new EllipticCurve(field, bigInt(a), + bigInt(b)); + ECPoint g = new ECPoint(bigInt(x), bigInt(y)); + SECP256R1 = new Curve(name, oid, curve, g, bigInt(n), h); + } EC(PublicKey key) throws KeyException { super(key); ECPublicKey ecKey = (ECPublicKey)key; ECPoint ecPoint = ecKey.getW(); ecParams = ecKey.getParams(); - try { - AccessController.doPrivileged( - new PrivilegedExceptionAction() { - public Void run() throws - ClassNotFoundException, NoSuchMethodException - { - getMethods(); - return null; - } - } - ); - } catch (PrivilegedActionException pae) { - throw new KeyException("ECKeyValue not supported", - pae.getException()); - } - Object[] args = new Object[] { ecPoint, ecParams.getCurve() }; - try { - ecPublicKey = (byte[])encodePoint.invoke(null, args); - } catch (IllegalAccessException iae) { - throw new KeyException(iae); - } catch (InvocationTargetException ite) { - throw new KeyException(ite); - } + ecPublicKey = encodePoint(ecPoint, ecParams.getCurve()); } EC(Element dmElem) throws MarshalException { super(dmElem); } - void getMethods() throws ClassNotFoundException, NoSuchMethodException { - Class c = Class.forName("sun.security.util.ECParameters"); - Class[] params = new Class[] { ECPoint.class, - EllipticCurve.class }; - encodePoint = c.getMethod("encodePoint", params); - params = new Class[] { ECParameterSpec.class }; - getCurveName = c.getMethod("getCurveName", params); - params = new Class[] { byte[].class, EllipticCurve.class }; - decodePoint = c.getMethod("decodePoint", params); - c = Class.forName("sun.security.util.NamedCurve"); - params = new Class[] { String.class }; - getECParameterSpec = c.getMethod("getECParameterSpec", params); + private static ECPoint decodePoint(byte[] data, EllipticCurve curve) + throws IOException { + if ((data.length == 0) || (data[0] != 4)) { + throw new IOException("Only uncompressed point format " + + "supported"); + } + // Per ANSI X9.62, an encoded point is a 1 byte type followed by + // ceiling(log base 2 field-size / 8) bytes of x and the same of y. + int n = (data.length - 1) / 2; + if (n != ((curve.getField().getFieldSize() + 7) >> 3)) { + throw new IOException("Point does not match field size"); + } + + byte[] xb = Arrays.copyOfRange(data, 1, 1 + n); + byte[] yb = Arrays.copyOfRange(data, n + 1, n + 1 + n); + + return new ECPoint(new BigInteger(1, xb), new BigInteger(1, yb)); + } + + private static byte[] encodePoint(ECPoint point, EllipticCurve curve) { + // get field size in bytes (rounding up) + int n = (curve.getField().getFieldSize() + 7) >> 3; + byte[] xb = trimZeroes(point.getAffineX().toByteArray()); + byte[] yb = trimZeroes(point.getAffineY().toByteArray()); + if ((xb.length > n) || (yb.length > n)) { + throw new RuntimeException("Point coordinates do not " + + "match field size"); + } + byte[] b = new byte[1 + (n << 1)]; + b[0] = 4; // uncompressed + System.arraycopy(xb, 0, b, n - xb.length + 1, xb.length); + System.arraycopy(yb, 0, b, b.length - yb.length, yb.length); + return b; + } + + private static byte[] trimZeroes(byte[] b) { + int i = 0; + while ((i < b.length - 1) && (b[i] == 0)) { + i++; + } + if (i == 0) { + return b; + } + return Arrays.copyOfRange(b, i, b.length); + } + + private static String getCurveOid(ECParameterSpec params) { + // Check that the params represent the secp256r1 curve + // If so, return the object identifier of the curve + int fieldSize = params.getCurve().getField().getFieldSize(); + if (SECP256R1.getCurve().getField().getFieldSize() == fieldSize + && SECP256R1.getCurve().equals(params.getCurve()) + && SECP256R1.getGenerator().equals(params.getGenerator()) + && SECP256R1.getOrder().equals(params.getOrder()) + && SECP256R1.getCofactor() == params.getCofactor()) { + return SECP256R1.getObjectId(); + } + return null; + } + + private static ECParameterSpec getECParameterSpec(String oid) { + if (oid.equals(SECP256R1.getObjectId())) { + return SECP256R1; + } + return null; } void marshalPublicKey(Node parent, Document doc, String dsPrefix, @@ -391,14 +448,11 @@ XMLDSIG_11_XMLNS, prefix); Object[] args = new Object[] { ecParams }; - try { - String oid = (String) getCurveName.invoke(null, args); - DOMUtils.setAttribute(namedCurveElem, "URI", "urn:oid:" + oid); - } catch (IllegalAccessException iae) { - throw new MarshalException(iae); - } catch (InvocationTargetException ite) { - throw new MarshalException(ite); + String oid = getCurveOid(ecParams); + if (oid == null) { + throw new MarshalException("Invalid ECParameterSpec"); } + DOMUtils.setAttribute(namedCurveElem, "URI", "urn:oid:" + oid); String qname = (prefix == null || prefix.length() == 0) ? "xmlns" : "xmlns:" + prefix; namedCurveElem.setAttributeNS("http://www.w3.org/2000/xmlns/", @@ -422,21 +476,6 @@ ("unable to create EC KeyFactory: " + e.getMessage()); } } - try { - AccessController.doPrivileged( - new PrivilegedExceptionAction() { - public Void run() throws - ClassNotFoundException, NoSuchMethodException - { - getMethods(); - return null; - } - } - ); - } catch (PrivilegedActionException pae) { - throw new MarshalException("ECKeyValue not supported", - pae.getException()); - } ECParameterSpec ecParams = null; Element curElem = DOMUtils.getFirstChildElement(kvtElem); if (curElem.getLocalName().equals("ECParameters")) { @@ -447,14 +486,9 @@ // strip off "urn:oid" if (uri.startsWith("urn:oid:")) { String oid = uri.substring(8); - try { - Object[] args = new Object[] { oid }; - ecParams = (ECParameterSpec) - getECParameterSpec.invoke(null, args); - } catch (IllegalAccessException iae) { - throw new MarshalException(iae); - } catch (InvocationTargetException ite) { - throw new MarshalException(ite); + ecParams = getECParameterSpec(oid); + if (ecParams == null) { + throw new MarshalException("Invalid curve OID"); } } else { throw new MarshalException("Invalid NamedCurve URI"); @@ -464,24 +498,43 @@ } curElem = DOMUtils.getNextSiblingElement(curElem, "PublicKey"); ECPoint ecPoint = null; + try { - Object[] args = new Object[] { Base64.decode(curElem), - ecParams.getCurve() }; - ecPoint = (ECPoint)decodePoint.invoke(null, args); + ecPoint = decodePoint(Base64.decode(curElem), + ecParams.getCurve()); } catch (Base64DecodingException bde) { throw new MarshalException("Invalid EC PublicKey", bde); - } catch (IllegalAccessException iae) { - throw new MarshalException(iae); - } catch (InvocationTargetException ite) { - throw new MarshalException(ite); + } catch (IOException ioe) { + throw new MarshalException("Invalid EC Point", ioe); } -/* - ecPoint = sun.security.util.ECParameters.decodePoint( - Base64.decode(curElem), ecParams.getCurve()); -*/ + ECPublicKeySpec spec = new ECPublicKeySpec(ecPoint, ecParams); return generatePublicKey(eckf, spec); } + + static final class Curve extends ECParameterSpec { + private final String name; + private final String oid; + + Curve(String name, String oid, EllipticCurve curve, + ECPoint g, BigInteger n, int h) { + super(curve, g, n, h); + this.name = name; + this.oid = oid; + } + + private String getName() { + return name; + } + + private String getObjectId() { + return oid; + } + } + } + + private static BigInteger bigInt(String s) { + return new BigInteger(s, 16); } static final class Unknown extends DOMKeyValue { diff -r 8c912c147654 -r d7609b65606b jdk/test/ProblemList.txt --- a/jdk/test/ProblemList.txt Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/ProblemList.txt Mon Jan 12 12:52:39 2015 -0800 @@ -154,6 +154,9 @@ com/sun/management/OperatingSystemMXBean/GetSystemCpuLoad.java aix-all javax/management/MBeanServer/OldMBeanServerTest.java aix-all +# 8042215 +javax/management/remote/mandatory/notif/NotifReconnectDeadlockTest.java generic-all + ############################################################################ # jdk_math diff -r 8c912c147654 -r d7609b65606b jdk/test/com/sun/corba/5036554/TestCorbaBug.sh --- a/jdk/test/com/sun/corba/5036554/TestCorbaBug.sh Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/com/sun/corba/5036554/TestCorbaBug.sh Mon Jan 12 12:52:39 2015 -0800 @@ -75,13 +75,13 @@ mkdir bug cp ${TESTSRC}${FS}bug.idl . -${TESTJAVA}${FS}bin${FS}idlj bug.idl +${COMPILEJAVA}${FS}bin${FS}idlj bug.idl cp ${TESTSRC}${FS}JavaBug.java bug chmod -fR 777 bug -${TESTJAVA}${FS}bin${FS}javac -d . bug${FS}*.java +${COMPILEJAVA}${FS}bin${FS}javac -d . bug${FS}*.java ${TESTJAVA}${FS}bin${FS}java ${TESTVMOPTS} -cp . bug/JavaBug > test.out 2>&1 diff -r 8c912c147654 -r d7609b65606b jdk/test/com/sun/corba/cachedSocket/7056731.sh --- a/jdk/test/com/sun/corba/cachedSocket/7056731.sh Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/com/sun/corba/cachedSocket/7056731.sh Mon Jan 12 12:52:39 2015 -0800 @@ -55,8 +55,8 @@ cp -r ${TESTSRC}${FS}*.java ${TESTSRC}${FS}Hello.idl . echo "Testing...please wait" -${TESTJAVA}${FS}bin${FS}idlj -fall Hello.idl -${TESTJAVA}${FS}bin${FS}javac *.java HelloApp/*.java +${COMPILEJAVA}${FS}bin${FS}idlj -fall Hello.idl +${COMPILEJAVA}${FS}bin${FS}javac *.java HelloApp/*.java echo "starting orbd" ${TESTJAVA}${FS}bin${FS}orbd -ORBInitialPort $PORT -ORBInitialHost localhost & diff -r 8c912c147654 -r d7609b65606b jdk/test/com/sun/crypto/provider/Cipher/DES/TestUtility.java --- a/jdk/test/com/sun/crypto/provider/Cipher/DES/TestUtility.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/com/sun/crypto/provider/Cipher/DES/TestUtility.java Mon Jan 12 12:52:39 2015 -0800 @@ -27,39 +27,52 @@ public class TestUtility { - private static final String digits = "0123456789abcdef"; + private static final String DIGITS = "0123456789abcdef"; - public TestUtility() { + private TestUtility() { } public static String hexDump(byte[] bytes) { - StringBuffer buf = new StringBuffer (bytes.length * 2); - int i; + StringBuilder buf = new StringBuilder(bytes.length * 2); + int i; - buf.append (" "); // four spaces + buf.append(" "); // four spaces for (i = 0; i < bytes.length; i++) { - buf.append (digits.charAt ((bytes[i] >> 4) & 0x0f)); - buf.append (digits.charAt (bytes[i] & 0x0f)); - if (((i + 1) % 32) == 0) { - if ((i + 1) != bytes.length) - buf.append ("\n "); // line after four words - } else if (((i + 1) % 4) == 0) - buf.append (' '); // space between words + buf.append(DIGITS.charAt(bytes[i] >> 4 & 0x0f)); + buf.append(DIGITS.charAt(bytes[i] & 0x0f)); + if ((i + 1) % 32 == 0) { + if (i + 1 != bytes.length) { + buf.append("\n "); // line after four words + } + } else if ((i + 1) % 4 == 0) { + buf.append(' '); // space between words + } } - return buf.toString (); + return buf.toString(); } + public static String hexDump(byte[] bytes, int index) { + StringBuilder buf = new StringBuilder(bytes.length * 2); + int i; + + buf.append(" "); // four spaces + buf.append(DIGITS.charAt(bytes[index] >> 4 & 0x0f)); + buf.append(DIGITS.charAt(bytes[index] & 0x0f)); + return buf.toString(); + } public static boolean equalsBlock(byte[] b1, byte[] b2) { - if (b1.length != b2.length) + if (b1.length != b2.length) { return false; + } - for (int i=0; i3) order4 = (int)((Integer.parseInt(args[3]))* 3.333); + constructor(); + prime(); nextProbablePrime(); diff -r 8c912c147654 -r d7609b65606b jdk/test/java/nio/channels/FileChannel/TransferToChannel.java --- a/jdk/test/java/nio/channels/FileChannel/TransferToChannel.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/nio/channels/FileChannel/TransferToChannel.java Mon Jan 12 12:52:39 2015 -0800 @@ -25,7 +25,7 @@ * @bug 4652496 * @summary Test transferTo with different target channels * @run main TransferToChannel - * @run main/othervm -Djdk.net.enableFastFileTransfer TransferToChannel + * @run main/othervm -Djdk.nio.enableFastFileTransfer TransferToChannel */ import java.nio.channels.FileChannel; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/checkActivateRef/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/checkActivateRef/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/checkActivateRef/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -4,8 +4,8 @@ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; - // test needs to communicate with the activation system - permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; permission java.lang.RuntimePermission "getClassLoader"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/checkAnnotations/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/checkAnnotations/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/checkAnnotations/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,10 +1,9 @@ /* - * security policy used by activation groups. + * security policy used by activation groups */ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // test needs to communicate with the activation system permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/checkRegisterInLog/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -4,10 +4,6 @@ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // allow remote objects to be exported on arbitrary ports. - permission java.net.SocketPermission "*:1024-", "connect,accept"; - - // allow exporting object with non-public remote interface - permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe"; + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/createPrivateActivable/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/createPrivateActivable/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,13 +1,9 @@ /* - * security policy used activation groups + * security policy used by activation groups */ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // test needs to communicate with the activation system permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; - - // allow exporting object with non-public remote interface - permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/downloadParameterClass/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/downloadParameterClass/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,14 +1,15 @@ /* - * security policy used exec'ed activation groups + * security policy used by activation groups */ grant { + permission java.io.FilePermission "..${/}..${/}test.props", "read"; + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; + // need to load custom security manager and activation group from a new codebase permission java.io.FilePermission ".${/}codebase1", "read,write,delete"; permission java.io.FilePermission ".${/}codebase1${/}-", "read,write"; permission java.io.FilePermission ".${/}codebase2", "read,write,delete"; permission java.io.FilePermission ".${/}codebase2${/}-", "read,write,delete"; - - // allow remote objects to be exported on arbitrary ports. - permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/elucidateNoSuchMethod/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,12 +1,13 @@ /* - * security policy used activation groups + * security policy used by activation groups */ grant { + permission java.io.FilePermission "..${/}..${/}test.props", "read"; + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; + // Needed because of bug#: 4182104 permission java.lang.RuntimePermission "modifyThreadGroup"; permission java.lang.RuntimePermission "modifyThread"; - - // allow remote objects to be exported on arbitrary ports. - permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/extLoadedImpl/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/extLoadedImpl/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,8 +1,9 @@ /* - * security policy used exec'ed activation groups + * security policy used by activation groups */ grant { - // allow remote objects to be exported on arbitrary ports. + permission java.io.FilePermission "..${/}..${/}test.props", "read"; permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/forceLogSnapshot/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -3,9 +3,7 @@ */ grant { - // allow remote objects to be exported on arbitrary ports. + permission java.io.FilePermission "..${/}..${/}test.props", "read"; permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; - - // allow exporting object with non-public remote interface - permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/inactiveGroup/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/inactiveGroup/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/inactiveGroup/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -4,10 +4,6 @@ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // allow remote objects to be exported on arbitrary ports. permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; - - // allow exporting object with non-public remote interface - permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/nestedActivate/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/nestedActivate/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/nestedActivate/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,13 +1,9 @@ /* - * security policy used by test activation groups + * security policy used by activation groups */ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // allow remote objects to be exported on arbitrary ports. permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; - - // allow exporting of non-public remote interface - permission java.rmi.RMIPermission "exportRemoteInterface.ActivateMe"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/nonExistentActivatable/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -4,7 +4,6 @@ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // allow remote objects to be exported on arbitrary ports. permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/restartCrashedService/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/restartCrashedService/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/restartCrashedService/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,8 +1,9 @@ /* - * security policy used by test activation groups + * security policy used by activation groups */ grant { - // test needs to communicate with the activation system + permission java.io.FilePermission "..${/}..${/}test.props", "read"; permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/restartLatecomer/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/restartLatecomer/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/restartLatecomer/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -3,6 +3,7 @@ */ grant { - // allow remote objects to be exported on arbitrary ports. + permission java.io.FilePermission "..${/}..${/}test.props", "read"; permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/restartService/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/restartService/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/restartService/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -3,6 +3,7 @@ */ grant { - // allow remote objects to be exported on arbitrary ports. + permission java.io.FilePermission "..${/}..${/}test.props", "read"; permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/shutdownGracefully/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/shutdownGracefully/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,10 +1,9 @@ /* - * security policy used activation groups + * security policy used by activation groups */ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // test needs to communicate with the activation system permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/Activatable/unregisterInactive/group.security.policy --- a/jdk/test/java/rmi/activation/Activatable/unregisterInactive/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/Activatable/unregisterInactive/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -4,7 +4,6 @@ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // allow remote objects to be exported on arbitrary ports. permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/ActivateFailedException/activateFails/group.security.policy --- a/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/ActivateFailedException/activateFails/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,8 +1,9 @@ /* - * security policy used activation groups + * security policy used by activation groups */ grant { - // test needs to communicate with the activation system + permission java.io.FilePermission "..${/}..${/}test.props", "read"; permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/group.security.policy --- a/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/ActivationGroup/downloadActivationGroup/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,10 +1,11 @@ /* - * security policy used by downloaded activation group + * security policy used by activation groups */ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; permission java.lang.RuntimePermission "accessClassInPackage.sun.rmi.server"; - permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/group.security.policy --- a/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/ActivationSystem/modifyDescriptor/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -4,10 +4,6 @@ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // accomodate property used by this test. - permission java.util.PropertyPermission "test.message", "read"; - - // test needs to communicate with the activation system permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/group.security.policy --- a/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/ActivationSystem/stubClassesPermitted/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,13 +1,11 @@ /* - * security policy used by activation groups. + * security policy used by activation groups */ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // give the group permission to create a class that the main test process can not create - permission java.lang.RuntimePermission "accessClassInPackage.sun.security.provider"; + permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; - // test needs to communicate with the activation system - permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.lang.RuntimePermission "accessClassInPackage.sun.security.provider"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy --- a/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/ActivationSystem/unregisterGroup/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -4,8 +4,6 @@ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // test needs to communicate with the activation system permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; - permission java.util.PropertyPermission "unregisterGroup.port", "read"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/activation/CommandEnvironment/group.security.policy --- a/jdk/test/java/rmi/activation/CommandEnvironment/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/activation/CommandEnvironment/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,8 +1,9 @@ /* - * security policy used by activation groups. + * security policy used by activation groups */ grant { - // test needs to communicate with the activation system + permission java.io.FilePermission "..${/}..${/}test.props", "read"; permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/group.security.policy --- a/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/group.security.policy Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/server/RMISocketFactory/useSocketFactory/activatable/group.security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -1,11 +1,9 @@ /* - * security policy used by the rmid process exec'ed by a running - * instance of the test. + * security policy used by activation groups */ grant { permission java.io.FilePermission "..${/}..${/}test.props", "read"; - - // test needs to communicate with the activation system permission java.net.SocketPermission "*:1024-", "connect,accept,listen"; + permission java.util.PropertyPermission "test.*", "read"; }; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java --- a/jdk/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/server/RemoteServer/setLogPermission/SetLogPermission.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2002, 2008, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2002, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,7 +27,7 @@ * The RemoteServer.setLog method requires * java.util.log.LoggingPermission("control"). * @author Ann Wollrath - * @run main/othervm/policy=java.policy SetLogPermission + * @run main/othervm/policy=security.policy SetLogPermission */ import java.rmi.server.RemoteServer; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/server/RemoteServer/setLogPermission/java.policy --- a/jdk/test/java/rmi/server/RemoteServer/setLogPermission/java.policy Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,3 +0,0 @@ -grant { - permission java.util.logging.LoggingPermission "control"; -}; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/server/RemoteServer/setLogPermission/security.policy --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/java/rmi/server/RemoteServer/setLogPermission/security.policy Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,3 @@ +grant { + permission java.util.logging.LoggingPermission "control"; +}; diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/testlibrary/ActivationLibrary.java --- a/jdk/test/java/rmi/testlibrary/ActivationLibrary.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/testlibrary/ActivationLibrary.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -40,20 +40,6 @@ * objects. */ public class ActivationLibrary { - /** time safeDestroy should wait before failing on shutdown rmid */ - private static final int SAFE_WAIT_TIME; - static { - int slopFactor = 1; - try { - slopFactor = Integer.valueOf( - TestLibrary.getExtraProperty("jcov.sleep.multiplier","1")); - } catch (NumberFormatException ignore) {} - SAFE_WAIT_TIME = 60000 * slopFactor; - } - - private static final String SYSTEM_NAME = - ActivationSystem.class.getName(); - private static void mesg(Object mesg) { System.err.println("ACTIVATION_LIBRARY: " + mesg.toString()); } @@ -63,20 +49,19 @@ */ public static void deactivate(Remote remote, ActivationID id) { - // We do as much as 50 deactivation trials, each separated by - // at least 100 milliseconds sleep time (max sleep time of 5 secs). - final long deactivateSleepTime = 100; - long stopTime = System.currentTimeMillis() + deactivateSleepTime * 50; - while (System.currentTimeMillis() < stopTime) { + final long POLLTIME_MS = 100L; + final long DEACTIVATE_TIME_MS = 30_000L; + + long startTime = System.currentTimeMillis(); + long deadline = TestLibrary.computeDeadline(startTime, DEACTIVATE_TIME_MS); + + while (System.currentTimeMillis() < deadline) { try { if (Activatable.inactive(id) == true) { mesg("inactive successful"); return; } else { - mesg("inactive trial failed. Sleeping " + - deactivateSleepTime + - " milliseconds before next trial"); - Thread.sleep(deactivateSleepTime); + Thread.sleep(POLLTIME_MS); } } catch (InterruptedException e) { Thread.currentThread().interrupt(); @@ -95,7 +80,8 @@ } } - mesg("unable to inactivate after several attempts"); + mesg("unable to inactivate after " + + (System.currentTimeMillis() - startTime) + "ms."); mesg("unexporting object forcibly instead"); try { diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/testlibrary/JavaVM.java --- a/jdk/test/java/rmi/testlibrary/JavaVM.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/testlibrary/JavaVM.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -194,7 +194,7 @@ throws InterruptedException, TimeoutException { if (vm == null) throw new IllegalStateException("can't wait for JavaVM that isn't running"); - long deadline = computeDeadline(System.currentTimeMillis(), timeout); + long deadline = TestLibrary.computeDeadline(System.currentTimeMillis(), timeout); while (true) { try { @@ -218,21 +218,4 @@ start(); return waitFor(); } - - /** - * Computes a deadline from a timestamp and a timeout value. - * Maximum timeout (before multipliers are applied) is one hour. - */ - public static long computeDeadline(long timestamp, long timeout) { - final long MAX_TIMEOUT_MS = 3_600_000L; - - if (timeout < 0L || timeout > MAX_TIMEOUT_MS) { - throw new IllegalArgumentException("timeout " + timeout + "ms out of range"); - } - - // TODO apply test.timeout.factor (and possibly jcov.sleep.multiplier) - // here instead of upstream - - return timestamp + timeout; - } } diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/testlibrary/RMID.java --- a/jdk/test/java/rmi/testlibrary/RMID.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/testlibrary/RMID.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -249,15 +249,15 @@ mesg("Starting rmid on port " + port + "."); super.start(); - int slopFactor = 1; - try { - slopFactor = Integer.valueOf( - TestLibrary.getExtraProperty("jcov.sleep.multiplier","1")); - } catch (NumberFormatException ignore) {} - waitTime = waitTime * slopFactor; + // int slopFactor = 1; + // try { + // slopFactor = Integer.valueOf( + // TestLibrary.getExtraProperty("jcov.sleep.multiplier","1")); + // } catch (NumberFormatException ignore) {} + // waitTime = waitTime * slopFactor; long startTime = System.currentTimeMillis(); - long deadline = computeDeadline(startTime, waitTime); + long deadline = TestLibrary.computeDeadline(startTime, waitTime); while (true) { try { diff -r 8c912c147654 -r d7609b65606b jdk/test/java/rmi/testlibrary/TestLibrary.java --- a/jdk/test/java/rmi/testlibrary/TestLibrary.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/rmi/testlibrary/TestLibrary.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1998, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1998, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -135,7 +135,8 @@ */ public static boolean checkIfRegistryRunning(int port, int msTimeout) { - long stopTime = System.currentTimeMillis() + msTimeout; + final long POLLTIME_MS = 100L; + long stopTime = computeDeadline(System.currentTimeMillis(), msTimeout); do { try { Registry r = LocateRegistry.getRegistry(port); @@ -145,12 +146,12 @@ } catch (RemoteException e) { // problem - not ready ? Try again try { - Thread.sleep(500); + Thread.sleep(POLLTIME_MS); } catch (InterruptedException ie) { // not expected } } - } while (stopTime > System.currentTimeMillis()); + } while (System.currentTimeMillis() < stopTime); return false; } @@ -169,6 +170,31 @@ } } + public static double getTimeoutFactor() { + String prop = getProperty("test.timeout.factor", "1.0"); + double timeoutFactor = 1.0; + + try { + timeoutFactor = Double.parseDouble(prop); + } catch (NumberFormatException ignore) { } + + return timeoutFactor; + } + + /** + * Computes a deadline from a timestamp and a timeout value. + * Maximum timeout (before multipliers are applied) is one hour. + */ + public static long computeDeadline(long timestamp, long timeout) { + final long MAX_TIMEOUT_MS = 3_600_000L; + + if (timeout < 0L || timeout > MAX_TIMEOUT_MS) { + throw new IllegalArgumentException("timeout " + timeout + "ms out of range"); + } + + return timestamp + (long)(timeout * getTimeoutFactor()); + } + /** * Property mutators */ diff -r 8c912c147654 -r d7609b65606b jdk/test/java/util/Formatter/Basic-X.java.template --- a/jdk/test/java/util/Formatter/Basic-X.java.template Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/util/Formatter/Basic-X.java.template Mon Jan 12 12:52:39 2015 -0800 @@ -1154,6 +1154,10 @@ test("%.5f", "0.99960", val); test("%.6f", "0.999600", val); + val = new BigDecimal(BigInteger.ZERO, 6); + test("%.4f", "0.0000", val); + val = new BigDecimal(BigInteger.ZERO, -6); + test("%.4f", "0.0000", val); #end[BigDecimal] #if[float] diff -r 8c912c147654 -r d7609b65606b jdk/test/java/util/Formatter/Basic.java --- a/jdk/test/java/util/Formatter/Basic.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/util/Formatter/Basic.java Mon Jan 12 12:52:39 2015 -0800 @@ -26,6 +26,7 @@ * @bug 4906370 4962433 4973103 4989961 5005818 5031150 4970931 4989491 5002937 * 5005104 5007745 5061412 5055180 5066788 5088703 6317248 6318369 6320122 * 6344623 6369500 6534606 6282094 6286592 6476425 5063507 6469160 6476168 + * 8059175 * * @run shell/timeout=240 Basic.sh */ diff -r 8c912c147654 -r d7609b65606b jdk/test/java/util/Formatter/BasicBigDecimal.java --- a/jdk/test/java/util/Formatter/BasicBigDecimal.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/java/util/Formatter/BasicBigDecimal.java Mon Jan 12 12:52:39 2015 -0800 @@ -1154,6 +1154,11 @@ test("%.5f", "0.99960", val); test("%.6f", "0.999600", val); + val = new BigDecimal(BigInteger.ZERO, 6); + test("%.4f", "0.0000", val); + + val = new BigDecimal(BigInteger.ZERO, -6); + test("%.4f", "0.0000", val); diff -r 8c912c147654 -r d7609b65606b jdk/test/javax/crypto/KeyGenerator/TestKGParity.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/crypto/KeyGenerator/TestKGParity.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,121 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.PrintStream; +import java.lang.String; +import java.lang.System; +import java.security.Provider; +import java.security.SecureRandom; +import java.security.Security; +import javax.crypto.KeyGenerator; +import static java.lang.System.out; + +/* + * @test + * @bug 8048607 + * @compile ../../../com/sun/crypto/provider/Cipher/DES/TestUtility.java + * @summary Test key generation of DES and DESEDE + */ +public class TestKGParity { + + private static final String[] ALGORITHM_ARR = { + "deS", "DesEDE" + }; + + public static void main(String argv[]) throws Exception { + + TestKGParity test = new TestKGParity(); + test.run(); + } + + private void run() throws Exception { + Provider[] providers = Security.getProviders(); + for (Provider p : providers) { + String prvName = p.getName(); + if (prvName.startsWith("SunJCE") + || prvName.startsWith("SunPKCS11-")) { + for (String algorithm : ALGORITHM_ARR) { + if (!runTest(p, algorithm)) { + throw new RuntimeException( + "Test failed with provider/algorithm:" + + p.getName() + "/" + algorithm); + } else { + out.println("Test passed with provider/algorithm:" + + p.getName() + "/" + algorithm); + } + } + } + } + } + + public boolean runTest(Provider p, String algo) throws Exception { + byte[] keyValue = null; + try { + // Initialization + SecureRandom sRdm = new SecureRandom(); + KeyGenerator kg = KeyGenerator.getInstance(algo, p); + kg.init(sRdm); + + // Generate a SecretKey and retrieve its value + keyValue = kg.generateKey().getEncoded(); + + // Verify its parity in the unit of byte + for (int i = 0; i < keyValue.length; i++) { + if (!checkParity(keyValue[i])) { + out.println("Testing: " + + p.getName() + + "/" + + algo + + " failed when verify its parity in the unit of byte:" + + TestUtility.hexDump(keyValue, i)); + return false; + } + } + return true; + } catch (Exception ex) { + out.println("Testing: " + p.getName() + "/" + algo + + " failed with unexpected exception"); + ex.printStackTrace(); + throw ex; + } + } + + private boolean checkParity(byte keyByte) { + boolean even = false; + byte[] PARITY_BIT_MASK = { + (byte) 0x40, (byte) 0x20, (byte) 0x10, (byte) 0x08, + (byte) 0x04, (byte) 0x02, (byte) 0x01 + }; + + for (int i = 0; i < 7; i++) { + if ((keyByte & PARITY_BIT_MASK[i]) > 0) { + even = !even; + } + } + if (keyByte < 0) { + even = !even; + } + + return even; + } +} diff -r 8c912c147654 -r d7609b65606b jdk/test/javax/management/remote/mandatory/notif/NotificationBufferDeadlockTest.java --- a/jdk/test/javax/management/remote/mandatory/notif/NotificationBufferDeadlockTest.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/javax/management/remote/mandatory/notif/NotificationBufferDeadlockTest.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,7 +24,8 @@ /* * @test * @bug 6239400 - * @summary Tests NotificationBuffer doesn't hold locks when adding listeners. + * @summary Tests NotificationBuffer doesn't hold locks when adding listeners, + * if test times out then deadlock is suspected. * @author Eamonn McManus * @run clean NotificationBufferDeadlockTest * @run build NotificationBufferDeadlockTest @@ -38,6 +39,7 @@ import java.util.List; import java.util.Set; import java.util.Vector; +import java.util.concurrent.CountDownLatch; import javax.management.*; import javax.management.remote.*; @@ -173,9 +175,7 @@ for (ObjectName name : names) mbsc.invoke(name, "send", null, null); - if (!countListener.waiting(MAX_WAITING_TIME)) { - return "did not get " + names.size() + " notifs as expected\n"; - } + countListener.waiting(); if (!sources.containsAll(names)) return "missing names: " + sources; @@ -202,13 +202,13 @@ } }; t.start(); + System.out.println("DeadlockTest-addNotificationListener waiting for the sending thread to die..."); try { - t.join(5000L); + t.join(); //if times out here then deadlock is suspected + System.out.println("DeadlockTest-addNotificationListener OK."); } catch (Exception e) { thisFailure = "Join exception: " + e; } - if (t.isAlive()) - thisFailure = "Deadlock detected"; } public void send() { @@ -244,9 +244,9 @@ } }; t.start(); - t.join(5000); - if (t.isAlive()) - failure = "Query deadlock detected"; + System.out.println("CreateDuringQueryInvocationHandler-createMBeanIfQuery waiting for the creating thread to die..."); + t.join(); // if times out here then deadlock is suspected + System.out.println("CreateDuringQueryInvocationHandler-createMBeanIfQuery OK"); } } @@ -264,50 +264,30 @@ private static class MyListener implements NotificationListener { public MyListener(int waitNB) { - this.waitNB= waitNB; + count = new CountDownLatch(waitNB); } public void handleNotification(Notification n, Object h) { - System.out.println("MyListener got: "+n.getSource()+" "+n.getType()); + System.out.println("MyListener got: " + n.getSource() + " " + n.getType()); - synchronized(this) { - if (TESTING_TYPE.equals(n.getType())) { - sources.add((ObjectName) n.getSource()); - - if (sources.size() == waitNB) { - this.notifyAll(); - } - } + if (TESTING_TYPE.equals(n.getType())) { + sources.add((ObjectName) n.getSource()); + count.countDown(); } } - public boolean waiting(long timeout) { - final long startTime = System.currentTimeMillis(); - long toWait = timeout; - - synchronized(this) { - while(sources.size() < waitNB && toWait > 0) { - try { - this.wait(toWait); - } catch (InterruptedException ire) { - break; - } - - toWait = timeout - - (System.currentTimeMillis() - startTime); - } - } - - return sources.size() == waitNB; + public void waiting() throws InterruptedException { + System.out.println("MyListener-waiting ..."); + count.await(); // if times out here then deadlock is suspected + System.out.println("MyListener-waiting done!"); } - private final int waitNB; + private final CountDownLatch count; } static String thisFailure; static String failure; static int nextNameIndex; - static final long MAX_WAITING_TIME = 10000; private static MyListener countListener; private static final List sources = new Vector(); diff -r 8c912c147654 -r d7609b65606b jdk/test/javax/xml/crypto/dsig/GenerationTests.java --- a/jdk/test/javax/xml/crypto/dsig/GenerationTests.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/javax/xml/crypto/dsig/GenerationTests.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -24,6 +24,7 @@ /** * @test * @bug 4635230 6283345 6303830 6824440 6867348 7094155 8038184 8038349 8046949 + * 8046724 * @summary Basic unit tests for generating XML Signatures with JSR 105 * @compile -XDignore.symbol.file KeySelectors.java SignatureValidator.java * X509KeySelector.java GenerationTests.java @@ -45,6 +46,13 @@ import java.security.spec.KeySpec; import java.security.spec.DSAPrivateKeySpec; import java.security.spec.DSAPublicKeySpec; +import java.security.spec.ECField; +import java.security.spec.ECFieldFp; +import java.security.spec.ECParameterSpec; +import java.security.spec.ECPoint; +import java.security.spec.ECPrivateKeySpec; +import java.security.spec.ECPublicKeySpec; +import java.security.spec.EllipticCurve; import java.security.spec.RSAPrivateKeySpec; import java.security.spec.RSAPublicKeySpec; import java.util.*; @@ -81,9 +89,10 @@ private static DocumentBuilder db; private static CanonicalizationMethod withoutComments; private static SignatureMethod dsaSha1, dsaSha256, rsaSha1, - rsaSha256, rsaSha384, rsaSha512; + rsaSha256, rsaSha384, rsaSha512, + ecdsaSha1; private static DigestMethod sha1, sha256, sha384, sha512; - private static KeyInfo dsa1024, dsa2048, rsa, rsa1024; + private static KeyInfo dsa1024, dsa2048, rsa, rsa1024, p256ki; private static KeySelector kvks = new KeySelectors.KeyValueKeySelector(); private static KeySelector sks; private static Key signingKey; @@ -121,6 +130,7 @@ test_create_signature_enveloping_hmac_sha384(); test_create_signature_enveloping_hmac_sha512(); test_create_signature_enveloping_rsa(); + test_create_signature_enveloping_p256_sha1(); test_create_signature_external_b64_dsa(); test_create_signature_external_dsa(); test_create_signature_keyname(); @@ -175,6 +185,8 @@ (kifac.newKeyValue(getPublicKey("RSA", 512)))); rsa1024 = kifac.newKeyInfo(Collections.singletonList (kifac.newKeyValue(getPublicKey("RSA", 1024)))); + p256ki = kifac.newKeyInfo(Collections.singletonList + (kifac.newKeyValue(getECPublicKey()))); rsaSha1 = fac.newSignatureMethod(SignatureMethod.RSA_SHA1, null); rsaSha256 = fac.newSignatureMethod ("http://www.w3.org/2001/04/xmldsig-more#rsa-sha256", null); @@ -182,6 +194,8 @@ ("http://www.w3.org/2001/04/xmldsig-more#rsa-sha384", null); rsaSha512 = fac.newSignatureMethod ("http://www.w3.org/2001/04/xmldsig-more#rsa-sha512", null); + ecdsaSha1 = fac.newSignatureMethod + ("http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1", null); sks = new KeySelectors.SecretKeySelector("secret".getBytes("ASCII")); httpUd = new HttpURIDereferencer(); @@ -342,6 +356,13 @@ System.out.println(); } + static void test_create_signature_enveloping_p256_sha1() throws Exception { + System.out.println("* Generating signature-enveloping-p256-sha1.xml"); + test_create_signature_enveloping(sha1, ecdsaSha1, p256ki, + getECPrivateKey(), kvks, false); + System.out.println(); + } + static void test_create_signature_external_b64_dsa() throws Exception { System.out.println("* Generating signature-external-b64-dsa.xml"); test_create_signature_external(dsaSha1, dsa1024, signingKey, kvks, true); @@ -1168,7 +1189,42 @@ "237008997971129772408397621801631622129297063463868593083106979716" + "204903524890556839550490384015324575598723478554854070823335021842" + "210112348400928769"; + private static final String EC_X = + "335863644451761614592446380116804721648611739647823420286081723541" + + "6166183710"; + private static final String EC_Y = + "951559601159729477487064127150143688502130342917782252098602422796" + + "95457910701"; + private static final String EC_S = + "425976209773168452211813225517384419928639977904006759709292218082" + + "7440083936"; + private static final ECParameterSpec EC_PARAMS; + static { + final String ec_sfield, ec_a, ec_b, ec_gx, ec_gy, ec_n; + ec_sfield = + "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFF"; + ec_a = + "FFFFFFFF00000001000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFC"; + ec_b = + "5AC635D8AA3A93E7B3EBBD55769886BC651D06B0CC53B0F63BCE3C3E27D2604B"; + ec_gx = + "6B17D1F2E12C4247F8BCE6E563A440F277037D812DEB33A0F4A13945D898C296"; + ec_gy = + "4FE342E2FE1A7F9B8EE7EB4A7C0F9E162BCE33576B315ECECBB6406837BF51F5"; + ec_n = + "FFFFFFFF00000000FFFFFFFFFFFFFFFFBCE6FAADA7179E84F3B9CAC2FC632551"; + final int ec_h = 1; + final ECField ec_field = new ECFieldFp(bigInt(ec_sfield)); + final EllipticCurve ec_curve = new EllipticCurve(ec_field, + bigInt(ec_a), bigInt(ec_b)); + final ECPoint ec_g = new ECPoint(bigInt(ec_gx), bigInt(ec_gy)); + EC_PARAMS = new ECParameterSpec(ec_curve, ec_g, bigInt(ec_n), ec_h); + } + + private static BigInteger bigInt(String s) { + return new BigInteger(s, 16); + } private static PublicKey getPublicKey(String algo, int keysize) throws Exception { KeyFactory kf = KeyFactory.getInstance(algo); @@ -1197,6 +1253,14 @@ return kf.generatePublic(kspec); } + private static PublicKey getECPublicKey() throws Exception { + KeyFactory kf = KeyFactory.getInstance("EC"); + KeySpec kspec = new ECPublicKeySpec(new ECPoint(new BigInteger(EC_X), + new BigInteger(EC_Y)), + EC_PARAMS); + return kf.generatePublic(kspec); + } + private static PrivateKey getPrivateKey(String algo, int keysize) throws Exception { KeyFactory kf = KeyFactory.getInstance(algo); @@ -1223,6 +1287,12 @@ return kf.generatePrivate(kspec); } + private static PrivateKey getECPrivateKey() throws Exception { + KeyFactory kf = KeyFactory.getInstance("EC"); + KeySpec kspec = new ECPrivateKeySpec(new BigInteger(EC_S), EC_PARAMS); + return kf.generatePrivate(kspec); + } + private static SecretKey getSecretKey(final byte[] secret) { return new SecretKey() { public String getFormat() { return "RAW"; } diff -r 8c912c147654 -r d7609b65606b jdk/test/javax/xml/crypto/dsig/KeySelectors.java --- a/jdk/test/javax/xml/crypto/dsig/KeySelectors.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/javax/xml/crypto/dsig/KeySelectors.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -166,7 +166,6 @@ throw new KeySelectorException("No KeyValue element found!"); } - //@@@FIXME: this should also work for key types other than DSA/RSA static boolean algEquals(String algURI, String algName) { if (algName.equalsIgnoreCase("DSA") && algURI.equals(SignatureMethod.DSA_SHA1) || @@ -181,6 +180,10 @@ algURI.equals ("http://www.w3.org/2001/04/xmldsig-more#rsa-sha512"))) { return true; + } else if (algName.equalsIgnoreCase("EC") && + (algURI.equals + ("http://www.w3.org/2001/04/xmldsig-more#ecdsa-sha1"))) { + return true; } else { return false; } diff -r 8c912c147654 -r d7609b65606b jdk/test/javax/xml/crypto/dsig/ValidationTests.java --- a/jdk/test/javax/xml/crypto/dsig/ValidationTests.java Mon Jan 12 11:46:43 2015 -0800 +++ b/jdk/test/javax/xml/crypto/dsig/ValidationTests.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /** * @test - * @bug 4635230 6365103 6366054 6824440 7131084 + * @bug 4635230 6365103 6366054 6824440 7131084 8046724 * @summary Basic unit tests for validating XML Signatures with JSR 105 * @compile -XDignore.symbol.file KeySelectors.java SignatureValidator.java * X509KeySelector.java ValidationTests.java @@ -90,6 +90,7 @@ new Test("signature-enveloping-b64-dsa.xml", KVKS), new Test("signature-enveloping-dsa.xml", KVKS), new Test("signature-enveloping-rsa.xml", KVKS), + new Test("signature-enveloping-p256-sha1.xml", KVKS), new Test("signature-enveloping-hmac-sha1.xml", SKKS), new Test("signature-external-dsa.xml", KVKS), new Test("signature-external-b64-dsa.xml", KVKS), diff -r 8c912c147654 -r d7609b65606b jdk/test/javax/xml/crypto/dsig/data/signature-enveloping-p256-sha1.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/xml/crypto/dsig/data/signature-enveloping-p256-sha1.xml Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,3 @@ +7/XTsHaBSOnJ/jXD5v0zL6VKYsk=WiF/Hd0s7BiH36Ds/1iJcbKiXOUVBSGFteuTjXwBbezR43NAwpMmMX5c1su0A9hG9rVVzE/1DOlO +vuDVLBBblg==BAds672US3sCYunM2k2bEQLbuRxdQlNTvq+5fitOpDMe0mBdZV4J3yZaG0taziYIuAT9GJGfds+q +xtXOCNWe/60=some text \ No newline at end of file diff -r 8c912c147654 -r d7609b65606b langtools/.hgtags --- a/langtools/.hgtags Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/.hgtags Mon Jan 12 12:52:39 2015 -0800 @@ -287,3 +287,4 @@ 23a3a063a906a91ba696d792f0eeabf157cd2f86 jdk9-b42 6a06008aec10d32898ca665685f531c681b28f5f jdk9-b43 de2ce70d907c9f227b802cea29285bece5194cd5 jdk9-b44 +73bbdcf236b297a0c1b8875f2eeba65eaf7ade60 jdk9-b45 diff -r 8c912c147654 -r d7609b65606b langtools/make/Tools.gmk --- a/langtools/make/Tools.gmk Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/make/Tools.gmk Mon Jan 12 12:52:39 2015 -0800 @@ -39,7 +39,7 @@ DISABLE_SJAVAC := true, \ ADD_JAVAC_FLAGS := -Xprefer:source, \ SRC := $(LANGTOOLS_TOPDIR)/make/tools, \ - INCLUDES := compileproperties, \ + INCLUDES := compileproperties propertiesparser, \ BIN := $(BUILDTOOLS_OUTPUTDIR)/langtools_tools_classes)) all: $(BUILD_TOOLS_LANGTOOLS) diff -r 8c912c147654 -r d7609b65606b langtools/make/build.properties --- a/langtools/make/build.properties Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/make/build.properties Mon Jan 12 12:52:39 2015 -0800 @@ -54,6 +54,9 @@ jdk.javadoc.dependencies=java.base:java.compiler:jdk.compiler jdk.dev.dependencies=java.base:java.compiler:jdk.compiler +javac.resource.includes = \ + com/sun/tools/javac/resources/compiler.properties + #test configuration: jtreg.tests= boot.javac.tests = tools/javac diff -r 8c912c147654 -r d7609b65606b langtools/make/build.xml --- a/langtools/make/build.xml Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/make/build.xml Mon Jan 12 12:52:39 2015 -0800 @@ -527,7 +527,8 @@ + compilation.kind="@{compilation.kind}" + resource.includes="${javac.resource.includes}" /> - + + @@ -583,6 +585,12 @@ + + + + + @@ -644,6 +652,28 @@ + + + + + + + + + + + diff -r 8c912c147654 -r d7609b65606b langtools/make/gensrc/Gensrc-jdk.compiler.gmk --- a/langtools/make/gensrc/Gensrc-jdk.compiler.gmk Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/make/gensrc/Gensrc-jdk.compiler.gmk Mon Jan 12 12:52:39 2015 -0800 @@ -37,4 +37,7 @@ $(eval $(call SetupCompileProperties,COMPILE_PROPERTIES,\ $(JAVAC_VERSION) $(JAVAH_VERSION) $(JAVAP_VERSION))) -all: $(COMPILE_PROPERTIES) +$(eval $(call SetupParseProperties,PARSE_PROPERTIES,\ + com/sun/tools/javac/resources/compiler.properties)) + +all: $(COMPILE_PROPERTIES) $(PARSE_PROPERTIES) diff -r 8c912c147654 -r d7609b65606b langtools/make/gensrc/GensrcCommon.gmk --- a/langtools/make/gensrc/GensrcCommon.gmk Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/make/gensrc/GensrcCommon.gmk Mon Jan 12 12:52:39 2015 -0800 @@ -35,6 +35,11 @@ TOOL_COMPILEPROPS_CMD := $(JAVA) -cp $(BUILDTOOLS_OUTPUTDIR)/langtools_tools_classes \ compileproperties.CompileProperties -quiet +################################################################################ +# The compileprops tools compiles a properties file into an enum-like class. +TOOL_PARSEPROPS_CMD := $(JAVA) -cp $(BUILDTOOLS_OUTPUTDIR)/langtools_tools_classes \ + propertiesparser.PropertiesParser + ################################################################################ # Sets up a rule that creates a version.properties file in the gensrc output @@ -93,3 +98,32 @@ endef ################################################################################ +# Parse property files in given location and generate a Java-like enum in the gensrc folder. +# Param 1 - Variable to add targets to +# Param 2 - Extra properties files to process +define SetupParseProperties + #property file to generate + PARSEPROPSOURCES := $$(foreach var,$2,$$(addsuffix $$(var),$(LANGTOOLS_TOPDIR)/src/$(MODULE)/share/classes/)) + + PARSEPROPALLDIRS := $$(patsubst $(LANGTOOLS_TOPDIR)/src/%, \ + $(SUPPORT_OUTPUTDIR)/gensrc/%, \ + $$(dir $$(PARSEPROPSOURCES))) + + PARSEPROPDIRS := $$(sort $$(PARSEPROPALLDIRS)) + + PARSEPROPCMDLINE := $$(subst _SPACE_, $$(SPACE), \ + $$(join $$(foreach var,$$(PARSEPROPSOURCES),$$(addprefix -compile_SPACE_,$$(var))), \ + $$(addprefix _SPACE_, $$(PARSEPROPALLDIRS)))) + + # Now setup the rule for the generation of the resource bundles. + $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the_parsed_props: $(PARSEPROPSOURCES) + $(CP) -r $(LANGTOOLS_TOPDIR)/make/tools/propertiesparser/resources $(BUILDTOOLS_OUTPUTDIR)/langtools_tools_classes/propertiesparser/resources + $(MKDIR) -p $$(@D) $$(PARSEPROPDIRS) + $(ECHO) Parsing $$(words $$(PARSEPROPSOURCES)) properties into enum-like class for $(MODULE) + $(TOOL_PARSEPROPS_CMD) $$(PARSEPROPCMDLINE) + $(TOUCH) $$@ + + $$(strip $1) += $(SUPPORT_OUTPUTDIR)/gensrc/$(MODULE)/_the_parsed_props +endef + +################################################################################ diff -r 8c912c147654 -r d7609b65606b langtools/make/intellij/build.xml --- a/langtools/make/intellij/build.xml Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/make/intellij/build.xml Mon Jan 12 12:52:39 2015 -0800 @@ -28,7 +28,7 @@ - + diff -r 8c912c147654 -r d7609b65606b langtools/make/intellij/compiler.xml --- a/langtools/make/intellij/compiler.xml Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/make/intellij/compiler.xml Mon Jan 12 12:52:39 2015 -0800 @@ -5,6 +5,7 @@ + diff -r 8c912c147654 -r d7609b65606b langtools/make/intellij/langtools.iml --- a/langtools/make/intellij/langtools.iml Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/make/intellij/langtools.iml Mon Jan 12 12:52:39 2015 -0800 @@ -1,20 +1,22 @@ - + - - + + + + + - diff -r 8c912c147654 -r d7609b65606b langtools/make/intellij/misc.xml --- a/langtools/make/intellij/misc.xml Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/make/intellij/misc.xml Mon Jan 12 12:52:39 2015 -0800 @@ -3,8 +3,8 @@ - - + + diff -r 8c912c147654 -r d7609b65606b langtools/make/netbeans/langtools/nbproject/project.xml --- a/langtools/make/netbeans/langtools/nbproject/project.xml Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/make/netbeans/langtools/nbproject/project.xml Mon Jan 12 12:52:39 2015 -0800 @@ -478,29 +478,34 @@ ${root}/src/java.base/share/classes + ${root}/build/bootstrap/java.base/gensrc ${root}/build/java.base/classes 1.8 ${root}/src/java.compiler/share/classes + ${root}/build/bootstrap/java.compiler/gensrc ${root}/build/java.base/classes ${root}/build/java.compiler/classes 1.8 ${root}/src/jdk.compiler/share/classes + ${root}/build/bootstrap/jdk.compiler/gensrc ${root}/build/java.base/classes:${root}/build/java.compiler/classes ${root}/build/jdk.compiler/classes 1.8 ${root}/src/jdk.dev/share/classes + ${root}/build/bootstrap/jdk.dev/gensrc ${root}/build/java.base/classes:${root}/build/java.compiler/classes:${root}/build/jdk.compiler/classes ${root}/build/jdk.dev/classes 1.8 ${root}/src/jdk.javadoc/share/classes + ${root}/build/bootstrap/jdk.javadoc/gensrc ${root}/build/java.base/classes:${root}/build/java.compiler/classes:${root}/build/jdk.compiler/classes ${root}/build/jdk.javadoc/classes 1.8 diff -r 8c912c147654 -r d7609b65606b langtools/make/tools/anttasks/PropertiesParserTask.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/make/tools/anttasks/PropertiesParserTask.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package anttasks; + +import java.io.File; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + +import propertiesparser.PropertiesParser; +import propertiesparser.gen.ClassGenerator; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.DirectoryScanner; +import org.apache.tools.ant.Project; +import org.apache.tools.ant.taskdefs.MatchingTask; +import org.apache.tools.ant.types.Path; +import org.apache.tools.ant.types.Resource; + +public class PropertiesParserTask extends MatchingTask { + public void addSrc(Path src) { + if (srcDirs == null) + srcDirs = new Path(getProject()); + srcDirs.add(src); + } + + public void setDestDir(File destDir) { + this.destDir = destDir; + } + + @Override + public void execute() { + List mainOpts = new ArrayList(); + int count = 0; + for (String dir : srcDirs.list()) { + File baseDir = getProject().resolveFile(dir); + DirectoryScanner s = getDirectoryScanner(baseDir); + for (String path : s.getIncludedFiles()) { + if (path.endsWith(".properties")) { + File srcFile = new File(baseDir, path); + String destPath = + path.substring(0, path.lastIndexOf(File.separator) + 1) + + ClassGenerator.toplevelName(srcFile) + ".java"; + File destFile = new File(this.destDir, destPath); + File destDir = destFile.getParentFile(); + // Arguably, the comparison in the next line should be ">", not ">=" + // but that assumes the resolution of the last modified time is fine + // grained enough; in practice, it is better to use ">=". + if (destFile.exists() && destFile.lastModified() >= srcFile.lastModified()) + continue; + destDir.mkdirs(); + mainOpts.add("-compile"); + mainOpts.add(srcFile.getPath()); + mainOpts.add(destDir.getPath()); + count++; + } + } + } + if (mainOpts.size() > 0) { + log("Generating " + count + " resource files to " + destDir, Project.MSG_INFO); + PropertiesParser pp = new PropertiesParser(msg -> log(msg, Project.MSG_INFO)); + boolean ok = pp.run(mainOpts.toArray(new String[mainOpts.size()])); + if (!ok) + throw new BuildException("PropertiesParser failed."); + } + } + + private Path srcDirs; + private File destDir; +} diff -r 8c912c147654 -r d7609b65606b langtools/make/tools/propertiesparser/PropertiesParser.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/make/tools/propertiesparser/PropertiesParser.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package propertiesparser; + +import propertiesparser.parser.MessageFile; +import propertiesparser.gen.ClassGenerator; + +import java.io.BufferedWriter; +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.io.OutputStreamWriter; +import java.io.Writer; +import java.lang.RuntimeException; +import java.lang.Throwable; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Properties; + +/** Translates a .properties file into a .java file containing an enum-like Java class + * which defines static factory methods for all resource keys in a given resource file.

      + * + * Usage: java PropertiesParser -compile [path to .properties file] [output folder where .java file will be written] + * + * @author mcimadamore + */ + +public class PropertiesParser { + + public Logger logger; + + public PropertiesParser(Logger logger) { + this.logger = logger; + } + + public static void main(String[] args) { + PropertiesParser pp = new PropertiesParser(msg -> System.out.println(msg)); + boolean ok = pp.run(args); + if ( !ok ) { + System.exit(1); + } + } + + public static interface Logger { + void info(String msg); + } + + public void info(String msg) { + logger.info(msg); + } + + public boolean run(String[] args) { + Map optionsMap = parseOptions(args); + if (optionsMap.isEmpty()) { + usage(); + return false; + } + try { + optionsMap.forEach((propfile, outfile) -> compilePropertyFile(propfile, outfile)); + return true; + } catch (RuntimeException ex) { + ex.printStackTrace(); + return false; + } + } + + private void compilePropertyFile(String propertyPath, String outPath) { + try { + File propertyFile = new File(propertyPath); + String prefix = propertyFile.getName().split("\\.")[0]; + MessageFile messageFile = new MessageFile(propertyFile, prefix); + new ClassGenerator().generateFactory(messageFile, new File(outPath)); + } catch (Throwable ex) { + throw new RuntimeException(ex); + } + } + + private Map parseOptions(String args[]) { + Map optionsMap = new HashMap<>(args.length); + for ( int i = 0; i < args.length ; i++ ) { + if ( "-compile".equals(args[i]) && i+2 < args.length ) { + optionsMap.put(args[++i], args[++i]); + } else { + return new HashMap<>(); + } + } + return optionsMap; + } + + private void usage() { + info("usage:"); + info(" java PropertiesParser {-compile path_to_properties_file path_to_java_output_dir}"); + info(""); + info("Example:"); + info(" java PropertiesParser -compile resources/test.properties resources"); + } +} diff -r 8c912c147654 -r d7609b65606b langtools/make/tools/propertiesparser/gen/ClassGenerator.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/make/tools/propertiesparser/gen/ClassGenerator.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,419 @@ +package propertiesparser.gen; + +import propertiesparser.parser.Message; +import propertiesparser.parser.MessageFile; +import propertiesparser.parser.MessageInfo; +import propertiesparser.parser.MessageLine; +import propertiesparser.parser.MessageType; +import propertiesparser.parser.MessageType.CompoundType; +import propertiesparser.parser.MessageType.CustomType; +import propertiesparser.parser.MessageType.SimpleType; +import propertiesparser.parser.MessageType.UnionType; +import propertiesparser.parser.MessageType.Visitor; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.InputStream; +import java.text.MessageFormat; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Collections; +import java.util.TreeSet; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.Properties; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +public class ClassGenerator { + + /** Empty string - used to generate indentation padding. */ + private final static String INDENT_STRING = " "; + + /** Default indentation step. */ + private final static int INDENT_WIDTH = 4; + + /** File-backed property file containing basic code stubs. */ + static Properties stubs; + + static { + //init properties from file + stubs = new Properties(); + String resourcePath = "/propertiesparser/resources/templates.properties"; + try (InputStream in = ClassGenerator.class.getResourceAsStream(resourcePath)) { + stubs.load(in); + } catch (IOException ex) { + throw new AssertionError(ex); + } + } + + /** + * Supported stubs in the property file. + */ + enum StubKind { + TOPLEVEL("toplevel.decl"), + FACTORY_CLASS("nested.decl"), + IMPORT("import.decl"), + FACTORY_METHOD_DECL("factory.decl.method"), + FACTORY_METHOD_ARG("factory.decl.method.arg"), + FACTORY_METHOD_BODY("factory.decl.method.body"), + FACTORY_FIELD("factory.decl.field"), + WILDCARDS_EXTENDS("wildcards.extends"), + SUPPRESS_WARNINGS("suppress.warnings"); + + /** stub key (as it appears in the property file) */ + String key; + + StubKind(String key) { + this.key = key; + } + + /** + * Subst a list of arguments into a given stub. + */ + String format(Object... args) { + return MessageFormat.format((String)stubs.get(key), args); + } + } + + /** + * Nested factory class kind. There are multiple sub-factories, one for each kind of commonly used + * diagnostics (i.e. error, warnings, note, fragment). An additional category is defined for + * those resource keys whose prefix doesn't match any predefined category. + */ + enum FactoryKind { + ERR("err", "Error", "Errors"), + WARN("warn", "Warning", "Warnings"), + NOTE("note", "Note", "Notes"), + MISC("misc", "Fragment", "Fragments"), + OTHER(null, null, null); + + /** The prefix for this factory kind (i.e. 'err'). */ + String prefix; + + /** The type of the factory method/fields in this class. */ + String keyClazz; + + /** The class name to be used for this factory. */ + String factoryClazz; + + FactoryKind(String prefix, String keyClazz, String factoryClazz) { + this.prefix = prefix; + this.keyClazz = keyClazz; + this.factoryClazz = factoryClazz; + } + + /** + * Utility method for parsing a factory kind from a resource key prefix. + */ + static FactoryKind parseFrom(String prefix) { + for (FactoryKind k : FactoryKind.values()) { + if (k.prefix == null || k.prefix.equals(prefix)) { + return k; + } + } + return null; + } + } + + /** + * Main entry-point: generate a Java enum-like set of nested factory classes into given output + * folder. The factories are populated as mandated by the comments in the input resource file. + */ + public void generateFactory(MessageFile messageFile, File outDir) { + Map>> groupedEntries = + messageFile.messages.entrySet().stream() + .collect(Collectors.groupingBy(e -> FactoryKind.parseFrom(e.getKey().split("\\.")[1]))); + //generate nested classes + List nestedDecls = new ArrayList<>(); + Set importedTypes = new TreeSet<>(); + for (Map.Entry>> entry : groupedEntries.entrySet()) { + if (entry.getKey() == FactoryKind.OTHER) continue; + //emit members + String members = entry.getValue().stream() + .flatMap(e -> generateFactoryMethodsAndFields(e.getKey(), e.getValue()).stream()) + .collect(Collectors.joining("\n\n")); + //emit nested class + String factoryDecl = + StubKind.FACTORY_CLASS.format(entry.getKey().factoryClazz, indent(members, 1)); + nestedDecls.add(indent(factoryDecl, 1)); + //add imports + entry.getValue().stream().forEach(e -> + importedTypes.addAll(importedTypes(e.getValue().getMessageInfo().getTypes()))); + } + String clazz = StubKind.TOPLEVEL.format( + packageName(messageFile.file), + String.join("\n", generateImports(importedTypes)), + toplevelName(messageFile.file), + String.join("\n", nestedDecls)); + try (FileWriter fw = new FileWriter(new File(outDir, toplevelName(messageFile.file) + ".java"))) { + fw.append(clazz); + } catch (Throwable ex) { + throw new AssertionError(ex); + } + } + + /** + * Indent a string to a given level. + */ + String indent(String s, int level) { + return Stream.of(s.split("\n")) + .map(sub -> INDENT_STRING.substring(0, level * INDENT_WIDTH) + sub) + .collect(Collectors.joining("\n")); + } + + /** + * Retrieve package part of given file object. + */ + String packageName(File file) { + String path = file.getAbsolutePath(); + int begin = path.indexOf("com" + File.separatorChar); + String packagePath = path.substring(begin, path.lastIndexOf(File.separatorChar)); + String packageName = packagePath.replace(File.separatorChar, '.'); + return packageName; + } + + /** + * Form the name of the toplevel factory class. + */ + public static String toplevelName(File file) { + return Stream.of(file.getName().split("\\.")) + .map(s -> Character.toUpperCase(s.charAt(0)) + s.substring(1)) + .collect(Collectors.joining("")); + } + + /** + * Generate a list of import declarations given a set of imported types. + */ + List generateImports(Set importedTypes) { + List importDecls = new ArrayList<>(); + for (String it : importedTypes) { + importDecls.add(StubKind.IMPORT.format(it)); + } + return importDecls; + } + + /** + * Generate a list of factory methods/fields to be added to a given factory nested class. + */ + List generateFactoryMethodsAndFields(String key, Message msg) { + MessageInfo msgInfo = msg.getMessageInfo(); + List lines = msg.getLines(false); + String javadoc = lines.stream() + .filter(ml -> !ml.isInfo() && !ml.isEmptyOrComment()) + .map(ml -> ml.text) + .collect(Collectors.joining("\n *")); + String[] keyParts = key.split("\\."); + FactoryKind k = FactoryKind.parseFrom(keyParts[1]); + String factoryName = factoryName(key); + if (msgInfo.getTypes().isEmpty()) { + //generate field + String factoryField = StubKind.FACTORY_FIELD.format(k.keyClazz, factoryName, + "\"" + keyParts[0] + "\"", + "\"" + Stream.of(keyParts).skip(2).collect(Collectors.joining(".")) + "\"", + javadoc); + return Collections.singletonList(factoryField); + } else { + //generate method + List factoryMethods = new ArrayList<>(); + for (List msgTypes : normalizeTypes(0, msgInfo.getTypes())) { + List types = generateTypes(msgTypes); + List argNames = argNames(types.size()); + String suppressionString = needsSuppressWarnings(msgTypes) ? + StubKind.SUPPRESS_WARNINGS.format() : ""; + String factoryMethod = StubKind.FACTORY_METHOD_DECL.format(suppressionString, k.keyClazz, + factoryName, argDecls(types, argNames).stream().collect(Collectors.joining(", ")), + indent(StubKind.FACTORY_METHOD_BODY.format(k.keyClazz, + "\"" + keyParts[0] + "\"", + "\"" + Stream.of(keyParts).skip(2).collect(Collectors.joining(".")) + "\"", + argNames.stream().collect(Collectors.joining(", "))), 1), + javadoc); + factoryMethods.add(factoryMethod); + } + return factoryMethods; + } + } + + /** + * Form the name of a factory method/field given a resource key. + */ + String factoryName(String key) { + return Stream.of(key.split("[\\.-]")) + .skip(2) + .map(s -> Character.toUpperCase(s.charAt(0)) + s.substring(1)) + .collect(Collectors.joining("")); + } + + /** + * Generate a formal parameter list given a list of types and names. + */ + List argDecls(List types, List args) { + List argNames = new ArrayList<>(); + for (int i = 0 ; i < types.size() ; i++) { + argNames.add(types.get(i) + " " + args.get(i)); + } + return argNames; + } + + /** + * Generate a list of formal parameter names given a size. + */ + List argNames(int size) { + List argNames = new ArrayList<>(); + for (int i = 0 ; i < size ; i++) { + argNames.add(StubKind.FACTORY_METHOD_ARG.format(i)); + } + return argNames; + } + + /** + * Convert a (normalized) parsed type into a string-based representation of some Java type. + */ + List generateTypes(List msgTypes) { + return msgTypes.stream().map(t -> t.accept(stringVisitor, null)).collect(Collectors.toList()); + } + //where + Visitor stringVisitor = new Visitor() { + @Override + public String visitCustomType(CustomType t, Void aVoid) { + String customType = t.typeString; + return customType.substring(customType.lastIndexOf('.') + 1); + } + + @Override + public String visitSimpleType(SimpleType t, Void aVoid) { + return t.clazz; + } + + @Override + public String visitCompoundType(CompoundType t, Void aVoid) { + return StubKind.WILDCARDS_EXTENDS.format(t.kind.clazz.clazz, + t.elemtype.accept(this, null)); + } + + @Override + public String visitUnionType(UnionType t, Void aVoid) { + throw new AssertionError("Union types should have been denormalized!"); + } + }; + + /** + * See if any of the parsed types in the given list needs warning suppression. + */ + boolean needsSuppressWarnings(List msgTypes) { + return msgTypes.stream().anyMatch(t -> t.accept(suppressWarningsVisitor, null)); + } + //where + Visitor suppressWarningsVisitor = new Visitor() { + @Override + public Boolean visitCustomType(CustomType t, Void aVoid) { + //play safe + return true; + } + @Override + public Boolean visitSimpleType(SimpleType t, Void aVoid) { + switch (t) { + case LIST: + case SET: + return true; + default: + return false; + } + } + + @Override + public Boolean visitCompoundType(CompoundType t, Void aVoid) { + return t.elemtype.accept(this, null); + } + + @Override + public Boolean visitUnionType(UnionType t, Void aVoid) { + return needsSuppressWarnings(Arrays.asList(t.choices)); + } + }; + + /** + * Retrieve a list of types that need to be imported, so that the factory body can refer + * to the types in the given list using simple names. + */ + Set importedTypes(List msgTypes) { + Set imports = new TreeSet<>(); + msgTypes.forEach(t -> t.accept(importVisitor, imports)); + return imports; + } + //where + Visitor> importVisitor = new Visitor>() { + @Override + public Void visitCustomType(CustomType t, Set imports) { + imports.add(t.typeString); + return null; + } + + @Override + public Void visitSimpleType(SimpleType t, Set imports) { + if (t.qualifier != null) { + imports.add(t.qualifier + "." + t.clazz); + } + return null; + } + + @Override + public Void visitCompoundType(CompoundType t, Set imports) { + visitSimpleType(t.kind.clazz, imports); + t.elemtype.accept(this, imports); + return null; + } + + @Override + public Void visitUnionType(UnionType t, Set imports) { + Stream.of(t.choices).forEach(c -> c.accept(this, imports)); + return null; + } + }; + + /** + * Normalize parsed types in a comment line. If one or more types in the line contains alternatives, + * this routine generate a list of 'overloaded' normalized signatures. + */ + List> normalizeTypes(int idx, List msgTypes) { + if (msgTypes.size() == idx) return Collections.singletonList(Collections.emptyList()); + MessageType head = msgTypes.get(idx); + List> buf = new ArrayList<>(); + for (MessageType alternative : head.accept(normalizeVisitor, null)) { + for (List rest : normalizeTypes(idx + 1, msgTypes)) { + List temp = new ArrayList<>(rest); + temp.add(0, alternative); + buf.add(temp); + } + } + return buf; + } + //where + Visitor, Void> normalizeVisitor = new Visitor, Void>() { + @Override + public List visitCustomType(CustomType t, Void aVoid) { + return Collections.singletonList(t); + } + + @Override + public List visitSimpleType(SimpleType t, Void aVoid) { + return Collections.singletonList(t); + } + + @Override + public List visitCompoundType(CompoundType t, Void aVoid) { + return t.elemtype.accept(this, null).stream() + .map(nt -> new CompoundType(t.kind, nt)) + .collect(Collectors.toList()); + } + + @Override + public List visitUnionType(UnionType t, Void aVoid) { + return Stream.of(t.choices) + .flatMap(t2 -> t2.accept(this, null).stream()) + .collect(Collectors.toList()); + } + }; +} diff -r 8c912c147654 -r d7609b65606b langtools/make/tools/propertiesparser/parser/Message.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/make/tools/propertiesparser/parser/Message.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package propertiesparser.parser; + +import java.util.ArrayList; +import java.util.List; + +/** + * A message within the message file. + * A message is a series of lines containing a "name=value" property, + * optionally preceded by a comment describing the use of placeholders + * such as {0}, {1}, etc within the property value. + */ +public final class Message { + final MessageLine firstLine; + private MessageInfo messageInfo; + + Message(MessageLine l) { + firstLine = l; + } + + /** + * Get the Info object for this message. It may be empty if there + * if no comment preceding the property specification. + */ + public MessageInfo getMessageInfo() { + if (messageInfo == null) { + MessageLine l = firstLine.prev; + if (l != null && l.isInfo()) + messageInfo = new MessageInfo(l.text); + else + messageInfo = MessageInfo.dummyInfo; + } + return messageInfo; + } + + /** + * Get all the lines pertaining to this message. + */ + public List getLines(boolean includeAllPrecedingComments) { + List lines = new ArrayList<>(); + MessageLine l = firstLine; + if (includeAllPrecedingComments) { + // scan back to find end of prev message + while (l.prev != null && l.prev.isEmptyOrComment()) + l = l.prev; + // skip leading blank lines + while (l.text.isEmpty()) + l = l.next; + } else { + if (l.prev != null && l.prev.isInfo()) + l = l.prev; + } + + // include any preceding lines + for ( ; l != firstLine; l = l.next) + lines.add(l); + + // include message lines + for (l = firstLine; l != null && l.hasContinuation(); l = l.next) + lines.add(l); + lines.add(l); + + // include trailing blank line if present + l = l.next; + if (l != null && l.text.isEmpty()) + lines.add(l); + + return lines; + } +} diff -r 8c912c147654 -r d7609b65606b langtools/make/tools/propertiesparser/parser/MessageFile.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/make/tools/propertiesparser/parser/MessageFile.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,60 @@ +/* + * Copyright (c) 2010, 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package propertiesparser.parser; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Paths; +import java.util.*; + +/** + * Class to facilitate manipulating compiler.properties. + */ +public class MessageFile { + + MessageLine firstLine; + public Map messages = new TreeMap<>(); + public File file; + public String keyPrefix; + + public MessageFile(File file, String keyPrefix) throws IOException { + this.file = file; + this.keyPrefix = keyPrefix; + read(file); + } + + final void read(File in) throws IOException { + MessageLine currLine = null; + for (String line : Files.readAllLines(in.toPath())) { + if (currLine == null) + firstLine = currLine = new MessageLine(line); + else + currLine = currLine.append(line); + if (line.startsWith(keyPrefix + ".")) { + int eq = line.indexOf("="); + if (eq > 0) + messages.put(line.substring(0, eq), new Message(currLine)); + } + } + } +} diff -r 8c912c147654 -r d7609b65606b langtools/make/tools/propertiesparser/parser/MessageInfo.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/make/tools/propertiesparser/parser/MessageInfo.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,125 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package propertiesparser.parser; + +import propertiesparser.parser.MessageType.CompoundType; +import propertiesparser.parser.MessageType.OrType; +import propertiesparser.parser.MessageType.SimpleType; +import propertiesparser.parser.MessageType.UnionType; + +import java.util.ArrayList; +import java.util.List; + +/** + * An object to represent the comment that may precede the property + * specification in a Message. + * The comment is modelled as a list of fields, where the fields correspond + * to the placeholder values (e.g. {0}, {1}, etc) within the message value. + */ +public final class MessageInfo { + + /** The fields of the Info object. */ + List types = new ArrayList<>(); + + MessageInfo(String text) throws IllegalArgumentException { + if (text != null) { + if (!text.startsWith("# ")) + throw new IllegalArgumentException(); + String[] segs = text.substring(2).split(", "); + types = new ArrayList<>(); + for (String seg : segs) { + types.add(parseType(seg)); + } + } + } + + public List getTypes() { + return types; + } + + boolean isEmpty() { + return types.isEmpty(); + } + + @Override + public String toString() { + return types.toString(); + } + + /** + * Split the type comment into multiple alternatives (separated by 'or') - then parse each of them + * individually and form an 'or' type. + */ + MessageType parseType(String text) { + int commentStart = text.indexOf("("); + if (commentStart != -1) { + //remove optional comment + text = text.substring(0, commentStart); + } + text = text.substring(text.indexOf(": ") + 2); + String[] alternatives = text.split(" " + OrType.OR_NAME + " "); + MessageType[] types = new MessageType[alternatives.length]; + for (int i = 0 ; i < alternatives.length ; i++) { + types[i] = parseAlternative(alternatives[i].trim()); + } + return types.length > 1 ? + new OrType(types) : types[0]; + } + + /** + * Parse a subset of the type comment; valid matches are simple types, compound types, + * union types and custom types. + */ + MessageType parseAlternative(String text) { + //try with custom types + if (text.charAt(0) == '\'') { + int end = text.indexOf('\'', 1); + return new MessageType.CustomType(text.substring(1, end)); + } + //try with simple types + for (SimpleType st : SimpleType.values()) { + if (text.equals(st.kindName())) { + return st; + } + } + //try with compound types + for (CompoundType.Kind ck : CompoundType.Kind.values()) { + if (text.startsWith(ck.kindName)) { + MessageType elemtype = parseAlternative(text.substring(ck.kindName.length() + 1).trim()); + return new CompoundType(ck, elemtype); + } + } + //try with union types + for (UnionType.Kind uk : UnionType.Kind.values()) { + if (text.startsWith(uk.kindName)) { + return new UnionType(uk); + } + } + //no match - report a warning + System.err.println("WARNING - unrecognized type: " + text); + return SimpleType.UNKNOWN; + } + + /** Dummy message info to be used when no resource key comment is available. */ + static final MessageInfo dummyInfo = new MessageInfo(null); +} diff -r 8c912c147654 -r d7609b65606b langtools/make/tools/propertiesparser/parser/MessageLine.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/make/tools/propertiesparser/parser/MessageLine.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ +package propertiesparser.parser; + +import java.util.regex.Pattern; + +/** + * A line of text within the message file. + * The lines form a doubly linked list for simple navigation. + */ +public class MessageLine { + + static final Pattern emptyOrCommentPattern = Pattern.compile("( *#.*)?"); + static final Pattern typePattern = Pattern.compile("[-\\\\'A-Z\\.a-z ]+( \\([A-Za-z 0-9]+\\))?"); + static final Pattern infoPattern = Pattern.compile(String.format("# ([0-9]+: %s, )*[0-9]+: %s", + typePattern.pattern(), typePattern.pattern())); + + public String text; + MessageLine prev; + MessageLine next; + + MessageLine(String text) { + this.text = text; + } + + public boolean isEmptyOrComment() { + return emptyOrCommentPattern.matcher(text).matches(); + } + + public boolean isInfo() { + return infoPattern.matcher(text).matches(); + } + + boolean hasContinuation() { + return (next != null) && text.endsWith("\\"); + } + + MessageLine append(String text) { + MessageLine l = new MessageLine(text); + append(l); + return l; + } + + void append(MessageLine l) { + assert l.prev == null && l.next == null; + l.prev = this; + l.next = next; + if (next != null) { + next.prev = l; + } + next = l; + } +} diff -r 8c912c147654 -r d7609b65606b langtools/make/tools/propertiesparser/parser/MessageType.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/make/tools/propertiesparser/parser/MessageType.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,250 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package propertiesparser.parser; + +/** + * Common interface to all kinds of diagnostic argument types. + */ +public interface MessageType { + + /** + * Visitor method. + */ + R accept(Visitor v, A a); + + /** + * The type as mentioned in the resource file. + */ + String kindName(); + + /** + * A custom type is a type for which a predefined alternative does not exist. As such, it is an + * handy option when prototyping - but usages of custom types should be avoided in product-quality + * resource file comments. + * + * Example: 'com.sun.tools.javac.code.Flags.Flag' + */ + public static class CustomType implements MessageType { + + /** The string-based representation of this type. */ + public String typeString; + + public CustomType(String typeString) { + this.typeString = typeString; + } + + @Override + public String kindName() { + return typeString; + } + + @Override + public R accept(Visitor v, A a) { + return v.visitCustomType(this, a); + } + } + + /** + * A predefined type. All common types mentioned in the resource file comments are meant to + * be included here. + */ + public enum SimpleType implements MessageType { + + BOOLEAN("boolean", "boolean", null), + FRAGMENT("fragment", "Fragment", null), + DIAGNOSTIC("diagnostic", "JCDiagnostic", "com.sun.tools.javac.util"), + MODIFIER("modifier", "Modifier", "javax.lang.model.element"), + FILE("file", "File", "java.io"), + FILE_OBJECT("file object", "JavaFileObject", "javax.tools"), + NAME("name", "Name", "com.sun.tools.javac.util"), + NUMBER("number", "int", null), + OPTION_NAME("option name", "Option", "com.sun.tools.javac.main"), + SOURCE_VERSION("source version", "Source", "com.sun.tools.javac.code"), + STRING("string", "String", null), + SYMBOL("symbol", "Symbol", "com.sun.tools.javac.code"), + SYMBOL_KIND("symbol kind", "Kind", "com.sun.tools.javac.code.Kinds"), + KIND_NAME("kind name", "KindName", "com.sun.tools.javac.code.Kinds"), + TOKEN("token", "TokenKind", "com.sun.tools.javac.parser.Tokens"), + TYPE("type", "Type", "com.sun.tools.javac.code"), + SET("set", "Set", "java.util"), + LIST("list", "List", "java.util"), + OBJECT("object", "Object", null), + UNUSED("unused", "Void", null), + UNKNOWN("", "UnknownType", null); + + /** name of the predefined type as mentioned in the resource file. */ + public final String kindName; + + /** string-based representation of the type */ + public final String clazz; + + /** type qualifier (might be null) */ + public final String qualifier; + + SimpleType(String kindName, String clazz, String qualifier) { + this.kindName = kindName; + this.clazz = clazz; + this.qualifier = qualifier; + } + + @Override + public String kindName() { + return kindName; + } + + @Override + public R accept(Visitor v, A a) { + return v.visitSimpleType(this, a); + } + } + + /** + * A compound type is a collection of some element type. + * + * Example: list of string + */ + public static class CompoundType implements MessageType { + + /** + * Compound type kind. + */ + public enum Kind { + LIST("list of", SimpleType.LIST), + SET("set of", SimpleType.SET); + + public final String kindName; + public final SimpleType clazz; + + Kind(String kindName, SimpleType clazz) { + this.kindName = kindName; + this.clazz = clazz; + } + } + + /** The compound type kind. */ + public final Kind kind; + + /** The element type. */ + public final MessageType elemtype; + + public CompoundType(Kind kind, MessageType elemtype) { + this.kind = kind; + this.elemtype = elemtype; + } + + @Override + public String kindName() { + return kind.kindName; + } + + @Override + public R accept(Visitor v, A a) { + return v.visitCompoundType(this, a); + } + } + + /** + * A union type represents an alternative between two (or more) types. It can be useful to + * define the type of an argument which can assume multiple (unrelated) values; union types + * are only meant to be used in cases where the alternative comes up frequently enough in the + * resource file comments - in order to avoid cluttered comments. + * + * Example: message segment + */ + public static class UnionType implements MessageType { + + /** + * Union type kind. + */ + public enum Kind { + MESSAGE_SEGMENT("message segment", SimpleType.DIAGNOSTIC, SimpleType.FRAGMENT), + FILE_NAME("file name", SimpleType.FILE, SimpleType.FILE_OBJECT); + + final String kindName; + final SimpleType[] choices; + + Kind(String kindName, SimpleType... choices) { + this.kindName = kindName; + this.choices = choices; + } + } + + /** The union type kind. */ + public final Kind kind; + + /** The union type alternatives. */ + public final MessageType[] choices; + + UnionType(Kind kind) { + this(kind, kind.choices); + } + + protected UnionType(Kind kind, MessageType[] choices) { + this.choices = choices; + this.kind = kind; + } + + @Override + public String kindName() { + return kind.kindName; + } + + @Override + public R accept(Visitor v, A a) { + return v.visitUnionType(this, a); + } + } + + /** + * A subclass of union type representing 'explicit' alternatives in the resource file comments. + * Note: as the token 'or' is parsed with lowest priority, it is not possible, for instance, + * to form a compound type out of an 'or' type. In such cases a plain union type should be used + * instead. + * + * Examples: symbol or type + */ + public static class OrType extends UnionType { + + public static final String OR_NAME = "or"; + + @Override + public String kindName() { + return OR_NAME; + } + + public OrType(MessageType... choices) { + super(null, choices); + } + } + + /** + * Visitor class. + */ + public static abstract class Visitor { + public abstract R visitCustomType(CustomType t, A a); + public abstract R visitSimpleType(SimpleType t, A a); + public abstract R visitCompoundType(CompoundType t, A a); + public abstract R visitUnionType(UnionType t, A a); + } +} diff -r 8c912c147654 -r d7609b65606b langtools/make/tools/propertiesparser/resources/templates.properties --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/make/tools/propertiesparser/resources/templates.properties Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,48 @@ +toplevel.decl=\ + package {0};\n\ + \n\ + {1}\n\ + import com.sun.tools.javac.util.JCDiagnostic.Error;\n\ + import com.sun.tools.javac.util.JCDiagnostic.Warning;\n\ + import com.sun.tools.javac.util.JCDiagnostic.Note;\n\ + import com.sun.tools.javac.util.JCDiagnostic.Fragment;\n\ + \n\ + public class {2} '{'\n\ + {3}\n\ + '}'\n + +import.decl=\ + import {0}; + +nested.decl =\ + public static class {0} '{'\n\ + {1}\n\ + '}' + +factory.decl.method=\ + /**\n\ + ' '* {5}\n\ + ' '*/\n\ + {0}public static {1} {2}({3}) '{'\n\ + {4}\n\ + '}' + +factory.decl.method.arg=\ + arg{0} + +factory.decl.method.body=\ + return new {0}({1}, {2}, {3}); + +factory.decl.field=\ + /**\n\ + ' '* {4}\n\ + ' '*/\n\ + public static final {0} {1} = new {0}({2}, {3}); + +wildcards.extends=\ + {0} + +suppress.warnings=\ + @SuppressWarnings("rawtypes")\n + + diff -r 8c912c147654 -r d7609b65606b langtools/src/java.compiler/share/classes/javax/tools/FileManagerUtils.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/src/java.compiler/share/classes/javax/tools/FileManagerUtils.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package javax.tools; + +import java.io.File; +import java.nio.file.Path; +import java.util.Iterator; + +/** + * Package-private utility methods to convert between files and paths. + * + * @since 1.9 + */ +class FileManagerUtils { + private FileManagerUtils() { } + + static Iterable asPaths(final Iterable files) { + return () -> new Iterator() { + Iterator iter = files.iterator(); + + @Override + public boolean hasNext() { + return iter.hasNext(); + } + + @Override + public Path next() { + return iter.next().toPath(); + } + }; + } + + static Iterable asFiles(final Iterable paths) { + return () -> new Iterator() { + Iterator iter = paths.iterator(); + + @Override + public boolean hasNext() { + return iter.hasNext(); + } + + @Override + public File next() { + Path p = iter.next(); + try { + return p.toFile(); + } catch (UnsupportedOperationException e) { + throw new IllegalArgumentException(p.toString(), e); + } + } + }; + } +} diff -r 8c912c147654 -r d7609b65606b langtools/src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java --- a/langtools/src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/java.compiler/share/classes/javax/tools/StandardJavaFileManager.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2006, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2006, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -27,13 +27,16 @@ import java.io.File; import java.io.IOException; -import java.util.*; +import java.nio.file.Path; +import java.util.Arrays; + +import static javax.tools.FileManagerUtils.*; /** - * File manager based on {@linkplain File java.io.File}. A common way - * to obtain an instance of this class is using {@linkplain - * JavaCompiler#getStandardFileManager - * getStandardFileManager}, for example: + * File manager based on {@linkplain File java.io.File} and {@linkplain Path java.nio.file.Path}. + * + * A common way to obtain an instance of this class is using + * {@linkplain JavaCompiler#getStandardFileManager getStandardFileManager}, for example: * *

        *   JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
      @@ -110,7 +113,7 @@
        *     file:///C:/Documents%20and%20Settings/UncleBob/BobsApp/Test.java
        *   
    4. *
    5. - * jar:///C:/Documents%20and%20Settings/UncleBob/lib/vendorA.jar!com/vendora/LibraryClass.class + * jar:///C:/Documents%20and%20Settings/UncleBob/lib/vendorA.jar!/com/vendora/LibraryClass.class *
    6. * * Whereas these are not (reason in parentheses): @@ -120,7 +123,7 @@ * and depend on the current directory) * *
    7. - * jar:lib/vendorA.jar!com/vendora/LibraryClass.class + * jar:lib/vendorA.jar!/com/vendora/LibraryClass.class * (the first half of the path depends on the current directory, * whereas the component after ! is legal) *
    8. @@ -134,6 +137,10 @@ * * * + *

      All implementations of this interface must support Path objects representing + * files in the {@linkplain java.nio.file.FileSystems#getDefault() default file system.} + * It is recommended that implementations should support Path objects from any filesystem.

      + * * @author Peter von der Ahé * @since 1.6 */ @@ -147,11 +154,12 @@ * @param a a file object * @param b a file object * @return true if the given file objects represent the same - * canonical file or zip file entry; false otherwise + * canonical file, zip file entry or path; false otherwise * * @throws IllegalArgumentException if either of the arguments * were created with another file manager implementation */ + @Override boolean isSameFile(FileObject a, FileObject b); /** @@ -166,6 +174,27 @@ Iterable files); /** + * Returns file objects representing the given paths. + * + *

      The default implementation converts each path to a file and calls + * {@link #getJavaFileObjectsFromFiles getJavaObjectsFromFiles}. + * IllegalArgumentException will be thrown if any of the paths + * cannot be converted to a file. + * + * @param paths a list of paths + * @return a list of file objects + * @throws IllegalArgumentException if the list of paths includes + * a directory or if this file manager does not support any of the + * given paths. + * + * @since 1.9 + */ + default Iterable getJavaFileObjectsFromPaths( + Iterable paths) { + return getJavaFileObjectsFromFiles(asFiles(paths)); + } + + /** * Returns file objects representing the given files. * Convenience method equivalent to: * @@ -183,6 +212,27 @@ Iterable getJavaFileObjects(File... files); /** + * Returns file objects representing the given paths. + * Convenience method equivalent to: + * + *

      +     *     getJavaFileObjectsFromPaths({@linkplain java.util.Arrays#asList Arrays.asList}(paths))
      +     * 
      + * + * @param paths an array of paths + * @return a list of file objects + * @throws IllegalArgumentException if the array of files includes + * a directory + * @throws NullPointerException if the given array contains null + * elements + * + * @since 1.9 + */ + default Iterable getJavaFileObjects(Path... paths) { + return getJavaFileObjectsFromPaths(Arrays.asList(paths)); + } + + /** * Returns file objects representing the given file names. * * @param names a list of file names @@ -211,29 +261,94 @@ Iterable getJavaFileObjects(String... names); /** - * Associates the given path with the given location. Any + * Associates the given search path with the given location. Any * previous value will be discarded. * * @param location a location - * @param path a list of files, if {@code null} use the default - * path for this location + * @param files a list of files, if {@code null} use the default + * search path for this location * @see #getLocation - * @throws IllegalArgumentException if location is an output - * location and path does not contain exactly one element - * @throws IOException if location is an output location and path + * @throws IllegalArgumentException if {@code location} is an output + * location and {@code files} does not contain exactly one element + * @throws IOException if {@code location} is an output location and * does not represent an existing directory */ - void setLocation(Location location, Iterable path) + void setLocation(Location location, Iterable files) throws IOException; /** - * Returns the path associated with the given location. + * Associates the given search path with the given location. Any + * previous value will be discarded. + * + *

      The default implementation converts each path to a file and calls + * {@link #getJavaFileObjectsFromFiles getJavaObjectsFromFiles}. + * IllegalArgumentException will be thrown if any of the paths + * cannot be converted to a file.

      + * + * @param location a location + * @param paths a list of paths, if {@code null} use the default + * search path for this location + * @see #getLocation + * @throws IllegalArgumentException if {@code location} is an output + * location and {@code paths} does not contain exactly one element + * or if this file manager does not support any of the given paths + * @throws IOException if {@code location} is an output location and + * {@code paths} does not represent an existing directory + * + * @since 1.9 + */ + default void setLocationFromPaths(Location location, Iterable paths) + throws IOException { + setLocation(location, asFiles(paths)); + } + + /** + * Returns the search path associated with the given location. * * @param location a location * @return a list of files or {@code null} if this location has no - * associated path + * associated search path + * @throws IllegalStateException if any element of the search path + * cannot be converted to a {@linkplain File}. + * * @see #setLocation + * @see Path#toFile */ Iterable getLocation(Location location); + /** + * Returns the search path associated with the given location. + * + * @param location a location + * @return a list of paths or {@code null} if this location has no + * associated search path + * + * @see #setLocationFromPaths + * @since 1.9 + */ + default Iterable getLocationAsPaths(Location location) { + return asPaths(getLocation(location)); + } + + /** + * Returns the path, if any, underlying this file object (optional operation). + * File objects derived from a {@link java.nio.file.FileSystem FileSystem}, + * including the default file system, typically have a corresponding underlying + * {@link java.nio.file.Path Path} object. In such cases, this method may be + * used to access that object. + * + *

      The default implementation throws {@link UnsupportedOperationException} + * for all files.

      + * + * @param file a file object + * @return a path representing the same underlying file system artifact + * @throws IllegalArgumentException if the file object does not have an underlying path + * @throws UnsupportedOperationException if the operation is not supported by this file manager + * + * @since 1.9 + */ + default Path asPath(FileObject file) { + throw new UnsupportedOperationException(); + } + } diff -r 8c912c147654 -r d7609b65606b langtools/src/java.compiler/share/classes/javax/tools/ToolProvider.java --- a/langtools/src/java.compiler/share/classes/javax/tools/ToolProvider.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/java.compiler/share/classes/javax/tools/ToolProvider.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -92,6 +92,10 @@ /** * Returns the Java™ programming language compiler provided * with this platform. + *

      The file manager returned by calling + * {@link JavaCompiler#getStandardFileManager getStandardFileManager} + * on this compiler supports paths provided by any + * {@linkplain java.nio.file.FileSystem filesystem}.

      * @return the compiler provided with this platform or * {@code null} if no compiler is provided */ @@ -105,6 +109,10 @@ /** * Returns the Java™ programming language documentation tool provided * with this platform. + *

      The file manager returned by calling + * {@link DocumentationTool#getStandardFileManager getStandardFileManager} + * on this tool supports paths provided by any + * {@linkplain java.nio.file.FileSystem filesystem}.

      * @return the documentation tool provided with this platform or * {@code null} if no documentation tool is provided */ diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/AnnoConstruct.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/AnnoConstruct.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/code/AnnoConstruct.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -26,6 +26,7 @@ import java.lang.annotation.Annotation; import java.lang.annotation.Inherited; +import java.lang.annotation.Repeatable; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; @@ -183,65 +184,12 @@ return c == null ? null : AnnotationProxyMaker.generateAnnotation(c, annoType); } - // Needed to unpack the runtime view of containing annotations - private static final Class REPEATABLE_CLASS = initRepeatable(); - private static final Method VALUE_ELEMENT_METHOD = initValueElementMethod(); - - private static Class initRepeatable() { - try { - // Repeatable will not be available when bootstrapping on - // JDK 7 so use a reflective lookup instead of a class - // literal for Repeatable.class. - return Class.forName("java.lang.annotation.Repeatable").asSubclass(Annotation.class); - } catch (ClassNotFoundException | SecurityException e) { - return null; - } - } - - private static Method initValueElementMethod() { - if (REPEATABLE_CLASS == null) - return null; - - Method m = null; - try { - m = REPEATABLE_CLASS.getMethod("value"); - if (m != null) - m.setAccessible(true); - return m; - } catch (NoSuchMethodException e) { - return null; - } - } - - // Helper to getAnnotationsByType private static Class getContainer(Class annoType) { - // Since we can not refer to java.lang.annotation.Repeatable until we are - // bootstrapping with java 8 we need to get the Repeatable annotation using - // reflective invocations instead of just using its type and element method. - if (REPEATABLE_CLASS != null && - VALUE_ELEMENT_METHOD != null) { - // Get the Repeatable instance on the annotations declaration - Annotation repeatable = (Annotation)annoType.getAnnotation(REPEATABLE_CLASS); - if (repeatable != null) { - try { - // Get the value element, it should be a class - // indicating the containing annotation type - @SuppressWarnings("unchecked") - Class containerType = (Class)VALUE_ELEMENT_METHOD.invoke(repeatable); - if (containerType == null) - return null; - - return containerType; - } catch (ClassCastException | IllegalAccessException | InvocationTargetException e) { - return null; - } - } - } - return null; + Repeatable repeatable = annoType.getAnnotation(Repeatable.class); + return (repeatable == null) ? null : repeatable.value(); } - // Helper to getAnnotationsByType private static Attribute[] unpackAttributes(Attribute.Compound container) { // We now have an instance of the container, diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Attr.java Mon Jan 12 12:52:39 2015 -0800 @@ -207,6 +207,7 @@ * are correct. * * @param tree The tree whose kind and type is checked + * @param found The computed type of the tree * @param ownkind The computed kind of the tree * @param resultInfo The expected result of the tree */ diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/Resolve.java Mon Jan 12 12:52:39 2015 -0800 @@ -39,7 +39,6 @@ import com.sun.tools.javac.comp.Infer.InferenceContext; import com.sun.tools.javac.comp.Infer.FreeTypeListener; import com.sun.tools.javac.comp.Resolve.MethodResolutionContext.Candidate; -import com.sun.tools.javac.comp.Resolve.MethodResolutionDiagHelper.DiagnosticRewriter; import com.sun.tools.javac.comp.Resolve.MethodResolutionDiagHelper.Template; import com.sun.tools.javac.jvm.*; import com.sun.tools.javac.main.Option; @@ -55,11 +54,12 @@ import java.util.Arrays; import java.util.Collection; -import java.util.EnumMap; import java.util.EnumSet; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Map; +import java.util.function.BiPredicate; +import java.util.stream.Stream; import javax.lang.model.element.ElementVisitor; @@ -1008,7 +1008,7 @@ DeferredType dt = (DeferredType)found; return dt.check(this); } else { - Type uResult = U(found.baseType()); + Type uResult = U(found); Type capturedType = pos == null || pos.getTree() == null ? types.capture(uResult) : checkContext.inferenceContext() @@ -2546,17 +2546,7 @@ final JCDiagnostic details = sym.kind == WRONG_MTH ? ((InapplicableSymbolError)sym.baseSymbol()).errCandidate().snd : null; - sym = new InapplicableSymbolError(sym.kind, "diamondError", currentResolutionContext) { - @Override - JCDiagnostic getDiagnostic(DiagnosticType dkind, DiagnosticPosition pos, - Symbol location, Type site, Name name, List argtypes, List typeargtypes) { - String key = details == null ? - "cant.apply.diamond" : - "cant.apply.diamond.1"; - return diags.create(dkind, log.currentSource(), pos, key, - diags.fragment("diamond", site.tsym), details); - } - }; + sym = new DiamondError(sym, currentResolutionContext); sym = accessMethod(sym, pos, site, names.init, true, argtypes, typeargtypes); env.info.pendingResolutionPhase = currentResolutionContext.step; } @@ -3724,15 +3714,10 @@ else { Pair c = errCandidate(); if (compactMethodDiags) { - for (Map.Entry _entry : - MethodResolutionDiagHelper.rewriters.entrySet()) { - if (_entry.getKey().matches(c.snd)) { - JCDiagnostic simpleDiag = - _entry.getValue().rewriteDiagnostic(diags, pos, - log.currentSource(), dkind, c.snd); - simpleDiag.setFlag(DiagnosticFlag.COMPRESSED); - return simpleDiag; - } + JCDiagnostic simpleDiag = + MethodResolutionDiagHelper.rewrite(diags, pos, log.currentSource(), dkind, c.snd); + if (simpleDiag != null) { + return simpleDiag; } } Symbol ws = c.fst.asMemberOf(site, types); @@ -3765,9 +3750,8 @@ } /** - * ResolveError error class indicating that a set of symbols - * (either methods, constructors or operands) is not applicable - * given an actual arguments/type argument list. + * ResolveError error class indicating that a symbol (either methods, constructors or operand) + * is not applicable given an actual arguments/type argument list. */ class InapplicableSymbolsError extends InapplicableSymbolError { @@ -3864,6 +3848,44 @@ } /** + * DiamondError error class indicating that a constructor symbol is not applicable + * given an actual arguments/type argument list using diamond inference. + */ + class DiamondError extends InapplicableSymbolError { + + Symbol sym; + + public DiamondError(Symbol sym, MethodResolutionContext context) { + super(sym.kind, "diamondError", context); + this.sym = sym; + } + + JCDiagnostic getDetails() { + return (sym.kind == WRONG_MTH) ? + ((InapplicableSymbolError)sym.baseSymbol()).errCandidate().snd : + null; + } + + @Override + JCDiagnostic getDiagnostic(DiagnosticType dkind, DiagnosticPosition pos, + Symbol location, Type site, Name name, List argtypes, List typeargtypes) { + JCDiagnostic details = getDetails(); + if (details != null && compactMethodDiags) { + JCDiagnostic simpleDiag = + MethodResolutionDiagHelper.rewrite(diags, pos, log.currentSource(), dkind, details); + if (simpleDiag != null) { + return simpleDiag; + } + } + String key = details == null ? + "cant.apply.diamond" : + "cant.apply.diamond.1"; + return diags.create(dkind, log.currentSource(), pos, key, + diags.fragment("diamond", site.tsym), details); + } + } + + /** * An InvalidSymbolError error class indicating that a symbol is not * accessible from a given site */ @@ -4146,6 +4168,28 @@ } } + /** + * Common rewriter for all argument mismatch simplifications. + */ + static class ArgMismatchRewriter implements DiagnosticRewriter { + + /** the index of the subdiagnostic to be used as primary. */ + int causeIndex; + + public ArgMismatchRewriter(int causeIndex) { + this.causeIndex = causeIndex; + } + + @Override + public JCDiagnostic rewriteDiagnostic(JCDiagnostic.Factory diags, + DiagnosticPosition preferedPos, DiagnosticSource preferredSource, + DiagnosticType preferredKind, JCDiagnostic d) { + JCDiagnostic cause = (JCDiagnostic)d.getArgs()[causeIndex]; + return diags.create(preferredKind, preferredSource, d.getDiagnosticPosition(), + "prob.found.req", cause); + } + } + /** a dummy template that match any diagnostic argument */ static final Template skip = new Template("") { @Override @@ -4154,22 +4198,61 @@ } }; + /** template for matching inference-free arguments mismatch failures */ + static final Template argMismatchTemplate = new Template(MethodCheckDiag.ARG_MISMATCH.regex(), skip); + + /** template for matching inference related arguments mismatch failures */ + static final Template inferArgMismatchTemplate = new Template(MethodCheckDiag.ARG_MISMATCH.regex(), skip, skip) { + @Override + boolean matches(Object o) { + if (!super.matches(o)) { + return false; + } + JCDiagnostic d = (JCDiagnostic)o; + @SuppressWarnings("unchecked") + List tvars = (List)d.getArgs()[0]; + return !containsAny(d, tvars); + } + + BiPredicate> containsPredicate = (o, ts) -> { + if (o instanceof Type) { + return ((Type)o).containsAny(ts); + } else if (o instanceof JCDiagnostic) { + return containsAny((JCDiagnostic)o, ts); + } else { + return false; + } + }; + + boolean containsAny(JCDiagnostic d, List ts) { + return Stream.of(d.getArgs()) + .anyMatch(o -> containsPredicate.test(o, ts)); + } + }; + /** rewriter map used for method resolution simplification */ static final Map rewriters = new LinkedHashMap<>(); static { - String argMismatchRegex = MethodCheckDiag.ARG_MISMATCH.regex(); - rewriters.put(new Template(argMismatchRegex, skip), - new DiagnosticRewriter() { - @Override - public JCDiagnostic rewriteDiagnostic(JCDiagnostic.Factory diags, - DiagnosticPosition preferedPos, DiagnosticSource preferredSource, - DiagnosticType preferredKind, JCDiagnostic d) { - JCDiagnostic cause = (JCDiagnostic)d.getArgs()[0]; - return diags.create(preferredKind, preferredSource, d.getDiagnosticPosition(), - "prob.found.req", cause); + rewriters.put(argMismatchTemplate, new ArgMismatchRewriter(0)); + rewriters.put(inferArgMismatchTemplate, new ArgMismatchRewriter(1)); + } + + /** + * Main entry point for diagnostic rewriting - given a diagnostic, see if any templates matches it, + * and rewrite it accordingly. + */ + static JCDiagnostic rewrite(JCDiagnostic.Factory diags, DiagnosticPosition pos, DiagnosticSource source, + DiagnosticType dkind, JCDiagnostic d) { + for (Map.Entry _entry : rewriters.entrySet()) { + if (_entry.getKey().matches(d)) { + JCDiagnostic simpleDiag = + _entry.getValue().rewriteDiagnostic(diags, pos, source, dkind, d); + simpleDiag.setFlag(DiagnosticFlag.COMPRESSED); + return simpleDiag; } - }); + } + return null; } } diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/comp/TransTypes.java Mon Jan 12 12:52:39 2015 -0800 @@ -739,7 +739,9 @@ } public void visitUnary(JCUnary tree) { - tree.arg = translate(tree.arg, tree.operator.type.getParameterTypes().head); + tree.arg = translate(tree.arg, (tree.getTag() == Tag.NULLCHK) + ? tree.type + : tree.operator.type.getParameterTypes().head); result = tree; } @@ -753,7 +755,15 @@ tree.clazz = translate(tree.clazz, null); Type originalTarget = tree.type; tree.type = erasure(tree.type); - tree.expr = translate(tree.expr, erasure(tree.expr.type)); + JCExpression newExpression = translate(tree.expr, erasure(tree.expr.type)); + if (newExpression != tree.expr) { + JCTypeCast typeCast = newExpression.hasTag(Tag.TYPECAST) + ? (JCTypeCast) newExpression + : null; + tree.expr = typeCast != null && types.isSameType(typeCast.type, originalTarget, true) + ? typeCast.expr + : newExpression; + } if (originalTarget.isCompound()) { Type.IntersectionClassType ict = (Type.IntersectionClassType)originalTarget; for (Type c : ict.getExplicitComponents()) { diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/JavacFileManager.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -101,7 +101,6 @@ private final Set sourceOrClass = EnumSet.of(JavaFileObject.Kind.SOURCE, JavaFileObject.Kind.CLASS); - protected boolean mmappedIO; protected boolean symbolFileEnabled; protected enum SortFiles implements Comparator { @@ -157,7 +156,6 @@ if (contextUseOptimizedZip) zipFileIndexCache = ZipFileIndexCache.getSharedInstance(); - mmappedIO = options.isSet("mmappedIO"); symbolFileEnabled = !options.isSet("ignore.symbol.file"); String sf = options.get("sortFiles"); @@ -177,10 +175,12 @@ return symbolFileEnabled; } + // used by tests public JavaFileObject getFileForInput(String name) { return getRegularFile(Paths.get(name)); } + // used by tests public JavaFileObject getRegularFile(Path file) { return new RegularFileObject(this, file); } @@ -195,10 +195,10 @@ @Override @DefinedBy(Api.COMPILER) public Iterable getJavaFileObjectsFromStrings(Iterable names) { - ListBuffer files = new ListBuffer<>(); + ListBuffer paths = new ListBuffer<>(); for (String name : names) - files.append(new File(nullCheck(name))); - return getJavaFileObjectsFromFiles(files.toList()); + paths.append(Paths.get(nullCheck(name))); + return getJavaFileObjectsFromPaths(paths.toList()); } @Override @DefinedBy(Api.COMPILER) @@ -873,11 +873,30 @@ } @Override @DefinedBy(Api.COMPILER) + public Iterable getJavaFileObjectsFromPaths( + Iterable paths) + { + ArrayList result; + if (paths instanceof Collection) + result = new ArrayList<>(((Collection)paths).size()); + else + result = new ArrayList<>(); + for (Path p: paths) + result.add(new RegularFileObject(this, nullCheck(p))); + return result; + } + + @Override @DefinedBy(Api.COMPILER) public Iterable getJavaFileObjects(File... files) { return getJavaFileObjectsFromFiles(Arrays.asList(nullCheck(files))); } @Override @DefinedBy(Api.COMPILER) + public Iterable getJavaFileObjects(Path... paths) { + return getJavaFileObjectsFromPaths(Arrays.asList(nullCheck(paths))); + } + + @Override @DefinedBy(Api.COMPILER) public void setLocation(Location location, Iterable searchpath) throws IOException @@ -887,12 +906,22 @@ } @Override @DefinedBy(Api.COMPILER) + public void setLocationFromPaths(Location location, + Iterable searchpath) + throws IOException + { + nullCheck(location); + locations.setLocation(location, nullCheck(searchpath)); + } + + @Override @DefinedBy(Api.COMPILER) public Iterable getLocation(Location location) { nullCheck(location); return asFiles(locations.getLocation(location)); } - private Iterable getLocationAsPaths(Location location) { + @Override @DefinedBy(Api.COMPILER) + public Iterable getLocationAsPaths(Location location) { nullCheck(location); return locations.getLocation(location); } @@ -905,6 +934,14 @@ return locations.getOutputLocation(SOURCE_OUTPUT); } + @Override @DefinedBy(Api.COMPILER) + public Path asPath(FileObject file) { + if (file instanceof RegularFileObject) { + return ((RegularFileObject) file).file; + } else + throw new IllegalArgumentException(file.getName()); + } + /** * Enforces the specification of a "relative" name as used in * {@linkplain #getFileForInput(Location,String,String) @@ -1010,12 +1047,12 @@ @Override public File next() { - return iter.next().toFile(); + try { + return iter.next().toFile(); + } catch (UnsupportedOperationException e) { + throw new IllegalStateException(e); + } } }; } - - private static File asFile(Path path) { - return path == null ? null : path.toFile(); - } } diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/file/Locations.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -428,7 +428,7 @@ /** * General purpose implementation for search path locations, such as -sourcepath/SOURCE_PATH and - * -processorPath/ANNOTATION_PROCESS_PATH. All options are treated as equivalent (i.e. aliases.) + * -processorPath/ANNOTATION_PROCESSOR_PATH. All options are treated as equivalent (i.e. aliases.) * The value is an ordered set of files and/or directories. */ private class SimpleLocationHandler extends LocationHandler { diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassReader.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1740,15 +1740,17 @@ // The method wasn't found: emit a warning and recover JavaFileObject prevSource = log.useSource(requestingOwner.classfile); try { - if (failure == null) { - log.warning("annotation.method.not.found", - container, - name); - } else { - log.warning("annotation.method.not.found.reason", - container, - name, - failure.getDetailValue());//diagnostic, if present + if (lintClassfile) { + if (failure == null) { + log.warning("annotation.method.not.found", + container, + name); + } else { + log.warning("annotation.method.not.found.reason", + container, + name, + failure.getDetailValue());//diagnostic, if present + } } } finally { log.useSource(prevSource); diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/ClassWriter.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -1159,7 +1159,7 @@ Assert.check(r.start_pc >= 0 && r.start_pc <= code.cp); databuf.appendChar(r.start_pc); - Assert.check(r.length >= 0 + Assert.check(r.length > 0 && (r.start_pc + r.length) <= code.cp); databuf.appendChar(r.length); VarSymbol sym = var.sym; diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Code.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -182,8 +182,6 @@ final MethodSymbol meth; - final LVTRanges lvtRanges; - /** Construct a code object, given the settings of the fatcode, * debugging info switches and the CharacterRangeTable. */ @@ -196,8 +194,7 @@ CRTable crt, Symtab syms, Types types, - Pool pool, - LVTRanges lvtRanges) { + Pool pool) { this.meth = meth; this.fatcode = fatcode; this.lineMap = lineMap; @@ -219,7 +216,6 @@ state = new State(); lvar = new LocalVar[20]; this.pool = pool; - this.lvtRanges = lvtRanges; } @@ -1193,7 +1189,9 @@ public int entryPoint(State state) { int pc = curCP(); alive = true; - this.state = state.dup(); + State newState = state.dup(); + setDefined(newState.defined); + this.state = newState; Assert.check(state.stacksize <= max_stack); if (debugCode) System.err.println("entry point " + state); pendingStackMap = needStackMap; @@ -1206,7 +1204,9 @@ public int entryPoint(State state, Type pushed) { int pc = curCP(); alive = true; - this.state = state.dup(); + State newState = state.dup(); + setDefined(newState.defined); + this.state = newState; Assert.check(state.stacksize <= max_stack); this.state.push(pushed); if (debugCode) System.err.println("entry point " + state); @@ -2008,27 +2008,6 @@ state.defined.excl(adr); } - - public void closeAliveRanges(JCTree tree) { - closeAliveRanges(tree, cp); - } - - public void closeAliveRanges(JCTree tree, int closingCP) { - List locals = lvtRanges.getVars(meth, tree); - for (LocalVar localVar: lvar) { - for (VarSymbol aliveLocal : locals) { - if (localVar != null) { - if (localVar.sym == aliveLocal && localVar.lastRange() != null) { - char length = (char)(closingCP - localVar.lastRange().start_pc); - if (length < Character.MAX_VALUE) { - localVar.closeRange(length); - } - } - } - } - } - } - void adjustAliveRanges(int oldCP, int delta) { for (LocalVar localVar: lvar) { if (localVar != null) { diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/Gen.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -94,10 +94,6 @@ */ private Pool pool; - /** LVTRanges info. - */ - private LVTRanges lvtRanges; - protected Gen(Context context) { context.put(genKey, this); @@ -125,9 +121,6 @@ options.isUnset(G_CUSTOM) ? options.isSet(G) : options.isSet(G_CUSTOM, "vars"); - if (varDebugInfo) { - lvtRanges = LVTRanges.instance(context); - } genCrt = options.isSet(XJCOV); debugCode = options.isSet("debugcode"); allowInvokedynamic = target.hasInvokedynamic() || options.isSet("invokedynamic"); @@ -982,8 +975,7 @@ : null, syms, types, - pool, - varDebugInfo ? lvtRanges : null); + pool); items = new Items(pool, code, syms, types); if (code.debugCode) { System.err.println(meth + " for body " + tree); @@ -1086,30 +1078,14 @@ Chain loopDone = c.jumpFalse(); code.resolve(c.trueJumps); genStat(body, loopEnv, CRT_STATEMENT | CRT_FLOW_TARGET); - if (varDebugInfo) { - checkLoopLocalVarRangeEnding(loop, body, - LoopLocalVarRangeEndingPoint.BEFORE_STEPS); - } code.resolve(loopEnv.info.cont); genStats(step, loopEnv); - if (varDebugInfo) { - checkLoopLocalVarRangeEnding(loop, body, - LoopLocalVarRangeEndingPoint.AFTER_STEPS); - } code.resolve(code.branch(goto_), startpc); code.resolve(loopDone); } else { genStat(body, loopEnv, CRT_STATEMENT | CRT_FLOW_TARGET); - if (varDebugInfo) { - checkLoopLocalVarRangeEnding(loop, body, - LoopLocalVarRangeEndingPoint.BEFORE_STEPS); - } code.resolve(loopEnv.info.cont); genStats(step, loopEnv); - if (varDebugInfo) { - checkLoopLocalVarRangeEnding(loop, body, - LoopLocalVarRangeEndingPoint.AFTER_STEPS); - } CondItem c; if (cond != null) { code.statBegin(cond.pos); @@ -1120,47 +1096,10 @@ code.resolve(c.jumpTrue(), startpc); code.resolve(c.falseJumps); } - code.resolve(loopEnv.info.exit); - if (loopEnv.info.exit != null) { - loopEnv.info.exit.state.defined.excludeFrom(code.nextreg); - } - } - - private enum LoopLocalVarRangeEndingPoint { - BEFORE_STEPS, - AFTER_STEPS, - } - - /** - * Checks whether we have reached an alive range ending point for local - * variables after a loop. - * - * Local variables alive range ending point for loops varies depending - * on the loop type. The range can be closed before or after the code - * for the steps sentences has been generated. - * - * - While loops has no steps so in that case the range is closed just - * after the body of the loop. - * - * - For-like loops may have steps so as long as the steps sentences - * can possibly contain non-synthetic local variables, the alive range - * for local variables must be closed after the steps in this case. - */ - private void checkLoopLocalVarRangeEnding(JCTree loop, JCTree body, - LoopLocalVarRangeEndingPoint endingPoint) { - if (varDebugInfo && lvtRanges.containsKey(code.meth, body)) { - switch (endingPoint) { - case BEFORE_STEPS: - if (!loop.hasTag(FORLOOP)) { - code.closeAliveRanges(body); - } - break; - case AFTER_STEPS: - if (loop.hasTag(FORLOOP)) { - code.closeAliveRanges(body); - } - break; - } + Chain exit = loopEnv.info.exit; + if (exit != null) { + code.resolve(exit); + exit.state.defined.excludeFrom(code.nextreg); } } @@ -1171,7 +1110,11 @@ public void visitLabelled(JCLabeledStatement tree) { Env localEnv = env.dup(tree, new GenContext()); genStat(tree.body, localEnv, CRT_STATEMENT); - code.resolve(localEnv.info.exit); + Chain exit = localEnv.info.exit; + if (exit != null) { + code.resolve(exit); + exit.state.defined.excludeFrom(code.nextreg); + } } public void visitSwitch(JCSwitch tree) { @@ -1277,13 +1220,14 @@ // Generate code for the statements in this case. genStats(c.stats, switchEnv, CRT_FLOW_TARGET); - if (varDebugInfo && lvtRanges.containsKey(code.meth, c.stats.last())) { - code.closeAliveRanges(c.stats.last()); - } } // Resolve all breaks. - code.resolve(switchEnv.info.exit); + Chain exit = switchEnv.info.exit; + if (exit != null) { + code.resolve(exit); + exit.state.defined.excludeFrom(code.nextreg); + } // If we have not set the default offset, we do so now. if (code.get4(tableBase) == -1) { @@ -1436,9 +1380,6 @@ genFinalizer(env); code.statBegin(TreeInfo.endPos(env.tree)); Chain exitChain = code.branch(goto_); - if (varDebugInfo && lvtRanges.containsKey(code.meth, body)) { - code.closeAliveRanges(body); - } endFinalizerGap(env); if (startpc != endpc) for (List l = catchers; l.nonEmpty(); l = l.tail) { // start off with exception on stack @@ -1689,17 +1630,11 @@ code.resolve(c.trueJumps); genStat(tree.thenpart, env, CRT_STATEMENT | CRT_FLOW_TARGET); thenExit = code.branch(goto_); - if (varDebugInfo && lvtRanges.containsKey(code.meth, tree.thenpart)) { - code.closeAliveRanges(tree.thenpart, code.cp); - } } if (elseChain != null) { code.resolve(elseChain); if (tree.elsepart != null) { genStat(tree.elsepart, env,CRT_STATEMENT | CRT_FLOW_TARGET); - if (varDebugInfo && lvtRanges.containsKey(code.meth, tree.elsepart)) { - code.closeAliveRanges(tree.elsepart); - } } } code.resolve(thenExit); @@ -2381,16 +2316,6 @@ localEnv.toplevel = env.toplevel; localEnv.enclClass = cdef; - /* We must not analyze synthetic methods - */ - if (varDebugInfo && (cdef.sym.flags() & SYNTHETIC) == 0) { - try { - new LVTAssignAnalyzer().analyzeTree(localEnv); - } catch (Throwable e) { - throw e; - } - } - for (List l = cdef.defs; l.nonEmpty(); l = l.tail) { genDef(l.head, localEnv); } @@ -2476,282 +2401,4 @@ } } - class LVTAssignAnalyzer - extends Flow.AbstractAssignAnalyzer { - - final LVTBits lvtInits; - - /* This class is anchored to a context dependent tree. The tree can - * vary inside the same instruction for example in the switch instruction - * the same FlowBits instance can be anchored to the whole tree, or - * to a given case. The aim is to always anchor the bits to the tree - * capable of closing a DA range. - */ - class LVTBits extends Bits { - - JCTree currentTree; - private int[] oldBits = null; - BitsState stateBeforeOp; - - @Override - public void clear() { - generalOp(null, -1, BitsOpKind.CLEAR); - } - - @Override - protected void internalReset() { - super.internalReset(); - oldBits = null; - } - - @Override - public Bits assign(Bits someBits) { - // bits can be null - oldBits = bits; - stateBeforeOp = currentState; - super.assign(someBits); - changed(); - return this; - } - - @Override - public void excludeFrom(int start) { - generalOp(null, start, BitsOpKind.EXCL_RANGE); - } - - @Override - public void excl(int x) { - Assert.check(x >= 0); - generalOp(null, x, BitsOpKind.EXCL_BIT); - } - - @Override - public Bits andSet(Bits xs) { - return generalOp(xs, -1, BitsOpKind.AND_SET); - } - - @Override - public Bits orSet(Bits xs) { - return generalOp(xs, -1, BitsOpKind.OR_SET); - } - - @Override - public Bits diffSet(Bits xs) { - return generalOp(xs, -1, BitsOpKind.DIFF_SET); - } - - @Override - public Bits xorSet(Bits xs) { - return generalOp(xs, -1, BitsOpKind.XOR_SET); - } - - private Bits generalOp(Bits xs, int i, BitsOpKind opKind) { - Assert.check(currentState != BitsState.UNKNOWN); - oldBits = dupBits(); - stateBeforeOp = currentState; - switch (opKind) { - case AND_SET: - super.andSet(xs); - break; - case OR_SET: - super.orSet(xs); - break; - case XOR_SET: - super.xorSet(xs); - break; - case DIFF_SET: - super.diffSet(xs); - break; - case CLEAR: - super.clear(); - break; - case EXCL_BIT: - super.excl(i); - break; - case EXCL_RANGE: - super.excludeFrom(i); - break; - } - changed(); - return this; - } - - /* The tree we need to anchor the bits instance to. - */ - LVTBits at(JCTree tree) { - this.currentTree = tree; - return this; - } - - /* If the instance should be changed but the tree is not a closing - * tree then a reset is needed or the former tree can mistakingly be - * used. - */ - LVTBits resetTree() { - this.currentTree = null; - return this; - } - - /** This method will be called after any operation that causes a change to - * the bits. Subclasses can thus override it in order to extract information - * from the changes produced to the bits by the given operation. - */ - public void changed() { - if (currentTree != null && - stateBeforeOp != BitsState.UNKNOWN && - trackTree(currentTree)) { - List locals = lvtRanges - .getVars(currentMethod, currentTree); - locals = locals != null ? - locals : List.nil(); - for (JCVariableDecl vardecl : vardecls) { - //once the first is null, the rest will be so. - if (vardecl == null) { - break; - } - if (trackVar(vardecl.sym) && bitChanged(vardecl.sym.adr)) { - locals = locals.prepend(vardecl.sym); - } - } - if (!locals.isEmpty()) { - lvtRanges.setEntry(currentMethod, - currentTree, locals); - } - } - } - - boolean bitChanged(int x) { - boolean isMemberOfBits = isMember(x); - int[] tmp = bits; - bits = oldBits; - boolean isMemberOfOldBits = isMember(x); - bits = tmp; - return (!isMemberOfBits && isMemberOfOldBits); - } - - boolean trackVar(VarSymbol var) { - return (var.owner.kind == MTH && - (var.flags() & PARAMETER) == 0 && - trackable(var)); - } - - boolean trackTree(JCTree tree) { - switch (tree.getTag()) { - // of course a method closes the alive range of a local variable. - case METHODDEF: - // for while loops we want only the body - case WHILELOOP: - return false; - } - return true; - } - - } - - public class LVTAssignPendingExit extends - Flow.AbstractAssignAnalyzer.AbstractAssignPendingExit { - - LVTAssignPendingExit(JCTree tree, final Bits inits, final Bits uninits) { - super(tree, inits, uninits); - } - - @Override - public void resolveJump(JCTree tree) { - lvtInits.at(tree); - super.resolveJump(tree); - } - } - - private LVTAssignAnalyzer() { - flow.super(); - lvtInits = new LVTBits(); - inits = lvtInits; - } - - @Override - protected void markDead(JCTree tree) { - lvtInits.at(tree).inclRange(returnadr, nextadr); - super.markDead(tree); - } - - @Override - protected void merge(JCTree tree) { - lvtInits.at(tree); - super.merge(tree); - } - - boolean isSyntheticOrMandated(Symbol sym) { - return (sym.flags() & (SYNTHETIC | MANDATED)) != 0; - } - - @Override - protected boolean trackable(VarSymbol sym) { - if (isSyntheticOrMandated(sym)) { - //fast check to avoid tracking synthetic or mandated variables - return false; - } - return super.trackable(sym); - } - - @Override - protected void initParam(JCVariableDecl def) { - if (!isSyntheticOrMandated(def.sym)) { - super.initParam(def); - } - } - - @Override - protected void assignToInits(JCTree tree, Bits bits) { - lvtInits.at(tree); - lvtInits.assign(bits); - } - - @Override - protected void andSetInits(JCTree tree, Bits bits) { - lvtInits.at(tree); - lvtInits.andSet(bits); - } - - @Override - protected void orSetInits(JCTree tree, Bits bits) { - lvtInits.at(tree); - lvtInits.orSet(bits); - } - - @Override - protected void exclVarFromInits(JCTree tree, int adr) { - lvtInits.at(tree); - lvtInits.excl(adr); - } - - @Override - protected LVTAssignPendingExit createNewPendingExit(JCTree tree, Bits inits, Bits uninits) { - return new LVTAssignPendingExit(tree, inits, uninits); - } - - MethodSymbol currentMethod; - - @Override - public void visitMethodDef(JCMethodDecl tree) { - if ((tree.sym.flags() & (SYNTHETIC | GENERATEDCONSTR)) != 0 - && (tree.sym.flags() & LAMBDA_METHOD) == 0) { - return; - } - if (tree.name.equals(names.clinit)) { - return; - } - boolean enumClass = (tree.sym.owner.flags() & ENUM) != 0; - if (enumClass && - (tree.name.equals(names.valueOf) || - tree.name.equals(names.values) || - tree.name.equals(names.init))) { - return; - } - currentMethod = tree.sym; - - super.visitMethodDef(tree); - } - - } - } diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/LVTRanges.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/jvm/LVTRanges.java Mon Jan 12 11:46:43 2015 -0800 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,129 +0,0 @@ -/* - * Copyright (c) 2013, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. Oracle designates this - * particular file as subject to the "Classpath" exception as provided - * by Oracle in the LICENSE file that accompanied this code. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -package com.sun.tools.javac.jvm; - -import java.util.Map; -import java.util.Map.Entry; -import java.util.WeakHashMap; - -import com.sun.tools.javac.code.Symbol.MethodSymbol; -import com.sun.tools.javac.code.Symbol.VarSymbol; -import com.sun.tools.javac.tree.JCTree; -import com.sun.tools.javac.util.Context; -import com.sun.tools.javac.util.List; - -/** This class contains a one to many relation between a tree and a set of variables. - * The relation implies that the given tree closes the DA (definite assignment) - * range for the set of variables. - * - *

      This is NOT part of any supported API. - * If you write code that depends on this, you do so at your own risk. - * This code and its internal interfaces are subject to change or - * deletion without notice. - */ -public class LVTRanges { - /** The context key for the LVT ranges. */ - protected static final Context.Key lvtRangesKey = new Context.Key<>(); - - /** Get the LVTRanges instance for this context. */ - public static LVTRanges instance(Context context) { - LVTRanges instance = context.get(lvtRangesKey); - if (instance == null) { - instance = new LVTRanges(context); - } - return instance; - } - - private static final long serialVersionUID = 1812267524140424433L; - - protected Context context; - - protected Map>> - aliveRangeClosingTrees = new WeakHashMap<>(); - - public LVTRanges(Context context) { - this.context = context; - context.put(lvtRangesKey, this); - } - - public List getVars(MethodSymbol method, JCTree tree) { - Map> varMap = aliveRangeClosingTrees.get(method); - return (varMap != null) ? varMap.get(tree) : null; - } - - public boolean containsKey(MethodSymbol method, JCTree tree) { - Map> varMap = aliveRangeClosingTrees.get(method); - if (varMap == null) { - return false; - } - return varMap.containsKey(tree); - } - - public void setEntry(MethodSymbol method, JCTree tree, List vars) { - Map> varMap = aliveRangeClosingTrees.get(method); - if (varMap != null) { - varMap.put(tree, vars); - } else { - varMap = new WeakHashMap<>(); - varMap.put(tree, vars); - aliveRangeClosingTrees.put(method, varMap); - } - } - - public List removeEntry(MethodSymbol method, JCTree tree) { - Map> varMap = aliveRangeClosingTrees.get(method); - if (varMap != null) { - List result = varMap.remove(tree); - if (varMap.isEmpty()) { - aliveRangeClosingTrees.remove(method); - } - return result; - } - return null; - } - - /* This method should be used for debugging LVT related issues. - */ - @Override - public String toString() { - String result = ""; - for (Entry>> mainEntry: aliveRangeClosingTrees.entrySet()) { - result += "Method: \n" + mainEntry.getKey().flatName() + "\n"; - int i = 1; - for (Entry> treeEntry: mainEntry.getValue().entrySet()) { - result += " Tree " + i + ": \n" + treeEntry.getKey().toString() + "\n"; - result += " Variables closed:\n"; - for (VarSymbol var: treeEntry.getValue()) { - result += " " + var.toString(); - } - result += "\n"; - i++; - } - } - return result; - } - -} diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/resources/compiler.properties Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,6 @@ + # -# Copyright (c) 1999, 2014, Oracle and/or its affiliates. All rights reserved. +# Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved. # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. # # This code is free software; you can redistribute it and/or modify it @@ -26,30 +27,50 @@ # Messages in this file which use "placeholders" for values (e.g. {0}, {1}) # are preceded by a stylized comment describing the type of the corresponding # values. -# The types currently in use are +# The simple types currently in use are: # # boolean true or false -# file name the name of an input file; e.g. MyFile.java -# message segment a sub-message; see compiler.misc.* +# diagnostic a sub-message; see compiler.misc.* +# fragment similar to 'message segment', but with more specific type # modifier a Java modifier; e.g. public, private, protected +# file a file URL +# file object a file URL - similar to 'file' but typically used for source/class files, hence more specific # name a name, typically a Java identifier # number an integer # option name the name of a command line option # source version a source version number, such as 1.5, 1.6, 1.7 # string a general string # symbol the name of a declared type -# symbol kind a description of the kind of a declaration; see compiler.misc.kindname.* +# symbol kind the kind of a symbol (i.e. method, variable) +# kind name an informative description of the kind of a declaration; see compiler.misc.kindname.* # token the name of a non-terminal in source code; see compiler.misc.token.* # type a Java type; e.g. int, X, X +# object a Java object (unspecified) # unused the value is not used in this message # +# The following compound types are also used: +# # list of X a comma-separated list of items; e.g. list of type -# X or Y alternation; e.g. message segment or type # set of X a comma-separated collection of items; e.g. set of modifier # -# These may be composed: e.g. list of type or message segment +# These may be composed: +# +# list of type or message segment +# +# The following type aliases are supported: +# +# message segment --> diagnostic or fragment +# file name --> file or file object # -# These comments are verified by the jtreg test test/tools/javac/diags/MessageInfo, +# Custom comments are supported in parenthesis i.e. +# +# number (classfile major version) +# +# These comments are used internally in order to generate an enum-like class declaration containing +# a method/field for each of the diagnostic keys listed here. Those methods/fields can then be used +# by javac code to build diagnostics in a type-safe fashion. +# +# In addition, these comments are verified by the jtreg test test/tools/javac/diags/MessageInfo, # using info derived from the collected set of examples in test/tools/javac/diags/examples. # MessageInfo can also be run as a standalone utility providing more facilities # for manipulating this file. For more details, see MessageInfo.java. @@ -140,7 +161,7 @@ compiler.err.attribute.value.must.be.constant=\ element value must be a constant expression -# 0: statement type +# 0: string (statement type) compiler.err.bad.initializer=\ bad initializer for {0} @@ -360,7 +381,7 @@ compiler.err.invalid.repeatable.annotation.invalid.value=\ {0} is not a valid @Repeatable: invalid value element -# 0: symbol type, 1: unused, 2: type +# 0: symbol or type, 1: unused, 2: type compiler.err.invalid.repeatable.annotation.value.return=\ containing annotation type ({0}) must declare an element named ''value'' of type {2} @@ -832,7 +853,7 @@ # Errors related to annotation processing -# 0: symbol, 1: string, 2: stack-trace +# 0: symbol, 1: string, 2: string (stack-trace) compiler.err.proc.cant.access=\ cannot access {0}\n\ {1}\n\ @@ -984,15 +1005,15 @@ compiler.err.types.incompatible.diff.ret=\ types {0} and {1} are incompatible; both define {2}, but with unrelated return types -# 0: kind, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol +# 0: kind name, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol compiler.err.types.incompatible.unrelated.defaults=\ {0} {1} inherits unrelated defaults for {2}({3}) from types {4} and {5} -# 0: kind, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol +# 0: kind name, 1: type, 2: name, 3: list of type, 4: symbol, 5: symbol compiler.err.types.incompatible.abstract.default=\ {0} {1} inherits abstract and default for {2}({3}) from types {4} and {5} -# 0: name, 1: kind, 2: symbol +# 0: name, 1: kind name, 2: symbol compiler.err.default.overrides.object.member=\ default method {0} in {1} {2} overrides a member of java.lang.Object @@ -1747,11 +1768,11 @@ cannot access {0}\n\ {1} -# 0: class name +# 0: name compiler.misc.bad.class.file=\ class file is invalid for class {0} -# 0: file name, 1: expected CP entry type, 2: constant pool index +# 0: file name, 1: string (expected constant pool entry type), 2: number (constant pool index) compiler.misc.bad.const.pool.entry=\ bad constant pool entry in {0}\n\ expected {1} at index {2} @@ -1802,11 +1823,11 @@ compiler.misc.class.file.not.found=\ class file for {0} not found -# 0: classfile major version, 1: classfile minor version +# 0: string (classfile major version), 1: string (classfile minor version) compiler.misc.invalid.default.interface=\ default method found in version {0}.{1} classfile -# 0: classfile major version, 1: classfile minor version +# 0: string (classfile major version), 1: string (classfile minor version) compiler.misc.invalid.static.interface=\ static method found in version {0}.{1} classfile @@ -2422,7 +2443,7 @@ compiler.misc.partial.inst.sig=\ partially instantiated to: {0} -# 0: name, 1: symbol, 2: number, 3: MethodResolutionPhase, 4: list of type or message segment, 5: list of type or message segment +# 0: name, 1: symbol, 2: number, 3: string (method resolution phase), 4: list of type or message segment, 5: list of type or message segment compiler.note.verbose.resolve.multi=\ resolving method {0} in type {1} to candidate {2}\n\ phase: {3}\n\ @@ -2430,7 +2451,7 @@ with type-args: {5}\n\ candidates: -# 0: name, 1: symbol, 2: unused, 3: MethodResolutionPhase, 4: list of type or message segment, 5: list of type or message segment +# 0: name, 1: symbol, 2: unused, 3: string (method resolution phase), 4: list of type or message segment, 5: list of type or message segment compiler.note.verbose.resolve.multi.1=\ erroneous resolution for method {0} in type {1}\n\ phase: {3}\n\ diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DCTree.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DCTree.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/tree/DCTree.java Mon Jan 12 12:52:39 2015 -0800 @@ -329,7 +329,7 @@ DCErroneous(String body, JCDiagnostic.Factory diags, DiagnosticSource diagSource, String code, Object... args) { this.body = body; - this.diag = diags.error(diagSource, this, code, args); + this.diag = diags.error(null, diagSource, this, code, args); } @Override @DefinedBy(Api.COMPILER_TREE) diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/AbstractLog.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/AbstractLog.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/AbstractLog.java Mon Jan 12 12:52:39 2015 -0800 @@ -31,6 +31,9 @@ import com.sun.tools.javac.code.Lint.LintCategory; import com.sun.tools.javac.util.JCDiagnostic.DiagnosticFlag; +import com.sun.tools.javac.util.JCDiagnostic.Error; +import com.sun.tools.javac.util.JCDiagnostic.Note; +import com.sun.tools.javac.util.JCDiagnostic.Warning; import com.sun.tools.javac.util.JCDiagnostic.DiagnosticPosition; import com.sun.tools.javac.util.JCDiagnostic.SimpleDiagnosticPosition; @@ -93,7 +96,15 @@ * @param args Fields of the error message. */ public void error(String key, Object ... args) { - report(diags.error(source, null, key, args)); + error(diags.errorKey(key, args)); + } + + /** Report an error, unless another error was already reported at same + * source position. + * @param errorKey The key for the localized error message. + */ + public void error(Error errorKey) { + report(diags.error(null, source, null, errorKey)); } /** Report an error, unless another error was already reported at same @@ -102,8 +113,17 @@ * @param key The key for the localized error message. * @param args Fields of the error message. */ - public void error(DiagnosticPosition pos, String key, Object ... args) { - report(diags.error(source, pos, key, args)); + public void error(DiagnosticPosition pos, String key, Object... args) { + error(pos, diags.errorKey(key, args)); + } + + /** Report an error, unless another error was already reported at same + * source position. + * @param pos The source position at which to report the error. + * @param errorKey The key for the localized error message. + */ + public void error(DiagnosticPosition pos, Error errorKey) { + report(diags.error(null, source, pos, errorKey)); } /** Report an error, unless another error was already reported at same @@ -114,9 +134,17 @@ * @param args Fields of the error message. */ public void error(DiagnosticFlag flag, DiagnosticPosition pos, String key, Object ... args) { - JCDiagnostic d = diags.error(source, pos, key, args); - d.setFlag(flag); - report(d); + error(flag, pos, diags.errorKey(key, args)); + } + + /** Report an error, unless another error was already reported at same + * source position. + * @param flag A flag to set on the diagnostic + * @param pos The source position at which to report the error. + * @param errorKey The key for the localized error message. + */ + public void error(DiagnosticFlag flag, DiagnosticPosition pos, Error errorKey) { + report(diags.error(flag, source, pos, errorKey)); } /** Report an error, unless another error was already reported at same @@ -126,7 +154,16 @@ * @param args Fields of the error message. */ public void error(int pos, String key, Object ... args) { - report(diags.error(source, wrap(pos), key, args)); + error(pos, diags.errorKey(key, args)); + } + + /** Report an error, unless another error was already reported at same + * source position. + * @param pos The source position at which to report the error. + * @param errorKey The key for the localized error message. + */ + public void error(int pos, Error errorKey) { + report(diags.error(null, source, wrap(pos), errorKey)); } /** Report an error, unless another error was already reported at same @@ -137,9 +174,17 @@ * @param args Fields of the error message. */ public void error(DiagnosticFlag flag, int pos, String key, Object ... args) { - JCDiagnostic d = diags.error(source, wrap(pos), key, args); - d.setFlag(flag); - report(d); + error(flag, pos, diags.errorKey(key, args)); + } + + /** Report an error, unless another error was already reported at same + * source position. + * @param flag A flag to set on the diagnostic + * @param pos The source position at which to report the error. + * @param errorKey The key for the localized error message. + */ + public void error(DiagnosticFlag flag, int pos, Error errorKey) { + report(diags.error(flag, source, wrap(pos), errorKey)); } /** Report a warning, unless suppressed by the -nowarn option or the @@ -148,7 +193,15 @@ * @param args Fields of the warning message. */ public void warning(String key, Object ... args) { - report(diags.warning(source, null, key, args)); + warning(diags.warningKey(key, args)); + } + + /** Report a warning, unless suppressed by the -nowarn option or the + * maximum number of warnings has been reached. + * @param warningKey The key for the localized warning message. + */ + public void warning(Warning warningKey) { + report(diags.warning(null, source, null, warningKey)); } /** Report a lint warning, unless suppressed by the -nowarn option or the @@ -158,7 +211,16 @@ * @param args Fields of the warning message. */ public void warning(LintCategory lc, String key, Object ... args) { - report(diags.warning(lc, key, args)); + warning(lc, diags.warningKey(key, args)); + } + + /** Report a lint warning, unless suppressed by the -nowarn option or the + * maximum number of warnings has been reached. + * @param lc The lint category for the diagnostic + * @param warningKey The key for the localized warning message. + */ + public void warning(LintCategory lc, Warning warningKey) { + report(diags.warning(lc, null, null, warningKey)); } /** Report a warning, unless suppressed by the -nowarn option or the @@ -168,7 +230,16 @@ * @param args Fields of the warning message. */ public void warning(DiagnosticPosition pos, String key, Object ... args) { - report(diags.warning(source, pos, key, args)); + warning(pos, diags.warningKey(key, args)); + } + + /** Report a warning, unless suppressed by the -nowarn option or the + * maximum number of warnings has been reached. + * @param pos The source position at which to report the warning. + * @param warningKey The key for the localized warning message. + */ + public void warning(DiagnosticPosition pos, Warning warningKey) { + report(diags.warning(null, source, pos, warningKey)); } /** Report a lint warning, unless suppressed by the -nowarn option or the @@ -179,7 +250,17 @@ * @param args Fields of the warning message. */ public void warning(LintCategory lc, DiagnosticPosition pos, String key, Object ... args) { - report(diags.warning(lc, source, pos, key, args)); + warning(lc, pos, diags.warningKey(key, args)); + } + + /** Report a lint warning, unless suppressed by the -nowarn option or the + * maximum number of warnings has been reached. + * @param lc The lint category for the diagnostic + * @param pos The source position at which to report the warning. + * @param warningKey The key for the localized warning message. + */ + public void warning(LintCategory lc, DiagnosticPosition pos, Warning warningKey) { + report(diags.warning(lc, source, pos, warningKey)); } /** Report a warning, unless suppressed by the -nowarn option or the @@ -189,7 +270,16 @@ * @param args Fields of the warning message. */ public void warning(int pos, String key, Object ... args) { - report(diags.warning(source, wrap(pos), key, args)); + warning(pos, diags.warningKey(key, args)); + } + + /** Report a warning, unless suppressed by the -nowarn option or the + * maximum number of warnings has been reached. + * @param pos The source position at which to report the warning. + * @param warningKey The key for the localized warning message. + */ + public void warning(int pos, Warning warningKey) { + report(diags.warning(null, source, wrap(pos), warningKey)); } /** Report a warning. @@ -198,7 +288,15 @@ * @param args Fields of the warning message. */ public void mandatoryWarning(DiagnosticPosition pos, String key, Object ... args) { - report(diags.mandatoryWarning(source, pos, key, args)); + mandatoryWarning(pos, diags.warningKey(key, args)); + } + + /** Report a warning. + * @param pos The source position at which to report the warning. + * @param warningKey The key for the localized warning message. + */ + public void mandatoryWarning(DiagnosticPosition pos, Warning warningKey) { + report(diags.mandatoryWarning(null, source, pos, warningKey)); } /** Report a warning. @@ -208,7 +306,16 @@ * @param args Fields of the warning message. */ public void mandatoryWarning(LintCategory lc, DiagnosticPosition pos, String key, Object ... args) { - report(diags.mandatoryWarning(lc, source, pos, key, args)); + mandatoryWarning(lc, pos, diags.warningKey(key, args)); + } + + /** Report a warning. + * @param lc The lint category for the diagnostic + * @param pos The source position at which to report the warning. + * @param warningKey The key for the localized warning message. + */ + public void mandatoryWarning(LintCategory lc, DiagnosticPosition pos, Warning warningKey) { + report(diags.mandatoryWarning(lc, source, pos, warningKey)); } /** Provide a non-fatal notification, unless suppressed by the -nowarn option. @@ -216,7 +323,14 @@ * @param args Fields of the notint an error or warning message: */ public void note(String key, Object ... args) { - report(diags.note(source, null, key, args)); + note(diags.noteKey(key, args)); + } + + /** Provide a non-fatal notification, unless suppressed by the -nowarn option. + * @param noteKey The key for the localized notification message. + */ + public void note(Note noteKey) { + report(diags.note(source, null, noteKey)); } /** Provide a non-fatal notification, unless suppressed by the -nowarn option. @@ -224,7 +338,14 @@ * @param args Fields of the notification message. */ public void note(DiagnosticPosition pos, String key, Object ... args) { - report(diags.note(source, pos, key, args)); + note(pos, diags.noteKey(key, args)); + } + + /** Provide a non-fatal notification, unless suppressed by the -nowarn option. + * @param noteKey The key for the localized notification message. + */ + public void note(DiagnosticPosition pos, Note noteKey) { + report(diags.note(source, pos, noteKey)); } /** Provide a non-fatal notification, unless suppressed by the -nowarn option. @@ -232,7 +353,14 @@ * @param args Fields of the notification message. */ public void note(int pos, String key, Object ... args) { - report(diags.note(source, wrap(pos), key, args)); + note(pos, diags.noteKey(key, args)); + } + + /** Provide a non-fatal notification, unless suppressed by the -nowarn option. + * @param noteKey The key for the localized notification message. + */ + public void note(int pos, Note noteKey) { + report(diags.note(source, wrap(pos), noteKey)); } /** Provide a non-fatal notification, unless suppressed by the -nowarn option. @@ -240,7 +368,14 @@ * @param args Fields of the notification message. */ public void note(JavaFileObject file, String key, Object ... args) { - report(diags.note(getSource(file), null, key, args)); + note(file, diags.noteKey(key, args)); + } + + /** Provide a non-fatal notification, unless suppressed by the -nowarn option. + * @param noteKey The key for the localized notification message. + */ + public void note(JavaFileObject file, Note noteKey) { + report(diags.note(getSource(file), null, noteKey)); } /** Provide a non-fatal notification, unless suppressed by the -nowarn option. @@ -248,7 +383,14 @@ * @param args Fields of the notification message. */ public void mandatoryNote(final JavaFileObject file, String key, Object ... args) { - report(diags.mandatoryNote(getSource(file), key, args)); + mandatoryNote(file, diags.noteKey(key, args)); + } + + /** Provide a non-fatal notification, unless suppressed by the -nowarn option. + * @param noteKey The key for the localized notification message. + */ + public void mandatoryNote(final JavaFileObject file, Note noteKey) { + report(diags.mandatoryNote(getSource(file), noteKey)); } protected abstract void report(JCDiagnostic diagnostic); diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JCDiagnostic.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JCDiagnostic.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/JCDiagnostic.java Mon Jan 12 12:52:39 2015 -0800 @@ -28,6 +28,7 @@ import java.util.EnumSet; import java.util.Locale; import java.util.Set; +import java.util.stream.Stream; import javax.tools.Diagnostic; import javax.tools.JavaFileObject; @@ -92,28 +93,30 @@ } /** - * Create an error diagnostic. + * Create an error diagnostic * @param source The source of the compilation unit, if any, in which to report the error. * @param pos The source position at which to report the error. * @param key The key for the localized error message. * @param args Fields of the error message. */ public JCDiagnostic error( - DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { - return create(ERROR, null, defaultErrorFlags, source, pos, key, args); + DiagnosticFlag flag, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { + return error(flag, source, pos, errorKey(key, args)); } /** - * Create a warning diagnostic that will not be hidden by the -nowarn or -Xlint:none options. - * @param source The source of the compilation unit, if any, in which to report the warning. - * @param pos The source position at which to report the warning. - * @param key The key for the localized warning message. - * @param args Fields of the warning message. - * @see MandatoryWarningHandler + * Create an error diagnostic + * @param source The source of the compilation unit, if any, in which to report the error. + * @param pos The source position at which to report the error. + * @param errorKey The key for the localized error message. */ - public JCDiagnostic mandatoryWarning( - DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { - return create(WARNING, null, EnumSet.of(DiagnosticFlag.MANDATORY), source, pos, key, args); + public JCDiagnostic error( + DiagnosticFlag flag, DiagnosticSource source, DiagnosticPosition pos, Error errorKey) { + JCDiagnostic diag = create(null, defaultErrorFlags, source, pos, errorKey); + if (flag != null) { + diag.setFlag(flag); + } + return diag; } /** @@ -128,31 +131,35 @@ public JCDiagnostic mandatoryWarning( LintCategory lc, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { - return create(WARNING, lc, EnumSet.of(DiagnosticFlag.MANDATORY), source, pos, key, args); + return mandatoryWarning(lc, source, pos, warningKey(key, args)); + } + + /** + * Create a warning diagnostic that will not be hidden by the -nowarn or -Xlint:none options. + * @param lc The lint category for the diagnostic + * @param source The source of the compilation unit, if any, in which to report the warning. + * @param pos The source position at which to report the warning. + * @param warningKey The key for the localized warning message. + * @see MandatoryWarningHandler + */ + public JCDiagnostic mandatoryWarning( + LintCategory lc, + DiagnosticSource source, DiagnosticPosition pos, Warning warningKey) { + return create(lc, EnumSet.of(DiagnosticFlag.MANDATORY), source, pos, warningKey); } /** * Create a warning diagnostic. * @param lc The lint category for the diagnostic + * @param source The source of the compilation unit, if any, in which to report the warning. + * @param pos The source position at which to report the warning. * @param key The key for the localized error message. * @param args Fields of the warning message. * @see MandatoryWarningHandler */ public JCDiagnostic warning( - LintCategory lc, String key, Object... args) { - return create(WARNING, lc, EnumSet.noneOf(DiagnosticFlag.class), null, null, key, args); - } - - /** - * Create a warning diagnostic. - * @param source The source of the compilation unit, if any, in which to report the warning. - * @param pos The source position at which to report the warning. - * @param key The key for the localized warning message. - * @param args Fields of the warning message. - */ - public JCDiagnostic warning( - DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { - return create(WARNING, null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, key, args); + LintCategory lc, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { + return warning(lc, source, pos, warningKey(key, args)); } /** @@ -160,23 +167,32 @@ * @param lc The lint category for the diagnostic * @param source The source of the compilation unit, if any, in which to report the warning. * @param pos The source position at which to report the warning. + * @param warningKey The key for the localized warning message. + * @see MandatoryWarningHandler + */ + public JCDiagnostic warning( + LintCategory lc, DiagnosticSource source, DiagnosticPosition pos, Warning warningKey) { + return create(lc, EnumSet.noneOf(DiagnosticFlag.class), source, pos, warningKey); + } + + /** + * Create a note diagnostic that will not be hidden by the -nowarn or -Xlint:none options. + * @param source The source of the compilation unit, if any, in which to report the warning. * @param key The key for the localized warning message. * @param args Fields of the warning message. * @see MandatoryWarningHandler */ - public JCDiagnostic warning( - LintCategory lc, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { - return create(WARNING, lc, EnumSet.noneOf(DiagnosticFlag.class), source, pos, key, args); + public JCDiagnostic mandatoryNote(DiagnosticSource source, String key, Object... args) { + return mandatoryNote(source, noteKey(key, args)); } /** * Create a note diagnostic that will not be hidden by the -nowarn or -Xlint:none options. - * @param key The key for the localized message. - * @param args Fields of the message. + * @param noteKey The key for the localized note message. * @see MandatoryWarningHandler */ - public JCDiagnostic mandatoryNote(DiagnosticSource source, String key, Object... args) { - return create(NOTE, null, EnumSet.of(DiagnosticFlag.MANDATORY), source, null, key, args); + public JCDiagnostic mandatoryNote(DiagnosticSource source, Note noteKey) { + return create(null, EnumSet.of(DiagnosticFlag.MANDATORY), source, null, noteKey); } /** @@ -184,20 +200,20 @@ * @param key The key for the localized error message. * @param args Fields of the message. */ - public JCDiagnostic note(String key, Object... args) { - return create(NOTE, null, EnumSet.noneOf(DiagnosticFlag.class), null, null, key, args); + public JCDiagnostic note( + DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { + return note(source, pos, noteKey(key, args)); } /** * Create a note diagnostic. * @param source The source of the compilation unit, if any, in which to report the note. * @param pos The source position at which to report the note. - * @param key The key for the localized message. - * @param args Fields of the message. + * @param noteKey The key for the localized note message. */ public JCDiagnostic note( - DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { - return create(NOTE, null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, key, args); + DiagnosticSource source, DiagnosticPosition pos, Note noteKey) { + return create(null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, noteKey); } /** @@ -206,7 +222,15 @@ * @param args Fields of the message. */ public JCDiagnostic fragment(String key, Object... args) { - return create(FRAGMENT, null, EnumSet.noneOf(DiagnosticFlag.class), null, null, key, args); + return fragment(fragmentKey(key, args)); + } + + /** + * Create a fragment diagnostic, for use as an argument in other diagnostics + * @param fragmentKey The key for the localized subdiagnostic message. + */ + public JCDiagnostic fragment(Fragment fragmentKey) { + return create(null, EnumSet.noneOf(DiagnosticFlag.class), null, null, fragmentKey); } /** @@ -220,7 +244,19 @@ */ public JCDiagnostic create( DiagnosticType kind, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { - return create(kind, null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, key, args); + return create(null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, DiagnosticInfo.of(kind, prefix, key, args)); + } + + /** + * Create a new diagnostic of the given kind, which is not mandatory and which has + * no lint category. + * @param source The source of the compilation unit, if any, in which to report the message. + * @param pos The source position at which to report the message. + * @param diagnosticInfo The key for the localized message. + */ + public JCDiagnostic create( + DiagnosticSource source, DiagnosticPosition pos, DiagnosticInfo diagnosticInfo) { + return create(null, EnumSet.noneOf(DiagnosticFlag.class), source, pos, diagnosticInfo); } /** @@ -233,13 +269,59 @@ * @param key The key for the localized message. * @param args Fields of the message. */ - public JCDiagnostic create( - DiagnosticType kind, LintCategory lc, Set flags, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { - return new JCDiagnostic(formatter, kind, lc, flags, source, pos, qualify(kind, key), args); + public JCDiagnostic create(DiagnosticType kind, + LintCategory lc, Set flags, DiagnosticSource source, DiagnosticPosition pos, String key, Object... args) { + return create(lc, flags, source, pos, DiagnosticInfo.of(kind, prefix, key, args)); } - protected String qualify(DiagnosticType t, String key) { - return prefix + "." + t.key + "." + key; + /** + * Create a new diagnostic with given key. + * @param lc The lint category, if applicable, or null + * @param flags The set of flags for the diagnostic + * @param source The source of the compilation unit, if any, in which to report the message. + * @param pos The source position at which to report the message. + * @param diagnosticInfo The key for the localized message. + */ + public JCDiagnostic create( + LintCategory lc, Set flags, DiagnosticSource source, DiagnosticPosition pos, DiagnosticInfo diagnosticInfo) { + return new JCDiagnostic(formatter, normalize(diagnosticInfo), lc, flags, source, pos); + } + //where + DiagnosticInfo normalize(DiagnosticInfo diagnosticInfo) { + //replace all nested FragmentKey with full-blown JCDiagnostic objects + return DiagnosticInfo.of(diagnosticInfo.type, diagnosticInfo.prefix, diagnosticInfo.code, + Stream.of(diagnosticInfo.args).map(o -> { + return (o instanceof Fragment) ? + fragment((Fragment)o) : o; + }).toArray()); + } + + /** + * Create a new error key. + */ + Error errorKey(String code, Object... args) { + return (Error)DiagnosticInfo.of(ERROR, prefix, code, args); + } + + /** + * Create a new warning key. + */ + Warning warningKey(String code, Object... args) { + return (Warning)DiagnosticInfo.of(WARNING, prefix, code, args); + } + + /** + * Create a new note key. + */ + Note noteKey(String code, Object... args) { + return (Note)DiagnosticInfo.of(NOTE, prefix, code, args); + } + + /** + * Create a new fragment key. + */ + Fragment fragmentKey(String code, Object... args) { + return (Fragment)DiagnosticInfo.of(FRAGMENT, prefix, code, args); } } @@ -254,13 +336,14 @@ @Deprecated public static JCDiagnostic fragment(String key, Object... args) { return new JCDiagnostic(getFragmentFormatter(), - FRAGMENT, + DiagnosticInfo.of(FRAGMENT, + "compiler", + key, + args), null, EnumSet.noneOf(DiagnosticFlag.class), null, - null, - "compiler." + FRAGMENT.key + "." + key, - args); + null); } //where @Deprecated @@ -352,11 +435,9 @@ COMPRESSED } - private final DiagnosticType type; private final DiagnosticSource source; private final DiagnosticPosition position; - private final String key; - protected final Object[] args; + private final DiagnosticInfo diagnosticInfo; private final Set flags; private final LintCategory lintCategory; @@ -391,34 +472,120 @@ } /** + * A diagnostic key object encapsulates basic properties of a diagnostic, such as the resource key, + * the arguments and the kind associated with the diagnostic object. Diagnostic keys can be either + * created programmatically (by using the supplied factory method) or obtained through build-time + * generated factory methods. + */ + public static abstract class DiagnosticInfo { + + /** The diagnostic kind (i.e. error). */ + DiagnosticType type; + + /** The diagnostic prefix (i.e. 'javac'); used to compute full resource key. */ + String prefix; + + /** The diagnostic code (i.e. 'cannot.resolve.sym'); together with {@code prefix} it forms + * the full resource key. */ + String code; + + /** The diagnostic arguments. */ + Object[] args; + + private DiagnosticInfo(DiagnosticType type, String prefix, String code, Object... args) { + this.type = type; + this.prefix = prefix; + this.code = code; + this.args = args; + } + + /** + * Compute the resource key. + */ + public String key() { + return prefix + "." + type.key + "." + code; + } + + /** + * Static factory method; build a custom diagnostic key using given kind, prefix, code and args. + */ + public static DiagnosticInfo of(DiagnosticType type, String prefix, String code, Object... args) { + switch (type) { + case ERROR: + return new Error(prefix, code, args); + case WARNING: + return new Warning(prefix, code, args); + case NOTE: + return new Note(prefix, code, args); + case FRAGMENT: + return new Fragment(prefix, code, args); + default: + Assert.error("Wrong diagnostic type: " + type); + return null; + } + } + + } + + /** + * Class representing error diagnostic keys. + */ + public static final class Error extends DiagnosticInfo { + public Error(String prefix, String key, Object... args) { + super(DiagnosticType.ERROR, prefix, key, args); + } + } + + /** + * Class representing warning diagnostic keys. + */ + public static final class Warning extends DiagnosticInfo { + public Warning(String prefix, String key, Object... args) { + super(DiagnosticType.WARNING, prefix, key, args); + } + } + + /** + * Class representing note diagnostic keys. + */ + public static final class Note extends DiagnosticInfo { + public Note(String prefix, String key, Object... args) { + super(DiagnosticType.NOTE, prefix, key, args); + } + } + + /** + * Class representing fragment diagnostic keys. + */ + public static final class Fragment extends DiagnosticInfo { + public Fragment(String prefix, String key, Object... args) { + super(DiagnosticType.FRAGMENT, prefix, key, args); + } + } + + /** * Create a diagnostic object. * @param formatter the formatter to use for the diagnostic - * @param dt the type of diagnostic + * @param diagnosticInfo the diagnostic key * @param lc the lint category for the diagnostic * @param source the name of the source file, or null if none. * @param pos the character offset within the source file, if given. - * @param key a resource key to identify the text of the diagnostic - * @param args arguments to be included in the text of the diagnostic */ protected JCDiagnostic(DiagnosticFormatter formatter, - DiagnosticType dt, + DiagnosticInfo diagnosticInfo, LintCategory lc, Set flags, DiagnosticSource source, - DiagnosticPosition pos, - String key, - Object... args) { + DiagnosticPosition pos) { if (source == null && pos != null && pos.getPreferredPosition() != Position.NOPOS) throw new IllegalArgumentException(); this.defaultFormatter = formatter; - this.type = dt; + this.diagnosticInfo = diagnosticInfo; this.lintCategory = lc; this.flags = flags; this.source = source; this.position = pos; - this.key = key; - this.args = args; } /** @@ -426,7 +593,7 @@ * @return the type of this diagnostic */ public DiagnosticType getType() { - return type; + return diagnosticInfo.type; } /** @@ -543,7 +710,7 @@ * @return the arguments to be included in the text of the diagnostic */ public Object[] getArgs() { - return args; + return diagnosticInfo.args; } /** @@ -551,7 +718,7 @@ * @return the prefix string associated with this type of diagnostic */ public String getPrefix() { - return getPrefix(type); + return getPrefix(diagnosticInfo.type); } /** @@ -567,7 +734,7 @@ */ @Override public String toString() { - return defaultFormatter.format(this,Locale.getDefault()); + return defaultFormatter.format(this, Locale.getDefault()); } private DiagnosticFormatter defaultFormatter; @@ -578,7 +745,7 @@ @DefinedBy(Api.COMPILER) public Diagnostic.Kind getKind() { - switch (type) { + switch (diagnosticInfo.type) { case NOTE: return Diagnostic.Kind.NOTE; case WARNING: @@ -594,7 +761,7 @@ @DefinedBy(Api.COMPILER) public String getCode() { - return key; + return diagnosticInfo.key(); } @DefinedBy(Api.COMPILER) @@ -605,7 +772,7 @@ public void setFlag(DiagnosticFlag flag) { flags.add(flag); - if (type == DiagnosticType.ERROR) { + if (diagnosticInfo.type == DiagnosticType.ERROR) { switch (flag) { case SYNTAX: flags.remove(DiagnosticFlag.RECOVERABLE); @@ -627,13 +794,11 @@ public MultilineDiagnostic(JCDiagnostic other, List subdiagnostics) { super(other.defaultFormatter, - other.getType(), + other.diagnosticInfo, other.getLintCategory(), other.flags, other.getDiagnosticSource(), - other.position, - other.getCode(), - other.getArgs()); + other.position); this.subdiagnostics = subdiagnostics; } diff -r 8c912c147654 -r d7609b65606b langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/Log.java --- a/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/Log.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/src/jdk.compiler/share/classes/com/sun/tools/javac/util/Log.java Mon Jan 12 12:52:39 2015 -0800 @@ -535,7 +535,7 @@ * @param args Fields of the warning message. */ public void strictWarning(DiagnosticPosition pos, String key, Object ... args) { - writeDiagnostic(diags.warning(source, pos, key, args)); + writeDiagnostic(diags.warning(null, source, pos, key, args)); nwarnings++; } diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/BranchToFewerDefines.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/BranchToFewerDefines.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,111 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8067429 + * @summary java.lang.VerifyError: Inconsistent stackmap frames at branch target + * @author srikanth + * + * @compile BranchToFewerDefines.java + * @run main BranchToFewerDefines + */ + +public class BranchToFewerDefines { + public static void main(String[] args) { + } + private void problematicMethod(int p) { + switch (p) { + case 3: + long n; + while (true) { + if (false) { + break; + } + } + break; + case 2: + loop: while (true) { + while (true) { + int i = 4; + if (p != 16) { + return; + } + break loop; + } + } + break; + default: + while (true) { + if (false) { + break; + } + } + break; + } + long b; + if (p != 7) { + switch (p) { + case 1: + long a = 17; + break; + case 2: + break; + default: + break; + } + } + } + private void problematicMethod2(int p) { + switch (p) { + case 3: + long n; + { + int i = 4; + break; + } + case 2: + { + int i = 4; + break; + } + default: + { + int i = 4; + break; + } + } + long b; + if (p != 7) { + switch (p) { + case 1: + long a = 17; + break; + case 2: + break; + default: + break; + } + } + } +} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/ConstFoldTest.java --- a/langtools/test/tools/javac/ConstFoldTest.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/ConstFoldTest.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -31,6 +31,8 @@ */ import java.net.URL; +import java.nio.file.Path; +import java.nio.file.Paths; import java.util.List; public class ConstFoldTest { @@ -75,9 +77,10 @@ ToolBox tb = new ToolBox(); URL url = ConstFoldTest.class.getResource("ConstFoldTest$CFTest.class"); + Path file = Paths.get(url.toURI()); List result = tb.new JavapTask() .options("-c") - .classes(url.getFile()) + .classes(file.toString()) .run() .write(ToolBox.OutputKind.DIRECT) .getOutputLines(ToolBox.OutputKind.DIRECT); diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/Diagnostics/6769027/T6769027.java --- a/langtools/test/tools/javac/Diagnostics/6769027/T6769027.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/Diagnostics/6769027/T6769027.java Mon Jan 12 12:52:39 2015 -0800 @@ -387,7 +387,7 @@ messages.add("tester"); JCDiagnostic.Factory diags = JCDiagnostic.Factory.instance(ctx); log.useSource(new MyFileObject("This is a source line")); - JCDiagnostic d = diags.error(log.currentSource(), + JCDiagnostic d = diags.error(null, log.currentSource(), posKind.pos(), errorKind.key(), "Hello!"); if (multiKind != MultilineKind.NONE) { diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/Diagnostics/compressed/8067883/T8067883.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/Diagnostics/compressed/8067883/T8067883.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,29 @@ +/* + * @test /nodynamiccopyright/ + * @bug 8067883 + * @summary Javac misses some opportunities for diagnostic simplification + * + * @compile/fail/ref=T8067883a.out -Xdiags:compact -XDrawDiagnostics T8067883.java + * @compile/fail/ref=T8067883b.out -Xdiags:verbose -XDrawDiagnostics T8067883.java + * + */ + +import java.util.List; + +class T8067883 { + void testMethod(List li) { + m(null, li); + m(1, li); + } + + void testDiamond(List li) { + new Box<>(null, li); + new Box<>(1, li); + } + + void m(List z, List ls) { } + + static class Box { + Box(List z, List ls) { } + } +} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/Diagnostics/compressed/8067883/T8067883a.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/Diagnostics/compressed/8067883/T8067883a.out Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,6 @@ +T8067883.java:15:17: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: java.util.List, java.util.List) +T8067883.java:16:9: compiler.err.cant.apply.symbol: kindname.method, m, java.util.List,java.util.List, int,java.util.List, kindname.class, T8067883, (compiler.misc.infer.no.conforming.assignment.exists: Z, (compiler.misc.inconvertible.types: int, java.util.List)) +T8067883.java:20:25: compiler.err.prob.found.req: (compiler.misc.inconvertible.types: java.util.List, java.util.List) +T8067883.java:21:9: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: T8067883.Box), (compiler.misc.infer.no.conforming.assignment.exists: X, (compiler.misc.inconvertible.types: int, java.util.List)) +- compiler.note.compressed.diags +4 errors diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/Diagnostics/compressed/8067883/T8067883b.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/Diagnostics/compressed/8067883/T8067883b.out Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,5 @@ +T8067883.java:15:9: compiler.err.cant.apply.symbol: kindname.method, m, java.util.List,java.util.List, compiler.misc.type.null,java.util.List, kindname.class, T8067883, (compiler.misc.infer.no.conforming.assignment.exists: Z, (compiler.misc.inconvertible.types: java.util.List, java.util.List)) +T8067883.java:16:9: compiler.err.cant.apply.symbol: kindname.method, m, java.util.List,java.util.List, int,java.util.List, kindname.class, T8067883, (compiler.misc.infer.no.conforming.assignment.exists: Z, (compiler.misc.inconvertible.types: int, java.util.List)) +T8067883.java:20:9: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: T8067883.Box), (compiler.misc.infer.no.conforming.assignment.exists: X, (compiler.misc.inconvertible.types: java.util.List, java.util.List)) +T8067883.java:21:9: compiler.err.cant.apply.diamond.1: (compiler.misc.diamond: T8067883.Box), (compiler.misc.infer.no.conforming.assignment.exists: X, (compiler.misc.inconvertible.types: int, java.util.List)) +4 errors diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/SerialWarn.java --- a/langtools/test/tools/javac/SerialWarn.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/SerialWarn.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,34 +1,11 @@ /* - * Copyright (c) 2003, 2004, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test + * @test /nodynamiccopyright/ * @bug 4854628 * @summary include Throwable subclasses in missing serialVersionUID warning * @author gafter * * @compile -Werror SerialWarn.java - * @compile/fail -Xlint:serial -Werror SerialWarn.java + * @compile/fail/ref=SerialWarn.out -XDrawDiagnostics -Xlint:serial -Werror SerialWarn.java */ class SerialWarn extends Throwable {} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/SerialWarn.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/SerialWarn.out Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,4 @@ +SerialWarn.java:11:1: compiler.warn.missing.SVUID: SerialWarn +- compiler.err.warnings.and.werror +1 error +1 warning diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/T4994049/DeprecatedYES.java --- a/langtools/test/tools/javac/T4994049/DeprecatedYES.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/T4994049/DeprecatedYES.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,33 +1,10 @@ /* - * Copyright (c) 2005, 2006, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test + * @test /nodynamiccopyright/ * @bug 6229758 * @summary deprecatedNOT! is * @author Peter von der Ah\u00e9 * @compile -Xlint:deprecation DeprecatedYES.java - * @compile/fail -Werror -Xlint:deprecation DeprecatedYES.java + * @compile/fail/ref=DeprecatedYES.out -XDrawDiagnostics -Werror -Xlint:deprecation DeprecatedYES.java */ class A { diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/T4994049/DeprecatedYES.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/T4994049/DeprecatedYES.out Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,4 @@ +DeprecatedYES.java:18:10: compiler.warn.has.been.deprecated: foo(), A +- compiler.err.warnings.and.werror +1 error +1 warning diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/T6231847.java --- a/langtools/test/tools/javac/T6231847.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/T6231847.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,9 +1,8 @@ /* - * @test /nodynamiccopyright/ + * @test /nodynamiccopyright/ * @bug 6231847 * @summary Crash in com.sun.tools.javac.comp.Attr.visitNewClass:1352 * @author Peter von der Ah\u00e9 - * @compile/fail -XDdev T6231847.java * @compile/fail/ref=T6231847.out -XDdev -XDrawDiagnostics T6231847.java */ diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/T6231847.out --- a/langtools/test/tools/javac/T6231847.out Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/T6231847.out Mon Jan 12 12:52:39 2015 -0800 @@ -1,9 +1,9 @@ -T6231847.java:15:21: compiler.err.anon.class.impl.intf.no.typeargs -T6231847.java:16:30: compiler.err.anon.class.impl.intf.no.args +T6231847.java:14:21: compiler.err.anon.class.impl.intf.no.typeargs +T6231847.java:15:30: compiler.err.anon.class.impl.intf.no.args +T6231847.java:16:16: compiler.err.anon.class.impl.intf.no.qual.for.new T6231847.java:17:16: compiler.err.anon.class.impl.intf.no.qual.for.new -T6231847.java:18:16: compiler.err.anon.class.impl.intf.no.qual.for.new -T6231847.java:18:41: compiler.err.anon.class.impl.intf.no.args -T6231847.java:18:23: compiler.err.anon.class.impl.intf.no.typeargs -T6231847.java:19:16: compiler.err.qualified.new.of.static.class: T6231847.T6231847C -T6231847.java:19:34: compiler.err.illegal.qual.not.icls: T6231847.T6231847C +T6231847.java:17:41: compiler.err.anon.class.impl.intf.no.args +T6231847.java:17:23: compiler.err.anon.class.impl.intf.no.typeargs +T6231847.java:18:16: compiler.err.qualified.new.of.static.class: T6231847.T6231847C +T6231847.java:18:34: compiler.err.illegal.qual.not.icls: T6231847.T6231847C 8 errors diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/annotations/6214965/T6214965.java --- a/langtools/test/tools/javac/annotations/6214965/T6214965.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/annotations/6214965/T6214965.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,9 +23,10 @@ /** * @test - * @bug 6214965 6365854 + * @bug 6214965 6365854 8068639 * @summary Compiler crash on redefing nested annotation types * @compile CompilerAnnotationTest.java CompilerAnnotationTest2.java * @compile CompilerAnnotationTest2bad.java - * @compile/ref=T6214965.out -XDrawDiagnostics CompilerAnnotationTest2bad.java + * @compile/ref=T6214965.out -XDrawDiagnostics -Xlint:classfile CompilerAnnotationTest2bad.java + * @compile -Werror CompilerAnnotationTest2bad.java */ diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/annotations/6365854/T6365854.java --- a/langtools/test/tools/javac/annotations/6365854/T6365854.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/annotations/6365854/T6365854.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2005, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /** * @test - * @bug 6365854 + * @bug 6365854 8068639 * @summary javac crashes when compiling against an annotated class * @compile TestAnnotation.java TestCore.java * @clean test.annotation.TestAnnotation @@ -33,11 +33,11 @@ * * @compile TestAnnotation.java TestCore.java * @clean test.annotation.TestAnnotation - * @compile/ref=test1.out -XDrawDiagnostics T6365854.java + * @compile/ref=test1.out -XDrawDiagnostics -Xlint:classfile T6365854.java * @run main T6365854 - * @compile/ref=test2.out -XDrawDiagnostics evolve/TestAnnotation.java T6365854.java + * @compile/ref=test2.out -XDrawDiagnostics -Xlint:classfile evolve/TestAnnotation.java T6365854.java * @run main T6365854 - * @compile/ref=test2.out -XDrawDiagnostics T6365854.java + * @compile/ref=test2.out -XDrawDiagnostics -Xlint:classfile T6365854.java * @run main T6365854 */ diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/api/file/MyStandardJavaFileManager.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/api/file/MyStandardJavaFileManager.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.File; +import java.io.IOException; +import javax.tools.ForwardingJavaFileManager; +import javax.tools.JavaFileManager; +import javax.tools.JavaFileObject; +import javax.tools.StandardJavaFileManager; + + +class MyStandardJavaFileManager + extends ForwardingJavaFileManager + implements StandardJavaFileManager { + MyStandardJavaFileManager(StandardJavaFileManager delegate) { + super(delegate); + } + + @Override + public Iterable getJavaFileObjectsFromFiles(Iterable files) { + return fileManager.getJavaFileObjectsFromFiles(files); + } + + @Override + public Iterable getJavaFileObjects(File... files) { + return fileManager.getJavaFileObjects(files); + } + + @Override + public Iterable getJavaFileObjectsFromStrings(Iterable names) { + return fileManager.getJavaFileObjectsFromStrings(names); + } + + @Override + public Iterable getJavaFileObjects(String... names) { + return fileManager.getJavaFileObjects(names); + } + + @Override + public void setLocation(JavaFileManager.Location location, Iterable files) throws IOException { + fileManager.setLocation(location, files); + } + + @Override + public Iterable getLocation(JavaFileManager.Location location) { + return fileManager.getLocation(location); + } +} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/api/file/SJFM_AsPath.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/api/file/SJFM_AsPath.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8059977 + * @summary StandardJavaFileManager should support java.nio.file.Path. + * Test asPath method. + * @build SJFM_TestBase + * @run main SJFM_AsPath + */ + +import java.io.IOException; +import java.nio.file.Path; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import javax.tools.JavaFileObject; +import javax.tools.StandardJavaFileManager; + +/** + * For those paths which are supported by a file manager, such that + * a file object can encapsulate the path, verify that the underlying + * path can be recovered from the file object. + */ +public class SJFM_AsPath extends SJFM_TestBase { + public static void main(String... args) throws Exception { + new SJFM_AsPath().run(); + } + + @Test + void test_asPath(StandardJavaFileManager fm) throws IOException { + test_asPath(fm, getTestFilePaths()); + test_asPath(fm, getTestZipPaths()); + } + + /** + * Tests the asPath method for a specific file manager and a series + * of paths. + * + * Note: instances of MyStandardJavaFileManager only support + * encapsulating paths for files in the default file system, + * and throw UnsupportedOperationException for asPath. + * + * @param fm the file manager to be tested + * @param paths the paths to be tested + * @throws IOException + */ + void test_asPath(StandardJavaFileManager fm, List paths) throws IOException { + if (!isGetFileObjectsSupported(fm, paths)) + return; + boolean expectException = (fm instanceof MyStandardJavaFileManager); + + Set ref = new HashSet<>(paths); + for (JavaFileObject fo : fm.getJavaFileObjectsFromPaths(paths)) { + try { + Path path = fm.asPath(fo); + if (expectException) + error("expected exception not thrown: " + UnsupportedOperationException.class.getName()); + boolean found = ref.remove(path); + if (!found) { + error("Unexpected path found: " + path + "; expected one of " + ref); + } + } catch (Exception e) { + if (expectException && e instanceof UnsupportedOperationException) + continue; + error("unexpected exception thrown: " + e); + } + } + } +} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/api/file/SJFM_GetFileObjects.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/api/file/SJFM_GetFileObjects.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,138 @@ +/* + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8059977 + * @summary StandardJavaFileManager should support java.nio.file.Path. + * Test getFileObject methods. + * @build SJFM_TestBase + * @run main SJFM_GetFileObjects + */ + +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; +import java.util.Collections; +import java.util.List; +import javax.tools.JavaFileObject; +import javax.tools.StandardJavaFileManager; +import javax.tools.StandardLocation; + +/** + * For those paths supported by a file manager, verify that the paths + * can be encapsulated by file objects, such that the file objects can + * be used by a tool such as javac. + */ +public class SJFM_GetFileObjects extends SJFM_TestBase { + public static void main(String... args) throws Exception { + new SJFM_GetFileObjects().run(); + } + + @Test + void test_getJavaFileObjects(StandardJavaFileManager fm) throws IOException { + test_getJavaFileObjects(fm, getTestFilePaths()); + test_getJavaFileObjects(fm, getTestZipPaths()); + } + + /** + * Tests the getJavaFileObjects method for a specific file manager + * and a series of paths. + * + * Note: instances of MyStandardJavaFileManager only support + * encapsulating paths for files in the default file system. + * + * @param fm the file manager to be tested + * @param paths the paths to be tested + * @throws IOException + */ + void test_getJavaFileObjects(StandardJavaFileManager fm, List paths) throws IOException { + boolean expectException = !isGetFileObjectsSupported(fm, paths); + try { + compile(fm.getJavaFileObjects(paths.toArray(new Path[paths.size()]))); + if (expectException) + error("expected exception not thrown"); + } catch (RuntimeException e) { + if (expectException && e instanceof IllegalArgumentException) + return; + error("unexpected exception thrown: " + e); + } + } + + //---------------------------------------------------------------------------------------------- + + @Test + void test_getJavaFileObjectsFromPaths(StandardJavaFileManager fm) throws IOException { + test_getJavaFileObjectsFromPaths(fm, getTestFilePaths()); + test_getJavaFileObjectsFromPaths(fm, getTestZipPaths()); + } + + /** + * Tests the getJavaFileObjectsFromPaths method for a specific file manager + * and a series of paths. + * + * Note: instances of MyStandardJavaFileManager only support + * encapsulating paths for files in the default file system. + * + * @param fm the file manager to be tested + * @param paths the paths to be tested + * @throws IOException + */ + void test_getJavaFileObjectsFromPaths(StandardJavaFileManager fm, List paths) + throws IOException { + boolean expectException = !isGetFileObjectsSupported(fm, paths); + try { + compile(fm.getJavaFileObjectsFromPaths(paths)); + if (expectException) + error("expected exception not thrown: " + IllegalArgumentException.class.getName()); + } catch (RuntimeException e) { + if (expectException && e instanceof IllegalArgumentException) + return; + error("unexpected exception thrown: " + e); + } + } + + + //---------------------------------------------------------------------------------------------- + + /** + * Compiles a set of files. + * + * @param files the files to be compiled. + * @throws IOException + */ + void compile(Iterable files) throws IOException { + String name = "compile" + (compileCount++); + try (StandardJavaFileManager fm = comp.getStandardFileManager(null, null, null)) { + File f = new File(name); + f.mkdirs(); + // use setLocation(Iterable) to avoid relying on setLocationFromPaths + fm.setLocation(StandardLocation.CLASS_OUTPUT, Collections.singleton(f)); + boolean ok = comp.getTask(null, fm, null, null, null, files).call(); + if (!ok) + error(name + ": compilation failed"); + } + } + + int compileCount; +} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/api/file/SJFM_IsSameFile.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/api/file/SJFM_IsSameFile.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8059977 + * @summary StandardJavaFileManager should support java.nio.file.Path. + * Test isSameFile method. + * @build SJFM_TestBase + * @run main SJFM_IsSameFile + */ + +import java.nio.file.Path; +import java.util.List; +import java.util.concurrent.Callable; +import javax.tools.JavaFileObject; +import javax.tools.StandardJavaFileManager; + +/** + * For those paths which are supported by a file manager, such that + * a file object can encapsulate the path, verify that the underlying + * paths can be compared. + */ +public class SJFM_IsSameFile extends SJFM_TestBase { + public static void main(String... args) throws Exception { + new SJFM_IsSameFile().run(); + } + + @Test + void test_isSameFile(StandardJavaFileManager fm) throws Exception { + test_isSameFile(fm, () -> getTestFilePaths()); + test_isSameFile(fm, () -> getTestZipPaths()); + } + + /** + * Tests the isSameFile method for a specific file manager + * and a series of paths. + * + * Note: instances of MyStandardJavaFileManager only support + * encapsulating paths for files in the default file system. + * + * @param fm the file manager to be tested + * @param paths a generator for the paths to be tested + * @throws IOException + */ + void test_isSameFile(StandardJavaFileManager fm, Callable> paths) throws Exception { + if (!isGetFileObjectsSupported(fm, paths.call())) + return; + + // use distinct paths and file objects in the following two sets + Iterable setA = fm.getJavaFileObjectsFromPaths(paths.call()); + Iterable setB = fm.getJavaFileObjectsFromPaths(paths.call()); + for (JavaFileObject a : setA) { + for (JavaFileObject b : setB) { + System.err.println("compare: a: " + a); + System.err.println(" b: " + b); + // Use the fileObject getName method to determine the expected result. + // For the files being tested, getName is the absolute path. + boolean expect = a.getName().equals(b.getName()); + boolean actual = fm.isSameFile(a, b); + if (actual != expect) { + error("mismatch: actual:" + (actual ? "same" : "not same") + + ", expect:" + (expect ? "same" : "not same")); + } + } + } + } +} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/api/file/SJFM_Locations.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/api/file/SJFM_Locations.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,179 @@ +/* + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8059977 + * @summary StandardJavaFileManager should support java.nio.file.Path. + * Test get/setLocation methods. + * @build SJFM_TestBase + * @run main SJFM_Locations + */ + +import java.io.File; +import java.io.IOException; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.List; +import java.util.stream.Collectors; +import java.util.stream.Stream; +import javax.tools.JavaFileManager; +import javax.tools.StandardJavaFileManager; + +/** + * For those paths which are supported by a file manager, verify + * that setLocation can accept such paths, and that getLocation + * can subsequently return the same paths. + * + * In addition, for files in the default file system, verify + * the combinations of setting a location using files or paths + * and then subsequently getting the location as files or paths. + */ +public class SJFM_Locations extends SJFM_TestBase { + public static void main(String... args) throws Exception { + new SJFM_Locations().run(); + } + + @Test + void test_locations(StandardJavaFileManager fm) throws IOException { + test_setFiles_getFiles(fm, getTestFileDirs()); + test_setFiles_getPaths(fm, getTestFileDirs()); + test_setPaths_getFiles(fm, getTestFilePathDirs()); + test_setPaths_getPaths(fm, getTestFilePathDirs()); +// test_setPaths_getPaths(fm, getTestZipPathDirs()); + } + + void test_setFiles_getFiles(StandardJavaFileManager fm, List inFiles) throws IOException { + System.err.println("test_setFiles_getFiles"); + JavaFileManager.Location l = newLocation(); + fm.setLocation(l, inFiles); + Iterable outFiles = fm.getLocation(l); + compare(inFiles, outFiles); + } + + void test_setFiles_getPaths(StandardJavaFileManager fm, List inFiles) throws IOException { + System.err.println("test_setFiles_getPaths"); + JavaFileManager.Location l = newLocation(); + fm.setLocation(l, inFiles); + Iterable outPaths = fm.getLocationAsPaths(l); + compare(inFiles, outPaths); + } + + void test_setPaths_getFiles(StandardJavaFileManager fm, List inPaths) throws IOException { + System.err.println("test_setPaths_getFiles"); + JavaFileManager.Location l = newLocation(); + fm.setLocationFromPaths(l, inPaths); + Iterable outFiles = fm.getLocation(l); + compare(inPaths, outFiles); + } + + void test_setPaths_getPaths(StandardJavaFileManager fm, List inPaths) throws IOException { + System.err.println("test_setPaths_getPaths"); + JavaFileManager.Location l = newLocation(); + fm.setLocationFromPaths(l, inPaths); + Iterable outPaths = fm.getLocationAsPaths(l); + compare(inPaths, outPaths); + } + + //---------------------------------------------------------------------------------------------- + + /** + * Gets a representative series of directories in the default file system, + * derived from the test.src directory and test.classes path. + * + * @return a list of directories, represented with {@code File} + * @throws IOException + */ + List getTestFileDirs() throws IOException { + return Stream.of("test.src", "test.classes") + .map(s -> System.getProperty(s)) + .flatMap(s -> Stream.of(s.split(File.pathSeparator, 0))) + .filter(s -> !s.isEmpty()) + .map(s -> new File(s)) + .collect(Collectors.toList()); + } + + /** + * Gets a representative series of directories in the default file system, + * derived from the test.src directory and test.classes path. + * + * @return a list of directories, represented with {@code Path} + * @throws IOException + */ + List getTestFilePathDirs() throws IOException { + return Stream.of("test.src", "test.classes") + .map(s -> System.getProperty(s)) + .flatMap(s -> Stream.of(s.split(File.pathSeparator, 0))) + .filter(s -> !s.isEmpty()) + .map(s -> Paths.get(s)) + .collect(Collectors.toList()); + } + + + /** + * Compares two lists of items by comparing their individual string representations. + * + * @param in the first set of items to be compared + * @param out the second set of items to be compared + */ + void compare(Iterable in, Iterable out) { + List ins = toString(in); + List outs = toString(out); + if (!ins.equals(outs)) { + error("mismatch in comparison"); + System.err.println("in:"); + for (String s: ins) System.err.println(s); + System.err.println("out:"); + for (String s: outs) System.err.println(s); + } + } + + List toString(Iterable iter) { + List strings = new ArrayList<>(); + for (Object item: iter) + strings.add(item.toString()); + return strings; + } + + /** + * Create an instance of a location. + * @return a location + */ + JavaFileManager.Location newLocation() { + final String name = "locn" + (count++); + return new JavaFileManager.Location() { + @Override + public String getName() { + return name; + } + + @Override + public boolean isOutputLocation() { + return false; + } + }; + } + + int count = 0; +} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/api/file/SJFM_TestBase.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/api/file/SJFM_TestBase.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,226 @@ +/* + * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +import java.io.IOException; +import java.io.OutputStream; +import java.io.UncheckedIOException; +import java.lang.annotation.Annotation; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.reflect.InvocationTargetException; +import java.lang.reflect.Method; +import java.nio.file.FileSystem; +import java.nio.file.FileSystems; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.stream.Collectors; +import java.util.zip.ZipEntry; +import java.util.zip.ZipOutputStream; + +import javax.tools.JavaCompiler; +import javax.tools.StandardJavaFileManager; +import javax.tools.ToolProvider; + +/** + * Base class for unit tests for StandardJavaFileManager. + */ +class SJFM_TestBase { + + /** Shared compiler instance. */ + JavaCompiler comp; + + /** A list of items to be closed when the test is complete. */ + List closeables; + + /** + * Runs a test. This is the primary entry point and should generally be + * called from each test's main method. + * It calls all methods annotated with {@code @Test} with the instances + * of StandardJavaFileManager to be tested. + * + * @throws Exception if the test fails. + */ + void run() throws Exception { + comp = ToolProvider.getSystemJavaCompiler(); + closeables = new ArrayList<>(); + + try (StandardJavaFileManager systemFileManager = comp.getStandardFileManager(null, null, null); + StandardJavaFileManager customFileManager = new MyStandardJavaFileManager(systemFileManager)) { + test(systemFileManager); + test(customFileManager); + } finally { + for (AutoCloseable c: closeables) { + try { + c.close(); + } catch (IOException e) { + error("Exception closing " + c + ": " + e); + } + } + } + + if (errors > 0) + throw new Exception(errors + " errors occurred"); + } + + /** + * Get the file managers to be tested. + * + * Currently, two are provided: + *

        + *
      1. the system-provided file manager + *
      2. a custom file manager, which relies on the default methods provided in the + * StandardJavaFileManager interface + *
      3. + * + * @return the file managers to be tested + */ + List getTestFileManagers() { + StandardJavaFileManager systemFileManager = comp.getStandardFileManager(null, null, null); + StandardJavaFileManager customFileManager = new MyStandardJavaFileManager(systemFileManager); + return Arrays.asList(systemFileManager, customFileManager); + } + + /** + * Tests a specific file manager, by calling all methods annotated + * with {@code @Test} passing this file manager as an argument. + * + * @param fm the file manager to be tested + * @throws Exception if the test fails + */ + void test(StandardJavaFileManager fm) throws Exception { + System.err.println("Testing " + fm); + for (Method m: getClass().getDeclaredMethods()) { + Annotation a = m.getAnnotation(Test.class); + if (a != null) { + try { + System.err.println("Test " + m.getName()); + m.invoke(this, new Object[] { fm }); + } catch (InvocationTargetException e) { + Throwable cause = e.getCause(); + throw (cause instanceof Exception) ? ((Exception) cause) : e; + } + System.err.println(); + } + } + } + + /** Marker annotation for test cases. */ + @Retention(RetentionPolicy.RUNTIME) + @interface Test { } + + /** + * Returns a series of paths for artifacts in the default file system. + * The paths are for the .java files in the test.src directory. + * + * @return a list of paths + * @throws IOException + */ + List getTestFilePaths() throws IOException { + String testSrc = System.getProperty("test.src"); + return Files.list(Paths.get(testSrc)) + .filter(p -> p.getFileName().toString().endsWith(".java")) + .collect(Collectors.toList()); + } + + private FileSystem zipfs; + private List zipPaths; + + /** + * Returns a series of paths for artifacts in a non-default file system. + * A zip file is created containing copies of the .java files in the + * test.src directory. The paths that are returned refer to these files. + * + * @return a list of paths + * @throws IOException + */ + List getTestZipPaths() throws IOException { + if (zipfs == null) { + Path testZip = createSourceZip(); + zipfs = FileSystems.newFileSystem(testZip, null); + closeables.add(zipfs); + zipPaths = Files.list(zipfs.getRootDirectories().iterator().next()) + .filter(p -> p.getFileName().toString().endsWith(".java")) + .collect(Collectors.toList()); + } + return zipPaths; + } + + /** + * Create a zip file containing the contents of the test.src directory. + * + * @return a path for the zip file. + * @throws IOException if there is a problem creating the file + */ + private Path createSourceZip() throws IOException { + Path testSrc = Paths.get(System.getProperty("test.src")); + Path testZip = Paths.get("test.zip"); + try (OutputStream os = Files.newOutputStream(testZip)) { + try (ZipOutputStream zos = new ZipOutputStream(os)) { + Files.list(testSrc) + .filter(p -> p.getFileName().toString().endsWith(".java")) + .forEach(p -> { + try { + zos.putNextEntry(new ZipEntry(p.getFileName().toString())); + zos.write(Files.readAllBytes(p)); + zos.closeEntry(); + } catch (IOException ex) { + throw new UncheckedIOException(ex); + } + }); + } + } + return testZip; + } + + /** + * Tests whether it is expected that a file manager will be able + * to create a series of file objects from a series of paths. + * + * MyStandardJavaFileManager does not support paths referring to + * non-default file systems. + * + * @param fm the file manager to be tested + * @param paths the paths to be tested + * @return + */ + boolean isGetFileObjectsSupported(StandardJavaFileManager fm, List paths) { + return !(fm instanceof MyStandardJavaFileManager + && (paths.get(0).getFileSystem() != FileSystems.getDefault())); + } + + /** + * Report an error. + */ + void error(String msg) { + System.err.println("Error: " + msg); + errors++; + } + + /** Count of errors reported. */ + int errors; + +} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/conditional/ConditionalWithFinalStrings.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/conditional/ConditionalWithFinalStrings.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8066871 + * @summary java.lang.VerifyError: Bad local variable type - local final String + * @author Srikanth Sankaran + * + * @compile -g:none ConditionalWithFinalStrings.java + * @run main ConditionalWithFinalStrings + */ + +public class ConditionalWithFinalStrings { + + interface I { + String foo(); + } + + static class Tmp { + private String value; + public void setValue(String tmpStr) { + this.value = tmpStr; + if (!this.value.equals("YES")) + throw new AssertionError(); + } + } + + void goo(I i) { + if (!i.foo().equals("YES")) + throw new AssertionError(); + } + + public void test() { + final String y = "YES"; + final String n = "NO"; + Tmp tmp = new Tmp(); + tmp.setValue(true ? y : n); + goo (() -> y); + + } + public static void main(String[] args) { + new ConditionalWithFinalStrings().test(); + if (!id("Hello!").equals("Hello!")) + throw new AssertionError(); + + } + static Z id(Z z) { return z; } +} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/diags/MessageFile.java --- a/langtools/test/tools/javac/diags/MessageFile.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/diags/MessageFile.java Mon Jan 12 12:52:39 2015 -0800 @@ -31,7 +31,9 @@ */ class MessageFile { static final Pattern emptyOrCommentPattern = Pattern.compile("( *#.*)?"); - static final Pattern infoPattern = Pattern.compile("# ([0-9]+: [-A-Za-z ]+, )*[0-9]+: [-A-Za-z ]+"); + static final Pattern typePattern = Pattern.compile("[-\\\\'A-Z\\.a-z ]+( \\([A-Za-z 0-9]+\\))?"); + static final Pattern infoPattern = Pattern.compile(String.format("# ([0-9]+: %s, )*[0-9]+: %s", + typePattern.pattern(), typePattern.pattern())); /** * A line of text within the message file. diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/flow/LVTHarness.java --- a/langtools/test/tools/javac/flow/LVTHarness.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/flow/LVTHarness.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2013, 2014, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2013, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -23,7 +23,7 @@ /* * @test - * @bug 7047734 8027660 8037937 8047719 8058708 + * @bug 7047734 8027660 8037937 8047719 8058708 8064857 * @summary The LVT is not generated correctly during some try/catch scenarios * javac crash while creating LVT entry for a local variable defined in * an inner block @@ -147,7 +147,7 @@ } void checkMethod(ConstantPool constantPool, Method method, AliveRanges ranges) - throws InvalidIndex, UnexpectedEntry { + throws InvalidIndex, UnexpectedEntry, ConstantPoolException { Code_attribute code = (Code_attribute) method.attributes.get(Attribute.Code); LocalVariableTable_attribute lvt = (LocalVariableTable_attribute) (code.attributes.get(Attribute.LocalVariableTable)); @@ -169,7 +169,7 @@ } if (i < infoFromRanges.size()) { - error(infoFromLVT, infoFromRanges); + error(infoFromLVT, infoFromRanges, method.getName(constantPool).toString()); } } @@ -205,9 +205,10 @@ return sb.toString(); } - protected void error(List infoFromLVT, List infoFromRanges) { + protected void error(List infoFromLVT, List infoFromRanges, String methodName) { nerrors++; System.err.printf("Error occurred while checking file: %s\n", jfo.getName()); + System.err.printf("at method: %s\n", methodName); System.err.println("The range info from the annotations is"); printStringListToErrOutput(infoFromRanges); System.err.println(); diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/flow/tests/TestCaseFor.java --- a/langtools/test/tools/javac/flow/tests/TestCaseFor.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/flow/tests/TestCaseFor.java Mon Jan 12 12:52:39 2015 -0800 @@ -2,7 +2,7 @@ public class TestCaseFor { - @AliveRange(varName="o", bytecodeStart=10, bytecodeLength=8) + @AliveRange(varName="o", bytecodeStart=10, bytecodeLength=11) @AliveRange(varName="o", bytecodeStart=24, bytecodeLength=1) void m1(String[] args) { Object o; @@ -13,7 +13,7 @@ o = ""; } - @AliveRange(varName="o", bytecodeStart=10, bytecodeLength=8) + @AliveRange(varName="o", bytecodeStart=10, bytecodeLength=11) @AliveRange(varName="o", bytecodeStart=24, bytecodeLength=1) void m2(String[] args) { Object o; diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/flow/tests/TestCaseForEach.java --- a/langtools/test/tools/javac/flow/tests/TestCaseForEach.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/flow/tests/TestCaseForEach.java Mon Jan 12 12:52:39 2015 -0800 @@ -2,7 +2,7 @@ public class TestCaseForEach { - @AliveRange(varName="o", bytecodeStart=25, bytecodeLength=8) + @AliveRange(varName="o", bytecodeStart=25, bytecodeLength=11) @AliveRange(varName="o", bytecodeStart=39, bytecodeLength=1) void m(String[] args) { Object o; diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/flow/tests/TestCaseIfElse.java --- a/langtools/test/tools/javac/flow/tests/TestCaseIfElse.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/flow/tests/TestCaseIfElse.java Mon Jan 12 12:52:39 2015 -0800 @@ -60,4 +60,19 @@ } return null; } + + @AliveRange(varName="i", bytecodeStart=6, bytecodeLength=2) + int m4(boolean flag) { + int i; + label: + { + if (flag) { + i = 1; + } else { + break label; + } + return i; + } + return -1; + } } diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/flow/tests/TestCaseSwitch.java --- a/langtools/test/tools/javac/flow/tests/TestCaseSwitch.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/flow/tests/TestCaseSwitch.java Mon Jan 12 12:52:39 2015 -0800 @@ -81,4 +81,26 @@ o = "finish"; } + @AliveRange(varName="oCache", bytecodeStart=30, bytecodeLength=6) + @AliveRange(varName="cache", bytecodeStart=41, bytecodeLength=3) + @AliveRange(varName="cache", bytecodeStart=54, bytecodeLength=2) + @AliveRange(varName="service", bytecodeStart=39, bytecodeLength=5) + Object m4(int i) { + Object cache; + switch (i) { + case 0: + Object oCache = null; + if (oCache != null) { + return oCache; + } + case 1: + Object service = null; + cache = null; + break; + default: + throw new AssertionError(""); + } + return cache; + } + } diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/flow/tests/TestCaseTry.java --- a/langtools/test/tools/javac/flow/tests/TestCaseTry.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/flow/tests/TestCaseTry.java Mon Jan 12 12:52:39 2015 -0800 @@ -17,7 +17,8 @@ } @AliveRange(varName="o", bytecodeStart=3, bytecodeLength=16) - @AliveRange(varName="o", bytecodeStart=23, bytecodeLength=23) + @AliveRange(varName="o", bytecodeStart=23, bytecodeLength=8) + @AliveRange(varName="o", bytecodeStart=35, bytecodeLength=11) void m1() { Object o; try { @@ -33,7 +34,8 @@ } @AliveRange(varName="o", bytecodeStart=3, bytecodeLength=16) - @AliveRange(varName="o", bytecodeStart=23, bytecodeLength=31) + @AliveRange(varName="o", bytecodeStart=23, bytecodeLength=16) + @AliveRange(varName="o", bytecodeStart=43, bytecodeLength=11) void m2() { Object o; try { @@ -51,7 +53,8 @@ } @AliveRange(varName="o", bytecodeStart=22, bytecodeLength=38) - @AliveRange(varName="o", bytecodeStart=103, bytecodeLength=8) + @AliveRange(varName="o", bytecodeStart=103, bytecodeLength=3) + @AliveRange(varName="o", bytecodeStart=110, bytecodeLength=1) void m3() { Object o; try (BufferedReader br = diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/flow/tests/TestCaseWhile.java --- a/langtools/test/tools/javac/flow/tests/TestCaseWhile.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/flow/tests/TestCaseWhile.java Mon Jan 12 12:52:39 2015 -0800 @@ -2,7 +2,7 @@ public class TestCaseWhile { - @AliveRange(varName="o", bytecodeStart=9, bytecodeLength=5) + @AliveRange(varName="o", bytecodeStart=9, bytecodeLength=8) @AliveRange(varName="o", bytecodeStart=20, bytecodeLength=1) void m(String[] args) { Object o; diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/generics/MissingCast2.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/generics/MissingCast2.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,55 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8043741 + * @summary VerifyError due to missing checkcast + * @author srikanth + * + * @compile MissingCast2.java + * @run main MissingCast2 + */ + +import java.util.*; + +public class MissingCast2 { + public static void main(String[] args) { + new E(); + } +} + +class S { + T t; +} + +class C { + class I { }; +} + +class E extends S { + { + t = new C(); + t.new I() { }; + } +}; diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/overrridecrash/B.java --- a/langtools/test/tools/javac/overrridecrash/B.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/overrridecrash/B.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,33 +1,10 @@ /* - * Copyright (c) 2003, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test + * @test /nodynamiccopyright/ * @bug 4909690 * @summary AssertionError(com.sun.tools.javac.v8.code.Symbol$MethodSymbol.isOverridableIn) * @author gafter * - * @compile/fail B.java + * @compile/fail/ref=B.out -XDrawDiagnostics B.java */ public class B extends A diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/overrridecrash/B.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/overrridecrash/B.out Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,3 @@ +B.java:12:27: compiler.err.illegal.combination.of.modifiers: private, protected +A.java:25:27: compiler.err.illegal.combination.of.modifiers: private, protected +2 errors diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/processing/6365040/T6365040.java --- a/langtools/test/tools/javac/processing/6365040/T6365040.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/processing/6365040/T6365040.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,28 +1,5 @@ /* - * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test + * @test /nodynamiccopyright/ * @bug 6365040 6358129 * @summary Test -processor foo,bar,baz * @author Joseph D. Darcy @@ -34,8 +11,8 @@ * @compile -processor ProcFoo,ProcBar,T6365040 -proc:only T6365040.java * @compile -processor T6365040 -proc:only T6365040.java * @compile -processor T6365040,NotThere, -proc:only T6365040.java - * @compile/fail -processor NotThere -proc:only T6365040.java - * @compile/fail -processor NotThere,T6365040 -proc:only T6365040.java + * @compile/fail/ref=T6365040.out -XDrawDiagnostics -processor NotThere -proc:only T6365040.java + * @compile/fail/ref=T6365040.out -XDrawDiagnostics -processor NotThere,T6365040 -proc:only T6365040.java */ import java.util.Set; diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/processing/6365040/T6365040.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/processing/6365040/T6365040.out Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,4 @@ +- compiler.err.proc.processor.not.found: NotThere +- compiler.warn.proc.proc-only.requested.no.procs +1 error +1 warning diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/processing/6511613/clss41701.java --- a/langtools/test/tools/javac/processing/6511613/clss41701.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/processing/6511613/clss41701.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,35 +1,11 @@ /* - * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test + * @test /nodynamiccopyright/ * @bug 6511613 * @summary javac unexpectedly doesn't fail in some cases if an annotation processor specified - * * @library /tools/javac/lib * @build JavacTestingAbstractProcessor DummyProcessor - * @compile/fail clss41701.java - * @compile/fail -processor DummyProcessor clss41701.java + * @compile/fail/ref=clss41701.out -XDrawDiagnostics clss41701.java + * @compile/fail/ref=clss41701.out -XDrawDiagnostics -processor DummyProcessor clss41701.java */ import java.io.PrintStream; diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/processing/6511613/clss41701.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/processing/6511613/clss41701.out Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,2 @@ +clss41701.java:19:30: compiler.err.type.var.may.not.be.followed.by.other.bounds +1 error diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/processing/errors/TestFatalityOfParseErrors.java --- a/langtools/test/tools/javac/processing/errors/TestFatalityOfParseErrors.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/processing/errors/TestFatalityOfParseErrors.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,28 +1,5 @@ /* - * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test + * @test /nodynamiccopyright/ * @bug 6403459 * @summary Test that generating programs with syntax errors is a fatal condition * @author Joseph D. Darcy @@ -30,7 +7,7 @@ * @build JavacTestingAbstractProcessor * @compile TestReturnCode.java * @compile TestFatalityOfParseErrors.java - * @compile/fail -XprintRounds -processor TestFatalityOfParseErrors -proc:only TestFatalityOfParseErrors.java + * @compile/fail/ref=TestFatalityOfParseErrors.out -XDrawDiagnostics -XprintRounds -processor TestFatalityOfParseErrors -proc:only TestFatalityOfParseErrors.java */ import java.util.Set; @@ -49,41 +26,12 @@ * is marked as an error. */ public class TestFatalityOfParseErrors extends JavacTestingAbstractProcessor { - int round = 0; public boolean process(Set annotations, RoundEnvironment roundEnvironment) { - try { - PrintWriter pw = null; - round++; - - switch (round) { - case 1: - pw = new PrintWriter(filer.createSourceFile("SyntaxError").openWriter()); - pw.println("class SyntaxError {"); - pw.close(); - break; - - case 2: - pw = new PrintWriter(filer.createSourceFile("SimpleClass").openWriter()); - pw.println("class SimpleClass {}"); - pw.close(); - - if (!roundEnvironment.errorRaised() || !roundEnvironment.processingOver() ) { - System.err.println(roundEnvironment); - throw new RuntimeException("Second round not erroneous as expected."); - } - if (!roundEnvironment.getRootElements().isEmpty()) { - System.err.println(roundEnvironment); - throw new RuntimeException("Root elements not empty as expected."); - } - break; - - default: - throw new RuntimeException("Unexpected round number " + round); - } + try (PrintWriter pw = new PrintWriter(filer.createSourceFile("SyntaxError").openWriter())) { + pw.println("class SyntaxError {"); } catch (IOException ioException) { - throw new RuntimeException(ioException); } return true; } diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/processing/errors/TestFatalityOfParseErrors.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/processing/errors/TestFatalityOfParseErrors.out Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,10 @@ +Round 1: + input files: {TestFatalityOfParseErrors} + annotations: [] + last round: false +Round 2: + input files: {} + annotations: [] + last round: true +SyntaxError.java:1:20: compiler.err.premature.eof +1 error diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/processing/messager/MessagerBasics.java --- a/langtools/test/tools/javac/processing/messager/MessagerBasics.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/processing/messager/MessagerBasics.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,28 +1,5 @@ /* - * Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test + * @test /nodynamiccopyright/ * @bug 6341173 6341072 * @summary Test presence of Messager methods * @author Joseph D. Darcy @@ -30,9 +7,9 @@ * @build JavacTestingAbstractProcessor * @compile MessagerBasics.java * @compile -processor MessagerBasics -proc:only MessagerBasics.java - * @compile/fail -processor MessagerBasics -proc:only -AfinalError MessagerBasics.java + * @compile/fail/ref=MessagerBasics.out -XDrawDiagnostics -processor MessagerBasics -proc:only -AfinalError MessagerBasics.java * @compile -processor MessagerBasics MessagerBasics.java - * @compile/fail -processor MessagerBasics -AfinalError MessagerBasics.java + * @compile/fail/ref=MessagerBasics.out -XDrawDiagnostics -processor MessagerBasics -AfinalError MessagerBasics.java */ import java.util.Set; diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/processing/messager/MessagerBasics.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/processing/messager/MessagerBasics.out Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,2 @@ +- compiler.err.proc.messager: Does not compute +1 error diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/staticQualifiedNew/StaticQualifiedNew.java --- a/langtools/test/tools/javac/staticQualifiedNew/StaticQualifiedNew.java Mon Jan 12 11:46:43 2015 -0800 +++ b/langtools/test/tools/javac/staticQualifiedNew/StaticQualifiedNew.java Mon Jan 12 12:52:39 2015 -0800 @@ -1,33 +1,9 @@ /* - * Copyright (c) 2000, Oracle and/or its affiliates. All rights reserved. - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * This code is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License version 2 only, as - * published by the Free Software Foundation. - * - * This code is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - * version 2 for more details (a copy is included in the LICENSE file that - * accompanied this code). - * - * You should have received a copy of the GNU General Public License version - * 2 along with this work; if not, write to the Free Software Foundation, - * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. - * - * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA - * or visit www.oracle.com if you need additional information or have any - * questions. - */ - -/* - * @test + * @test /nodynamiccopyright/ * @bug 4295650 * @summary Verify that qualified 'new' of static class is forbidden. * @author maddox (after gbracha) - * - * @compile/fail StaticQualifiedNew.java + * @compile/fail/ref=StaticQualifiedNew.out -XDrawDiagnostics StaticQualifiedNew.java */ import p2.X; diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/staticQualifiedNew/StaticQualifiedNew.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/staticQualifiedNew/StaticQualifiedNew.out Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,2 @@ +StaticQualifiedNew.java:13:11: compiler.err.qualified.new.of.static.class: p2.X.M +1 error diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/tree/8067914/E.out --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/tree/8067914/E.out Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,16 @@ + +class E extends S { + + E() { + super(); + } + { + t = new C(); + new I(<*nullchk*>((C)t)){ + + (.C x0) { + x0.super(); + } + }; + } +} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/tree/8067914/NukeExtraCast.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/tree/8067914/NukeExtraCast.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,50 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/* + * @test + * @bug 8067914 + * @summary Redunant type cast nodes in AST (follow up from JDK-8043741) + * @library /tools/lib + * @build ToolBox + * @run compile -XD-printsource T8067914.java + * @run main NukeExtraCast + */ + +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.List; + +public class NukeExtraCast { + + public static void main(String[] args) throws Exception { + ToolBox tb = new ToolBox(); + Path path1 = Paths.get(ToolBox.testClasses, "E.java"); + List file1 = tb.readAllLines(path1); + + Path path2 = Paths.get(ToolBox.testSrc, "E.out"); + List file2 = tb.readAllLines(path2); + tb.checkEqual(file1, file2); + } + +} diff -r 8c912c147654 -r d7609b65606b langtools/test/tools/javac/tree/8067914/T8067914.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/langtools/test/tools/javac/tree/8067914/T8067914.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,33 @@ +/* + * Copyright (c) 2014, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +class S { T t; } +class C { class I { }; } +class E extends S {{ + t = new C(); + ((C) t).new I() { }; +}}; +class X { + public static void main(String[] args) { new E(); } +} + diff -r 8c912c147654 -r d7609b65606b make/Jprt.gmk --- a/make/Jprt.gmk Mon Jan 12 11:46:43 2015 -0800 +++ b/make/Jprt.gmk Mon Jan 12 12:52:39 2015 -0800 @@ -35,6 +35,9 @@ ifdef JPRT_ARCHIVE_INSTALL_BUNDLE override JPRT_ARCHIVE_INSTALL_BUNDLE := $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_INSTALL_BUNDLE)) endif + ifdef JPRT_ARCHIVE_TEST_BUNDLE + override JPRT_ARCHIVE_TEST_BUNDLE := $(shell $(CYGPATH) -u $(JPRT_ARCHIVE_TEST_BUNDLE)) + endif endif # When running in JPRT these will be provided. Need defaults so that this makefile @@ -45,13 +48,16 @@ ifndef JPRT_ARCHIVE_INSTALL_BUNDLE JPRT_ARCHIVE_INSTALL_BUNDLE=/tmp/jprt_bundles/product-install.zip endif +ifndef JPRT_ARCHIVE_TEST_BUNDLE + JPRT_ARCHIVE_TEST_BUNDLE=/tmp/jprt_bundles/test-image.zip +endif ifeq ($(SKIP_BOOT_CYCLE), false) jprt_bundle: bootcycle-images endif # This target must be called in the context of a SPEC file -jprt_bundle: $(JPRT_ARCHIVE_BUNDLE) +jprt_bundle: $(JPRT_ARCHIVE_BUNDLE) $(JPRT_ARCHIVE_TEST_BUNDLE) # This target must be called in the context of a SPEC file $(JPRT_ARCHIVE_BUNDLE): bundles @@ -59,8 +65,14 @@ $(RM) $@ $(CP) $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip $@ +$(JPRT_ARCHIVE_TEST_BUNDLE): bundles + $(MKDIR) -p $(@D) + $(RM) $@ + $(CP) $(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip $@ + SRC_JDK_IMAGE_DIR := $(JDK_IMAGE_DIR) SRC_JRE_IMAGE_DIR := $(JRE_IMAGE_DIR) +SRC_TEST_IMAGE_DIR := $(TEST_IMAGE_DIR) SRC_JDK_BUNDLE_DIR := $(JDK_BUNDLE_DIR) SRC_JRE_BUNDLE_DIR := $(JRE_BUNDLE_DIR) @@ -70,6 +82,7 @@ $(MKDIR) -p $(BUILD_OUTPUT)/bundles $(CD) $(SRC_JDK_IMAGE_DIR) && $(ZIP) -y -q -r $(BUILD_OUTPUT)/bundles/$(JDK_IMAGE_SUBDIR).zip . $(CD) $(SRC_JRE_IMAGE_DIR) && $(ZIP) -y -q -r $(BUILD_OUTPUT)/bundles/$(JRE_IMAGE_SUBDIR).zip . + $(CD) $(SRC_TEST_IMAGE_DIR) && $(ZIP) -y -q -r $(BUILD_OUTPUT)/bundles/$(TEST_IMAGE_SUBDIR).zip . if [ -d $(BUILD_OUTPUT)/install/bundles ] ; then \ $(CD) $(BUILD_OUTPUT)/install/bundles && $(ZIP) -y -q -r $(JPRT_ARCHIVE_INSTALL_BUNDLE) . ; \ fi diff -r 8c912c147654 -r d7609b65606b make/Main.gmk --- a/make/Main.gmk Mon Jan 12 11:46:43 2015 -0800 +++ b/make/Main.gmk Mon Jan 12 12:52:39 2015 -0800 @@ -238,8 +238,12 @@ mac-bundles: +($(CD) $(SRC_ROOT)/make && $(MAKE) $(MAKE_ARGS) -f MacBundles.gmk) +prepare-test-image: + $(MKDIR) -p $(TEST_IMAGE_DIR) + $(ECHO) > $(TEST_IMAGE_DIR)/Readme.txt 'JDK test image' + ALL_TARGETS += source-tips bootcycle-images zip-security zip-source strip-binaries \ - jrtfs-jar jimages profiles mac-bundles + jrtfs-jar jimages profiles mac-bundles prepare-test-image ################################################################################ # Docs targets @@ -442,7 +446,7 @@ # alias for ease of use. jdk: exploded-image -images: jimages demos samples zip-security +images: test-image jimages demos samples zip-security ifeq ($(OPENJDK_TARGET_OS), macosx) images: mac-bundles @@ -450,9 +454,11 @@ docs: docs-javadoc docs-jvmtidoc +test-image: prepare-test-image + ALL_TARGETS += buildtools gensrc gendata copy java rmic libs launchers \ jdk.jdwp.agent-gensrc $(ALL_MODULE_TARGETS) exploded-image jdk images \ - docs + docs test-image ################################################################################ diff -r 8c912c147654 -r d7609b65606b modules.xml --- a/modules.xml Mon Jan 12 11:46:43 2015 -0800 +++ b/modules.xml Mon Jan 12 12:52:39 2015 -0800 @@ -482,6 +482,7 @@ java.logging java.naming java.rmi + java.transaction javax.activity @@ -492,9 +493,6 @@ javax.rmi.CORBA - javax.transaction - - org.omg.CORBA @@ -888,8 +886,8 @@ java.compact3 java.corba java.desktop + java.transaction java.xml.bind - java.xml.soap java.xml.ws @@ -982,6 +980,14 @@ + java.transaction + java.base + java.rmi + + javax.transaction + + + java.xml java.base @@ -1056,17 +1062,17 @@ org.xml.sax.helpers - - com.sun.org.apache.xerces.internal.dom - java.xml.soap - - - com.sun.org.apache.xerces.internal.jaxp - java.xml.soap - - - com.sun.org.apache.xerces.internal.util - java.xml.soap + + com.sun.org.apache.xerces.internal.dom + java.xml.ws + + + com.sun.org.apache.xerces.internal.jaxp + java.xml.ws + + + com.sun.org.apache.xerces.internal.util + java.xml.ws com.sun.org.apache.xml.internal.dtm @@ -1262,17 +1268,14 @@ com.sun.xml.internal.org.jvnet.mimepull - java.xml.soap java.xml.ws com.sun.xml.internal.org.jvnet.staxex - java.xml.soap java.xml.ws com.sun.xml.internal.org.jvnet.staxex.util - java.xml.soap java.xml.ws @@ -1319,29 +1322,16 @@ - java.xml.soap - java.activation - java.base - java.desktop - java.logging - java.xml - java.xml.bind - - javax.xml.soap - - - java.xml.ws - java.activation java.annotations.common java.base java.desktop java.logging java.management java.rmi + java.activation java.xml java.xml.bind - java.xml.soap jdk.httpserver javax.jws @@ -1350,6 +1340,9 @@ javax.jws.soap + javax.xml.soap + + javax.xml.ws diff -r 8c912c147654 -r d7609b65606b nashorn/.hgtags --- a/nashorn/.hgtags Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/.hgtags Mon Jan 12 12:52:39 2015 -0800 @@ -278,3 +278,4 @@ 498d1d6c4219086143b764b3bf61afe65dcece47 jdk9-b42 8ae8dff2a28f3b8831cce97ae0c7a957c5dc650a jdk9-b43 50ee576062726e536d1bb9a5eadd8fd4470128fc jdk9-b44 +3c2bbeda038aef7061455fec604db7d8a342fac5 jdk9-b45 diff -r 8c912c147654 -r d7609b65606b nashorn/samples/jd.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nashorn/samples/jd.js Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,94 @@ +#// Usage: jjs -cp jd.js -- [jdis|jdec] + +/* + * Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * - Neither the name of Oracle nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS + * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +// javap-like disassembler/decoder tool that disassembles/decodes +// java classes but with OpenJDK AsmTools disassembler/decoder syntax. +// You need to build asmtool.jar from OpenJDK codetools project +// specify it with -cp option. + +// See also https://wiki.openjdk.java.net/display/CodeTools/AsmTools + +function usage() { + print("Usage: jjs -cp jd.js -- [jdis|jdec]"); + exit(1); +} + +if (arguments.length == 0) { + usage(); +} + +// argument handling +// convert to internal class name +var className = arguments[0].replaceAll('\\.', '/'); +var tool; +if (arguments.length > 1) { + tool = arguments[1]; + switch (tool) { + case 'jdis': + case 'jdec': + break; + default: + usage(); + } +} else { + tool = "jdis"; // default tool +} + +// Java classes used +var AsmTools = Java.type("org.openjdk.asmtools.Main"); +var Files = Java.type("java.nio.file.Files"); +var StandardCopyOption = Java.type("java.nio.file.StandardCopyOption"); + +// retrive input stream for .class bytes +var cl = AsmTools.class.classLoader; +var res = cl.getResource(className + ".class"); + +if (res) { + var is = res.openStream(); + var tmpPath; + try { + // copy the content of the .class to a temp file + tmpPath = Files.createTempFile("asmtools-", ".class"); + // mark as delete-on-exit + tmpPath.toFile().deleteOnExit(); + Files.copy(is, tmpPath, [ StandardCopyOption.REPLACE_EXISTING ]); + } finally { + is.close(); + } + + // invoke asmtools Main + AsmTools.main([ tool, tmpPath.toString() ]); +} else { + print("no such class: " + arguments[0]); + exit(1); +} diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/AbstractJSObject.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/AbstractJSObject.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/AbstractJSObject.java Mon Jan 12 12:52:39 2015 -0800 @@ -36,7 +36,10 @@ * treat objects of such classes just like nashorn script objects. Usual nashorn * operations like obj[i], obj.foo, obj.func(), delete obj.foo will be glued * to appropriate method call of this class. + * + * @since 1.8u40 */ +@jdk.Exported public abstract class AbstractJSObject implements JSObject { /** * Call this object as a JavaScript function. This is equivalent to diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ClassFilter.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ClassFilter.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ClassFilter.java Mon Jan 12 12:52:39 2015 -0800 @@ -28,7 +28,10 @@ * Class filter (optional) to be used by nashorn script engine. * jsr-223 program embedding nashorn script can set ClassFilter instance * to be used when an engine instance is created. + * + * @since 1.8u40 */ +@jdk.Exported public interface ClassFilter { /** * Should the Java class of the specified name be exposed to scripts? diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/JSObject.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/JSObject.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/JSObject.java Mon Jan 12 12:52:39 2015 -0800 @@ -33,7 +33,10 @@ * treat objects of such classes just like nashorn script objects. Usual nashorn * operations like obj[i], obj.foo, obj.func(), delete obj.foo will be glued * to appropriate method call of this interface. + * + * @since 1.8u40 */ +@jdk.Exported public interface JSObject { /** * Call this object as a JavaScript function. This is equivalent to diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornException.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornException.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornException.java Mon Jan 12 12:52:39 2015 -0800 @@ -41,7 +41,10 @@ * script object or Java access to script object properties via java.util.Map * interface. In these cases, user code will get an instance of this or * implementation defined subclass. + * + * @since 1.8u40 */ +@jdk.Exported @SuppressWarnings("serial") public abstract class NashornException extends RuntimeException { // script file name diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngine.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngine.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngine.java Mon Jan 12 12:52:39 2015 -0800 @@ -65,8 +65,10 @@ * {@link NashornScriptEngineFactory#getScriptEngine()}. Note that this engine implements the {@link Compilable} and * {@link Invocable} interfaces, allowing for efficient precompilation and repeated execution of scripts. * @see NashornScriptEngineFactory + * + * @since 1.8u40 */ - +@jdk.Exported public final class NashornScriptEngine extends AbstractScriptEngine implements Compilable, Invocable { /** * Key used to associate Nashorn global object mirror with arbitrary Bindings instance. diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/NashornScriptEngineFactory.java Mon Jan 12 12:52:39 2015 -0800 @@ -44,7 +44,10 @@ * * Programs executing in engines created using {@link #getScriptEngine(String[])} will have the passed arguments * accessible as a global variable named {@code "arguments"}. + * + * @since 1.8u40 */ +@jdk.Exported public final class NashornScriptEngineFactory implements ScriptEngineFactory { @Override public String getEngineName() { @@ -120,7 +123,7 @@ // used to execute scripts concurrently on multiple threads. return null; default: - throw new IllegalArgumentException("Invalid key"); + return null; } } diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptObjectMirror.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptObjectMirror.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptObjectMirror.java Mon Jan 12 12:52:39 2015 -0800 @@ -54,7 +54,10 @@ /** * Mirror object that wraps a given Nashorn Script object. + * + * @since 1.8u40 */ +@jdk.Exported public final class ScriptObjectMirror extends AbstractJSObject implements Bindings { private static AccessControlContext getContextAccCtxt() { final Permissions perms = new Permissions(); diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptUtils.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptUtils.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/ScriptUtils.java Mon Jan 12 12:52:39 2015 -0800 @@ -36,7 +36,10 @@ /** * Utilities that are to be called from script code. + * + * @since 1.8u40 */ +@jdk.Exported public final class ScriptUtils { private ScriptUtils() {} diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/URLReader.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/URLReader.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/URLReader.java Mon Jan 12 12:52:39 2015 -0800 @@ -35,7 +35,10 @@ /** * A Reader that reads from a URL. Used to make sure that the reader * reads content from given URL and can be trusted to do so. + * + * @since 1.8u40 */ +@jdk.Exported public final class URLReader extends Reader { // underlying URL private final URL url; diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/package-info.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/package-info.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/api/scripting/package-info.java Mon Jan 12 12:52:39 2015 -0800 @@ -35,5 +35,8 @@ * interfaces, allowing for efficient pre-compilation and repeated execution of scripts. In addition, * this package provides nashorn specific extension classes, interfaces and methods. See * {@link jdk.nashorn.api.scripting.NashornScriptEngineFactory} for further details. + * + * @since 1.8u40 */ +@jdk.Exported package jdk.nashorn.api.scripting; diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/codegen/CodeGenerator.java Mon Jan 12 12:52:39 2015 -0800 @@ -38,7 +38,6 @@ import static jdk.nashorn.internal.codegen.CompilerConstants.SPLIT_PREFIX; import static jdk.nashorn.internal.codegen.CompilerConstants.THIS; import static jdk.nashorn.internal.codegen.CompilerConstants.VARARGS; -import static jdk.nashorn.internal.codegen.CompilerConstants.constructorNoLookup; import static jdk.nashorn.internal.codegen.CompilerConstants.interfaceCallNoLookup; import static jdk.nashorn.internal.codegen.CompilerConstants.methodDescriptor; import static jdk.nashorn.internal.codegen.CompilerConstants.staticCallNoLookup; @@ -186,9 +185,6 @@ private static final String GLOBAL_OBJECT = Type.getInternalName(Global.class); - private static final String SCRIPTFUNCTION_IMPL_NAME = Type.getInternalName(ScriptFunctionImpl.class); - private static final Type SCRIPTFUNCTION_IMPL_TYPE = Type.typeFor(ScriptFunction.class); - private static final Call CREATE_REWRITE_EXCEPTION = CompilerConstants.staticCallNoLookup(RewriteException.class, "create", RewriteException.class, UnwarrantedOptimismException.class, Object[].class, String[].class); private static final Call CREATE_REWRITE_EXCEPTION_REST_OF = CompilerConstants.staticCallNoLookup(RewriteException.class, @@ -201,6 +197,11 @@ private static final Call ENSURE_NUMBER = CompilerConstants.staticCallNoLookup(OptimisticReturnFilters.class, "ensureNumber", double.class, Object.class, int.class); + private static final Call CREATE_FUNCTION_OBJECT = CompilerConstants.staticCallNoLookup(ScriptFunctionImpl.class, + "create", ScriptFunction.class, Object[].class, int.class, ScriptObject.class); + private static final Call CREATE_FUNCTION_OBJECT_NO_SCOPE = CompilerConstants.staticCallNoLookup(ScriptFunctionImpl.class, + "create", ScriptFunction.class, Object[].class, int.class); + private static final Class ITERATOR_CLASS = Iterator.class; static { assert ITERATOR_CLASS == CompilerConstants.ITERATOR_PREFIX.type(); @@ -2242,7 +2243,6 @@ } else { methodEmitter.loadConstants().load(index).arrayload(); if (object instanceof ArrayData) { - // avoid cast to non-public ArrayData subclass methodEmitter.checkcast(ArrayData.class); methodEmitter.invoke(virtualCallNoLookup(ArrayData.class, "copy", ArrayData.class)); } else if (cls != Object.class) { @@ -2251,6 +2251,10 @@ } } + private void loadConstantsAndIndex(final Object object, final MethodEmitter methodEmitter) { + methodEmitter.loadConstants().load(compiler.getConstantData().add(object)); + } + // literal values private void loadLiteral(final LiteralNode node, final TypeBounds resultBounds) { final Object value = node.getValue(); @@ -4323,15 +4327,13 @@ final RecompilableScriptFunctionData data = compiler.getScriptFunctionData(functionNode.getId()); if (functionNode.isProgram() && !compiler.isOnDemandCompilation()) { - final CompileUnit fnUnit = functionNode.getCompileUnit(); - final MethodEmitter createFunction = fnUnit.getClassEmitter().method( + final MethodEmitter createFunction = functionNode.getCompileUnit().getClassEmitter().method( EnumSet.of(Flag.PUBLIC, Flag.STATIC), CREATE_PROGRAM_FUNCTION.symbolName(), ScriptFunction.class, ScriptObject.class); createFunction.begin(); - createFunction._new(SCRIPTFUNCTION_IMPL_NAME, SCRIPTFUNCTION_IMPL_TYPE).dup(); - loadConstant(data, fnUnit, createFunction); + loadConstantsAndIndex(data, createFunction); createFunction.load(SCOPE_TYPE, 0); - createFunction.invoke(constructorNoLookup(SCRIPTFUNCTION_IMPL_NAME, RecompilableScriptFunctionData.class, ScriptObject.class)); + createFunction.invoke(CREATE_FUNCTION_OBJECT); createFunction._return(); createFunction.end(); } @@ -4346,15 +4348,14 @@ return; } - method._new(SCRIPTFUNCTION_IMPL_NAME, SCRIPTFUNCTION_IMPL_TYPE).dup(); - loadConstant(data); + loadConstantsAndIndex(data, method); if (functionNode.needsParentScope()) { method.loadCompilerConstant(SCOPE); + method.invoke(CREATE_FUNCTION_OBJECT); } else { - method.loadNull(); - } - method.invoke(constructorNoLookup(SCRIPTFUNCTION_IMPL_NAME, RecompilableScriptFunctionData.class, ScriptObject.class)); + method.invoke(CREATE_FUNCTION_OBJECT_NO_SCOPE); + } } // calls on Global class. diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/ScriptFunctionImpl.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/ScriptFunctionImpl.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/objects/ScriptFunctionImpl.java Mon Jan 12 12:52:39 2015 -0800 @@ -118,13 +118,26 @@ } /** - * Constructor called by (compiler) generated code for {@link ScriptObject}s. + * Factory method called by compiler generated code for functions that need parent scope. * - * @param data static function data - * @param scope scope object + * @param constants the generated class' constant array + * @param index the index of the {@code RecompilableScriptFunctionData} object in the constants array. + * @param scope the parent scope object + * @return a newly created function object */ - public ScriptFunctionImpl(final RecompilableScriptFunctionData data, final ScriptObject scope) { - this(data, scope, Global.instance()); + public static ScriptFunction create(final Object[] constants, final int index, final ScriptObject scope) { + return new ScriptFunctionImpl((RecompilableScriptFunctionData)constants[index], scope, Global.instance()); + } + + /** + * Factory method called by compiler generated code for functions that don't need parent scope. + * + * @param constants the generated class' constant array + * @param index the index of the {@code RecompilableScriptFunctionData} object in the constants array. + * @return a newly created function object + */ + public static ScriptFunction create(final Object[] constants, final int index) { + return create(constants, index, null); } /** diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/AdaptationResult.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/AdaptationResult.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/AdaptationResult.java Mon Jan 12 12:52:39 2015 -0800 @@ -48,28 +48,25 @@ ERROR_NO_ACCESSIBLE_CONSTRUCTOR, ERROR_MULTIPLE_SUPERCLASSES, ERROR_NO_COMMON_LOADER, - ERROR_FINAL_FINALIZER + ERROR_FINAL_FINALIZER, + ERROR_OTHER } static final AdaptationResult SUCCESSFUL_RESULT = new AdaptationResult(Outcome.SUCCESS, ""); private final Outcome outcome; - private final String classList; + private final String[] messageArgs; - AdaptationResult(final Outcome outcome, final String classList) { + AdaptationResult(final Outcome outcome, final String... messageArgs) { this.outcome = outcome; - this.classList = classList; + this.messageArgs = messageArgs; } Outcome getOutcome() { return outcome; } - String getClassList() { - return classList; - } - ECMAException typeError() { - return ECMAErrors.typeError("extend." + outcome, classList); + return ECMAErrors.typeError("extend." + outcome, messageArgs); } } diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/linker/JavaAdapterFactory.java Mon Jan 12 12:52:39 2015 -0800 @@ -184,7 +184,7 @@ final ClassAndLoader definingClassAndLoader = ClassAndLoader.getDefiningClassAndLoader(types); final Map>, AdapterInfo> adapterInfoMap = ADAPTER_INFO_MAPS.get(definingClassAndLoader.getRepresentativeClass()); - final List> typeList = types.length == 1 ? getSingletonClassList(types[0]) : Arrays.asList(types.clone()); + final List> typeList = types.length == 1 ? Collections.>singletonList(types[0]) : Arrays.asList(types.clone()); AdapterInfo adapterInfo; synchronized(adapterInfoMap) { adapterInfo = adapterInfoMap.get(typeList); @@ -196,11 +196,6 @@ return adapterInfo; } - @SuppressWarnings({ "unchecked", "rawtypes" }) - private static List> getSingletonClassList(final Class clazz) { - return (List)Collections.singletonList(clazz); - } - /** * For a given class, create its adapter class and associated info. * @param type the class for which the adapter is created @@ -241,6 +236,8 @@ return new AdapterInfo(effectiveSuperClass, interfaces, definingClassAndLoader); } catch (final AdaptationException e) { return new AdapterInfo(e.getAdaptationResult()); + } catch (final RuntimeException e) { + return new AdapterInfo(new AdaptationResult(AdaptationResult.Outcome.ERROR_OTHER, Arrays.toString(types), e.toString())); } } }, CREATE_ADAPTER_INFO_ACC_CTXT); diff -r 8c912c147654 -r d7609b65606b nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties --- a/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/src/jdk.scripting.nashorn/share/classes/jdk/nashorn/internal/runtime/resources/Messages.properties Mon Jan 12 12:52:39 2015 -0800 @@ -141,6 +141,7 @@ type.error.extend.ERROR_MULTIPLE_SUPERCLASSES=Can not extend multiple classes {0}. At most one of the specified types can be a class, the rest must all be interfaces. type.error.extend.ERROR_NO_COMMON_LOADER=Can not find a common class loader for ScriptObject and {0}. type.error.extend.ERROR_FINAL_FINALIZER=Can not extend class because {0} has a final finalize method. +type.error.extend.ERROR_OTHER=Can not extend/implement {0} because of {1} type.error.no.constructor.matches.args=Can not construct {0} with the passed arguments; they do not match any of its constructor signatures. type.error.no.method.matches.args=Can not invoke method {0} with the passed arguments; they do not match any of its method signatures. type.error.method.not.constructor=Java method {0} cannot be used as a constructor. diff -r 8c912c147654 -r d7609b65606b nashorn/test/script/basic/JDK-8068580.js --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nashorn/test/script/basic/JDK-8068580.js Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2014 Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +/** + * JDK-8068580: make JavaAdapterFactory.isAutoConvertibleFromFunction more robust + * + * @test + * @run + */ + +var BigAbstract = Java.type("jdk.nashorn.test.models.BigAbstract") +try { + new BigAbstract({}); +} catch (e) { + Assert.assertTrue(e instanceof TypeError); + Assert.assertEquals(e.message, "Can not extend/implement [class jdk.nashorn.test.models.BigAbstract] because of java.lang.RuntimeException: Method code too large!"); +} +try { + BigAbstract.accept(function() { }); +} catch (e) { + Assert.assertSame(e.class, java.lang.ClassCastException.class); +} diff -r 8c912c147654 -r d7609b65606b nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java --- a/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java Mon Jan 12 11:46:43 2015 -0800 +++ b/nashorn/test/src/jdk/nashorn/api/scripting/ScriptEngineTest.java Mon Jan 12 12:52:39 2015 -0800 @@ -27,6 +27,7 @@ import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotNull; +import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import static org.testng.Assert.fail; import java.io.StringReader; @@ -668,6 +669,17 @@ assertEquals("helloworld", inv.invokeMethod(ctx.get(), "join", "")); } + // @bug 8068524: NashornScriptEngineFactory.getParameter() throws IAE + // for an unknown key, doesn't conform to the general spec + @Test + public void getParameterInvalidKeyTest() throws Exception { + final ScriptEngineManager manager = new ScriptEngineManager(); + final ScriptEngine e = manager.getEngineByName("nashorn"); + // no exception expected here! + Object value = e.getFactory().getParameter("no value assigned to this key"); + assertNull(value); + } + private static void checkProperty(final ScriptEngine e, final String name) throws ScriptException { final String value = System.getProperty(name); diff -r 8c912c147654 -r d7609b65606b nashorn/test/src/jdk/nashorn/test/models/BigAbstract.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nashorn/test/src/jdk/nashorn/test/models/BigAbstract.java Mon Jan 12 12:52:39 2015 -0800 @@ -0,0 +1,4709 @@ +/* + * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +package jdk.nashorn.test.models; + +public abstract class BigAbstract { + public static void accept(BigAbstract ba) { + } + + public abstract void f0(); + public abstract void f1(); + public abstract void f2(); + public abstract void f3(); + public abstract void f4(); + public abstract void f5(); + public abstract void f6(); + public abstract void f7(); + public abstract void f8(); + public abstract void f9(); + public abstract void f10(); + public abstract void f11(); + public abstract void f12(); + public abstract void f13(); + public abstract void f14(); + public abstract void f15(); + public abstract void f16(); + public abstract void f17(); + public abstract void f18(); + public abstract void f19(); + public abstract void f20(); + public abstract void f21(); + public abstract void f22(); + public abstract void f23(); + public abstract void f24(); + public abstract void f25(); + public abstract void f26(); + public abstract void f27(); + public abstract void f28(); + public abstract void f29(); + public abstract void f30(); + public abstract void f31(); + public abstract void f32(); + public abstract void f33(); + public abstract void f34(); + public abstract void f35(); + public abstract void f36(); + public abstract void f37(); + public abstract void f38(); + public abstract void f39(); + public abstract void f40(); + public abstract void f41(); + public abstract void f42(); + public abstract void f43(); + public abstract void f44(); + public abstract void f45(); + public abstract void f46(); + public abstract void f47(); + public abstract void f48(); + public abstract void f49(); + public abstract void f50(); + public abstract void f51(); + public abstract void f52(); + public abstract void f53(); + public abstract void f54(); + public abstract void f55(); + public abstract void f56(); + public abstract void f57(); + public abstract void f58(); + public abstract void f59(); + public abstract void f60(); + public abstract void f61(); + public abstract void f62(); + public abstract void f63(); + public abstract void f64(); + public abstract void f65(); + public abstract void f66(); + public abstract void f67(); + public abstract void f68(); + public abstract void f69(); + public abstract void f70(); + public abstract void f71(); + public abstract void f72(); + public abstract void f73(); + public abstract void f74(); + public abstract void f75(); + public abstract void f76(); + public abstract void f77(); + public abstract void f78(); + public abstract void f79(); + public abstract void f80(); + public abstract void f81(); + public abstract void f82(); + public abstract void f83(); + public abstract void f84(); + public abstract void f85(); + public abstract void f86(); + public abstract void f87(); + public abstract void f88(); + public abstract void f89(); + public abstract void f90(); + public abstract void f91(); + public abstract void f92(); + public abstract void f93(); + public abstract void f94(); + public abstract void f95(); + public abstract void f96(); + public abstract void f97(); + public abstract void f98(); + public abstract void f99(); + public abstract void f100(); + public abstract void f101(); + public abstract void f102(); + public abstract void f103(); + public abstract void f104(); + public abstract void f105(); + public abstract void f106(); + public abstract void f107(); + public abstract void f108(); + public abstract void f109(); + public abstract void f110(); + public abstract void f111(); + public abstract void f112(); + public abstract void f113(); + public abstract void f114(); + public abstract void f115(); + public abstract void f116(); + public abstract void f117(); + public abstract void f118(); + public abstract void f119(); + public abstract void f120(); + public abstract void f121(); + public abstract void f122(); + public abstract void f123(); + public abstract void f124(); + public abstract void f125(); + public abstract void f126(); + public abstract void f127(); + public abstract void f128(); + public abstract void f129(); + public abstract void f130(); + public abstract void f131(); + public abstract void f132(); + public abstract void f133(); + public abstract void f134(); + public abstract void f135(); + public abstract void f136(); + public abstract void f137(); + public abstract void f138(); + public abstract void f139(); + public abstract void f140(); + public abstract void f141(); + public abstract void f142(); + public abstract void f143(); + public abstract void f144(); + public abstract void f145(); + public abstract void f146(); + public abstract void f147(); + public abstract void f148(); + public abstract void f149(); + public abstract void f150(); + public abstract void f151(); + public abstract void f152(); + public abstract void f153(); + public abstract void f154(); + public abstract void f155(); + public abstract void f156(); + public abstract void f157(); + public abstract void f158(); + public abstract void f159(); + public abstract void f160(); + public abstract void f161(); + public abstract void f162(); + public abstract void f163(); + public abstract void f164(); + public abstract void f165(); + public abstract void f166(); + public abstract void f167(); + public abstract void f168(); + public abstract void f169(); + public abstract void f170(); + public abstract void f171(); + public abstract void f172(); + public abstract void f173(); + public abstract void f174(); + public abstract void f175(); + public abstract void f176(); + public abstract void f177(); + public abstract void f178(); + public abstract void f179(); + public abstract void f180(); + public abstract void f181(); + public abstract void f182(); + public abstract void f183(); + public abstract void f184(); + public abstract void f185(); + public abstract void f186(); + public abstract void f187(); + public abstract void f188(); + public abstract void f189(); + public abstract void f190(); + public abstract void f191(); + public abstract void f192(); + public abstract void f193(); + public abstract void f194(); + public abstract void f195(); + public abstract void f196(); + public abstract void f197(); + public abstract void f198(); + public abstract void f199(); + public abstract void f200(); + public abstract void f201(); + public abstract void f202(); + public abstract void f203(); + public abstract void f204(); + public abstract void f205(); + public abstract void f206(); + public abstract void f207(); + public abstract void f208(); + public abstract void f209(); + public abstract void f210(); + public abstract void f211(); + public abstract void f212(); + public abstract void f213(); + public abstract void f214(); + public abstract void f215(); + public abstract void f216(); + public abstract void f217(); + public abstract void f218(); + public abstract void f219(); + public abstract void f220(); + public abstract void f221(); + public abstract void f222(); + public abstract void f223(); + public abstract void f224(); + public abstract void f225(); + public abstract void f226(); + public abstract void f227(); + public abstract void f228(); + public abstract void f229(); + public abstract void f230(); + public abstract void f231(); + public abstract void f232(); + public abstract void f233(); + public abstract void f234(); + public abstract void f235(); + public abstract void f236(); + public abstract void f237(); + public abstract void f238(); + public abstract void f239(); + public abstract void f240(); + public abstract void f241(); + public abstract void f242(); + public abstract void f243(); + public abstract void f244(); + public abstract void f245(); + public abstract void f246(); + public abstract void f247(); + public abstract void f248(); + public abstract void f249(); + public abstract void f250(); + public abstract void f251(); + public abstract void f252(); + public abstract void f253(); + public abstract void f254(); + public abstract void f255(); + public abstract void f256(); + public abstract void f257(); + public abstract void f258(); + public abstract void f259(); + public abstract void f260(); + public abstract void f261(); + public abstract void f262(); + public abstract void f263(); + public abstract void f264(); + public abstract void f265(); + public abstract void f266(); + public abstract void f267(); + public abstract void f268(); + public abstract void f269(); + public abstract void f270(); + public abstract void f271(); + public abstract void f272(); + public abstract void f273(); + public abstract void f274(); + public abstract void f275(); + public abstract void f276(); + public abstract void f277(); + public abstract void f278(); + public abstract void f279(); + public abstract void f280(); + public abstract void f281(); + public abstract void f282(); + public abstract void f283(); + public abstract void f284(); + public abstract void f285(); + public abstract void f286(); + public abstract void f287(); + public abstract void f288(); + public abstract void f289(); + public abstract void f290(); + public abstract void f291(); + public abstract void f292(); + public abstract void f293(); + public abstract void f294(); + public abstract void f295(); + public abstract void f296(); + public abstract void f297(); + public abstract void f298(); + public abstract void f299(); + public abstract void f300(); + public abstract void f301(); + public abstract void f302(); + public abstract void f303(); + public abstract void f304(); + public abstract void f305(); + public abstract void f306(); + public abstract void f307(); + public abstract void f308(); + public abstract void f309(); + public abstract void f310(); + public abstract void f311(); + public abstract void f312(); + public abstract void f313(); + public abstract void f314(); + public abstract void f315(); + public abstract void f316(); + public abstract void f317(); + public abstract void f318(); + public abstract void f319(); + public abstract void f320(); + public abstract void f321(); + public abstract void f322(); + public abstract void f323(); + public abstract void f324(); + public abstract void f325(); + public abstract void f326(); + public abstract void f327(); + public abstract void f328(); + public abstract void f329(); + public abstract void f330(); + public abstract void f331(); + public abstract void f332(); + public abstract void f333(); + public abstract void f334(); + public abstract void f335(); + public abstract void f336(); + public abstract void f337(); + public abstract void f338(); + public abstract void f339(); + public abstract void f340(); + public abstract void f341(); + public abstract void f342(); + public abstract void f343(); + public abstract void f344(); + public abstract void f345(); + public abstract void f346(); + public abstract void f347(); + public abstract void f348(); + public abstract void f349(); + public abstract void f350(); + public abstract void f351(); + public abstract void f352(); + public abstract void f353(); + public abstract void f354(); + public abstract void f355(); + public abstract void f356(); + public abstract void f357(); + public abstract void f358(); + public abstract void f359(); + public abstract void f360(); + public abstract void f361(); + public abstract void f362(); + public abstract void f363(); + public abstract void f364(); + public abstract void f365(); + public abstract void f366(); + public abstract void f367(); + public abstract void f368(); + public abstract void f369(); + public abstract void f370(); + public abstract void f371(); + public abstract void f372(); + public abstract void f373(); + public abstract void f374(); + public abstract void f375(); + public abstract void f376(); + public abstract void f377(); + public abstract void f378(); + public abstract void f379(); + public abstract void f380(); + public abstract void f381(); + public abstract void f382(); + public abstract void f383(); + public abstract void f384(); + public abstract void f385(); + public abstract void f386(); + public abstract void f387(); + public abstract void f388(); + public abstract void f389(); + public abstract void f390(); + public abstract void f391(); + public abstract void f392(); + public abstract void f393(); + public abstract void f394(); + public abstract void f395(); + public abstract void f396(); + public abstract void f397(); + public abstract void f398(); + public abstract void f399(); + public abstract void f400(); + public abstract void f401(); + public abstract void f402(); + public abstract void f403(); + public abstract void f404(); + public abstract void f405(); + public abstract void f406(); + public abstract void f407(); + public abstract void f408(); + public abstract void f409(); + public abstract void f410(); + public abstract void f411(); + public abstract void f412(); + public abstract void f413(); + public abstract void f414(); + public abstract void f415(); + public abstract void f416(); + public abstract void f417(); + public abstract void f418(); + public abstract void f419(); + public abstract void f420(); + public abstract void f421(); + public abstract void f422(); + public abstract void f423(); + public abstract void f424(); + public abstract void f425(); + public abstract void f426(); + public abstract void f427(); + public abstract void f428(); + public abstract void f429(); + public abstract void f430(); + public abstract void f431(); + public abstract void f432(); + public abstract void f433(); + public abstract void f434(); + public abstract void f435(); + public abstract void f436(); + public abstract void f437(); + public abstract void f438(); + public abstract void f439(); + public abstract void f440(); + public abstract void f441(); + public abstract void f442(); + public abstract void f443(); + public abstract void f444(); + public abstract void f445(); + public abstract void f446(); + public abstract void f447(); + public abstract void f448(); + public abstract void f449(); + public abstract void f450(); + public abstract void f451(); + public abstract void f452(); + public abstract void f453(); + public abstract void f454(); + public abstract void f455(); + public abstract void f456(); + public abstract void f457(); + public abstract void f458(); + public abstract void f459(); + public abstract void f460(); + public abstract void f461(); + public abstract void f462(); + public abstract void f463(); + public abstract void f464(); + public abstract void f465(); + public abstract void f466(); + public abstract void f467(); + public abstract void f468(); + public abstract void f469(); + public abstract void f470(); + public abstract void f471(); + public abstract void f472(); + public abstract void f473(); + public abstract void f474(); + public abstract void f475(); + public abstract void f476(); + public abstract void f477(); + public abstract void f478(); + public abstract void f479(); + public abstract void f480(); + public abstract void f481(); + public abstract void f482(); + public abstract void f483(); + public abstract void f484(); + public abstract void f485(); + public abstract void f486(); + public abstract void f487(); + public abstract void f488(); + public abstract void f489(); + public abstract void f490(); + public abstract void f491(); + public abstract void f492(); + public abstract void f493(); + public abstract void f494(); + public abstract void f495(); + public abstract void f496(); + public abstract void f497(); + public abstract void f498(); + public abstract void f499(); + public abstract void f500(); + public abstract void f501(); + public abstract void f502(); + public abstract void f503(); + public abstract void f504(); + public abstract void f505(); + public abstract void f506(); + public abstract void f507(); + public abstract void f508(); + public abstract void f509(); + public abstract void f510(); + public abstract void f511(); + public abstract void f512(); + public abstract void f513(); + public abstract void f514(); + public abstract void f515(); + public abstract void f516(); + public abstract void f517(); + public abstract void f518(); + public abstract void f519(); + public abstract void f520(); + public abstract void f521(); + public abstract void f522(); + public abstract void f523(); + public abstract void f524(); + public abstract void f525(); + public abstract void f526(); + public abstract void f527(); + public abstract void f528(); + public abstract void f529(); + public abstract void f530(); + public abstract void f531(); + public abstract void f532(); + public abstract void f533(); + public abstract void f534(); + public abstract void f535(); + public abstract void f536(); + public abstract void f537(); + public abstract void f538(); + public abstract void f539(); + public abstract void f540(); + public abstract void f541(); + public abstract void f542(); + public abstract void f543(); + public abstract void f544(); + public abstract void f545(); + public abstract void f546(); + public abstract void f547(); + public abstract void f548(); + public abstract void f549(); + public abstract void f550(); + public abstract void f551(); + public abstract void f552(); + public abstract void f553(); + public abstract void f554(); + public abstract void f555(); + public abstract void f556(); + public abstract void f557(); + public abstract void f558(); + public abstract void f559(); + public abstract void f560(); + public abstract void f561(); + public abstract void f562(); + public abstract void f563(); + public abstract void f564(); + public abstract void f565(); + public abstract void f566(); + public abstract void f567(); + public abstract void f568(); + public abstract void f569(); + public abstract void f570(); + public abstract void f571(); + public abstract void f572(); + public abstract void f573(); + public abstract void f574(); + public abstract void f575(); + public abstract void f576(); + public abstract void f577(); + public abstract void f578(); + public abstract void f579(); + public abstract void f580(); + public abstract void f581(); + public abstract void f582(); + public abstract void f583(); + public abstract void f584(); + public abstract void f585(); + public abstract void f586(); + public abstract void f587(); + public abstract void f588(); + public abstract void f589(); + public abstract void f590(); + public abstract void f591(); + public abstract void f592(); + public abstract void f593(); + public abstract void f594(); + public abstract void f595(); + public abstract void f596(); + public abstract void f597(); + public abstract void f598(); + public abstract void f599(); + public abstract void f600(); + public abstract void f601(); + public abstract void f602(); + public abstract void f603(); + public abstract void f604(); + public abstract void f605(); + public abstract void f606(); + public abstract void f607(); + public abstract void f608(); + public abstract void f609(); + public abstract void f610(); + public abstract void f611(); + public abstract void f612(); + public abstract void f613(); + public abstract void f614(); + public abstract void f615(); + public abstract void f616(); + public abstract void f617(); + public abstract void f618(); + public abstract void f619(); + public abstract void f620(); + public abstract void f621(); + public abstract void f622(); + public abstract void f623(); + public abstract void f624(); + public abstract void f625(); + public abstract void f626(); + public abstract void f627(); + public abstract void f628(); + public abstract void f629(); + public abstract void f630(); + public abstract void f631(); + public abstract void f632(); + public abstract void f633(); + public abstract void f634(); + public abstract void f635(); + public abstract void f636(); + public abstract void f637(); + public abstract void f638(); + public abstract void f639(); + public abstract void f640(); + public abstract void f641(); + public abstract void f642(); + public abstract void f643(); + public abstract void f644(); + public abstract void f645(); + public abstract void f646(); + public abstract void f647(); + public abstract void f648(); + public abstract void f649(); + public abstract void f650(); + public abstract void f651(); + public abstract void f652(); + public abstract void f653(); + public abstract void f654(); + public abstract void f655(); + public abstract void f656(); + public abstract void f657(); + public abstract void f658(); + public abstract void f659(); + public abstract void f660(); + public abstract void f661(); + public abstract void f662(); + public abstract void f663(); + public abstract void f664(); + public abstract void f665(); + public abstract void f666(); + public abstract void f667(); + public abstract void f668(); + public abstract void f669(); + public abstract void f670(); + public abstract void f671(); + public abstract void f672(); + public abstract void f673(); + public abstract void f674(); + public abstract void f675(); + public abstract void f676(); + public abstract void f677(); + public abstract void f678(); + public abstract void f679(); + public abstract void f680(); + public abstract void f681(); + public abstract void f682(); + public abstract void f683(); + public abstract void f684(); + public abstract void f685(); + public abstract void f686(); + public abstract void f687(); + public abstract void f688(); + public abstract void f689(); + public abstract void f690(); + public abstract void f691(); + public abstract void f692(); + public abstract void f693(); + public abstract void f694(); + public abstract void f695(); + public abstract void f696(); + public abstract void f697(); + public abstract void f698(); + public abstract void f699(); + public abstract void f700(); + public abstract void f701(); + public abstract void f702(); + public abstract void f703(); + public abstract void f704(); + public abstract void f705(); + public abstract void f706(); + public abstract void f707(); + public abstract void f708(); + public abstract void f709(); + public abstract void f710(); + public abstract void f711(); + public abstract void f712(); + public abstract void f713(); + public abstract void f714(); + public abstract void f715(); + public abstract void f716(); + public abstract void f717(); + public abstract void f718(); + public abstract void f719(); + public abstract void f720(); + public abstract void f721(); + public abstract void f722(); + public abstract void f723(); + public abstract void f724(); + public abstract void f725(); + public abstract void f726(); + public abstract void f727(); + public abstract void f728(); + public abstract void f729(); + public abstract void f730(); + public abstract void f731(); + public abstract void f732(); + public abstract void f733(); + public abstract void f734(); + public abstract void f735(); + public abstract void f736(); + public abstract void f737(); + public abstract void f738(); + public abstract void f739(); + public abstract void f740(); + public abstract void f741(); + public abstract void f742(); + public abstract void f743(); + public abstract void f744(); + public abstract void f745(); + public abstract void f746(); + public abstract void f747(); + public abstract void f748(); + public abstract void f749(); + public abstract void f750(); + public abstract void f751(); + public abstract void f752(); + public abstract void f753(); + public abstract void f754(); + public abstract void f755(); + public abstract void f756(); + public abstract void f757(); + public abstract void f758(); + public abstract void f759(); + public abstract void f760(); + public abstract void f761(); + public abstract void f762(); + public abstract void f763(); + public abstract void f764(); + public abstract void f765(); + public abstract void f766(); + public abstract void f767(); + public abstract void f768(); + public abstract void f769(); + public abstract void f770(); + public abstract void f771(); + public abstract void f772(); + public abstract void f773(); + public abstract void f774(); + public abstract void f775(); + public abstract void f776(); + public abstract void f777(); + public abstract void f778(); + public abstract void f779(); + public abstract void f780(); + public abstract void f781(); + public abstract void f782(); + public abstract void f783(); + public abstract void f784(); + public abstract void f785(); + public abstract void f786(); + public abstract void f787(); + public abstract void f788(); + public abstract void f789(); + public abstract void f790(); + public abstract void f791(); + public abstract void f792(); + public abstract void f793(); + public abstract void f794(); + public abstract void f795(); + public abstract void f796(); + public abstract void f797(); + public abstract void f798(); + public abstract void f799(); + public abstract void f800(); + public abstract void f801(); + public abstract void f802(); + public abstract void f803(); + public abstract void f804(); + public abstract void f805(); + public abstract void f806(); + public abstract void f807(); + public abstract void f808(); + public abstract void f809(); + public abstract void f810(); + public abstract void f811(); + public abstract void f812(); + public abstract void f813(); + public abstract void f814(); + public abstract void f815(); + public abstract void f816(); + public abstract void f817(); + public abstract void f818(); + public abstract void f819(); + public abstract void f820(); + public abstract void f821(); + public abstract void f822(); + public abstract void f823(); + public abstract void f824(); + public abstract void f825(); + public abstract void f826(); + public abstract void f827(); + public abstract void f828(); + public abstract void f829(); + public abstract void f830(); + public abstract void f831(); + public abstract void f832(); + public abstract void f833(); + public abstract void f834(); + public abstract void f835(); + public abstract void f836(); + public abstract void f837(); + public abstract void f838(); + public abstract void f839(); + public abstract void f840(); + public abstract void f841(); + public abstract void f842(); + public abstract void f843(); + public abstract void f844(); + public abstract void f845(); + public abstract void f846(); + public abstract void f847(); + public abstract void f848(); + public abstract void f849(); + public abstract void f850(); + public abstract void f851(); + public abstract void f852(); + public abstract void f853(); + public abstract void f854(); + public abstract void f855(); + public abstract void f856(); + public abstract void f857(); + public abstract void f858(); + public abstract void f859(); + public abstract void f860(); + public abstract void f861(); + public abstract void f862(); + public abstract void f863(); + public abstract void f864(); + public abstract void f865(); + public abstract void f866(); + public abstract void f867(); + public abstract void f868(); + public abstract void f869(); + public abstract void f870(); + public abstract void f871(); + public abstract void f872(); + public abstract void f873(); + public abstract void f874(); + public abstract void f875(); + public abstract void f876(); + public abstract void f877(); + public abstract void f878(); + public abstract void f879(); + public abstract void f880(); + public abstract void f881(); + public abstract void f882(); + public abstract void f883(); + public abstract void f884(); + public abstract void f885(); + public abstract void f886(); + public abstract void f887(); + public abstract void f888(); + public abstract void f889(); + public abstract void f890(); + public abstract void f891(); + public abstract void f892(); + public abstract void f893(); + public abstract void f894(); + public abstract void f895(); + public abstract void f896(); + public abstract void f897(); + public abstract void f898(); + public abstract void f899(); + public abstract void f900(); + public abstract void f901(); + public abstract void f902(); + public abstract void f903(); + public abstract void f904(); + public abstract void f905(); + public abstract void f906(); + public abstract void f907(); + public abstract void f908(); + public abstract void f909(); + public abstract void f910(); + public abstract void f911(); + public abstract void f912(); + public abstract void f913(); + public abstract void f914(); + public abstract void f915(); + public abstract void f916(); + public abstract void f917(); + public abstract void f918(); + public abstract void f919(); + public abstract void f920(); + public abstract void f921(); + public abstract void f922(); + public abstract void f923(); + public abstract void f924(); + public abstract void f925(); + public abstract void f926(); + public abstract void f927(); + public abstract void f928(); + public abstract void f929(); + public abstract void f930(); + public abstract void f931(); + public abstract void f932(); + public abstract void f933(); + public abstract void f934(); + public abstract void f935(); + public abstract void f936(); + public abstract void f937(); + public abstract void f938(); + public abstract void f939(); + public abstract void f940(); + public abstract void f941(); + public abstract void f942(); + public abstract void f943(); + public abstract void f944(); + public abstract void f945(); + public abstract void f946(); + public abstract void f947(); + public abstract void f948(); + public abstract void f949(); + public abstract void f950(); + public abstract void f951(); + public abstract void f952(); + public abstract void f953(); + public abstract void f954(); + public abstract void f955(); + public abstract void f956(); + public abstract void f957(); + public abstract void f958(); + public abstract void f959(); + public abstract void f960(); + public abstract void f961(); + public abstract void f962(); + public abstract void f963(); + public abstract void f964(); + public abstract void f965(); + public abstract void f966(); + public abstract void f967(); + public abstract void f968(); + public abstract void f969(); + public abstract void f970(); + public abstract void f971(); + public abstract void f972(); + public abstract void f973(); + public abstract void f974(); + public abstract void f975(); + public abstract void f976(); + public abstract void f977(); + public abstract void f978(); + public abstract void f979(); + public abstract void f980(); + public abstract void f981(); + public abstract void f982(); + public abstract void f983(); + public abstract void f984(); + public abstract void f985(); + public abstract void f986(); + public abstract void f987(); + public abstract void f988(); + public abstract void f989(); + public abstract void f990(); + public abstract void f991(); + public abstract void f992(); + public abstract void f993(); + public abstract void f994(); + public abstract void f995(); + public abstract void f996(); + public abstract void f997(); + public abstract void f998(); + public abstract void f999(); + public abstract void f1000(); + public abstract void f1001(); + public abstract void f1002(); + public abstract void f1003(); + public abstract void f1004(); + public abstract void f1005(); + public abstract void f1006(); + public abstract void f1007(); + public abstract void f1008(); + public abstract void f1009(); + public abstract void f1010(); + public abstract void f1011(); + public abstract void f1012(); + public abstract void f1013(); + public abstract void f1014(); + public abstract void f1015(); + public abstract void f1016(); + public abstract void f1017(); + public abstract void f1018(); + public abstract void f1019(); + public abstract void f1020(); + public abstract void f1021(); + public abstract void f1022(); + public abstract void f1023(); + public abstract void f1024(); + public abstract void f1025(); + public abstract void f1026(); + public abstract void f1027(); + public abstract void f1028(); + public abstract void f1029(); + public abstract void f1030(); + public abstract void f1031(); + public abstract void f1032(); + public abstract void f1033(); + public abstract void f1034(); + public abstract void f1035(); + public abstract void f1036(); + public abstract void f1037(); + public abstract void f1038(); + public abstract void f1039(); + public abstract void f1040(); + public abstract void f1041(); + public abstract void f1042(); + public abstract void f1043(); + public abstract void f1044(); + public abstract void f1045(); + public abstract void f1046(); + public abstract void f1047(); + public abstract void f1048(); + public abstract void f1049(); + public abstract void f1050(); + public abstract void f1051(); + public abstract void f1052(); + public abstract void f1053(); + public abstract void f1054(); + public abstract void f1055(); + public abstract void f1056(); + public abstract void f1057(); + public abstract void f1058(); + public abstract void f1059(); + public abstract void f1060(); + public abstract void f1061(); + public abstract void f1062(); + public abstract void f1063(); + public abstract void f1064(); + public abstract void f1065(); + public abstract void f1066(); + public abstract void f1067(); + public abstract void f1068(); + public abstract void f1069(); + public abstract void f1070(); + public abstract void f1071(); + public abstract void f1072(); + public abstract void f1073(); + public abstract void f1074(); + public abstract void f1075(); + public abstract void f1076(); + public abstract void f1077(); + public abstract void f1078(); + public abstract void f1079(); + public abstract void f1080(); + public abstract void f1081(); + public abstract void f1082(); + public abstract void f1083(); + public abstract void f1084(); + public abstract void f1085(); + public abstract void f1086(); + public abstract void f1087(); + public abstract void f1088(); + public abstract void f1089(); + public abstract void f1090(); + public abstract void f1091(); + public abstract void f1092(); + public abstract void f1093(); + public abstract void f1094(); + public abstract void f1095(); + public abstract void f1096(); + public abstract void f1097(); + public abstract void f1098(); + public abstract void f1099(); + public abstract void f1100(); + public abstract void f1101(); + public abstract void f1102(); + public abstract void f1103(); + public abstract void f1104(); + public abstract void f1105(); + public abstract void f1106(); + public abstract void f1107(); + public abstract void f1108(); + public abstract void f1109(); + public abstract void f1110(); + public abstract void f1111(); + public abstract void f1112(); + public abstract void f1113(); + public abstract void f1114(); + public abstract void f1115(); + public abstract void f1116(); + public abstract void f1117(); + public abstract void f1118(); + public abstract void f1119(); + public abstract void f1120(); + public abstract void f1121(); + public abstract void f1122(); + public abstract void f1123(); + public abstract void f1124(); + public abstract void f1125(); + public abstract void f1126(); + public abstract void f1127(); + public abstract void f1128(); + public abstract void f1129(); + public abstract void f1130(); + public abstract void f1131(); + public abstract void f1132(); + public abstract void f1133(); + public abstract void f1134(); + public abstract void f1135(); + public abstract void f1136(); + public abstract void f1137(); + public abstract void f1138(); + public abstract void f1139(); + public abstract void f1140(); + public abstract void f1141(); + public abstract void f1142(); + public abstract void f1143(); + public abstract void f1144(); + public abstract void f1145(); + public abstract void f1146(); + public abstract void f1147(); + public abstract void f1148(); + public abstract void f1149(); + public abstract void f1150(); + public abstract void f1151(); + public abstract void f1152(); + public abstract void f1153(); + public abstract void f1154(); + public abstract void f1155(); + public abstract void f1156(); + public abstract void f1157(); + public abstract void f1158(); + public abstract void f1159(); + public abstract void f1160(); + public abstract void f1161(); + public abstract void f1162(); + public abstract void f1163(); + public abstract void f1164(); + public abstract void f1165(); + public abstract void f1166(); + public abstract void f1167(); + public abstract void f1168(); + public abstract void f1169(); + public abstract void f1170(); + public abstract void f1171(); + public abstract void f1172(); + public abstract void f1173(); + public abstract void f1174(); + public abstract void f1175(); + public abstract void f1176(); + public abstract void f1177(); + public abstract void f1178(); + public abstract void f1179(); + public abstract void f1180(); + public abstract void f1181(); + public abstract void f1182(); + public abstract void f1183(); + public abstract void f1184(); + public abstract void f1185(); + public abstract void f1186(); + public abstract void f1187(); + public abstract void f1188(); + public abstract void f1189(); + public abstract void f1190(); + public abstract void f1191(); + public abstract void f1192(); + public abstract void f1193(); + public abstract void f1194(); + public abstract void f1195(); + public abstract void f1196(); + public abstract void f1197(); + public abstract void f1198(); + public abstract void f1199(); + public abstract void f1200(); + public abstract void f1201(); + public abstract void f1202(); + public abstract void f1203(); + public abstract void f1204(); + public abstract void f1205(); + public abstract void f1206(); + public abstract void f1207(); + public abstract void f1208(); + public abstract void f1209(); + public abstract void f1210(); + public abstract void f1211(); + public abstract void f1212(); + public abstract void f1213(); + public abstract void f1214(); + public abstract void f1215(); + public abstract void f1216(); + public abstract void f1217(); + public abstract void f1218(); + public abstract void f1219(); + public abstract void f1220(); + public abstract void f1221(); + public abstract void f1222(); + public abstract void f1223(); + public abstract void f1224(); + public abstract void f1225(); + public abstract void f1226(); + public abstract void f1227(); + public abstract void f1228(); + public abstract void f1229(); + public abstract void f1230(); + public abstract void f1231(); + public abstract void f1232(); + public abstract void f1233(); + public abstract void f1234(); + public abstract void f1235(); + public abstract void f1236(); + public abstract void f1237(); + public abstract void f1238(); + public abstract void f1239(); + public abstract void f1240(); + public abstract void f1241(); + public abstract void f1242(); + public abstract void f1243(); + public abstract void f1244(); + public abstract void f1245(); + public abstract void f1246(); + public abstract void f1247(); + public abstract void f1248(); + public abstract void f1249(); + public abstract void f1250(); + public abstract void f1251(); + public abstract void f1252(); + public abstract void f1253(); + public abstract void f1254(); + public abstract void f1255(); + public abstract void f1256(); + public abstract void f1257(); + public abstract void f1258(); + public abstract void f1259(); + public abstract void f1260(); + public abstract void f1261(); + public abstract void f1262(); + public abstract void f1263(); + public abstract void f1264(); + public abstract void f1265(); + public abstract void f1266(); + public abstract void f1267(); + public abstract void f1268(); + public abstract void f1269(); + public abstract void f1270(); + public abstract void f1271(); + public abstract void f1272(); + public abstract void f1273(); + public abstract void f1274(); + public abstract void f1275(); + public abstract void f1276(); + public abstract void f1277(); + public abstract void f1278(); + public abstract void f1279(); + public abstract void f1280(); + public abstract void f1281(); + public abstract void f1282(); + public abstract void f1283(); + public abstract void f1284(); + public abstract void f1285(); + public abstract void f1286(); + public abstract void f1287(); + public abstract void f1288(); + public abstract void f1289(); + public abstract void f1290(); + public abstract void f1291(); + public abstract void f1292(); + public abstract void f1293(); + public abstract void f1294(); + public abstract void f1295(); + public abstract void f1296(); + public abstract void f1297(); + public abstract void f1298(); + public abstract void f1299(); + public abstract void f1300(); + public abstract void f1301(); + public abstract void f1302(); + public abstract void f1303(); + public abstract void f1304(); + public abstract void f1305(); + public abstract void f1306(); + public abstract void f1307(); + public abstract void f1308(); + public abstract void f1309(); + public abstract void f1310(); + public abstract void f1311(); + public abstract void f1312(); + public abstract void f1313(); + public abstract void f1314(); + public abstract void f1315(); + public abstract void f1316(); + public abstract void f1317(); + public abstract void f1318(); + public abstract void f1319(); + public abstract void f1320(); + public abstract void f1321(); + public abstract void f1322(); + public abstract void f1323(); + public abstract void f1324(); + public abstract void f1325(); + public abstract void f1326(); + public abstract void f1327(); + public abstract void f1328(); + public abstract void f1329(); + public abstract void f1330(); + public abstract void f1331(); + public abstract void f1332(); + public abstract void f1333(); + public abstract void f1334(); + public abstract void f1335(); + public abstract void f1336(); + public abstract void f1337(); + public abstract void f1338(); + public abstract void f1339(); + public abstract void f1340(); + public abstract void f1341(); + public abstract void f1342(); + public abstract void f1343(); + public abstract void f1344(); + public abstract void f1345(); + public abstract void f1346(); + public abstract void f1347(); + public abstract void f1348(); + public abstract void f1349(); + public abstract void f1350(); + public abstract void f1351(); + public abstract void f1352(); + public abstract void f1353(); + public abstract void f1354(); + public abstract void f1355(); + public abstract void f1356(); + public abstract void f1357(); + public abstract void f1358(); + public abstract void f1359(); + public abstract void f1360(); + public abstract void f1361(); + public abstract void f1362(); + public abstract void f1363(); + public abstract void f1364(); + public abstract void f1365(); + public abstract void f1366(); + public abstract void f1367(); + public abstract void f1368(); + public abstract void f1369(); + public abstract void f1370(); + public abstract void f1371(); + public abstract void f1372(); + public abstract void f1373(); + public abstract void f1374(); + public abstract void f1375(); + public abstract void f1376(); + public abstract void f1377(); + public abstract void f1378(); + public abstract void f1379(); + public abstract void f1380(); + public abstract void f1381(); + public abstract void f1382(); + public abstract void f1383(); + public abstract void f1384(); + public abstract void f1385(); + public abstract void f1386(); + public abstract void f1387(); + public abstract void f1388(); + public abstract void f1389(); + public abstract void f1390(); + public abstract void f1391(); + public abstract void f1392(); + public abstract void f1393(); + public abstract void f1394(); + public abstract void f1395(); + public abstract void f1396(); + public abstract void f1397(); + public abstract void f1398(); + public abstract void f1399(); + public abstract void f1400(); + public abstract void f1401(); + public abstract void f1402(); + public abstract void f1403(); + public abstract void f1404(); + public abstract void f1405(); + public abstract void f1406(); + public abstract void f1407(); + public abstract void f1408(); + public abstract void f1409(); + public abstract void f1410(); + public abstract void f1411(); + public abstract void f1412(); + public abstract void f1413(); + public abstract void f1414(); + public abstract void f1415(); + public abstract void f1416(); + public abstract void f1417(); + public abstract void f1418(); + public abstract void f1419(); + public abstract void f1420(); + public abstract void f1421(); + public abstract void f1422(); + public abstract void f1423(); + public abstract void f1424(); + public abstract void f1425(); + public abstract void f1426(); + public abstract void f1427(); + public abstract void f1428(); + public abstract void f1429(); + public abstract void f1430(); + public abstract void f1431(); + public abstract void f1432(); + public abstract void f1433(); + public abstract void f1434(); + public abstract void f1435(); + public abstract void f1436(); + public abstract void f1437(); + public abstract void f1438(); + public abstract void f1439(); + public abstract void f1440(); + public abstract void f1441(); + public abstract void f1442(); + public abstract void f1443(); + public abstract void f1444(); + public abstract void f1445(); + public abstract void f1446(); + public abstract void f1447(); + public abstract void f1448(); + public abstract void f1449(); + public abstract void f1450(); + public abstract void f1451(); + public abstract void f1452(); + public abstract void f1453(); + public abstract void f1454(); + public abstract void f1455(); + public abstract void f1456(); + public abstract void f1457(); + public abstract void f1458(); + public abstract void f1459(); + public abstract void f1460(); + public abstract void f1461(); + public abstract void f1462(); + public abstract void f1463(); + public abstract void f1464(); + public abstract void f1465(); + public abstract void f1466(); + public abstract void f1467(); + public abstract void f1468(); + public abstract void f1469(); + public abstract void f1470(); + public abstract void f1471(); + public abstract void f1472(); + public abstract void f1473(); + public abstract void f1474(); + public abstract void f1475(); + public abstract void f1476(); + public abstract void f1477(); + public abstract void f1478(); + public abstract void f1479(); + public abstract void f1480(); + public abstract void f1481(); + public abstract void f1482(); + public abstract void f1483(); + public abstract void f1484(); + public abstract void f1485(); + public abstract void f1486(); + public abstract void f1487(); + public abstract void f1488(); + public abstract void f1489(); + public abstract void f1490(); + public abstract void f1491(); + public abstract void f1492(); + public abstract void f1493(); + public abstract void f1494(); + public abstract void f1495(); + public abstract void f1496(); + public abstract void f1497(); + public abstract void f1498(); + public abstract void f1499(); + public abstract void f1500(); + public abstract void f1501(); + public abstract void f1502(); + public abstract void f1503(); + public abstract void f1504(); + public abstract void f1505(); + public abstract void f1506(); + public abstract void f1507(); + public abstract void f1508(); + public abstract void f1509(); + public abstract void f1510(); + public abstract void f1511(); + public abstract void f1512(); + public abstract void f1513(); + public abstract void f1514(); + public abstract void f1515(); + public abstract void f1516(); + public abstract void f1517(); + public abstract void f1518(); + public abstract void f1519(); + public abstract void f1520(); + public abstract void f1521(); + public abstract void f1522(); + public abstract void f1523(); + public abstract void f1524(); + public abstract void f1525(); + public abstract void f1526(); + public abstract void f1527(); + public abstract void f1528(); + public abstract void f1529(); + public abstract void f1530(); + public abstract void f1531(); + public abstract void f1532(); + public abstract void f1533(); + public abstract void f1534(); + public abstract void f1535(); + public abstract void f1536(); + public abstract void f1537(); + public abstract void f1538(); + public abstract void f1539(); + public abstract void f1540(); + public abstract void f1541(); + public abstract void f1542(); + public abstract void f1543(); + public abstract void f1544(); + public abstract void f1545(); + public abstract void f1546(); + public abstract void f1547(); + public abstract void f1548(); + public abstract void f1549(); + public abstract void f1550(); + public abstract void f1551(); + public abstract void f1552(); + public abstract void f1553(); + public abstract void f1554(); + public abstract void f1555(); + public abstract void f1556(); + public abstract void f1557(); + public abstract void f1558(); + public abstract void f1559(); + public abstract void f1560(); + public abstract void f1561(); + public abstract void f1562(); + public abstract void f1563(); + public abstract void f1564(); + public abstract void f1565(); + public abstract void f1566(); + public abstract void f1567(); + public abstract void f1568(); + public abstract void f1569(); + public abstract void f1570(); + public abstract void f1571(); + public abstract void f1572(); + public abstract void f1573(); + public abstract void f1574(); + public abstract void f1575(); + public abstract void f1576(); + public abstract void f1577(); + public abstract void f1578(); + public abstract void f1579(); + public abstract void f1580(); + public abstract void f1581(); + public abstract void f1582(); + public abstract void f1583(); + public abstract void f1584(); + public abstract void f1585(); + public abstract void f1586(); + public abstract void f1587(); + public abstract void f1588(); + public abstract void f1589(); + public abstract void f1590(); + public abstract void f1591(); + public abstract void f1592(); + public abstract void f1593(); + public abstract void f1594(); + public abstract void f1595(); + public abstract void f1596(); + public abstract void f1597(); + public abstract void f1598(); + public abstract void f1599(); + public abstract void f1600(); + public abstract void f1601(); + public abstract void f1602(); + public abstract void f1603(); + public abstract void f1604(); + public abstract void f1605(); + public abstract void f1606(); + public abstract void f1607(); + public abstract void f1608(); + public abstract void f1609(); + public abstract void f1610(); + public abstract void f1611(); + public abstract void f1612(); + public abstract void f1613(); + public abstract void f1614(); + public abstract void f1615(); + public abstract void f1616(); + public abstract void f1617(); + public abstract void f1618(); + public abstract void f1619(); + public abstract void f1620(); + public abstract void f1621(); + public abstract void f1622(); + public abstract void f1623(); + public abstract void f1624(); + public abstract void f1625(); + public abstract void f1626(); + public abstract void f1627(); + public abstract void f1628(); + public abstract void f1629(); + public abstract void f1630(); + public abstract void f1631(); + public abstract void f1632(); + public abstract void f1633(); + public abstract void f1634(); + public abstract void f1635(); + public abstract void f1636(); + public abstract void f1637(); + public abstract void f1638(); + public abstract void f1639(); + public abstract void f1640(); + public abstract void f1641(); + public abstract void f1642(); + public abstract void f1643(); + public abstract void f1644(); + public abstract void f1645(); + public abstract void f1646(); + public abstract void f1647(); + public abstract void f1648(); + public abstract void f1649(); + public abstract void f1650(); + public abstract void f1651(); + public abstract void f1652(); + public abstract void f1653(); + public abstract void f1654(); + public abstract void f1655(); + public abstract void f1656(); + public abstract void f1657(); + public abstract void f1658(); + public abstract void f1659(); + public abstract void f1660(); + public abstract void f1661(); + public abstract void f1662(); + public abstract void f1663(); + public abstract void f1664(); + public abstract void f1665(); + public abstract void f1666(); + public abstract void f1667(); + public abstract void f1668(); + public abstract void f1669(); + public abstract void f1670(); + public abstract void f1671(); + public abstract void f1672(); + public abstract void f1673(); + public abstract void f1674(); + public abstract void f1675(); + public abstract void f1676(); + public abstract void f1677(); + public abstract void f1678(); + public abstract void f1679(); + public abstract void f1680(); + public abstract void f1681(); + public abstract void f1682(); + public abstract void f1683(); + public abstract void f1684(); + public abstract void f1685(); + public abstract void f1686(); + public abstract void f1687(); + public abstract void f1688(); + public abstract void f1689(); + public abstract void f1690(); + public abstract void f1691(); + public abstract void f1692(); + public abstract void f1693(); + public abstract void f1694(); + public abstract void f1695(); + public abstract void f1696(); + public abstract void f1697(); + public abstract void f1698(); + public abstract void f1699(); + public abstract void f1700(); + public abstract void f1701(); + public abstract void f1702(); + public abstract void f1703(); + public abstract void f1704(); + public abstract void f1705(); + public abstract void f1706(); + public abstract void f1707(); + public abstract void f1708(); + public abstract void f1709(); + public abstract void f1710(); + public abstract void f1711(); + public abstract void f1712(); + public abstract void f1713(); + public abstract void f1714(); + public abstract void f1715(); + public abstract void f1716(); + public abstract void f1717(); + public abstract void f1718(); + public abstract void f1719(); + public abstract void f1720(); + public abstract void f1721(); + public abstract void f1722(); + public abstract void f1723(); + public abstract void f1724(); + public abstract void f1725(); + public abstract void f1726(); + public abstract void f1727(); + public abstract void f1728(); + public abstract void f1729(); + public abstract void f1730(); + public abstract void f1731(); + public abstract void f1732(); + public abstract void f1733(); + public abstract void f1734(); + public abstract void f1735(); + public abstract void f1736(); + public abstract void f1737(); + public abstract void f1738(); + public abstract void f1739(); + public abstract void f1740(); + public abstract void f1741(); + public abstract void f1742(); + public abstract void f1743(); + public abstract void f1744(); + public abstract void f1745(); + public abstract void f1746(); + public abstract void f1747(); + public abstract void f1748(); + public abstract void f1749(); + public abstract void f1750(); + public abstract void f1751(); + public abstract void f1752(); + public abstract void f1753(); + public abstract void f1754(); + public abstract void f1755(); + public abstract void f1756(); + public abstract void f1757(); + public abstract void f1758(); + public abstract void f1759(); + public abstract void f1760(); + public abstract void f1761(); + public abstract void f1762(); + public abstract void f1763(); + public abstract void f1764(); + public abstract void f1765(); + public abstract void f1766(); + public abstract void f1767(); + public abstract void f1768(); + public abstract void f1769(); + public abstract void f1770(); + public abstract void f1771(); + public abstract void f1772(); + public abstract void f1773(); + public abstract void f1774(); + public abstract void f1775(); + public abstract void f1776(); + public abstract void f1777(); + public abstract void f1778(); + public abstract void f1779(); + public abstract void f1780(); + public abstract void f1781(); + public abstract void f1782(); + public abstract void f1783(); + public abstract void f1784(); + public abstract void f1785(); + public abstract void f1786(); + public abstract void f1787(); + public abstract void f1788(); + public abstract void f1789(); + public abstract void f1790(); + public abstract void f1791(); + public abstract void f1792(); + public abstract void f1793(); + public abstract void f1794(); + public abstract void f1795(); + public abstract void f1796(); + public abstract void f1797(); + public abstract void f1798(); + public abstract void f1799(); + public abstract void f1800(); + public abstract void f1801(); + public abstract void f1802(); + public abstract void f1803(); + public abstract void f1804(); + public abstract void f1805(); + public abstract void f1806(); + public abstract void f1807(); + public abstract void f1808(); + public abstract void f1809(); + public abstract void f1810(); + public abstract void f1811(); + public abstract void f1812(); + public abstract void f1813(); + public abstract void f1814(); + public abstract void f1815(); + public abstract void f1816(); + public abstract void f1817(); + public abstract void f1818(); + public abstract void f1819(); + public abstract void f1820(); + public abstract void f1821(); + public abstract void f1822(); + public abstract void f1823(); + public abstract void f1824(); + public abstract void f1825(); + public abstract void f1826(); + public abstract void f1827(); + public abstract void f1828(); + public abstract void f1829(); + public abstract void f1830(); + public abstract void f1831(); + public abstract void f1832(); + public abstract void f1833(); + public abstract void f1834(); + public abstract void f1835(); + public abstract void f1836(); + public abstract void f1837(); + public abstract void f1838(); + public abstract void f1839(); + public abstract void f1840(); + public abstract void f1841(); + public abstract void f1842(); + public abstract void f1843(); + public abstract void f1844(); + public abstract void f1845(); + public abstract void f1846(); + public abstract void f1847(); + public abstract void f1848(); + public abstract void f1849(); + public abstract void f1850(); + public abstract void f1851(); + public abstract void f1852(); + public abstract void f1853(); + public abstract void f1854(); + public abstract void f1855(); + public abstract void f1856(); + public abstract void f1857(); + public abstract void f1858(); + public abstract void f1859(); + public abstract void f1860(); + public abstract void f1861(); + public abstract void f1862(); + public abstract void f1863(); + public abstract void f1864(); + public abstract void f1865(); + public abstract void f1866(); + public abstract void f1867(); + public abstract void f1868(); + public abstract void f1869(); + public abstract void f1870(); + public abstract void f1871(); + public abstract void f1872(); + public abstract void f1873(); + public abstract void f1874(); + public abstract void f1875(); + public abstract void f1876(); + public abstract void f1877(); + public abstract void f1878(); + public abstract void f1879(); + public abstract void f1880(); + public abstract void f1881(); + public abstract void f1882(); + public abstract void f1883(); + public abstract void f1884(); + public abstract void f1885(); + public abstract void f1886(); + public abstract void f1887(); + public abstract void f1888(); + public abstract void f1889(); + public abstract void f1890(); + public abstract void f1891(); + public abstract void f1892(); + public abstract void f1893(); + public abstract void f1894(); + public abstract void f1895(); + public abstract void f1896(); + public abstract void f1897(); + public abstract void f1898(); + public abstract void f1899(); + public abstract void f1900(); + public abstract void f1901(); + public abstract void f1902(); + public abstract void f1903(); + public abstract void f1904(); + public abstract void f1905(); + public abstract void f1906(); + public abstract void f1907(); + public abstract void f1908(); + public abstract void f1909(); + public abstract void f1910(); + public abstract void f1911(); + public abstract void f1912(); + public abstract void f1913(); + public abstract void f1914(); + public abstract void f1915(); + public abstract void f1916(); + public abstract void f1917(); + public abstract void f1918(); + public abstract void f1919(); + public abstract void f1920(); + public abstract void f1921(); + public abstract void f1922(); + public abstract void f1923(); + public abstract void f1924(); + public abstract void f1925(); + public abstract void f1926(); + public abstract void f1927(); + public abstract void f1928(); + public abstract void f1929(); + public abstract void f1930(); + public abstract void f1931(); + public abstract void f1932(); + public abstract void f1933(); + public abstract void f1934(); + public abstract void f1935(); + public abstract void f1936(); + public abstract void f1937(); + public abstract void f1938(); + public abstract void f1939(); + public abstract void f1940(); + public abstract void f1941(); + public abstract void f1942(); + public abstract void f1943(); + public abstract void f1944(); + public abstract void f1945(); + public abstract void f1946(); + public abstract void f1947(); + public abstract void f1948(); + public abstract void f1949(); + public abstract void f1950(); + public abstract void f1951(); + public abstract void f1952(); + public abstract void f1953(); + public abstract void f1954(); + public abstract void f1955(); + public abstract void f1956(); + public abstract void f1957(); + public abstract void f1958(); + public abstract void f1959(); + public abstract void f1960(); + public abstract void f1961(); + public abstract void f1962(); + public abstract void f1963(); + public abstract void f1964(); + public abstract void f1965(); + public abstract void f1966(); + public abstract void f1967(); + public abstract void f1968(); + public abstract void f1969(); + public abstract void f1970(); + public abstract void f1971(); + public abstract void f1972(); + public abstract void f1973(); + public abstract void f1974(); + public abstract void f1975(); + public abstract void f1976(); + public abstract void f1977(); + public abstract void f1978(); + public abstract void f1979(); + public abstract void f1980(); + public abstract void f1981(); + public abstract void f1982(); + public abstract void f1983(); + public abstract void f1984(); + public abstract void f1985(); + public abstract void f1986(); + public abstract void f1987(); + public abstract void f1988(); + public abstract void f1989(); + public abstract void f1990(); + public abstract void f1991(); + public abstract void f1992(); + public abstract void f1993(); + public abstract void f1994(); + public abstract void f1995(); + public abstract void f1996(); + public abstract void f1997(); + public abstract void f1998(); + public abstract void f1999(); + public abstract void f2000(); + public abstract void f2001(); + public abstract void f2002(); + public abstract void f2003(); + public abstract void f2004(); + public abstract void f2005(); + public abstract void f2006(); + public abstract void f2007(); + public abstract void f2008(); + public abstract void f2009(); + public abstract void f2010(); + public abstract void f2011(); + public abstract void f2012(); + public abstract void f2013(); + public abstract void f2014(); + public abstract void f2015(); + public abstract void f2016(); + public abstract void f2017(); + public abstract void f2018(); + public abstract void f2019(); + public abstract void f2020(); + public abstract void f2021(); + public abstract void f2022(); + public abstract void f2023(); + public abstract void f2024(); + public abstract void f2025(); + public abstract void f2026(); + public abstract void f2027(); + public abstract void f2028(); + public abstract void f2029(); + public abstract void f2030(); + public abstract void f2031(); + public abstract void f2032(); + public abstract void f2033(); + public abstract void f2034(); + public abstract void f2035(); + public abstract void f2036(); + public abstract void f2037(); + public abstract void f2038(); + public abstract void f2039(); + public abstract void f2040(); + public abstract void f2041(); + public abstract void f2042(); + public abstract void f2043(); + public abstract void f2044(); + public abstract void f2045(); + public abstract void f2046(); + public abstract void f2047(); + public abstract void f2048(); + public abstract void f2049(); + public abstract void f2050(); + public abstract void f2051(); + public abstract void f2052(); + public abstract void f2053(); + public abstract void f2054(); + public abstract void f2055(); + public abstract void f2056(); + public abstract void f2057(); + public abstract void f2058(); + public abstract void f2059(); + public abstract void f2060(); + public abstract void f2061(); + public abstract void f2062(); + public abstract void f2063(); + public abstract void f2064(); + public abstract void f2065(); + public abstract void f2066(); + public abstract void f2067(); + public abstract void f2068(); + public abstract void f2069(); + public abstract void f2070(); + public abstract void f2071(); + public abstract void f2072(); + public abstract void f2073(); + public abstract void f2074(); + public abstract void f2075(); + public abstract void f2076(); + public abstract void f2077(); + public abstract void f2078(); + public abstract void f2079(); + public abstract void f2080(); + public abstract void f2081(); + public abstract void f2082(); + public abstract void f2083(); + public abstract void f2084(); + public abstract void f2085(); + public abstract void f2086(); + public abstract void f2087(); + public abstract void f2088(); + public abstract void f2089(); + public abstract void f2090(); + public abstract void f2091(); + public abstract void f2092(); + public abstract void f2093(); + public abstract void f2094(); + public abstract void f2095(); + public abstract void f2096(); + public abstract void f2097(); + public abstract void f2098(); + public abstract void f2099(); + public abstract void f2100(); + public abstract void f2101(); + public abstract void f2102(); + public abstract void f2103(); + public abstract void f2104(); + public abstract void f2105(); + public abstract void f2106(); + public abstract void f2107(); + public abstract void f2108(); + public abstract void f2109(); + public abstract void f2110(); + public abstract void f2111(); + public abstract void f2112(); + public abstract void f2113(); + public abstract void f2114(); + public abstract void f2115(); + public abstract void f2116(); + public abstract void f2117(); + public abstract void f2118(); + public abstract void f2119(); + public abstract void f2120(); + public abstract void f2121(); + public abstract void f2122(); + public abstract void f2123(); + public abstract void f2124(); + public abstract void f2125(); + public abstract void f2126(); + public abstract void f2127(); + public abstract void f2128(); + public abstract void f2129(); + public abstract void f2130(); + public abstract void f2131(); + public abstract void f2132(); + public abstract void f2133(); + public abstract void f2134(); + public abstract void f2135(); + public abstract void f2136(); + public abstract void f2137(); + public abstract void f2138(); + public abstract void f2139(); + public abstract void f2140(); + public abstract void f2141(); + public abstract void f2142(); + public abstract void f2143(); + public abstract void f2144(); + public abstract void f2145(); + public abstract void f2146(); + public abstract void f2147(); + public abstract void f2148(); + public abstract void f2149(); + public abstract void f2150(); + public abstract void f2151(); + public abstract void f2152(); + public abstract void f2153(); + public abstract void f2154(); + public abstract void f2155(); + public abstract void f2156(); + public abstract void f2157(); + public abstract void f2158(); + public abstract void f2159(); + public abstract void f2160(); + public abstract void f2161(); + public abstract void f2162(); + public abstract void f2163(); + public abstract void f2164(); + public abstract void f2165(); + public abstract void f2166(); + public abstract void f2167(); + public abstract void f2168(); + public abstract void f2169(); + public abstract void f2170(); + public abstract void f2171(); + public abstract void f2172(); + public abstract void f2173(); + public abstract void f2174(); + public abstract void f2175(); + public abstract void f2176(); + public abstract void f2177(); + public abstract void f2178(); + public abstract void f2179(); + public abstract void f2180(); + public abstract void f2181(); + public abstract void f2182(); + public abstract void f2183(); + public abstract void f2184(); + public abstract void f2185(); + public abstract void f2186(); + public abstract void f2187(); + public abstract void f2188(); + public abstract void f2189(); + public abstract void f2190(); + public abstract void f2191(); + public abstract void f2192(); + public abstract void f2193(); + public abstract void f2194(); + public abstract void f2195(); + public abstract void f2196(); + public abstract void f2197(); + public abstract void f2198(); + public abstract void f2199(); + public abstract void f2200(); + public abstract void f2201(); + public abstract void f2202(); + public abstract void f2203(); + public abstract void f2204(); + public abstract void f2205(); + public abstract void f2206(); + public abstract void f2207(); + public abstract void f2208(); + public abstract void f2209(); + public abstract void f2210(); + public abstract void f2211(); + public abstract void f2212(); + public abstract void f2213(); + public abstract void f2214(); + public abstract void f2215(); + public abstract void f2216(); + public abstract void f2217(); + public abstract void f2218(); + public abstract void f2219(); + public abstract void f2220(); + public abstract void f2221(); + public abstract void f2222(); + public abstract void f2223(); + public abstract void f2224(); + public abstract void f2225(); + public abstract void f2226(); + public abstract void f2227(); + public abstract void f2228(); + public abstract void f2229(); + public abstract void f2230(); + public abstract void f2231(); + public abstract void f2232(); + public abstract void f2233(); + public abstract void f2234(); + public abstract void f2235(); + public abstract void f2236(); + public abstract void f2237(); + public abstract void f2238(); + public abstract void f2239(); + public abstract void f2240(); + public abstract void f2241(); + public abstract void f2242(); + public abstract void f2243(); + public abstract void f2244(); + public abstract void f2245(); + public abstract void f2246(); + public abstract void f2247(); + public abstract void f2248(); + public abstract void f2249(); + public abstract void f2250(); + public abstract void f2251(); + public abstract void f2252(); + public abstract void f2253(); + public abstract void f2254(); + public abstract void f2255(); + public abstract void f2256(); + public abstract void f2257(); + public abstract void f2258(); + public abstract void f2259(); + public abstract void f2260(); + public abstract void f2261(); + public abstract void f2262(); + public abstract void f2263(); + public abstract void f2264(); + public abstract void f2265(); + public abstract void f2266(); + public abstract void f2267(); + public abstract void f2268(); + public abstract void f2269(); + public abstract void f2270(); + public abstract void f2271(); + public abstract void f2272(); + public abstract void f2273(); + public abstract void f2274(); + public abstract void f2275(); + public abstract void f2276(); + public abstract void f2277(); + public abstract void f2278(); + public abstract void f2279(); + public abstract void f2280(); + public abstract void f2281(); + public abstract void f2282(); + public abstract void f2283(); + public abstract void f2284(); + public abstract void f2285(); + public abstract void f2286(); + public abstract void f2287(); + public abstract void f2288(); + public abstract void f2289(); + public abstract void f2290(); + public abstract void f2291(); + public abstract void f2292(); + public abstract void f2293(); + public abstract void f2294(); + public abstract void f2295(); + public abstract void f2296(); + public abstract void f2297(); + public abstract void f2298(); + public abstract void f2299(); + public abstract void f2300(); + public abstract void f2301(); + public abstract void f2302(); + public abstract void f2303(); + public abstract void f2304(); + public abstract void f2305(); + public abstract void f2306(); + public abstract void f2307(); + public abstract void f2308(); + public abstract void f2309(); + public abstract void f2310(); + public abstract void f2311(); + public abstract void f2312(); + public abstract void f2313(); + public abstract void f2314(); + public abstract void f2315(); + public abstract void f2316(); + public abstract void f2317(); + public abstract void f2318(); + public abstract void f2319(); + public abstract void f2320(); + public abstract void f2321(); + public abstract void f2322(); + public abstract void f2323(); + public abstract void f2324(); + public abstract void f2325(); + public abstract void f2326(); + public abstract void f2327(); + public abstract void f2328(); + public abstract void f2329(); + public abstract void f2330(); + public abstract void f2331(); + public abstract void f2332(); + public abstract void f2333(); + public abstract void f2334(); + public abstract void f2335(); + public abstract void f2336(); + public abstract void f2337(); + public abstract void f2338(); + public abstract void f2339(); + public abstract void f2340(); + public abstract void f2341(); + public abstract void f2342(); + public abstract void f2343(); + public abstract void f2344(); + public abstract void f2345(); + public abstract void f2346(); + public abstract void f2347(); + public abstract void f2348(); + public abstract void f2349(); + public abstract void f2350(); + public abstract void f2351(); + public abstract void f2352(); + public abstract void f2353(); + public abstract void f2354(); + public abstract void f2355(); + public abstract void f2356(); + public abstract void f2357(); + public abstract void f2358(); + public abstract void f2359(); + public abstract void f2360(); + public abstract void f2361(); + public abstract void f2362(); + public abstract void f2363(); + public abstract void f2364(); + public abstract void f2365(); + public abstract void f2366(); + public abstract void f2367(); + public abstract void f2368(); + public abstract void f2369(); + public abstract void f2370(); + public abstract void f2371(); + public abstract void f2372(); + public abstract void f2373(); + public abstract void f2374(); + public abstract void f2375(); + public abstract void f2376(); + public abstract void f2377(); + public abstract void f2378(); + public abstract void f2379(); + public abstract void f2380(); + public abstract void f2381(); + public abstract void f2382(); + public abstract void f2383(); + public abstract void f2384(); + public abstract void f2385(); + public abstract void f2386(); + public abstract void f2387(); + public abstract void f2388(); + public abstract void f2389(); + public abstract void f2390(); + public abstract void f2391(); + public abstract void f2392(); + public abstract void f2393(); + public abstract void f2394(); + public abstract void f2395(); + public abstract void f2396(); + public abstract void f2397(); + public abstract void f2398(); + public abstract void f2399(); + public abstract void f2400(); + public abstract void f2401(); + public abstract void f2402(); + public abstract void f2403(); + public abstract void f2404(); + public abstract void f2405(); + public abstract void f2406(); + public abstract void f2407(); + public abstract void f2408(); + public abstract void f2409(); + public abstract void f2410(); + public abstract void f2411(); + public abstract void f2412(); + public abstract void f2413(); + public abstract void f2414(); + public abstract void f2415(); + public abstract void f2416(); + public abstract void f2417(); + public abstract void f2418(); + public abstract void f2419(); + public abstract void f2420(); + public abstract void f2421(); + public abstract void f2422(); + public abstract void f2423(); + public abstract void f2424(); + public abstract void f2425(); + public abstract void f2426(); + public abstract void f2427(); + public abstract void f2428(); + public abstract void f2429(); + public abstract void f2430(); + public abstract void f2431(); + public abstract void f2432(); + public abstract void f2433(); + public abstract void f2434(); + public abstract void f2435(); + public abstract void f2436(); + public abstract void f2437(); + public abstract void f2438(); + public abstract void f2439(); + public abstract void f2440(); + public abstract void f2441(); + public abstract void f2442(); + public abstract void f2443(); + public abstract void f2444(); + public abstract void f2445(); + public abstract void f2446(); + public abstract void f2447(); + public abstract void f2448(); + public abstract void f2449(); + public abstract void f2450(); + public abstract void f2451(); + public abstract void f2452(); + public abstract void f2453(); + public abstract void f2454(); + public abstract void f2455(); + public abstract void f2456(); + public abstract void f2457(); + public abstract void f2458(); + public abstract void f2459(); + public abstract void f2460(); + public abstract void f2461(); + public abstract void f2462(); + public abstract void f2463(); + public abstract void f2464(); + public abstract void f2465(); + public abstract void f2466(); + public abstract void f2467(); + public abstract void f2468(); + public abstract void f2469(); + public abstract void f2470(); + public abstract void f2471(); + public abstract void f2472(); + public abstract void f2473(); + public abstract void f2474(); + public abstract void f2475(); + public abstract void f2476(); + public abstract void f2477(); + public abstract void f2478(); + public abstract void f2479(); + public abstract void f2480(); + public abstract void f2481(); + public abstract void f2482(); + public abstract void f2483(); + public abstract void f2484(); + public abstract void f2485(); + public abstract void f2486(); + public abstract void f2487(); + public abstract void f2488(); + public abstract void f2489(); + public abstract void f2490(); + public abstract void f2491(); + public abstract void f2492(); + public abstract void f2493(); + public abstract void f2494(); + public abstract void f2495(); + public abstract void f2496(); + public abstract void f2497(); + public abstract void f2498(); + public abstract void f2499(); + public abstract void f2500(); + public abstract void f2501(); + public abstract void f2502(); + public abstract void f2503(); + public abstract void f2504(); + public abstract void f2505(); + public abstract void f2506(); + public abstract void f2507(); + public abstract void f2508(); + public abstract void f2509(); + public abstract void f2510(); + public abstract void f2511(); + public abstract void f2512(); + public abstract void f2513(); + public abstract void f2514(); + public abstract void f2515(); + public abstract void f2516(); + public abstract void f2517(); + public abstract void f2518(); + public abstract void f2519(); + public abstract void f2520(); + public abstract void f2521(); + public abstract void f2522(); + public abstract void f2523(); + public abstract void f2524(); + public abstract void f2525(); + public abstract void f2526(); + public abstract void f2527(); + public abstract void f2528(); + public abstract void f2529(); + public abstract void f2530(); + public abstract void f2531(); + public abstract void f2532(); + public abstract void f2533(); + public abstract void f2534(); + public abstract void f2535(); + public abstract void f2536(); + public abstract void f2537(); + public abstract void f2538(); + public abstract void f2539(); + public abstract void f2540(); + public abstract void f2541(); + public abstract void f2542(); + public abstract void f2543(); + public abstract void f2544(); + public abstract void f2545(); + public abstract void f2546(); + public abstract void f2547(); + public abstract void f2548(); + public abstract void f2549(); + public abstract void f2550(); + public abstract void f2551(); + public abstract void f2552(); + public abstract void f2553(); + public abstract void f2554(); + public abstract void f2555(); + public abstract void f2556(); + public abstract void f2557(); + public abstract void f2558(); + public abstract void f2559(); + public abstract void f2560(); + public abstract void f2561(); + public abstract void f2562(); + public abstract void f2563(); + public abstract void f2564(); + public abstract void f2565(); + public abstract void f2566(); + public abstract void f2567(); + public abstract void f2568(); + public abstract void f2569(); + public abstract void f2570(); + public abstract void f2571(); + public abstract void f2572(); + public abstract void f2573(); + public abstract void f2574(); + public abstract void f2575(); + public abstract void f2576(); + public abstract void f2577(); + public abstract void f2578(); + public abstract void f2579(); + public abstract void f2580(); + public abstract void f2581(); + public abstract void f2582(); + public abstract void f2583(); + public abstract void f2584(); + public abstract void f2585(); + public abstract void f2586(); + public abstract void f2587(); + public abstract void f2588(); + public abstract void f2589(); + public abstract void f2590(); + public abstract void f2591(); + public abstract void f2592(); + public abstract void f2593(); + public abstract void f2594(); + public abstract void f2595(); + public abstract void f2596(); + public abstract void f2597(); + public abstract void f2598(); + public abstract void f2599(); + public abstract void f2600(); + public abstract void f2601(); + public abstract void f2602(); + public abstract void f2603(); + public abstract void f2604(); + public abstract void f2605(); + public abstract void f2606(); + public abstract void f2607(); + public abstract void f2608(); + public abstract void f2609(); + public abstract void f2610(); + public abstract void f2611(); + public abstract void f2612(); + public abstract void f2613(); + public abstract void f2614(); + public abstract void f2615(); + public abstract void f2616(); + public abstract void f2617(); + public abstract void f2618(); + public abstract void f2619(); + public abstract void f2620(); + public abstract void f2621(); + public abstract void f2622(); + public abstract void f2623(); + public abstract void f2624(); + public abstract void f2625(); + public abstract void f2626(); + public abstract void f2627(); + public abstract void f2628(); + public abstract void f2629(); + public abstract void f2630(); + public abstract void f2631(); + public abstract void f2632(); + public abstract void f2633(); + public abstract void f2634(); + public abstract void f2635(); + public abstract void f2636(); + public abstract void f2637(); + public abstract void f2638(); + public abstract void f2639(); + public abstract void f2640(); + public abstract void f2641(); + public abstract void f2642(); + public abstract void f2643(); + public abstract void f2644(); + public abstract void f2645(); + public abstract void f2646(); + public abstract void f2647(); + public abstract void f2648(); + public abstract void f2649(); + public abstract void f2650(); + public abstract void f2651(); + public abstract void f2652(); + public abstract void f2653(); + public abstract void f2654(); + public abstract void f2655(); + public abstract void f2656(); + public abstract void f2657(); + public abstract void f2658(); + public abstract void f2659(); + public abstract void f2660(); + public abstract void f2661(); + public abstract void f2662(); + public abstract void f2663(); + public abstract void f2664(); + public abstract void f2665(); + public abstract void f2666(); + public abstract void f2667(); + public abstract void f2668(); + public abstract void f2669(); + public abstract void f2670(); + public abstract void f2671(); + public abstract void f2672(); + public abstract void f2673(); + public abstract void f2674(); + public abstract void f2675(); + public abstract void f2676(); + public abstract void f2677(); + public abstract void f2678(); + public abstract void f2679(); + public abstract void f2680(); + public abstract void f2681(); + public abstract void f2682(); + public abstract void f2683(); + public abstract void f2684(); + public abstract void f2685(); + public abstract void f2686(); + public abstract void f2687(); + public abstract void f2688(); + public abstract void f2689(); + public abstract void f2690(); + public abstract void f2691(); + public abstract void f2692(); + public abstract void f2693(); + public abstract void f2694(); + public abstract void f2695(); + public abstract void f2696(); + public abstract void f2697(); + public abstract void f2698(); + public abstract void f2699(); + public abstract void f2700(); + public abstract void f2701(); + public abstract void f2702(); + public abstract void f2703(); + public abstract void f2704(); + public abstract void f2705(); + public abstract void f2706(); + public abstract void f2707(); + public abstract void f2708(); + public abstract void f2709(); + public abstract void f2710(); + public abstract void f2711(); + public abstract void f2712(); + public abstract void f2713(); + public abstract void f2714(); + public abstract void f2715(); + public abstract void f2716(); + public abstract void f2717(); + public abstract void f2718(); + public abstract void f2719(); + public abstract void f2720(); + public abstract void f2721(); + public abstract void f2722(); + public abstract void f2723(); + public abstract void f2724(); + public abstract void f2725(); + public abstract void f2726(); + public abstract void f2727(); + public abstract void f2728(); + public abstract void f2729(); + public abstract void f2730(); + public abstract void f2731(); + public abstract void f2732(); + public abstract void f2733(); + public abstract void f2734(); + public abstract void f2735(); + public abstract void f2736(); + public abstract void f2737(); + public abstract void f2738(); + public abstract void f2739(); + public abstract void f2740(); + public abstract void f2741(); + public abstract void f2742(); + public abstract void f2743(); + public abstract void f2744(); + public abstract void f2745(); + public abstract void f2746(); + public abstract void f2747(); + public abstract void f2748(); + public abstract void f2749(); + public abstract void f2750(); + public abstract void f2751(); + public abstract void f2752(); + public abstract void f2753(); + public abstract void f2754(); + public abstract void f2755(); + public abstract void f2756(); + public abstract void f2757(); + public abstract void f2758(); + public abstract void f2759(); + public abstract void f2760(); + public abstract void f2761(); + public abstract void f2762(); + public abstract void f2763(); + public abstract void f2764(); + public abstract void f2765(); + public abstract void f2766(); + public abstract void f2767(); + public abstract void f2768(); + public abstract void f2769(); + public abstract void f2770(); + public abstract void f2771(); + public abstract void f2772(); + public abstract void f2773(); + public abstract void f2774(); + public abstract void f2775(); + public abstract void f2776(); + public abstract void f2777(); + public abstract void f2778(); + public abstract void f2779(); + public abstract void f2780(); + public abstract void f2781(); + public abstract void f2782(); + public abstract void f2783(); + public abstract void f2784(); + public abstract void f2785(); + public abstract void f2786(); + public abstract void f2787(); + public abstract void f2788(); + public abstract void f2789(); + public abstract void f2790(); + public abstract void f2791(); + public abstract void f2792(); + public abstract void f2793(); + public abstract void f2794(); + public abstract void f2795(); + public abstract void f2796(); + public abstract void f2797(); + public abstract void f2798(); + public abstract void f2799(); + public abstract void f2800(); + public abstract void f2801(); + public abstract void f2802(); + public abstract void f2803(); + public abstract void f2804(); + public abstract void f2805(); + public abstract void f2806(); + public abstract void f2807(); + public abstract void f2808(); + public abstract void f2809(); + public abstract void f2810(); + public abstract void f2811(); + public abstract void f2812(); + public abstract void f2813(); + public abstract void f2814(); + public abstract void f2815(); + public abstract void f2816(); + public abstract void f2817(); + public abstract void f2818(); + public abstract void f2819(); + public abstract void f2820(); + public abstract void f2821(); + public abstract void f2822(); + public abstract void f2823(); + public abstract void f2824(); + public abstract void f2825(); + public abstract void f2826(); + public abstract void f2827(); + public abstract void f2828(); + public abstract void f2829(); + public abstract void f2830(); + public abstract void f2831(); + public abstract void f2832(); + public abstract void f2833(); + public abstract void f2834(); + public abstract void f2835(); + public abstract void f2836(); + public abstract void f2837(); + public abstract void f2838(); + public abstract void f2839(); + public abstract void f2840(); + public abstract void f2841(); + public abstract void f2842(); + public abstract void f2843(); + public abstract void f2844(); + public abstract void f2845(); + public abstract void f2846(); + public abstract void f2847(); + public abstract void f2848(); + public abstract void f2849(); + public abstract void f2850(); + public abstract void f2851(); + public abstract void f2852(); + public abstract void f2853(); + public abstract void f2854(); + public abstract void f2855(); + public abstract void f2856(); + public abstract void f2857(); + public abstract void f2858(); + public abstract void f2859(); + public abstract void f2860(); + public abstract void f2861(); + public abstract void f2862(); + public abstract void f2863(); + public abstract void f2864(); + public abstract void f2865(); + public abstract void f2866(); + public abstract void f2867(); + public abstract void f2868(); + public abstract void f2869(); + public abstract void f2870(); + public abstract void f2871(); + public abstract void f2872(); + public abstract void f2873(); + public abstract void f2874(); + public abstract void f2875(); + public abstract void f2876(); + public abstract void f2877(); + public abstract void f2878(); + public abstract void f2879(); + public abstract void f2880(); + public abstract void f2881(); + public abstract void f2882(); + public abstract void f2883(); + public abstract void f2884(); + public abstract void f2885(); + public abstract void f2886(); + public abstract void f2887(); + public abstract void f2888(); + public abstract void f2889(); + public abstract void f2890(); + public abstract void f2891(); + public abstract void f2892(); + public abstract void f2893(); + public abstract void f2894(); + public abstract void f2895(); + public abstract void f2896(); + public abstract void f2897(); + public abstract void f2898(); + public abstract void f2899(); + public abstract void f2900(); + public abstract void f2901(); + public abstract void f2902(); + public abstract void f2903(); + public abstract void f2904(); + public abstract void f2905(); + public abstract void f2906(); + public abstract void f2907(); + public abstract void f2908(); + public abstract void f2909(); + public abstract void f2910(); + public abstract void f2911(); + public abstract void f2912(); + public abstract void f2913(); + public abstract void f2914(); + public abstract void f2915(); + public abstract void f2916(); + public abstract void f2917(); + public abstract void f2918(); + public abstract void f2919(); + public abstract void f2920(); + public abstract void f2921(); + public abstract void f2922(); + public abstract void f2923(); + public abstract void f2924(); + public abstract void f2925(); + public abstract void f2926(); + public abstract void f2927(); + public abstract void f2928(); + public abstract void f2929(); + public abstract void f2930(); + public abstract void f2931(); + public abstract void f2932(); + public abstract void f2933(); + public abstract void f2934(); + public abstract void f2935(); + public abstract void f2936(); + public abstract void f2937(); + public abstract void f2938(); + public abstract void f2939(); + public abstract void f2940(); + public abstract void f2941(); + public abstract void f2942(); + public abstract void f2943(); + public abstract void f2944(); + public abstract void f2945(); + public abstract void f2946(); + public abstract void f2947(); + public abstract void f2948(); + public abstract void f2949(); + public abstract void f2950(); + public abstract void f2951(); + public abstract void f2952(); + public abstract void f2953(); + public abstract void f2954(); + public abstract void f2955(); + public abstract void f2956(); + public abstract void f2957(); + public abstract void f2958(); + public abstract void f2959(); + public abstract void f2960(); + public abstract void f2961(); + public abstract void f2962(); + public abstract void f2963(); + public abstract void f2964(); + public abstract void f2965(); + public abstract void f2966(); + public abstract void f2967(); + public abstract void f2968(); + public abstract void f2969(); + public abstract void f2970(); + public abstract void f2971(); + public abstract void f2972(); + public abstract void f2973(); + public abstract void f2974(); + public abstract void f2975(); + public abstract void f2976(); + public abstract void f2977(); + public abstract void f2978(); + public abstract void f2979(); + public abstract void f2980(); + public abstract void f2981(); + public abstract void f2982(); + public abstract void f2983(); + public abstract void f2984(); + public abstract void f2985(); + public abstract void f2986(); + public abstract void f2987(); + public abstract void f2988(); + public abstract void f2989(); + public abstract void f2990(); + public abstract void f2991(); + public abstract void f2992(); + public abstract void f2993(); + public abstract void f2994(); + public abstract void f2995(); + public abstract void f2996(); + public abstract void f2997(); + public abstract void f2998(); + public abstract void f2999(); + public abstract void f3000(); + public abstract void f3001(); + public abstract void f3002(); + public abstract void f3003(); + public abstract void f3004(); + public abstract void f3005(); + public abstract void f3006(); + public abstract void f3007(); + public abstract void f3008(); + public abstract void f3009(); + public abstract void f3010(); + public abstract void f3011(); + public abstract void f3012(); + public abstract void f3013(); + public abstract void f3014(); + public abstract void f3015(); + public abstract void f3016(); + public abstract void f3017(); + public abstract void f3018(); + public abstract void f3019(); + public abstract void f3020(); + public abstract void f3021(); + public abstract void f3022(); + public abstract void f3023(); + public abstract void f3024(); + public abstract void f3025(); + public abstract void f3026(); + public abstract void f3027(); + public abstract void f3028(); + public abstract void f3029(); + public abstract void f3030(); + public abstract void f3031(); + public abstract void f3032(); + public abstract void f3033(); + public abstract void f3034(); + public abstract void f3035(); + public abstract void f3036(); + public abstract void f3037(); + public abstract void f3038(); + public abstract void f3039(); + public abstract void f3040(); + public abstract void f3041(); + public abstract void f3042(); + public abstract void f3043(); + public abstract void f3044(); + public abstract void f3045(); + public abstract void f3046(); + public abstract void f3047(); + public abstract void f3048(); + public abstract void f3049(); + public abstract void f3050(); + public abstract void f3051(); + public abstract void f3052(); + public abstract void f3053(); + public abstract void f3054(); + public abstract void f3055(); + public abstract void f3056(); + public abstract void f3057(); + public abstract void f3058(); + public abstract void f3059(); + public abstract void f3060(); + public abstract void f3061(); + public abstract void f3062(); + public abstract void f3063(); + public abstract void f3064(); + public abstract void f3065(); + public abstract void f3066(); + public abstract void f3067(); + public abstract void f3068(); + public abstract void f3069(); + public abstract void f3070(); + public abstract void f3071(); + public abstract void f3072(); + public abstract void f3073(); + public abstract void f3074(); + public abstract void f3075(); + public abstract void f3076(); + public abstract void f3077(); + public abstract void f3078(); + public abstract void f3079(); + public abstract void f3080(); + public abstract void f3081(); + public abstract void f3082(); + public abstract void f3083(); + public abstract void f3084(); + public abstract void f3085(); + public abstract void f3086(); + public abstract void f3087(); + public abstract void f3088(); + public abstract void f3089(); + public abstract void f3090(); + public abstract void f3091(); + public abstract void f3092(); + public abstract void f3093(); + public abstract void f3094(); + public abstract void f3095(); + public abstract void f3096(); + public abstract void f3097(); + public abstract void f3098(); + public abstract void f3099(); + public abstract void f3100(); + public abstract void f3101(); + public abstract void f3102(); + public abstract void f3103(); + public abstract void f3104(); + public abstract void f3105(); + public abstract void f3106(); + public abstract void f3107(); + public abstract void f3108(); + public abstract void f3109(); + public abstract void f3110(); + public abstract void f3111(); + public abstract void f3112(); + public abstract void f3113(); + public abstract void f3114(); + public abstract void f3115(); + public abstract void f3116(); + public abstract void f3117(); + public abstract void f3118(); + public abstract void f3119(); + public abstract void f3120(); + public abstract void f3121(); + public abstract void f3122(); + public abstract void f3123(); + public abstract void f3124(); + public abstract void f3125(); + public abstract void f3126(); + public abstract void f3127(); + public abstract void f3128(); + public abstract void f3129(); + public abstract void f3130(); + public abstract void f3131(); + public abstract void f3132(); + public abstract void f3133(); + public abstract void f3134(); + public abstract void f3135(); + public abstract void f3136(); + public abstract void f3137(); + public abstract void f3138(); + public abstract void f3139(); + public abstract void f3140(); + public abstract void f3141(); + public abstract void f3142(); + public abstract void f3143(); + public abstract void f3144(); + public abstract void f3145(); + public abstract void f3146(); + public abstract void f3147(); + public abstract void f3148(); + public abstract void f3149(); + public abstract void f3150(); + public abstract void f3151(); + public abstract void f3152(); + public abstract void f3153(); + public abstract void f3154(); + public abstract void f3155(); + public abstract void f3156(); + public abstract void f3157(); + public abstract void f3158(); + public abstract void f3159(); + public abstract void f3160(); + public abstract void f3161(); + public abstract void f3162(); + public abstract void f3163(); + public abstract void f3164(); + public abstract void f3165(); + public abstract void f3166(); + public abstract void f3167(); + public abstract void f3168(); + public abstract void f3169(); + public abstract void f3170(); + public abstract void f3171(); + public abstract void f3172(); + public abstract void f3173(); + public abstract void f3174(); + public abstract void f3175(); + public abstract void f3176(); + public abstract void f3177(); + public abstract void f3178(); + public abstract void f3179(); + public abstract void f3180(); + public abstract void f3181(); + public abstract void f3182(); + public abstract void f3183(); + public abstract void f3184(); + public abstract void f3185(); + public abstract void f3186(); + public abstract void f3187(); + public abstract void f3188(); + public abstract void f3189(); + public abstract void f3190(); + public abstract void f3191(); + public abstract void f3192(); + public abstract void f3193(); + public abstract void f3194(); + public abstract void f3195(); + public abstract void f3196(); + public abstract void f3197(); + public abstract void f3198(); + public abstract void f3199(); + public abstract void f3200(); + public abstract void f3201(); + public abstract void f3202(); + public abstract void f3203(); + public abstract void f3204(); + public abstract void f3205(); + public abstract void f3206(); + public abstract void f3207(); + public abstract void f3208(); + public abstract void f3209(); + public abstract void f3210(); + public abstract void f3211(); + public abstract void f3212(); + public abstract void f3213(); + public abstract void f3214(); + public abstract void f3215(); + public abstract void f3216(); + public abstract void f3217(); + public abstract void f3218(); + public abstract void f3219(); + public abstract void f3220(); + public abstract void f3221(); + public abstract void f3222(); + public abstract void f3223(); + public abstract void f3224(); + public abstract void f3225(); + public abstract void f3226(); + public abstract void f3227(); + public abstract void f3228(); + public abstract void f3229(); + public abstract void f3230(); + public abstract void f3231(); + public abstract void f3232(); + public abstract void f3233(); + public abstract void f3234(); + public abstract void f3235(); + public abstract void f3236(); + public abstract void f3237(); + public abstract void f3238(); + public abstract void f3239(); + public abstract void f3240(); + public abstract void f3241(); + public abstract void f3242(); + public abstract void f3243(); + public abstract void f3244(); + public abstract void f3245(); + public abstract void f3246(); + public abstract void f3247(); + public abstract void f3248(); + public abstract void f3249(); + public abstract void f3250(); + public abstract void f3251(); + public abstract void f3252(); + public abstract void f3253(); + public abstract void f3254(); + public abstract void f3255(); + public abstract void f3256(); + public abstract void f3257(); + public abstract void f3258(); + public abstract void f3259(); + public abstract void f3260(); + public abstract void f3261(); + public abstract void f3262(); + public abstract void f3263(); + public abstract void f3264(); + public abstract void f3265(); + public abstract void f3266(); + public abstract void f3267(); + public abstract void f3268(); + public abstract void f3269(); + public abstract void f3270(); + public abstract void f3271(); + public abstract void f3272(); + public abstract void f3273(); + public abstract void f3274(); + public abstract void f3275(); + public abstract void f3276(); + public abstract void f3277(); + public abstract void f3278(); + public abstract void f3279(); + public abstract void f3280(); + public abstract void f3281(); + public abstract void f3282(); + public abstract void f3283(); + public abstract void f3284(); + public abstract void f3285(); + public abstract void f3286(); + public abstract void f3287(); + public abstract void f3288(); + public abstract void f3289(); + public abstract void f3290(); + public abstract void f3291(); + public abstract void f3292(); + public abstract void f3293(); + public abstract void f3294(); + public abstract void f3295(); + public abstract void f3296(); + public abstract void f3297(); + public abstract void f3298(); + public abstract void f3299(); + public abstract void f3300(); + public abstract void f3301(); + public abstract void f3302(); + public abstract void f3303(); + public abstract void f3304(); + public abstract void f3305(); + public abstract void f3306(); + public abstract void f3307(); + public abstract void f3308(); + public abstract void f3309(); + public abstract void f3310(); + public abstract void f3311(); + public abstract void f3312(); + public abstract void f3313(); + public abstract void f3314(); + public abstract void f3315(); + public abstract void f3316(); + public abstract void f3317(); + public abstract void f3318(); + public abstract void f3319(); + public abstract void f3320(); + public abstract void f3321(); + public abstract void f3322(); + public abstract void f3323(); + public abstract void f3324(); + public abstract void f3325(); + public abstract void f3326(); + public abstract void f3327(); + public abstract void f3328(); + public abstract void f3329(); + public abstract void f3330(); + public abstract void f3331(); + public abstract void f3332(); + public abstract void f3333(); + public abstract void f3334(); + public abstract void f3335(); + public abstract void f3336(); + public abstract void f3337(); + public abstract void f3338(); + public abstract void f3339(); + public abstract void f3340(); + public abstract void f3341(); + public abstract void f3342(); + public abstract void f3343(); + public abstract void f3344(); + public abstract void f3345(); + public abstract void f3346(); + public abstract void f3347(); + public abstract void f3348(); + public abstract void f3349(); + public abstract void f3350(); + public abstract void f3351(); + public abstract void f3352(); + public abstract void f3353(); + public abstract void f3354(); + public abstract void f3355(); + public abstract void f3356(); + public abstract void f3357(); + public abstract void f3358(); + public abstract void f3359(); + public abstract void f3360(); + public abstract void f3361(); + public abstract void f3362(); + public abstract void f3363(); + public abstract void f3364(); + public abstract void f3365(); + public abstract void f3366(); + public abstract void f3367(); + public abstract void f3368(); + public abstract void f3369(); + public abstract void f3370(); + public abstract void f3371(); + public abstract void f3372(); + public abstract void f3373(); + public abstract void f3374(); + public abstract void f3375(); + public abstract void f3376(); + public abstract void f3377(); + public abstract void f3378(); + public abstract void f3379(); + public abstract void f3380(); + public abstract void f3381(); + public abstract void f3382(); + public abstract void f3383(); + public abstract void f3384(); + public abstract void f3385(); + public abstract void f3386(); + public abstract void f3387(); + public abstract void f3388(); + public abstract void f3389(); + public abstract void f3390(); + public abstract void f3391(); + public abstract void f3392(); + public abstract void f3393(); + public abstract void f3394(); + public abstract void f3395(); + public abstract void f3396(); + public abstract void f3397(); + public abstract void f3398(); + public abstract void f3399(); + public abstract void f3400(); + public abstract void f3401(); + public abstract void f3402(); + public abstract void f3403(); + public abstract void f3404(); + public abstract void f3405(); + public abstract void f3406(); + public abstract void f3407(); + public abstract void f3408(); + public abstract void f3409(); + public abstract void f3410(); + public abstract void f3411(); + public abstract void f3412(); + public abstract void f3413(); + public abstract void f3414(); + public abstract void f3415(); + public abstract void f3416(); + public abstract void f3417(); + public abstract void f3418(); + public abstract void f3419(); + public abstract void f3420(); + public abstract void f3421(); + public abstract void f3422(); + public abstract void f3423(); + public abstract void f3424(); + public abstract void f3425(); + public abstract void f3426(); + public abstract void f3427(); + public abstract void f3428(); + public abstract void f3429(); + public abstract void f3430(); + public abstract void f3431(); + public abstract void f3432(); + public abstract void f3433(); + public abstract void f3434(); + public abstract void f3435(); + public abstract void f3436(); + public abstract void f3437(); + public abstract void f3438(); + public abstract void f3439(); + public abstract void f3440(); + public abstract void f3441(); + public abstract void f3442(); + public abstract void f3443(); + public abstract void f3444(); + public abstract void f3445(); + public abstract void f3446(); + public abstract void f3447(); + public abstract void f3448(); + public abstract void f3449(); + public abstract void f3450(); + public abstract void f3451(); + public abstract void f3452(); + public abstract void f3453(); + public abstract void f3454(); + public abstract void f3455(); + public abstract void f3456(); + public abstract void f3457(); + public abstract void f3458(); + public abstract void f3459(); + public abstract void f3460(); + public abstract void f3461(); + public abstract void f3462(); + public abstract void f3463(); + public abstract void f3464(); + public abstract void f3465(); + public abstract void f3466(); + public abstract void f3467(); + public abstract void f3468(); + public abstract void f3469(); + public abstract void f3470(); + public abstract void f3471(); + public abstract void f3472(); + public abstract void f3473(); + public abstract void f3474(); + public abstract void f3475(); + public abstract void f3476(); + public abstract void f3477(); + public abstract void f3478(); + public abstract void f3479(); + public abstract void f3480(); + public abstract void f3481(); + public abstract void f3482(); + public abstract void f3483(); + public abstract void f3484(); + public abstract void f3485(); + public abstract void f3486(); + public abstract void f3487(); + public abstract void f3488(); + public abstract void f3489(); + public abstract void f3490(); + public abstract void f3491(); + public abstract void f3492(); + public abstract void f3493(); + public abstract void f3494(); + public abstract void f3495(); + public abstract void f3496(); + public abstract void f3497(); + public abstract void f3498(); + public abstract void f3499(); + public abstract void f3500(); + public abstract void f3501(); + public abstract void f3502(); + public abstract void f3503(); + public abstract void f3504(); + public abstract void f3505(); + public abstract void f3506(); + public abstract void f3507(); + public abstract void f3508(); + public abstract void f3509(); + public abstract void f3510(); + public abstract void f3511(); + public abstract void f3512(); + public abstract void f3513(); + public abstract void f3514(); + public abstract void f3515(); + public abstract void f3516(); + public abstract void f3517(); + public abstract void f3518(); + public abstract void f3519(); + public abstract void f3520(); + public abstract void f3521(); + public abstract void f3522(); + public abstract void f3523(); + public abstract void f3524(); + public abstract void f3525(); + public abstract void f3526(); + public abstract void f3527(); + public abstract void f3528(); + public abstract void f3529(); + public abstract void f3530(); + public abstract void f3531(); + public abstract void f3532(); + public abstract void f3533(); + public abstract void f3534(); + public abstract void f3535(); + public abstract void f3536(); + public abstract void f3537(); + public abstract void f3538(); + public abstract void f3539(); + public abstract void f3540(); + public abstract void f3541(); + public abstract void f3542(); + public abstract void f3543(); + public abstract void f3544(); + public abstract void f3545(); + public abstract void f3546(); + public abstract void f3547(); + public abstract void f3548(); + public abstract void f3549(); + public abstract void f3550(); + public abstract void f3551(); + public abstract void f3552(); + public abstract void f3553(); + public abstract void f3554(); + public abstract void f3555(); + public abstract void f3556(); + public abstract void f3557(); + public abstract void f3558(); + public abstract void f3559(); + public abstract void f3560(); + public abstract void f3561(); + public abstract void f3562(); + public abstract void f3563(); + public abstract void f3564(); + public abstract void f3565(); + public abstract void f3566(); + public abstract void f3567(); + public abstract void f3568(); + public abstract void f3569(); + public abstract void f3570(); + public abstract void f3571(); + public abstract void f3572(); + public abstract void f3573(); + public abstract void f3574(); + public abstract void f3575(); + public abstract void f3576(); + public abstract void f3577(); + public abstract void f3578(); + public abstract void f3579(); + public abstract void f3580(); + public abstract void f3581(); + public abstract void f3582(); + public abstract void f3583(); + public abstract void f3584(); + public abstract void f3585(); + public abstract void f3586(); + public abstract void f3587(); + public abstract void f3588(); + public abstract void f3589(); + public abstract void f3590(); + public abstract void f3591(); + public abstract void f3592(); + public abstract void f3593(); + public abstract void f3594(); + public abstract void f3595(); + public abstract void f3596(); + public abstract void f3597(); + public abstract void f3598(); + public abstract void f3599(); + public abstract void f3600(); + public abstract void f3601(); + public abstract void f3602(); + public abstract void f3603(); + public abstract void f3604(); + public abstract void f3605(); + public abstract void f3606(); + public abstract void f3607(); + public abstract void f3608(); + public abstract void f3609(); + public abstract void f3610(); + public abstract void f3611(); + public abstract void f3612(); + public abstract void f3613(); + public abstract void f3614(); + public abstract void f3615(); + public abstract void f3616(); + public abstract void f3617(); + public abstract void f3618(); + public abstract void f3619(); + public abstract void f3620(); + public abstract void f3621(); + public abstract void f3622(); + public abstract void f3623(); + public abstract void f3624(); + public abstract void f3625(); + public abstract void f3626(); + public abstract void f3627(); + public abstract void f3628(); + public abstract void f3629(); + public abstract void f3630(); + public abstract void f3631(); + public abstract void f3632(); + public abstract void f3633(); + public abstract void f3634(); + public abstract void f3635(); + public abstract void f3636(); + public abstract void f3637(); + public abstract void f3638(); + public abstract void f3639(); + public abstract void f3640(); + public abstract void f3641(); + public abstract void f3642(); + public abstract void f3643(); + public abstract void f3644(); + public abstract void f3645(); + public abstract void f3646(); + public abstract void f3647(); + public abstract void f3648(); + public abstract void f3649(); + public abstract void f3650(); + public abstract void f3651(); + public abstract void f3652(); + public abstract void f3653(); + public abstract void f3654(); + public abstract void f3655(); + public abstract void f3656(); + public abstract void f3657(); + public abstract void f3658(); + public abstract void f3659(); + public abstract void f3660(); + public abstract void f3661(); + public abstract void f3662(); + public abstract void f3663(); + public abstract void f3664(); + public abstract void f3665(); + public abstract void f3666(); + public abstract void f3667(); + public abstract void f3668(); + public abstract void f3669(); + public abstract void f3670(); + public abstract void f3671(); + public abstract void f3672(); + public abstract void f3673(); + public abstract void f3674(); + public abstract void f3675(); + public abstract void f3676(); + public abstract void f3677(); + public abstract void f3678(); + public abstract void f3679(); + public abstract void f3680(); + public abstract void f3681(); + public abstract void f3682(); + public abstract void f3683(); + public abstract void f3684(); + public abstract void f3685(); + public abstract void f3686(); + public abstract void f3687(); + public abstract void f3688(); + public abstract void f3689(); + public abstract void f3690(); + public abstract void f3691(); + public abstract void f3692(); + public abstract void f3693(); + public abstract void f3694(); + public abstract void f3695(); + public abstract void f3696(); + public abstract void f3697(); + public abstract void f3698(); + public abstract void f3699(); + public abstract void f3700(); + public abstract void f3701(); + public abstract void f3702(); + public abstract void f3703(); + public abstract void f3704(); + public abstract void f3705(); + public abstract void f3706(); + public abstract void f3707(); + public abstract void f3708(); + public abstract void f3709(); + public abstract void f3710(); + public abstract void f3711(); + public abstract void f3712(); + public abstract void f3713(); + public abstract void f3714(); + public abstract void f3715(); + public abstract void f3716(); + public abstract void f3717(); + public abstract void f3718(); + public abstract void f3719(); + public abstract void f3720(); + public abstract void f3721(); + public abstract void f3722(); + public abstract void f3723(); + public abstract void f3724(); + public abstract void f3725(); + public abstract void f3726(); + public abstract void f3727(); + public abstract void f3728(); + public abstract void f3729(); + public abstract void f3730(); + public abstract void f3731(); + public abstract void f3732(); + public abstract void f3733(); + public abstract void f3734(); + public abstract void f3735(); + public abstract void f3736(); + public abstract void f3737(); + public abstract void f3738(); + public abstract void f3739(); + public abstract void f3740(); + public abstract void f3741(); + public abstract void f3742(); + public abstract void f3743(); + public abstract void f3744(); + public abstract void f3745(); + public abstract void f3746(); + public abstract void f3747(); + public abstract void f3748(); + public abstract void f3749(); + public abstract void f3750(); + public abstract void f3751(); + public abstract void f3752(); + public abstract void f3753(); + public abstract void f3754(); + public abstract void f3755(); + public abstract void f3756(); + public abstract void f3757(); + public abstract void f3758(); + public abstract void f3759(); + public abstract void f3760(); + public abstract void f3761(); + public abstract void f3762(); + public abstract void f3763(); + public abstract void f3764(); + public abstract void f3765(); + public abstract void f3766(); + public abstract void f3767(); + public abstract void f3768(); + public abstract void f3769(); + public abstract void f3770(); + public abstract void f3771(); + public abstract void f3772(); + public abstract void f3773(); + public abstract void f3774(); + public abstract void f3775(); + public abstract void f3776(); + public abstract void f3777(); + public abstract void f3778(); + public abstract void f3779(); + public abstract void f3780(); + public abstract void f3781(); + public abstract void f3782(); + public abstract void f3783(); + public abstract void f3784(); + public abstract void f3785(); + public abstract void f3786(); + public abstract void f3787(); + public abstract void f3788(); + public abstract void f3789(); + public abstract void f3790(); + public abstract void f3791(); + public abstract void f3792(); + public abstract void f3793(); + public abstract void f3794(); + public abstract void f3795(); + public abstract void f3796(); + public abstract void f3797(); + public abstract void f3798(); + public abstract void f3799(); + public abstract void f3800(); + public abstract void f3801(); + public abstract void f3802(); + public abstract void f3803(); + public abstract void f3804(); + public abstract void f3805(); + public abstract void f3806(); + public abstract void f3807(); + public abstract void f3808(); + public abstract void f3809(); + public abstract void f3810(); + public abstract void f3811(); + public abstract void f3812(); + public abstract void f3813(); + public abstract void f3814(); + public abstract void f3815(); + public abstract void f3816(); + public abstract void f3817(); + public abstract void f3818(); + public abstract void f3819(); + public abstract void f3820(); + public abstract void f3821(); + public abstract void f3822(); + public abstract void f3823(); + public abstract void f3824(); + public abstract void f3825(); + public abstract void f3826(); + public abstract void f3827(); + public abstract void f3828(); + public abstract void f3829(); + public abstract void f3830(); + public abstract void f3831(); + public abstract void f3832(); + public abstract void f3833(); + public abstract void f3834(); + public abstract void f3835(); + public abstract void f3836(); + public abstract void f3837(); + public abstract void f3838(); + public abstract void f3839(); + public abstract void f3840(); + public abstract void f3841(); + public abstract void f3842(); + public abstract void f3843(); + public abstract void f3844(); + public abstract void f3845(); + public abstract void f3846(); + public abstract void f3847(); + public abstract void f3848(); + public abstract void f3849(); + public abstract void f3850(); + public abstract void f3851(); + public abstract void f3852(); + public abstract void f3853(); + public abstract void f3854(); + public abstract void f3855(); + public abstract void f3856(); + public abstract void f3857(); + public abstract void f3858(); + public abstract void f3859(); + public abstract void f3860(); + public abstract void f3861(); + public abstract void f3862(); + public abstract void f3863(); + public abstract void f3864(); + public abstract void f3865(); + public abstract void f3866(); + public abstract void f3867(); + public abstract void f3868(); + public abstract void f3869(); + public abstract void f3870(); + public abstract void f3871(); + public abstract void f3872(); + public abstract void f3873(); + public abstract void f3874(); + public abstract void f3875(); + public abstract void f3876(); + public abstract void f3877(); + public abstract void f3878(); + public abstract void f3879(); + public abstract void f3880(); + public abstract void f3881(); + public abstract void f3882(); + public abstract void f3883(); + public abstract void f3884(); + public abstract void f3885(); + public abstract void f3886(); + public abstract void f3887(); + public abstract void f3888(); + public abstract void f3889(); + public abstract void f3890(); + public abstract void f3891(); + public abstract void f3892(); + public abstract void f3893(); + public abstract void f3894(); + public abstract void f3895(); + public abstract void f3896(); + public abstract void f3897(); + public abstract void f3898(); + public abstract void f3899(); + public abstract void f3900(); + public abstract void f3901(); + public abstract void f3902(); + public abstract void f3903(); + public abstract void f3904(); + public abstract void f3905(); + public abstract void f3906(); + public abstract void f3907(); + public abstract void f3908(); + public abstract void f3909(); + public abstract void f3910(); + public abstract void f3911(); + public abstract void f3912(); + public abstract void f3913(); + public abstract void f3914(); + public abstract void f3915(); + public abstract void f3916(); + public abstract void f3917(); + public abstract void f3918(); + public abstract void f3919(); + public abstract void f3920(); + public abstract void f3921(); + public abstract void f3922(); + public abstract void f3923(); + public abstract void f3924(); + public abstract void f3925(); + public abstract void f3926(); + public abstract void f3927(); + public abstract void f3928(); + public abstract void f3929(); + public abstract void f3930(); + public abstract void f3931(); + public abstract void f3932(); + public abstract void f3933(); + public abstract void f3934(); + public abstract void f3935(); + public abstract void f3936(); + public abstract void f3937(); + public abstract void f3938(); + public abstract void f3939(); + public abstract void f3940(); + public abstract void f3941(); + public abstract void f3942(); + public abstract void f3943(); + public abstract void f3944(); + public abstract void f3945(); + public abstract void f3946(); + public abstract void f3947(); + public abstract void f3948(); + public abstract void f3949(); + public abstract void f3950(); + public abstract void f3951(); + public abstract void f3952(); + public abstract void f3953(); + public abstract void f3954(); + public abstract void f3955(); + public abstract void f3956(); + public abstract void f3957(); + public abstract void f3958(); + public abstract void f3959(); + public abstract void f3960(); + public abstract void f3961(); + public abstract void f3962(); + public abstract void f3963(); + public abstract void f3964(); + public abstract void f3965(); + public abstract void f3966(); + public abstract void f3967(); + public abstract void f3968(); + public abstract void f3969(); + public abstract void f3970(); + public abstract void f3971(); + public abstract void f3972(); + public abstract void f3973(); + public abstract void f3974(); + public abstract void f3975(); + public abstract void f3976(); + public abstract void f3977(); + public abstract void f3978(); + public abstract void f3979(); + public abstract void f3980(); + public abstract void f3981(); + public abstract void f3982(); + public abstract void f3983(); + public abstract void f3984(); + public abstract void f3985(); + public abstract void f3986(); + public abstract void f3987(); + public abstract void f3988(); + public abstract void f3989(); + public abstract void f3990(); + public abstract void f3991(); + public abstract void f3992(); + public abstract void f3993(); + public abstract void f3994(); + public abstract void f3995(); + public abstract void f3996(); + public abstract void f3997(); + public abstract void f3998(); + public abstract void f3999(); + public abstract void f4000(); + public abstract void f4001(); + public abstract void f4002(); + public abstract void f4003(); + public abstract void f4004(); + public abstract void f4005(); + public abstract void f4006(); + public abstract void f4007(); + public abstract void f4008(); + public abstract void f4009(); + public abstract void f4010(); + public abstract void f4011(); + public abstract void f4012(); + public abstract void f4013(); + public abstract void f4014(); + public abstract void f4015(); + public abstract void f4016(); + public abstract void f4017(); + public abstract void f4018(); + public abstract void f4019(); + public abstract void f4020(); + public abstract void f4021(); + public abstract void f4022(); + public abstract void f4023(); + public abstract void f4024(); + public abstract void f4025(); + public abstract void f4026(); + public abstract void f4027(); + public abstract void f4028(); + public abstract void f4029(); + public abstract void f4030(); + public abstract void f4031(); + public abstract void f4032(); + public abstract void f4033(); + public abstract void f4034(); + public abstract void f4035(); + public abstract void f4036(); + public abstract void f4037(); + public abstract void f4038(); + public abstract void f4039(); + public abstract void f4040(); + public abstract void f4041(); + public abstract void f4042(); + public abstract void f4043(); + public abstract void f4044(); + public abstract void f4045(); + public abstract void f4046(); + public abstract void f4047(); + public abstract void f4048(); + public abstract void f4049(); + public abstract void f4050(); + public abstract void f4051(); + public abstract void f4052(); + public abstract void f4053(); + public abstract void f4054(); + public abstract void f4055(); + public abstract void f4056(); + public abstract void f4057(); + public abstract void f4058(); + public abstract void f4059(); + public abstract void f4060(); + public abstract void f4061(); + public abstract void f4062(); + public abstract void f4063(); + public abstract void f4064(); + public abstract void f4065(); + public abstract void f4066(); + public abstract void f4067(); + public abstract void f4068(); + public abstract void f4069(); + public abstract void f4070(); + public abstract void f4071(); + public abstract void f4072(); + public abstract void f4073(); + public abstract void f4074(); + public abstract void f4075(); + public abstract void f4076(); + public abstract void f4077(); + public abstract void f4078(); + public abstract void f4079(); + public abstract void f4080(); + public abstract void f4081(); + public abstract void f4082(); + public abstract void f4083(); + public abstract void f4084(); + public abstract void f4085(); + public abstract void f4086(); + public abstract void f4087(); + public abstract void f4088(); + public abstract void f4089(); + public abstract void f4090(); + public abstract void f4091(); + public abstract void f4092(); + public abstract void f4093(); + public abstract void f4094(); + public abstract void f4095(); + public abstract void f4096(); + public abstract void f4097(); + public abstract void f4098(); + public abstract void f4099(); + public abstract void f4100(); + public abstract void f4101(); + public abstract void f4102(); + public abstract void f4103(); + public abstract void f4104(); + public abstract void f4105(); + public abstract void f4106(); + public abstract void f4107(); + public abstract void f4108(); + public abstract void f4109(); + public abstract void f4110(); + public abstract void f4111(); + public abstract void f4112(); + public abstract void f4113(); + public abstract void f4114(); + public abstract void f4115(); + public abstract void f4116(); + public abstract void f4117(); + public abstract void f4118(); + public abstract void f4119(); + public abstract void f4120(); + public abstract void f4121(); + public abstract void f4122(); + public abstract void f4123(); + public abstract void f4124(); + public abstract void f4125(); + public abstract void f4126(); + public abstract void f4127(); + public abstract void f4128(); + public abstract void f4129(); + public abstract void f4130(); + public abstract void f4131(); + public abstract void f4132(); + public abstract void f4133(); + public abstract void f4134(); + public abstract void f4135(); + public abstract void f4136(); + public abstract void f4137(); + public abstract void f4138(); + public abstract void f4139(); + public abstract void f4140(); + public abstract void f4141(); + public abstract void f4142(); + public abstract void f4143(); + public abstract void f4144(); + public abstract void f4145(); + public abstract void f4146(); + public abstract void f4147(); + public abstract void f4148(); + public abstract void f4149(); + public abstract void f4150(); + public abstract void f4151(); + public abstract void f4152(); + public abstract void f4153(); + public abstract void f4154(); + public abstract void f4155(); + public abstract void f4156(); + public abstract void f4157(); + public abstract void f4158(); + public abstract void f4159(); + public abstract void f4160(); + public abstract void f4161(); + public abstract void f4162(); + public abstract void f4163(); + public abstract void f4164(); + public abstract void f4165(); + public abstract void f4166(); + public abstract void f4167(); + public abstract void f4168(); + public abstract void f4169(); + public abstract void f4170(); + public abstract void f4171(); + public abstract void f4172(); + public abstract void f4173(); + public abstract void f4174(); + public abstract void f4175(); + public abstract void f4176(); + public abstract void f4177(); + public abstract void f4178(); + public abstract void f4179(); + public abstract void f4180(); + public abstract void f4181(); + public abstract void f4182(); + public abstract void f4183(); + public abstract void f4184(); + public abstract void f4185(); + public abstract void f4186(); + public abstract void f4187(); + public abstract void f4188(); + public abstract void f4189(); + public abstract void f4190(); + public abstract void f4191(); + public abstract void f4192(); + public abstract void f4193(); + public abstract void f4194(); + public abstract void f4195(); + public abstract void f4196(); + public abstract void f4197(); + public abstract void f4198(); + public abstract void f4199(); + public abstract void f4200(); + public abstract void f4201(); + public abstract void f4202(); + public abstract void f4203(); + public abstract void f4204(); + public abstract void f4205(); + public abstract void f4206(); + public abstract void f4207(); + public abstract void f4208(); + public abstract void f4209(); + public abstract void f4210(); + public abstract void f4211(); + public abstract void f4212(); + public abstract void f4213(); + public abstract void f4214(); + public abstract void f4215(); + public abstract void f4216(); + public abstract void f4217(); + public abstract void f4218(); + public abstract void f4219(); + public abstract void f4220(); + public abstract void f4221(); + public abstract void f4222(); + public abstract void f4223(); + public abstract void f4224(); + public abstract void f4225(); + public abstract void f4226(); + public abstract void f4227(); + public abstract void f4228(); + public abstract void f4229(); + public abstract void f4230(); + public abstract void f4231(); + public abstract void f4232(); + public abstract void f4233(); + public abstract void f4234(); + public abstract void f4235(); + public abstract void f4236(); + public abstract void f4237(); + public abstract void f4238(); + public abstract void f4239(); + public abstract void f4240(); + public abstract void f4241(); + public abstract void f4242(); + public abstract void f4243(); + public abstract void f4244(); + public abstract void f4245(); + public abstract void f4246(); + public abstract void f4247(); + public abstract void f4248(); + public abstract void f4249(); + public abstract void f4250(); + public abstract void f4251(); + public abstract void f4252(); + public abstract void f4253(); + public abstract void f4254(); + public abstract void f4255(); + public abstract void f4256(); + public abstract void f4257(); + public abstract void f4258(); + public abstract void f4259(); + public abstract void f4260(); + public abstract void f4261(); + public abstract void f4262(); + public abstract void f4263(); + public abstract void f4264(); + public abstract void f4265(); + public abstract void f4266(); + public abstract void f4267(); + public abstract void f4268(); + public abstract void f4269(); + public abstract void f4270(); + public abstract void f4271(); + public abstract void f4272(); + public abstract void f4273(); + public abstract void f4274(); + public abstract void f4275(); + public abstract void f4276(); + public abstract void f4277(); + public abstract void f4278(); + public abstract void f4279(); + public abstract void f4280(); + public abstract void f4281(); + public abstract void f4282(); + public abstract void f4283(); + public abstract void f4284(); + public abstract void f4285(); + public abstract void f4286(); + public abstract void f4287(); + public abstract void f4288(); + public abstract void f4289(); + public abstract void f4290(); + public abstract void f4291(); + public abstract void f4292(); + public abstract void f4293(); + public abstract void f4294(); + public abstract void f4295(); + public abstract void f4296(); + public abstract void f4297(); + public abstract void f4298(); + public abstract void f4299(); + public abstract void f4300(); + public abstract void f4301(); + public abstract void f4302(); + public abstract void f4303(); + public abstract void f4304(); + public abstract void f4305(); + public abstract void f4306(); + public abstract void f4307(); + public abstract void f4308(); + public abstract void f4309(); + public abstract void f4310(); + public abstract void f4311(); + public abstract void f4312(); + public abstract void f4313(); + public abstract void f4314(); + public abstract void f4315(); + public abstract void f4316(); + public abstract void f4317(); + public abstract void f4318(); + public abstract void f4319(); + public abstract void f4320(); + public abstract void f4321(); + public abstract void f4322(); + public abstract void f4323(); + public abstract void f4324(); + public abstract void f4325(); + public abstract void f4326(); + public abstract void f4327(); + public abstract void f4328(); + public abstract void f4329(); + public abstract void f4330(); + public abstract void f4331(); + public abstract void f4332(); + public abstract void f4333(); + public abstract void f4334(); + public abstract void f4335(); + public abstract void f4336(); + public abstract void f4337(); + public abstract void f4338(); + public abstract void f4339(); + public abstract void f4340(); + public abstract void f4341(); + public abstract void f4342(); + public abstract void f4343(); + public abstract void f4344(); + public abstract void f4345(); + public abstract void f4346(); + public abstract void f4347(); + public abstract void f4348(); + public abstract void f4349(); + public abstract void f4350(); + public abstract void f4351(); + public abstract void f4352(); + public abstract void f4353(); + public abstract void f4354(); + public abstract void f4355(); + public abstract void f4356(); + public abstract void f4357(); + public abstract void f4358(); + public abstract void f4359(); + public abstract void f4360(); + public abstract void f4361(); + public abstract void f4362(); + public abstract void f4363(); + public abstract void f4364(); + public abstract void f4365(); + public abstract void f4366(); + public abstract void f4367(); + public abstract void f4368(); + public abstract void f4369(); + public abstract void f4370(); + public abstract void f4371(); + public abstract void f4372(); + public abstract void f4373(); + public abstract void f4374(); + public abstract void f4375(); + public abstract void f4376(); + public abstract void f4377(); + public abstract void f4378(); + public abstract void f4379(); + public abstract void f4380(); + public abstract void f4381(); + public abstract void f4382(); + public abstract void f4383(); + public abstract void f4384(); + public abstract void f4385(); + public abstract void f4386(); + public abstract void f4387(); + public abstract void f4388(); + public abstract void f4389(); + public abstract void f4390(); + public abstract void f4391(); + public abstract void f4392(); + public abstract void f4393(); + public abstract void f4394(); + public abstract void f4395(); + public abstract void f4396(); + public abstract void f4397(); + public abstract void f4398(); + public abstract void f4399(); + public abstract void f4400(); + public abstract void f4401(); + public abstract void f4402(); + public abstract void f4403(); + public abstract void f4404(); + public abstract void f4405(); + public abstract void f4406(); + public abstract void f4407(); + public abstract void f4408(); + public abstract void f4409(); + public abstract void f4410(); + public abstract void f4411(); + public abstract void f4412(); + public abstract void f4413(); + public abstract void f4414(); + public abstract void f4415(); + public abstract void f4416(); + public abstract void f4417(); + public abstract void f4418(); + public abstract void f4419(); + public abstract void f4420(); + public abstract void f4421(); + public abstract void f4422(); + public abstract void f4423(); + public abstract void f4424(); + public abstract void f4425(); + public abstract void f4426(); + public abstract void f4427(); + public abstract void f4428(); + public abstract void f4429(); + public abstract void f4430(); + public abstract void f4431(); + public abstract void f4432(); + public abstract void f4433(); + public abstract void f4434(); + public abstract void f4435(); + public abstract void f4436(); + public abstract void f4437(); + public abstract void f4438(); + public abstract void f4439(); + public abstract void f4440(); + public abstract void f4441(); + public abstract void f4442(); + public abstract void f4443(); + public abstract void f4444(); + public abstract void f4445(); + public abstract void f4446(); + public abstract void f4447(); + public abstract void f4448(); + public abstract void f4449(); + public abstract void f4450(); + public abstract void f4451(); + public abstract void f4452(); + public abstract void f4453(); + public abstract void f4454(); + public abstract void f4455(); + public abstract void f4456(); + public abstract void f4457(); + public abstract void f4458(); + public abstract void f4459(); + public abstract void f4460(); + public abstract void f4461(); + public abstract void f4462(); + public abstract void f4463(); + public abstract void f4464(); + public abstract void f4465(); + public abstract void f4466(); + public abstract void f4467(); + public abstract void f4468(); + public abstract void f4469(); + public abstract void f4470(); + public abstract void f4471(); + public abstract void f4472(); + public abstract void f4473(); + public abstract void f4474(); + public abstract void f4475(); + public abstract void f4476(); + public abstract void f4477(); + public abstract void f4478(); + public abstract void f4479(); + public abstract void f4480(); + public abstract void f4481(); + public abstract void f4482(); + public abstract void f4483(); + public abstract void f4484(); + public abstract void f4485(); + public abstract void f4486(); + public abstract void f4487(); + public abstract void f4488(); + public abstract void f4489(); + public abstract void f4490(); + public abstract void f4491(); + public abstract void f4492(); + public abstract void f4493(); + public abstract void f4494(); + public abstract void f4495(); + public abstract void f4496(); + public abstract void f4497(); + public abstract void f4498(); + public abstract void f4499(); + public abstract void f4500(); + public abstract void f4501(); + public abstract void f4502(); + public abstract void f4503(); + public abstract void f4504(); + public abstract void f4505(); + public abstract void f4506(); + public abstract void f4507(); + public abstract void f4508(); + public abstract void f4509(); + public abstract void f4510(); + public abstract void f4511(); + public abstract void f4512(); + public abstract void f4513(); + public abstract void f4514(); + public abstract void f4515(); + public abstract void f4516(); + public abstract void f4517(); + public abstract void f4518(); + public abstract void f4519(); + public abstract void f4520(); + public abstract void f4521(); + public abstract void f4522(); + public abstract void f4523(); + public abstract void f4524(); + public abstract void f4525(); + public abstract void f4526(); + public abstract void f4527(); + public abstract void f4528(); + public abstract void f4529(); + public abstract void f4530(); + public abstract void f4531(); + public abstract void f4532(); + public abstract void f4533(); + public abstract void f4534(); + public abstract void f4535(); + public abstract void f4536(); + public abstract void f4537(); + public abstract void f4538(); + public abstract void f4539(); + public abstract void f4540(); + public abstract void f4541(); + public abstract void f4542(); + public abstract void f4543(); + public abstract void f4544(); + public abstract void f4545(); + public abstract void f4546(); + public abstract void f4547(); + public abstract void f4548(); + public abstract void f4549(); + public abstract void f4550(); + public abstract void f4551(); + public abstract void f4552(); + public abstract void f4553(); + public abstract void f4554(); + public abstract void f4555(); + public abstract void f4556(); + public abstract void f4557(); + public abstract void f4558(); + public abstract void f4559(); + public abstract void f4560(); + public abstract void f4561(); + public abstract void f4562(); + public abstract void f4563(); + public abstract void f4564(); + public abstract void f4565(); + public abstract void f4566(); + public abstract void f4567(); + public abstract void f4568(); + public abstract void f4569(); + public abstract void f4570(); + public abstract void f4571(); + public abstract void f4572(); + public abstract void f4573(); + public abstract void f4574(); + public abstract void f4575(); + public abstract void f4576(); + public abstract void f4577(); + public abstract void f4578(); + public abstract void f4579(); + public abstract void f4580(); + public abstract void f4581(); + public abstract void f4582(); + public abstract void f4583(); + public abstract void f4584(); + public abstract void f4585(); + public abstract void f4586(); + public abstract void f4587(); + public abstract void f4588(); + public abstract void f4589(); + public abstract void f4590(); + public abstract void f4591(); + public abstract void f4592(); + public abstract void f4593(); + public abstract void f4594(); + public abstract void f4595(); + public abstract void f4596(); + public abstract void f4597(); + public abstract void f4598(); + public abstract void f4599(); + public abstract void f4600(); + public abstract void f4601(); + public abstract void f4602(); + public abstract void f4603(); + public abstract void f4604(); + public abstract void f4605(); + public abstract void f4606(); + public abstract void f4607(); + public abstract void f4608(); + public abstract void f4609(); + public abstract void f4610(); + public abstract void f4611(); + public abstract void f4612(); + public abstract void f4613(); + public abstract void f4614(); + public abstract void f4615(); + public abstract void f4616(); + public abstract void f4617(); + public abstract void f4618(); + public abstract void f4619(); + public abstract void f4620(); + public abstract void f4621(); + public abstract void f4622(); + public abstract void f4623(); + public abstract void f4624(); + public abstract void f4625(); + public abstract void f4626(); + public abstract void f4627(); + public abstract void f4628(); + public abstract void f4629(); + public abstract void f4630(); + public abstract void f4631(); + public abstract void f4632(); + public abstract void f4633(); + public abstract void f4634(); + public abstract void f4635(); + public abstract void f4636(); + public abstract void f4637(); + public abstract void f4638(); + public abstract void f4639(); + public abstract void f4640(); + public abstract void f4641(); + public abstract void f4642(); + public abstract void f4643(); + public abstract void f4644(); + public abstract void f4645(); + public abstract void f4646(); + public abstract void f4647(); + public abstract void f4648(); + public abstract void f4649(); + public abstract void f4650(); + public abstract void f4651(); + public abstract void f4652(); + public abstract void f4653(); + public abstract void f4654(); + public abstract void f4655(); + public abstract void f4656(); + public abstract void f4657(); + public abstract void f4658(); + public abstract void f4659(); + public abstract void f4660(); + public abstract void f4661(); + public abstract void f4662(); + public abstract void f4663(); + public abstract void f4664(); + public abstract void f4665(); + public abstract void f4666(); + public abstract void f4667(); + public abstract void f4668(); + public abstract void f4669(); + public abstract void f4670(); + public abstract void f4671(); + public abstract void f4672(); + public abstract void f4673(); + public abstract void f4674(); + public abstract void f4675(); + public abstract void f4676(); +}