src/share/jaxws_classes/com/sun/tools/internal/ws/wsdl/document/Message.java

Thu, 31 Aug 2017 15:18:52 +0800

author
aoqi
date
Thu, 31 Aug 2017 15:18:52 +0800
changeset 637
9c07ef4934dd
parent 368
0989ad8c0860
parent 0
373ffda63c9a
permissions
-rw-r--r--

merge

     1 /*
     2  * Copyright (c) 1997, 2012, 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  */
    26 package com.sun.tools.internal.ws.wsdl.document;
    28 import com.sun.tools.internal.ws.wsdl.framework.*;
    29 import com.sun.tools.internal.ws.wscompile.ErrorReceiver;
    30 import com.sun.tools.internal.ws.wscompile.AbortException;
    31 import com.sun.tools.internal.ws.resources.WsdlMessages;
    32 import org.xml.sax.Locator;
    34 import javax.xml.namespace.QName;
    35 import java.util.*;
    37 /**
    38  * Entity corresponding to the "message" WSDL element.
    39  *
    40  * @author WS Development Team
    41  */
    42 public class Message extends GlobalEntity {
    44     public Message(Defining defining, Locator locator, ErrorReceiver errReceiver) {
    45         super(defining, locator, errReceiver);
    46         _parts = new ArrayList<MessagePart>();
    47         _partsByName = new HashMap<String, MessagePart>();
    48     }
    50     public void add(MessagePart part) {
    51         if (_partsByName.get(part.getName()) != null){
    52             errorReceiver.error(part.getLocator(), WsdlMessages.VALIDATION_DUPLICATE_PART_NAME(getName(), part.getName()));
    53             throw new AbortException();
    54         }
    56         if(part.getDescriptor() != null && part.getDescriptorKind() != null) {
    57             _partsByName.put(part.getName(), part);
    58             _parts.add(part);
    59         } else
    60             errorReceiver.warning(part.getLocator(), WsdlMessages.PARSING_ELEMENT_OR_TYPE_REQUIRED(part.getName()));
    61     }
    63     public Iterator<MessagePart> parts() {
    64         return _parts.iterator();
    65     }
    67     public List<MessagePart> getParts(){
    68         return _parts;
    69     }
    71     public MessagePart getPart(String name) {
    72         return _partsByName.get(name);
    73     }
    75     public int numParts() {
    76         return _parts.size();
    77     }
    79     public Kind getKind() {
    80         return Kinds.MESSAGE;
    81     }
    83     public QName getElementName() {
    84         return WSDLConstants.QNAME_MESSAGE;
    85     }
    87     public Documentation getDocumentation() {
    88         return _documentation;
    89     }
    91     public void setDocumentation(Documentation d) {
    92         _documentation = d;
    93     }
    95     public void withAllSubEntitiesDo(EntityAction action) {
    96         super.withAllSubEntitiesDo(action);
    98         for (Iterator iter = _parts.iterator(); iter.hasNext();) {
    99             action.perform((Entity) iter.next());
   100         }
   101     }
   103     public void accept(WSDLDocumentVisitor visitor) throws Exception {
   104         visitor.preVisit(this);
   105         for (Iterator<MessagePart> iter = _parts.iterator(); iter.hasNext();) {
   106             iter.next().accept(visitor);
   107         }
   108         visitor.postVisit(this);
   109     }
   111     public void validateThis() {
   112         if (getName() == null) {
   113             errorReceiver.error(getLocator(), WsdlMessages.VALIDATION_MISSING_REQUIRED_ATTRIBUTE("name", "wsdl:message"));
   114             throw new AbortException();
   115         }
   116     }
   118     private Documentation _documentation;
   119     private List<MessagePart> _parts;
   120     private Map<String, MessagePart> _partsByName;
   121 }

mercurial