1/*
2 * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.  Oracle designates this
8 * particular file as subject to the "Classpath" exception as provided
9 * by Oracle in the LICENSE file that accompanied this code.
10 *
11 * This code is distributed in the hope that it will be useful, but WITHOUT
12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
13 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
14 * version 2 for more details (a copy is included in the LICENSE file that
15 * accompanied this code).
16 *
17 * You should have received a copy of the GNU General Public License version
18 * 2 along with this work; if not, write to the Free Software Foundation,
19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
20 *
21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
22 * or visit www.oracle.com if you need additional information or have any
23 * questions.
24 */
25
26/**
27*
28* @author SAAJ RI Development Team
29*/
30package com.sun.xml.internal.messaging.saaj.soap.ver1_2;
31
32import java.util.logging.Logger;
33
34import javax.xml.namespace.QName;
35import javax.xml.soap.*;
36
37import com.sun.xml.internal.messaging.saaj.SOAPExceptionImpl;
38import com.sun.xml.internal.messaging.saaj.soap.SOAPDocument;
39import com.sun.xml.internal.messaging.saaj.soap.SOAPDocumentImpl;
40import com.sun.xml.internal.messaging.saaj.soap.impl.DetailImpl;
41import com.sun.xml.internal.messaging.saaj.soap.name.NameImpl;
42import org.w3c.dom.Element;
43
44public class Detail1_2Impl extends DetailImpl {
45
46    protected static final Logger log =
47        Logger.getLogger(Detail1_2Impl.class.getName(),
48                         "com.sun.xml.internal.messaging.saaj.soap.ver1_2.LocalStrings");
49
50    public Detail1_2Impl(SOAPDocumentImpl ownerDocument, String prefix) {
51        super(ownerDocument, NameImpl.createSOAP12Name("Detail", prefix));
52    }
53
54    public Detail1_2Impl(SOAPDocumentImpl ownerDocument) {
55        super(ownerDocument, NameImpl.createSOAP12Name("Detail"));
56    }
57
58    public Detail1_2Impl(SOAPDocumentImpl ownerDoc, Element domElement) {
59        super(ownerDoc, domElement);
60    }
61
62    @Override
63    protected DetailEntry createDetailEntry(Name name) {
64        return new DetailEntry1_2Impl(
65            ((SOAPDocument) getOwnerDocument()).getDocument(),
66            name);
67    }
68
69    @Override
70    protected DetailEntry createDetailEntry(QName name) {
71        return new DetailEntry1_2Impl(
72            ((SOAPDocument) getOwnerDocument()).getDocument(),
73            name);
74    }
75
76    /*
77     * Override setEncodingStyle of ElementImpl to restrict adding encodingStyle
78     * attribute to SOAP Detail (SOAP 1.2 spec, part 1, section 5.1.1)
79     */
80    @Override
81    public void setEncodingStyle(String encodingStyle) throws SOAPException {
82        log.severe("SAAJ0403.ver1_2.no.encodingStyle.in.detail");
83        throw new SOAPExceptionImpl("EncodingStyle attribute cannot appear in Detail");
84    }
85
86    @Override
87    public SOAPElement addAttribute(Name name, String value)
88        throws SOAPException {
89        if (name.getLocalName().equals("encodingStyle")
90            && name.getURI().equals(NameImpl.SOAP12_NAMESPACE)) {
91            setEncodingStyle(value);
92        }
93        return super.addAttribute(name, value);
94    }
95
96    @Override
97    public SOAPElement addAttribute(QName name, String value)
98        throws SOAPException {
99        if (name.getLocalPart().equals("encodingStyle")
100            && name.getNamespaceURI().equals(NameImpl.SOAP12_NAMESPACE)) {
101            setEncodingStyle(value);
102        }
103        return super.addAttribute(name, value);
104    }
105}
106