src/share/jaxws_classes/com/sun/xml/internal/ws/encoding/ContentTypeImpl.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.xml.internal.ws.encoding;
    28 import com.sun.istack.internal.Nullable;
    29 import com.sun.istack.internal.NotNull;
    31 /**
    32  * @author Vivek Pandey
    33  */
    34 public final class ContentTypeImpl implements com.sun.xml.internal.ws.api.pipe.ContentType {
    35     private final @NotNull String contentType;
    36     private final @NotNull String soapAction;
    37     private String accept;
    38     private final @Nullable String charset;
    39     private String boundary;
    40     private String boundaryParameter;
    41     private String rootId;
    42     private ContentType internalContentType;
    44     public ContentTypeImpl(String contentType) {
    45         this(contentType, null, null);
    46     }
    48     public ContentTypeImpl(String contentType, @Nullable String soapAction) {
    49         this(contentType, soapAction, null);
    50     }
    52     public ContentTypeImpl(String contentType, @Nullable String soapAction, @Nullable String accept) {
    53         this(contentType, soapAction, accept, null);
    54     }
    56     public ContentTypeImpl(String contentType, @Nullable String soapAction, @Nullable String accept, String charsetParam) {
    57         this.contentType = contentType;
    58         this.accept = accept;
    59         this.soapAction = getQuotedSOAPAction(soapAction);
    60         if (charsetParam == null) {
    61             String tmpCharset = null;
    62             try {
    63                 internalContentType = new ContentType(contentType);
    64                 tmpCharset = internalContentType.getParameter("charset");
    65             } catch(Exception e) {
    66                 //Ignore the parsing exception.
    67             }
    68             charset = tmpCharset;
    69         } else {
    70             charset = charsetParam;
    71         }
    72     }
    74     /**
    75      * Returns the character set encoding.
    76      *
    77      * @return returns the character set encoding.
    78      */
    79     public @Nullable String getCharSet() {
    80         return charset;
    81     }
    83     /** BP 1.1 R1109 requires SOAPAction too be a quoted value **/
    84     private String getQuotedSOAPAction(String soapAction){
    85         if(soapAction == null || soapAction.length() == 0){
    86             return "\"\"";
    87         }else if(soapAction.charAt(0) != '"' && soapAction.charAt(soapAction.length() -1) != '"'){
    88             //surround soapAction by double quotes for BP R1109
    89             return "\"" + soapAction + "\"";
    90         }else{
    91             return soapAction;
    92         }
    93     }
    95     @Override
    96     public String getContentType() {
    97         return contentType;
    98     }
   100     @Override
   101     public String getSOAPActionHeader() {
   102         return soapAction;
   103     }
   105     @Override
   106     public String getAcceptHeader() {
   107         return accept;
   108     }
   110     public void setAcceptHeader(String accept) {
   111         this.accept = accept;
   112     }
   114     public String getBoundary() {
   115         if (boundary == null) {
   116             if (internalContentType == null) internalContentType = new ContentType(contentType);
   117             boundary = internalContentType.getParameter("boundary");
   118         }
   119         return boundary;
   120     }
   122     public void setBoundary(String boundary) {
   123         this.boundary = boundary;
   124     }
   126     public String getBoundaryParameter() {
   127         return boundaryParameter;
   128     }
   130     public void setBoundaryParameter(String boundaryParameter) {
   131         this.boundaryParameter = boundaryParameter;
   132     }
   134     public String getRootId() {
   135         if (rootId == null) {
   136             if (internalContentType == null) internalContentType = new ContentType(contentType);
   137             rootId = internalContentType.getParameter("start");
   138         }
   139         return rootId;
   140     }
   142     public void setRootId(String rootId) {
   143         this.rootId = rootId;
   144     }
   146     public static class Builder {
   147         public String contentType;
   148         public String soapAction;
   149         public String accept;
   150         public String charset;
   151         public ContentTypeImpl build() {
   152             return new ContentTypeImpl(contentType, soapAction, accept, charset);
   153         }
   154     }
   155 }

mercurial