src/share/jaxws_classes/com/sun/xml/internal/ws/server/WSEndpointMOMProxy.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, 2013, 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.server;
    28 import com.sun.istack.internal.NotNull;
    29 import com.sun.xml.internal.ws.api.SOAPVersion;
    30 import com.sun.xml.internal.ws.api.WSBinding;
    31 import com.sun.xml.internal.ws.api.message.Packet;
    32 import com.sun.xml.internal.ws.api.model.SEIModel;
    33 import com.sun.xml.internal.ws.api.model.wsdl.WSDLPort;
    34 import com.sun.xml.internal.ws.api.pipe.Codec;
    35 import com.sun.xml.internal.ws.api.pipe.FiberContextSwitchInterceptor;
    36 import com.sun.xml.internal.ws.api.pipe.ServerTubeAssemblerContext;
    37 import com.sun.xml.internal.ws.api.pipe.ThrowableContainerPropertySet;
    38 import com.sun.xml.internal.ws.api.server.Container;
    39 import com.sun.xml.internal.ws.api.server.ServiceDefinition;
    40 import com.sun.xml.internal.ws.api.server.WSEndpoint;
    41 import com.sun.xml.internal.ws.policy.PolicyMap;
    42 import com.sun.xml.internal.ws.wsdl.OperationDispatcher;
    43 import com.sun.org.glassfish.gmbal.AMXClient;
    44 import com.sun.org.glassfish.gmbal.GmbalMBean;
    45 import com.sun.org.glassfish.gmbal.ManagedObjectManager;
    47 import javax.management.MBeanServer;
    48 import javax.management.ObjectName;
    49 import java.io.IOException;
    50 import java.lang.annotation.Annotation;
    51 import java.lang.reflect.AnnotatedElement;
    52 import java.util.List;
    53 import java.util.ResourceBundle;
    54 import java.util.Set;
    55 import java.util.concurrent.Executor;
    56 import javax.xml.namespace.QName;
    57 import javax.xml.ws.EndpointReference;
    58 import org.w3c.dom.Element;
    60 /**
    61  * {@link ManagedObjectManager} proxy class for {@link WSEndpointImpl} instances that could be used when Gmbal API calls
    62  * need to be deferred. The proxy tries to defer a need of a real ManagedObjectManager instance to the time when any
    63  * method from {@link ManagedObjectManager} is invoked on it. In this case a real instance of ManagedObjectManager is
    64  * obtained from WSEndpointImpl and the method is rather invoked on this object.
    65  */
    66 public class WSEndpointMOMProxy extends WSEndpoint implements ManagedObjectManager {
    68     private final @NotNull
    69     WSEndpointImpl wsEndpoint;
    70     private ManagedObjectManager managedObjectManager;
    72     WSEndpointMOMProxy(@NotNull WSEndpointImpl wsEndpoint) {
    73         this.wsEndpoint = wsEndpoint;
    74     }
    76     /**
    77      * Returns a real instance of {@link ManagedObjectManager}
    78      *
    79      * @return an ManagedObjectManager instance
    80      */
    81     @Override
    82     public ManagedObjectManager getManagedObjectManager() {
    83         if (managedObjectManager == null) {
    84             managedObjectManager = wsEndpoint.obtainManagedObjectManager();
    85         }
    86         return managedObjectManager;
    87     }
    89     void setManagedObjectManager(ManagedObjectManager managedObjectManager) {
    90         this.managedObjectManager = managedObjectManager;
    91     }
    93     /**
    94      * Returns {@code true} if this proxy contains a reference to real ManagedObjectManager instance, {@code false}
    95      * otherwise.
    96      *
    97      * @return {@code true} if ManagedObjectManager has been created, {@code false} otherwise.
    98      */
    99     public boolean isInitialized() {
   100         return this.managedObjectManager != null;
   101     }
   103     public WSEndpointImpl getWsEndpoint() {
   104         return wsEndpoint;
   105     }
   107     @Override
   108     public void suspendJMXRegistration() {
   109         getManagedObjectManager().suspendJMXRegistration();
   110     }
   112     @Override
   113     public void resumeJMXRegistration() {
   114         getManagedObjectManager().resumeJMXRegistration();
   115     }
   117     @Override
   118     public boolean isManagedObject(Object obj) {
   119         return getManagedObjectManager().isManagedObject(obj);
   120     }
   122     @Override
   123     public GmbalMBean createRoot() {
   124         return getManagedObjectManager().createRoot();
   125     }
   127     @Override
   128     public GmbalMBean createRoot(Object root) {
   129         return getManagedObjectManager().createRoot(root);
   130     }
   132     @Override
   133     public GmbalMBean createRoot(Object root, String name) {
   134         return getManagedObjectManager().createRoot(root, name);
   135     }
   137     @Override
   138     public Object getRoot() {
   139         return getManagedObjectManager().getRoot();
   140     }
   142     @Override
   143     public GmbalMBean register(Object parent, Object obj, String name) {
   144         return getManagedObjectManager().register(parent, obj, name);
   145     }
   147     @Override
   148     public GmbalMBean register(Object parent, Object obj) {
   149         return getManagedObjectManager().register(parent, obj);
   150     }
   152     @Override
   153     public GmbalMBean registerAtRoot(Object obj, String name) {
   154         return getManagedObjectManager().registerAtRoot(obj, name);
   155     }
   157     @Override
   158     public GmbalMBean registerAtRoot(Object obj) {
   159         return getManagedObjectManager().registerAtRoot(obj);
   160     }
   162     @Override
   163     public void unregister(Object obj) {
   164         getManagedObjectManager().unregister(obj);
   165     }
   167     @Override
   168     public ObjectName getObjectName(Object obj) {
   169         return getManagedObjectManager().getObjectName(obj);
   170     }
   172     @Override
   173     public AMXClient getAMXClient(Object obj) {
   174         return getManagedObjectManager().getAMXClient(obj);
   175     }
   177     @Override
   178     public Object getObject(ObjectName oname) {
   179         return getManagedObjectManager().getObject(oname);
   180     }
   182     @Override
   183     public void stripPrefix(String... str) {
   184         getManagedObjectManager().stripPrefix(str);
   185     }
   187     @Override
   188     public void stripPackagePrefix() {
   189         getManagedObjectManager().stripPackagePrefix();
   190     }
   192     @Override
   193     public String getDomain() {
   194         return getManagedObjectManager().getDomain();
   195     }
   197     @Override
   198     public void setMBeanServer(MBeanServer server) {
   199         getManagedObjectManager().setMBeanServer(server);
   200     }
   202     @Override
   203     public MBeanServer getMBeanServer() {
   204         return getManagedObjectManager().getMBeanServer();
   205     }
   207     @Override
   208     public void setResourceBundle(ResourceBundle rb) {
   209         getManagedObjectManager().setResourceBundle(rb);
   210     }
   212     @Override
   213     public ResourceBundle getResourceBundle() {
   214         return getManagedObjectManager().getResourceBundle();
   215     }
   217     @Override
   218     public void addAnnotation(AnnotatedElement element, Annotation annotation) {
   219         getManagedObjectManager().addAnnotation(element, annotation);
   220     }
   222     @Override
   223     public void setRegistrationDebug(RegistrationDebugLevel level) {
   224         getManagedObjectManager().setRegistrationDebug(level);
   225     }
   227     @Override
   228     public void setRuntimeDebug(boolean flag) {
   229         getManagedObjectManager().setRuntimeDebug(flag);
   230     }
   232     @Override
   233     public void setTypelibDebug(int level) {
   234         getManagedObjectManager().setTypelibDebug(level);
   235     }
   237     @Override
   238     public void setJMXRegistrationDebug(boolean flag) {
   239         getManagedObjectManager().setJMXRegistrationDebug(flag);
   240     }
   242     @Override
   243     public String dumpSkeleton(Object obj) {
   244         return getManagedObjectManager().dumpSkeleton(obj);
   245     }
   247     @Override
   248     public void suppressDuplicateRootReport(boolean suppressReport) {
   249         getManagedObjectManager().suppressDuplicateRootReport(suppressReport);
   250     }
   252     @Override
   253     public void close() throws IOException {
   254         getManagedObjectManager().close();
   255     }
   257     @Override
   258     public boolean equalsProxiedInstance(WSEndpoint endpoint) {
   259         if (wsEndpoint == null) {
   260             return (endpoint == null);
   261         }
   262         return wsEndpoint.equals(endpoint);
   263     }
   265     @Override
   266     public Codec createCodec() {
   267         return this.wsEndpoint.createCodec();
   268     }
   270     @Override
   271     public QName getServiceName() {
   272         return this.wsEndpoint.getServiceName();
   273     }
   275     @Override
   276     public QName getPortName() {
   277         return this.wsEndpoint.getPortName();
   278     }
   280     @Override
   281     public Class getImplementationClass() {
   282         return this.wsEndpoint.getImplementationClass();
   283     }
   285     @Override
   286     public WSBinding getBinding() {
   287         return this.wsEndpoint.getBinding();
   288     }
   290     @Override
   291     public Container getContainer() {
   292         return this.wsEndpoint.getContainer();
   293     }
   295     @Override
   296     public WSDLPort getPort() {
   297         return this.wsEndpoint.getPort();
   298     }
   300     @Override
   301     public void setExecutor(Executor exec) {
   302         this.wsEndpoint.setExecutor(exec);
   303     }
   305     @Override
   306     public void schedule(Packet request, CompletionCallback callback, FiberContextSwitchInterceptor interceptor) {
   307         this.wsEndpoint.schedule(request, callback, interceptor);
   308     }
   310     @Override
   311     public PipeHead createPipeHead() {
   312         return this.wsEndpoint.createPipeHead();
   313     }
   315     @Override
   316     public void dispose() {
   317         if (this.wsEndpoint != null) {
   318             this.wsEndpoint.dispose();
   319         }
   320     }
   322     @Override
   323     public ServiceDefinition getServiceDefinition() {
   324         return this.wsEndpoint.getServiceDefinition();
   325     }
   327     @Override
   328     public Set getComponentRegistry() {
   329         return this.wsEndpoint.getComponentRegistry();
   330     }
   332     @Override
   333     public SEIModel getSEIModel() {
   334         return this.wsEndpoint.getSEIModel();
   335     }
   337     @Override
   338     public PolicyMap getPolicyMap() {
   339         return this.wsEndpoint.getPolicyMap();
   340     }
   342     @Override
   343     public void closeManagedObjectManager() {
   344         this.wsEndpoint.closeManagedObjectManager();
   345     }
   347     @Override
   348     public ServerTubeAssemblerContext getAssemblerContext() {
   349         return this.wsEndpoint.getAssemblerContext();
   350     }
   352     @Override
   353     public EndpointReference getEndpointReference(Class clazz, String address, String wsdlAddress, Element... referenceParameters) {
   354         return wsEndpoint.getEndpointReference(clazz, address, wsdlAddress, referenceParameters);
   355     }
   357     @Override
   358     public EndpointReference getEndpointReference(Class clazz, String address, String wsdlAddress, List metadata, List referenceParameters) {
   359         return wsEndpoint.getEndpointReference(clazz, address, wsdlAddress, metadata, referenceParameters);
   360     }
   362     @Override
   363     public OperationDispatcher getOperationDispatcher() {
   364         return wsEndpoint.getOperationDispatcher();
   365     }
   367     @Override
   368     public Packet createServiceResponseForException(final ThrowableContainerPropertySet tc,
   369                                                     final Packet      responsePacket,
   370                                                     final SOAPVersion soapVersion,
   371                                                     final WSDLPort    wsdlPort,
   372                                                     final SEIModel    seiModel,
   373                                                     final WSBinding   binding)
   374     {
   375         return wsEndpoint.createServiceResponseForException(tc, responsePacket, soapVersion,
   376                                                             wsdlPort, seiModel, binding);
   377     }
   378 }

mercurial