src/share/jaxws_classes/com/sun/xml/internal/ws/api/server/Invoker.java

Tue, 09 Apr 2013 14:51:13 +0100

author
alanb
date
Tue, 09 Apr 2013 14:51:13 +0100
changeset 368
0989ad8c0860
parent 286
f50545b5e2f1
child 637
9c07ef4934dd
permissions
-rw-r--r--

8010393: Update JAX-WS RI to 2.2.9-b12941
Reviewed-by: alanb, erikj
Contributed-by: miroslav.kos@oracle.com, martin.grebac@oracle.com

ohair@286 1 /*
alanb@368 2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
ohair@286 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
ohair@286 4 *
ohair@286 5 * This code is free software; you can redistribute it and/or modify it
ohair@286 6 * under the terms of the GNU General Public License version 2 only, as
ohair@286 7 * published by the Free Software Foundation. Oracle designates this
ohair@286 8 * particular file as subject to the "Classpath" exception as provided
ohair@286 9 * by Oracle in the LICENSE file that accompanied this code.
ohair@286 10 *
ohair@286 11 * This code is distributed in the hope that it will be useful, but WITHOUT
ohair@286 12 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
ohair@286 13 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
ohair@286 14 * version 2 for more details (a copy is included in the LICENSE file that
ohair@286 15 * accompanied this code).
ohair@286 16 *
ohair@286 17 * You should have received a copy of the GNU General Public License version
ohair@286 18 * 2 along with this work; if not, write to the Free Software Foundation,
ohair@286 19 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
ohair@286 20 *
ohair@286 21 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
ohair@286 22 * or visit www.oracle.com if you need additional information or have any
ohair@286 23 * questions.
ohair@286 24 */
ohair@286 25
ohair@286 26 package com.sun.xml.internal.ws.api.server;
ohair@286 27
ohair@286 28 import com.sun.istack.internal.NotNull;
ohair@286 29 import com.sun.xml.internal.ws.api.message.Packet;
ohair@286 30
ohair@286 31 import javax.xml.ws.Provider;
ohair@286 32 import javax.xml.ws.WebServiceContext;
ohair@286 33 import java.lang.reflect.InvocationTargetException;
ohair@286 34 import java.lang.reflect.Method;
ohair@286 35
ohair@286 36 /**
ohair@286 37 * Hides the detail of calling into application endpoint implementation.
ohair@286 38 *
ohair@286 39 * <p>
ohair@286 40 * Typical host of the JAX-WS RI would want to use
ohair@286 41 * {@link InstanceResolver#createDefault(Class)} and then
ohair@286 42 * use <tt>{@link InstanceResolver#createInvoker()} to obtain
ohair@286 43 * the default invoker implementation.
ohair@286 44 *
ohair@286 45 *
ohair@286 46 * @author Jitendra Kotamraju
ohair@286 47 * @author Kohsuke Kawaguchi
ohair@286 48 */
ohair@286 49 public abstract class Invoker extends com.sun.xml.internal.ws.server.sei.Invoker {
ohair@286 50 /**
ohair@286 51 * Called by {@link WSEndpoint} when it's set up.
ohair@286 52 *
ohair@286 53 * <p>
ohair@286 54 * This is an opportunity for {@link Invoker}
ohair@286 55 * to do a endpoint-specific initialization process.
ohair@286 56 *
ohair@286 57 * @param wsc
ohair@286 58 * The {@link WebServiceContext} instance that can be injected
ohair@286 59 * to the user instances.
ohair@286 60 * @param endpoint
ohair@286 61 */
ohair@286 62 public void start(@NotNull WSWebServiceContext wsc, @NotNull WSEndpoint endpoint) {
ohair@286 63 // backward compatibility
ohair@286 64 start(wsc);
ohair@286 65 }
ohair@286 66
ohair@286 67 /**
ohair@286 68 * @deprecated
ohair@286 69 * Use {@link #start(WSWebServiceContext,WSEndpoint)}
ohair@286 70 */
ohair@286 71 public void start(@NotNull WebServiceContext wsc) {
ohair@286 72 throw new IllegalStateException("deprecated version called");
ohair@286 73 }
ohair@286 74
ohair@286 75 /**
ohair@286 76 * Called by {@link WSEndpoint}
ohair@286 77 * when {@link WSEndpoint#dispose()} is called.
ohair@286 78 *
ohair@286 79 * This allows {@link InstanceResolver} to do final clean up.
ohair@286 80 *
ohair@286 81 * <p>
ohair@286 82 * This method is guaranteed to be only called once by {@link WSEndpoint}.
ohair@286 83 */
ohair@286 84 public void dispose() {}
ohair@286 85
ohair@286 86 /**
ohair@286 87 * Invokes {@link Provider#invoke(Object)}
ohair@286 88 */
ohair@286 89 public <T> T invokeProvider( @NotNull Packet p, T arg ) throws IllegalAccessException, InvocationTargetException {
ohair@286 90 // default slow implementation that delegates to the other invoke method.
ohair@286 91 return (T)invoke(p,invokeMethod,arg);
ohair@286 92 }
ohair@286 93
ohair@286 94 /**
ohair@286 95 * Invokes {@link AsyncProvider#invoke(Object, AsyncProviderCallback, WebServiceContext)}
ohair@286 96 */
ohair@286 97 public <T> void invokeAsyncProvider( @NotNull Packet p, T arg, AsyncProviderCallback cbak, WebServiceContext ctxt ) throws IllegalAccessException, InvocationTargetException {
ohair@286 98 // default slow implementation that delegates to the other invoke method.
ohair@286 99 invoke(p, asyncInvokeMethod, arg, cbak, ctxt);
ohair@286 100 }
ohair@286 101
ohair@286 102 private static final Method invokeMethod;
ohair@286 103
ohair@286 104 static {
ohair@286 105 try {
ohair@286 106 invokeMethod = Provider.class.getMethod("invoke",Object.class);
ohair@286 107 } catch (NoSuchMethodException e) {
ohair@286 108 throw new AssertionError(e);
ohair@286 109 }
ohair@286 110 }
ohair@286 111
ohair@286 112 private static final Method asyncInvokeMethod;
ohair@286 113
ohair@286 114 static {
ohair@286 115 try {
ohair@286 116 asyncInvokeMethod = AsyncProvider.class.getMethod("invoke",Object.class, AsyncProviderCallback.class, WebServiceContext.class);
ohair@286 117 } catch (NoSuchMethodException e) {
ohair@286 118 throw new AssertionError(e);
ohair@286 119 }
ohair@286 120 }
ohair@286 121 }

mercurial