src/share/jaxws_classes/com/sun/xml/internal/ws/addressing/WsaPropertyBag.java

Wed, 27 Apr 2016 01:27:09 +0800

author
aoqi
date
Wed, 27 Apr 2016 01:27:09 +0800
changeset 0
373ffda63c9a
child 637
9c07ef4934dd
permissions
-rw-r--r--

Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/jaxws/
changeset: 657:d47a47f961ee
tag: jdk8u25-b17

     1 /*
     2  * Copyright (c) 1997, 2013, 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.xml.internal.ws.addressing;
    28 import com.oracle.webservices.internal.api.message.BasePropertySet;
    29 import com.sun.istack.internal.NotNull;
    30 import com.sun.xml.internal.ws.api.SOAPVersion;
    31 import com.sun.xml.internal.ws.api.addressing.AddressingVersion;
    32 import com.sun.xml.internal.ws.api.addressing.WSEndpointReference;
    33 import com.sun.xml.internal.ws.api.message.AddressingUtils;
    34 import com.sun.xml.internal.ws.api.message.Header;
    35 import com.sun.xml.internal.ws.api.message.Message;
    36 import com.sun.xml.internal.ws.api.message.Packet;
    37 import com.sun.xml.internal.ws.developer.JAXWSProperties;
    39 import javax.xml.namespace.QName;
    40 import javax.xml.stream.XMLStreamException;
    43 /**
    44  * Provides access to the Addressing headers.
    45  *
    46  * @author Kohsuke Kawaguchi
    47  * @author Rama Pulavarthi
    48  * @since 2.1.3
    49  */
    50 public class WsaPropertyBag extends BasePropertySet {
    52     public static final String WSA_REPLYTO_FROM_REQUEST = "com.sun.xml.internal.ws.addressing.WsaPropertyBag.ReplyToFromRequest";
    53     public static final String WSA_FAULTTO_FROM_REQUEST = "com.sun.xml.internal.ws.addressing.WsaPropertyBag.FaultToFromRequest";
    54     public static final String WSA_MSGID_FROM_REQUEST = "com.sun.xml.internal.ws.addressing.WsaPropertyBag.MessageIdFromRequest";
    55     public static final String WSA_TO = "com.sun.xml.internal.ws.addressing.WsaPropertyBag.To";
    57     private final @NotNull AddressingVersion addressingVersion;
    58     private final @NotNull SOAPVersion soapVersion;
    59     /**
    60      * We can't store {@link Message} here as those may get replaced as
    61      * the packet travels through the pipeline.
    62      */
    63     private final @NotNull Packet packet;
    65     public WsaPropertyBag(AddressingVersion addressingVersion, SOAPVersion soapVersion, Packet packet) {
    66         this.addressingVersion = addressingVersion;
    67         this.soapVersion = soapVersion;
    68         this.packet = packet;
    69     }
    71     /**
    72      * Gets the <tt>wsa:To</tt> header.
    73      *
    74      * @return
    75      *      null if the incoming SOAP message didn't have the header.
    76      */
    77     @Property(JAXWSProperties.ADDRESSING_TO)
    78     public String getTo() throws XMLStreamException {
    79       if (packet.getMessage() == null) {
    80         return null;
    81       }
    82       Header h = packet.getMessage().getHeaders().get(addressingVersion.toTag, false);
    83       if(h==null) return null;
    84       return h.getStringContent();
    85     }
    87     /**
    88      * Gets the <tt>wsa:To</tt> header.
    89      *
    90      * @return
    91      *      null if the incoming SOAP message didn't have the header.
    92      */
    93     @Property(WSA_TO)
    94     public WSEndpointReference getToAsReference() throws XMLStreamException {
    95       if (packet.getMessage() == null) {
    96         return null;
    97       }
    98       Header h = packet.getMessage().getHeaders().get(addressingVersion.toTag, false);
    99       if(h==null) return null;
   100       return new WSEndpointReference(h.getStringContent(),addressingVersion);
   101     }
   103     /**
   104      * Gets the <tt>wsa:From</tt> header.
   105      *
   106      * @return
   107      *      null if the incoming SOAP message didn't have the header.
   108      */
   109     @Property(JAXWSProperties.ADDRESSING_FROM)
   110     public WSEndpointReference getFrom() throws XMLStreamException {
   111         return getEPR(addressingVersion.fromTag);
   112     }
   114     /**
   115      * Gets the <tt>wsa:Action</tt> header content as String.
   116      *
   117      * @return
   118      *      null if the incoming SOAP message didn't have the header.
   119      */
   120     @Property(JAXWSProperties.ADDRESSING_ACTION)
   121     public String getAction() {
   122         if (packet.getMessage() == null) {
   123           return null;
   124         }
   125         Header h = packet.getMessage().getHeaders().get(addressingVersion.actionTag, false);
   126         if(h==null) return null;
   127         return h.getStringContent();
   128     }
   130     /**
   131      * Gets the <tt>wsa:MessageID</tt> header content as String.
   132      *
   133      * @return
   134      *      null if the incoming SOAP message didn't have the header.
   135      */
   136     // WsaServerTube.REQUEST_MESSAGE_ID is exposed for backward compatibility with 2.1
   137     @Property({JAXWSProperties.ADDRESSING_MESSAGEID,WsaServerTube.REQUEST_MESSAGE_ID})
   138     public String getMessageID() {
   139         if (packet.getMessage() == null) {
   140           return null;
   141         }
   142         return AddressingUtils.getMessageID(packet.getMessage().getHeaders(), addressingVersion,soapVersion);
   143     }
   145     private WSEndpointReference getEPR(QName tag) throws XMLStreamException {
   146         if (packet.getMessage() == null) {
   147           return null;
   148         }
   149         Header h = packet.getMessage().getHeaders().get(tag, false);
   150         if(h==null) return null;
   151         return h.readAsEPR(addressingVersion);
   152     }
   154     protected PropertyMap getPropertyMap() {
   155         return model;
   156     }
   158     private static final PropertyMap model;
   159     static {
   160         model = parse(WsaPropertyBag.class);
   161     }
   163     private WSEndpointReference _replyToFromRequest = null;
   165     @Property(WSA_REPLYTO_FROM_REQUEST)
   166     public WSEndpointReference getReplyToFromRequest() {
   167       return _replyToFromRequest;
   168     }
   170     public void setReplyToFromRequest(WSEndpointReference ref) {
   171       _replyToFromRequest = ref;
   172     }
   174     private WSEndpointReference _faultToFromRequest = null;
   176     @Property(WSA_FAULTTO_FROM_REQUEST)
   177     public WSEndpointReference getFaultToFromRequest() {
   178       return _faultToFromRequest;
   179     }
   181     public void setFaultToFromRequest(WSEndpointReference ref) {
   182       _faultToFromRequest = ref;
   183     }
   185     private String _msgIdFromRequest = null;
   187     @Property(WSA_MSGID_FROM_REQUEST)
   188     public String getMessageIdFromRequest() {
   189       return _msgIdFromRequest;
   190     }
   192     public void setMessageIdFromRequest(String id) {
   193       _msgIdFromRequest = id;
   194     }
   195 }

mercurial