Sat, 07 Nov 2020 10:30:02 +0800
Added tag mips-jdk8u275-b01 for changeset fdbe50121f48
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 /*
27 * To change this template, choose Tools | Templates
28 * and open the template in the editor.
29 */
30 package com.sun.xml.internal.ws.assembler;
32 import com.sun.istack.internal.NotNull;
33 import com.sun.istack.internal.Nullable;
34 import com.sun.xml.internal.ws.api.EndpointAddress;
35 import com.sun.xml.internal.ws.api.WSBinding;
36 import com.sun.xml.internal.ws.api.WSService;
37 import com.sun.xml.internal.ws.api.client.WSPortInfo;
38 import com.sun.xml.internal.ws.api.model.SEIModel;
39 import com.sun.xml.internal.ws.api.model.wsdl.WSDLPort;
40 import com.sun.xml.internal.ws.api.pipe.ClientTubeAssemblerContext;
41 import com.sun.xml.internal.ws.api.pipe.Codec;
42 import com.sun.xml.internal.ws.api.server.Container;
43 import com.sun.xml.internal.ws.assembler.dev.ClientTubelineAssemblyContext;
44 import com.sun.xml.internal.ws.policy.PolicyMap;
46 /**
47 * The context is a wrapper around the existing JAX-WS {@link ClientTubeAssemblerContext} with additional features
48 *
49 * @author Marek Potociar (marek.potociar at sun.com)
50 */
51 class DefaultClientTubelineAssemblyContext extends TubelineAssemblyContextImpl implements ClientTubelineAssemblyContext {
53 private final @NotNull ClientTubeAssemblerContext wrappedContext;
54 private final PolicyMap policyMap;
55 private final WSPortInfo portInfo; // TODO: is this really needed?
56 private final WSDLPort wsdlPort;
57 // TODO: replace the PipeConfiguration
59 public DefaultClientTubelineAssemblyContext(@NotNull ClientTubeAssemblerContext context) {
60 this.wrappedContext = context;
61 this.wsdlPort = context.getWsdlModel();
62 this.portInfo = context.getPortInfo();
63 this.policyMap = context.getPortInfo().getPolicyMap();
64 }
66 public PolicyMap getPolicyMap() {
67 return policyMap;
68 }
70 public boolean isPolicyAvailable() {
71 return policyMap != null && !policyMap.isEmpty();
72 }
74 /**
75 * The created pipeline will be used to serve this port.
76 * Null if the service isn't associated with any port definition in WSDL,
77 * and otherwise non-null.
78 *
79 * Replaces {@link com.sun.xml.internal.ws.api.pipe.ClientTubeAssemblerContext#getWsdlModel()}
80 */
81 public WSDLPort getWsdlPort() {
82 return wsdlPort;
83 }
85 public WSPortInfo getPortInfo() {
86 return portInfo;
87 }
89 /**
90 * The endpoint address. Always non-null. This parameter is taken separately
91 * from {@link com.sun.xml.internal.ws.api.model.wsdl.WSDLPort} (even though there's {@link com.sun.xml.internal.ws.api.model.wsdl.WSDLPort#getAddress()})
92 * because sometimes WSDL is not available.
93 */
94 public @NotNull EndpointAddress getAddress() {
95 return wrappedContext.getAddress();
96 }
98 /**
99 * The pipeline is created for this {@link com.sun.xml.internal.ws.api.WSService}.
100 * Always non-null. (To be precise, the newly created pipeline
101 * is owned by a proxy or a dispatch created from this {@link com.sun.xml.internal.ws.api.WSService}.)
102 */
103 public @NotNull WSService getService() {
104 return wrappedContext.getService();
105 }
107 /**
108 * The binding of the new pipeline to be created.
109 */
110 public @NotNull WSBinding getBinding() {
111 return wrappedContext.getBinding();
112 }
114 /**
115 * The created pipeline will use seiModel to get java concepts for the endpoint
116 *
117 * @return Null if the service doesn't have SEI model e.g. Dispatch,
118 * and otherwise non-null.
119 */
120 public @Nullable SEIModel getSEIModel() {
121 return wrappedContext.getSEIModel();
122 }
124 /**
125 * Returns the Container in which the client is running
126 *
127 * @return Container in which client is running
128 */
129 public Container getContainer() {
130 return wrappedContext.getContainer();
131 }
133 /**
134 * Gets the {@link Codec} that is set by {@link #setCodec} or the default codec
135 * based on the binding.
136 *
137 * @return codec to be used for web service requests
138 */
139 public @NotNull Codec getCodec() {
140 return wrappedContext.getCodec();
141 }
143 /**
144 * Interception point to change {@link Codec} during {@link com.sun.xml.internal.ws.api.pipe.Tube}line assembly. The
145 * new codec will be used by jax-ws client runtime for encoding/decoding web service
146 * request/response messages. The new codec should be used by the transport tubes.
147 *
148 * <p>
149 * the codec should correctly implement {@link Codec#copy} since it is used while
150 * serving requests concurrently.
151 *
152 * @param codec codec to be used for web service requests
153 */
154 public void setCodec(@NotNull Codec codec) {
155 wrappedContext.setCodec(codec);
156 }
158 public ClientTubeAssemblerContext getWrappedContext() {
159 return wrappedContext;
160 }
161 }