/*
 * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.  Oracle designates this
 * particular file as subject to the "Classpath" exception as provided
 * by Oracle in the LICENSE file that accompanied this code.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package com.sun.xml.internal.ws.assembler.dev;

import com.sun.istack.internal.NotNull;
import com.sun.istack.internal.Nullable;
import com.sun.xml.internal.ws.api.model.SEIModel;
import com.sun.xml.internal.ws.api.model.wsdl.WSDLPort;
import com.sun.xml.internal.ws.api.pipe.Codec;
import com.sun.xml.internal.ws.api.pipe.ServerTubeAssemblerContext;
import com.sun.xml.internal.ws.api.pipe.Tube;
import com.sun.xml.internal.ws.api.server.WSEndpoint;
import com.sun.xml.internal.ws.policy.PolicyMap;

Author:Marek Potociar (marek.potociar at sun.com)
/** * * @author Marek Potociar (marek.potociar at sun.com) */
public interface ServerTubelineAssemblyContext extends TubelineAssemblyContext {
Gets the Codec that is set by setCodec or the default codec based on the binding. The codec is a full codec that is responsible for encoding/decoding entire protocol message(for e.g: it is responsible to encode/decode entire MIME messages in SOAP binding)
See Also:
Returns:codec to be used for web service requests
/** * Gets the {@link Codec} that is set by {@link #setCodec} or the default codec * based on the binding. The codec is a full codec that is responsible for * encoding/decoding entire protocol message(for e.g: it is responsible to * encode/decode entire MIME messages in SOAP binding) * * @return codec to be used for web service requests * @see com.sun.xml.internal.ws.api.pipe.Codecs */
@NotNull Codec getCodec();
The created pipeline is used to serve this WSEndpoint. Specifically, its WSBinding should be of interest to many Pipes.
Returns:Always non-null.
/** * * The created pipeline is used to serve this {@link com.sun.xml.internal.ws.api.server.WSEndpoint}. * Specifically, its {@link com.sun.xml.internal.ws.api.WSBinding} should be of interest to many * {@link com.sun.xml.internal.ws.api.pipe.Pipe}s. * @return Always non-null. */
@NotNull WSEndpoint getEndpoint(); PolicyMap getPolicyMap();
The created pipeline will use seiModel to get java concepts for the endpoint
Returns:Null if the service doesn't have SEI model e.g. Provider endpoints, and otherwise non-null.
/** * The created pipeline will use seiModel to get java concepts for the endpoint * * @return Null if the service doesn't have SEI model e.g. Provider endpoints, * and otherwise non-null. */
@Nullable SEIModel getSEIModel();
The last Pipe in the pipeline. The assembler is expected to put additional Pipes in front of it.

(Just to give you the idea how this is used, normally the terminal pipe is the one that invokes the user application or Provider.)

Returns:always non-null terminal pipe
/** * The last {@link com.sun.xml.internal.ws.api.pipe.Pipe} in the pipeline. The assembler is expected to put * additional {@link com.sun.xml.internal.ws.api.pipe.Pipe}s in front of it. * * <p> * (Just to give you the idea how this is used, normally the terminal pipe * is the one that invokes the user application or {@link javax.xml.ws.Provider}.) * * @return always non-null terminal pipe */
@NotNull Tube getTerminalTube(); ServerTubeAssemblerContext getWrappedContext();
The created pipeline will be used to serve this port.
Returns:Null if the service isn't associated with any port definition in WSDL, and otherwise non-null.
/** * The created pipeline will be used to serve this port. * * @return Null if the service isn't associated with any port definition in WSDL, * and otherwise non-null. */
@Nullable WSDLPort getWsdlPort(); boolean isPolicyAvailable();
If this server pipeline is known to be used for serving synchronous transport, then this method returns true. This can be potentially use as an optimization hint, since often synchronous versions are cheaper to execute than asycnhronous versions.
/** * If this server pipeline is known to be used for serving synchronous transport, * then this method returns true. This can be potentially use as an optimization * hint, since often synchronous versions are cheaper to execute than asycnhronous * versions. */
boolean isSynchronous();
Interception point to change Codec during Tubeline assembly. The new codec will be used by jax-ws server runtime for encoding/decoding web service request/response messages. WSEndpoint.createCodec() will return a copy of this new codec and will be used in the server runtime.

The codec is a full codec that is responsible for encoding/decoding entire protocol message(for e.g: it is responsible to encode/decode entire MIME messages in SOAP binding)

the codec should correctly implement Codec.copy since it is used while serving requests concurrently.

Params:
  • codec – codec to be used for web service requests
See Also:
/** * Interception point to change {@link Codec} during {@link Tube}line assembly. The * new codec will be used by jax-ws server runtime for encoding/decoding web service * request/response messages. {@link WSEndpoint#createCodec()} will return a copy * of this new codec and will be used in the server runtime. * * <p> * The codec is a full codec that is responsible for * encoding/decoding entire protocol message(for e.g: it is responsible to * encode/decode entire MIME messages in SOAP binding) * * <p> * the codec should correctly implement {@link Codec#copy} since it is used while * serving requests concurrently. * * @param codec codec to be used for web service requests * @see com.sun.xml.internal.ws.api.pipe.Codecs */
void setCodec(@NotNull Codec codec); }