src/share/jaxws_classes/com/sun/xml/internal/messaging/saaj/soap/ver1_2/Envelope1_2Impl.java

Sun, 15 Dec 2013 23:35:45 +0100

author
mkos
date
Sun, 15 Dec 2013 23:35:45 +0100
changeset 494
2fcd3ddb57a6
parent 368
0989ad8c0860
child 637
9c07ef4934dd
permissions
-rw-r--r--

8025152: Enhance activation set up
8028388: 9 jaxws tests failed in nightly build with java.lang.ClassCastException
Summary: fix also reviewed by Bill Shannon, Alexander Fomin
Reviewed-by: dfuchs, hawtin, mgrebac
Contributed-by: bill.shannon@oracle.com

ohair@286 1 /*
alanb@368 2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
ohair@286 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ohair@286 4 *
ohair@286 5 * This code is free software; you can redistribute it and/or modify it
ohair@286 6 * under the terms of the GNU General Public License version 2 only, as
ohair@286 7 * published by the Free Software Foundation. Oracle designates this
ohair@286 8 * particular file as subject to the "Classpath" exception as provided
ohair@286 9 * by Oracle in the LICENSE file that accompanied this code.
ohair@286 10 *
ohair@286 11 * This code is distributed in the hope that it will be useful, but WITHOUT
ohair@286 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ohair@286 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ohair@286 14 * version 2 for more details (a copy is included in the LICENSE file that
ohair@286 15 * accompanied this code).
ohair@286 16 *
ohair@286 17 * You should have received a copy of the GNU General Public License version
ohair@286 18 * 2 along with this work; if not, write to the Free Software Foundation,
ohair@286 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ohair@286 20 *
ohair@286 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ohair@286 22 * or visit www.oracle.com if you need additional information or have any
ohair@286 23 * questions.
ohair@286 24 */
ohair@286 25
ohair@286 26 /**
ohair@286 27 *
ohair@286 28 * @author SAAJ RI Development Team
ohair@286 29 */
ohair@286 30 package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
ohair@286 31
ohair@286 32 import java.util.logging.Logger;
ohair@286 33 import java.util.logging.Level;
ohair@286 34
ohair@286 35 import javax.xml.namespace.QName;
ohair@286 36 import javax.xml.soap.*;
ohair@286 37
ohair@286 38 import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
ohair@286 39 import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
ohair@286 40 import com.sun.xml.internal.messaging.saaj.soap.impl.EnvelopeImpl;
ohair@286 41 import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
ohair@286 42
ohair@286 43 public class Envelope1_2Impl extends EnvelopeImpl {
ohair@286 44
ohair@286 45 protected static final Logger log =
ohair@286 46 Logger.getLogger(Envelope1_2Impl.class.getName(),
ohair@286 47 "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
ohair@286 48
ohair@286 49 public Envelope1_2Impl(SOAPDocumentImpl ownerDoc, String prefix) {
ohair@286 50 super(ownerDoc, NameImpl.createEnvelope1_2Name(prefix));
ohair@286 51 }
ohair@286 52
ohair@286 53 public Envelope1_2Impl(
ohair@286 54 SOAPDocumentImpl ownerDoc,
ohair@286 55 String prefix,
ohair@286 56 boolean createHeader,
ohair@286 57 boolean createBody)
ohair@286 58 throws SOAPException {
ohair@286 59 super(
ohair@286 60 ownerDoc,
ohair@286 61 NameImpl.createEnvelope1_2Name(prefix),
ohair@286 62 createHeader,
ohair@286 63 createBody);
ohair@286 64 }
ohair@286 65
ohair@286 66 protected NameImpl getBodyName(String prefix) {
ohair@286 67 return NameImpl.createBody1_2Name(prefix);
ohair@286 68 }
ohair@286 69
ohair@286 70 protected NameImpl getHeaderName(String prefix) {
ohair@286 71 return NameImpl.createHeader1_2Name(prefix);
ohair@286 72 }
ohair@286 73
ohair@286 74 /*
ohair@286 75 * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle
ohair@286 76 * attribute to SOAP Envelope (SOAP 1.2 spec, part 1, section 5.1.1)
ohair@286 77 */
ohair@286 78 public void setEncodingStyle(String encodingStyle) throws SOAPException {
ohair@286 79 log.severe("SAAJ0404.ver1_2.no.encodingStyle.in.envelope");
ohair@286 80 throw new SOAPExceptionImpl("encodingStyle attribute cannot appear on Envelope");
ohair@286 81 }
ohair@286 82
ohair@286 83 /*
ohair@286 84 * Override addAttribute of ElementImpl to restrict adding encodingStyle
ohair@286 85 * attribute to SOAP Envelope (SOAP 1.2 spec, part 1, section 5.1.1)
ohair@286 86 */
ohair@286 87 public SOAPElement addAttribute(Name name, String value)
ohair@286 88 throws SOAPException {
ohair@286 89 if (name.getLocalName().equals("encodingStyle")
ohair@286 90 && name.getURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) {
ohair@286 91 setEncodingStyle(value);
ohair@286 92 }
ohair@286 93 return super.addAttribute(name, value);
ohair@286 94 }
ohair@286 95
ohair@286 96 public SOAPElement addAttribute(QName name, String value)
ohair@286 97 throws SOAPException {
ohair@286 98 if (name.getLocalPart().equals("encodingStyle")
ohair@286 99 && name.getNamespaceURI().equals(SOAPConstants.URI_NS_SOAP_1_2_ENVELOPE)) {
ohair@286 100 setEncodingStyle(value);
ohair@286 101 }
ohair@286 102 return super.addAttribute(name, value);
ohair@286 103 }
ohair@286 104
ohair@286 105
ohair@286 106 /*
ohair@286 107 * Override addChildElement method to ensure that no element
ohair@286 108 * is added after body in SOAP 1.2.
ohair@286 109 */
ohair@286 110 public SOAPElement addChildElement(Name name) throws SOAPException {
ohair@286 111 // check if body already exists
ohair@286 112 if (getBody() != null) {
ohair@286 113 log.severe("SAAJ0405.ver1_2.body.must.last.in.envelope");
ohair@286 114 throw new SOAPExceptionImpl(
ohair@286 115 "Body must be the last element in" + " SOAP Envelope");
ohair@286 116 }
ohair@286 117 return super.addChildElement(name);
ohair@286 118 }
ohair@286 119
ohair@286 120 public SOAPElement addChildElement(QName name) throws SOAPException {
ohair@286 121 // check if body already exists
ohair@286 122 if (getBody() != null) {
ohair@286 123 log.severe("SAAJ0405.ver1_2.body.must.last.in.envelope");
ohair@286 124 throw new SOAPExceptionImpl(
ohair@286 125 "Body must be the last element in" + " SOAP Envelope");
ohair@286 126 }
ohair@286 127 return super.addChildElement(name);
ohair@286 128 }
ohair@286 129
ohair@286 130
ohair@286 131 /*
ohair@286 132 * Ideally we should be overriding other addChildElement() methods as well
ohair@286 133 * but we are not adding them here since internally all those call the
ohair@286 134 * method addChildElement(Name name).
ohair@286 135 * In future, if this behaviour changes, then we would need to override
ohair@286 136 * all the rest of them as well.
ohair@286 137 *
ohair@286 138 */
ohair@286 139
ohair@286 140 public SOAPElement addTextNode(String text) throws SOAPException {
ohair@286 141 log.log(
ohair@286 142 Level.SEVERE,
ohair@286 143 "SAAJ0416.ver1_2.adding.text.not.legal",
ohair@286 144 getElementQName());
ohair@286 145 throw new SOAPExceptionImpl("Adding text to SOAP 1.2 Envelope is not legal");
ohair@286 146 }
ohair@286 147 }

mercurial