/*
 * 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.server;

import com.sun.istack.internal.NotNull;
import com.sun.xml.internal.ws.api.SOAPVersion;
import com.sun.xml.internal.ws.api.WSBinding;
import com.sun.xml.internal.ws.api.message.Packet;
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.FiberContextSwitchInterceptor;
import com.sun.xml.internal.ws.api.pipe.ServerTubeAssemblerContext;
import com.sun.xml.internal.ws.api.pipe.ThrowableContainerPropertySet;
import com.sun.xml.internal.ws.api.server.Container;
import com.sun.xml.internal.ws.api.server.ServiceDefinition;
import com.sun.xml.internal.ws.api.server.WSEndpoint;
import com.sun.xml.internal.ws.policy.PolicyMap;
import com.sun.xml.internal.ws.wsdl.OperationDispatcher;
import com.sun.org.glassfish.gmbal.AMXClient;
import com.sun.org.glassfish.gmbal.GmbalMBean;
import com.sun.org.glassfish.gmbal.ManagedObjectManager;

import javax.management.MBeanServer;
import javax.management.ObjectName;
import java.io.IOException;
import java.lang.annotation.Annotation;
import java.lang.reflect.AnnotatedElement;
import java.util.List;
import java.util.ResourceBundle;
import java.util.Set;
import java.util.concurrent.Executor;
import javax.xml.namespace.QName;
import javax.xml.ws.EndpointReference;
import org.w3c.dom.Element;

ManagedObjectManager proxy class for WSEndpointImpl instances that could be used when Gmbal API calls need to be deferred. The proxy tries to defer a need of a real ManagedObjectManager instance to the time when any method from ManagedObjectManager is invoked on it. In this case a real instance of ManagedObjectManager is obtained from WSEndpointImpl and the method is rather invoked on this object.
/** * {@link ManagedObjectManager} proxy class for {@link WSEndpointImpl} instances that could be used when Gmbal API calls * need to be deferred. The proxy tries to defer a need of a real ManagedObjectManager instance to the time when any * method from {@link ManagedObjectManager} is invoked on it. In this case a real instance of ManagedObjectManager is * obtained from WSEndpointImpl and the method is rather invoked on this object. */
public class WSEndpointMOMProxy extends WSEndpoint implements ManagedObjectManager { private final @NotNull WSEndpointImpl wsEndpoint; private ManagedObjectManager managedObjectManager; WSEndpointMOMProxy(@NotNull WSEndpointImpl wsEndpoint) { this.wsEndpoint = wsEndpoint; }
Returns a real instance of ManagedObjectManager
Returns:an ManagedObjectManager instance
/** * Returns a real instance of {@link ManagedObjectManager} * * @return an ManagedObjectManager instance */
@Override public ManagedObjectManager getManagedObjectManager() { if (managedObjectManager == null) { managedObjectManager = wsEndpoint.obtainManagedObjectManager(); } return managedObjectManager; } void setManagedObjectManager(ManagedObjectManager managedObjectManager) { this.managedObjectManager = managedObjectManager; }
Returns true if this proxy contains a reference to real ManagedObjectManager instance, false otherwise.
Returns:true if ManagedObjectManager has been created, false otherwise.
/** * Returns {@code true} if this proxy contains a reference to real ManagedObjectManager instance, {@code false} * otherwise. * * @return {@code true} if ManagedObjectManager has been created, {@code false} otherwise. */
public boolean isInitialized() { return this.managedObjectManager != null; } public WSEndpointImpl getWsEndpoint() { return wsEndpoint; } @Override public void suspendJMXRegistration() { getManagedObjectManager().suspendJMXRegistration(); } @Override public void resumeJMXRegistration() { getManagedObjectManager().resumeJMXRegistration(); } @Override public boolean isManagedObject(Object obj) { return getManagedObjectManager().isManagedObject(obj); } @Override public GmbalMBean createRoot() { return getManagedObjectManager().createRoot(); } @Override public GmbalMBean createRoot(Object root) { return getManagedObjectManager().createRoot(root); } @Override public GmbalMBean createRoot(Object root, String name) { return getManagedObjectManager().createRoot(root, name); } @Override public Object getRoot() { return getManagedObjectManager().getRoot(); } @Override public GmbalMBean register(Object parent, Object obj, String name) { return getManagedObjectManager().register(parent, obj, name); } @Override public GmbalMBean register(Object parent, Object obj) { return getManagedObjectManager().register(parent, obj); } @Override public GmbalMBean registerAtRoot(Object obj, String name) { return getManagedObjectManager().registerAtRoot(obj, name); } @Override public GmbalMBean registerAtRoot(Object obj) { return getManagedObjectManager().registerAtRoot(obj); } @Override public void unregister(Object obj) { getManagedObjectManager().unregister(obj); } @Override public ObjectName getObjectName(Object obj) { return getManagedObjectManager().getObjectName(obj); } @Override public AMXClient getAMXClient(Object obj) { return getManagedObjectManager().getAMXClient(obj); } @Override public Object getObject(ObjectName oname) { return getManagedObjectManager().getObject(oname); } @Override public void stripPrefix(String... str) { getManagedObjectManager().stripPrefix(str); } @Override public void stripPackagePrefix() { getManagedObjectManager().stripPackagePrefix(); } @Override public String getDomain() { return getManagedObjectManager().getDomain(); } @Override public void setMBeanServer(MBeanServer server) { getManagedObjectManager().setMBeanServer(server); } @Override public MBeanServer getMBeanServer() { return getManagedObjectManager().getMBeanServer(); } @Override public void setResourceBundle(ResourceBundle rb) { getManagedObjectManager().setResourceBundle(rb); } @Override public ResourceBundle getResourceBundle() { return getManagedObjectManager().getResourceBundle(); } @Override public void addAnnotation(AnnotatedElement element, Annotation annotation) { getManagedObjectManager().addAnnotation(element, annotation); } @Override public void setRegistrationDebug(RegistrationDebugLevel level) { getManagedObjectManager().setRegistrationDebug(level); } @Override public void setRuntimeDebug(boolean flag) { getManagedObjectManager().setRuntimeDebug(flag); } @Override public void setTypelibDebug(int level) { getManagedObjectManager().setTypelibDebug(level); } @Override public void setJMXRegistrationDebug(boolean flag) { getManagedObjectManager().setJMXRegistrationDebug(flag); } @Override public String dumpSkeleton(Object obj) { return getManagedObjectManager().dumpSkeleton(obj); } @Override public void suppressDuplicateRootReport(boolean suppressReport) { getManagedObjectManager().suppressDuplicateRootReport(suppressReport); } @Override public void close() throws IOException { getManagedObjectManager().close(); } @Override public boolean equalsProxiedInstance(WSEndpoint endpoint) { if (wsEndpoint == null) { return (endpoint == null); } return wsEndpoint.equals(endpoint); } @Override public Codec createCodec() { return this.wsEndpoint.createCodec(); } @Override public QName getServiceName() { return this.wsEndpoint.getServiceName(); } @Override public QName getPortName() { return this.wsEndpoint.getPortName(); } @Override public Class getImplementationClass() { return this.wsEndpoint.getImplementationClass(); } @Override public WSBinding getBinding() { return this.wsEndpoint.getBinding(); } @Override public Container getContainer() { return this.wsEndpoint.getContainer(); } @Override public WSDLPort getPort() { return this.wsEndpoint.getPort(); } @Override public void setExecutor(Executor exec) { this.wsEndpoint.setExecutor(exec); } @Override public void schedule(Packet request, CompletionCallback callback, FiberContextSwitchInterceptor interceptor) { this.wsEndpoint.schedule(request, callback, interceptor); } @Override public PipeHead createPipeHead() { return this.wsEndpoint.createPipeHead(); } @Override public void dispose() { if (this.wsEndpoint != null) { this.wsEndpoint.dispose(); } } @Override public ServiceDefinition getServiceDefinition() { return this.wsEndpoint.getServiceDefinition(); } @Override public Set getComponentRegistry() { return this.wsEndpoint.getComponentRegistry(); } @Override public SEIModel getSEIModel() { return this.wsEndpoint.getSEIModel(); } @Override public PolicyMap getPolicyMap() { return this.wsEndpoint.getPolicyMap(); } @Override public void closeManagedObjectManager() { this.wsEndpoint.closeManagedObjectManager(); } @Override public ServerTubeAssemblerContext getAssemblerContext() { return this.wsEndpoint.getAssemblerContext(); } @Override public EndpointReference getEndpointReference(Class clazz, String address, String wsdlAddress, Element... referenceParameters) { return wsEndpoint.getEndpointReference(clazz, address, wsdlAddress, referenceParameters); } @Override public EndpointReference getEndpointReference(Class clazz, String address, String wsdlAddress, List metadata, List referenceParameters) { return wsEndpoint.getEndpointReference(clazz, address, wsdlAddress, metadata, referenceParameters); } @Override public OperationDispatcher getOperationDispatcher() { return wsEndpoint.getOperationDispatcher(); } @Override public Packet createServiceResponseForException(final ThrowableContainerPropertySet tc, final Packet responsePacket, final SOAPVersion soapVersion, final WSDLPort wsdlPort, final SEIModel seiModel, final WSBinding binding) { return wsEndpoint.createServiceResponseForException(tc, responsePacket, soapVersion, wsdlPort, seiModel, binding); } }