Wed, 27 Apr 2016 01:27:09 +0800
Initial load
http://hg.openjdk.java.net/jdk8u/jdk8u/jaxws/
changeset: 657:d47a47f961ee
tag: jdk8u25-b17
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 }