diff options
Diffstat (limited to 'bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/traversal/VisitorAdaptor.java')
-rw-r--r-- | bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/traversal/VisitorAdaptor.java | 201 |
1 files changed, 0 insertions, 201 deletions
diff --git a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/traversal/VisitorAdaptor.java b/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/traversal/VisitorAdaptor.java deleted file mode 100644 index 8b909382a..000000000 --- a/bundles/org.eclipse.wst.wsi/src/org/eclipse/wst/wsi/internal/core/wsdl/traversal/VisitorAdaptor.java +++ /dev/null @@ -1,201 +0,0 @@ -/******************************************************************************* - * Copyright (c) 2002-2005 IBM Corporation and others. - * All rights reserved. This program and the accompanying materials - * are made available under the terms of the Eclipse Public License v1.0 - * which accompanies this distribution, and is available at - * http://www.eclipse.org/legal/epl-v10.html - * - * Contributors: - * IBM - Initial API and implementation - *******************************************************************************/ -package org.eclipse.wst.wsi.internal.core.wsdl.traversal; - -import java.lang.reflect.InvocationHandler; -import java.lang.reflect.Method; -import java.lang.reflect.Proxy; -import java.util.HashMap; -import java.util.Map; - -import javax.wsdl.Binding; -import javax.wsdl.BindingFault; -import javax.wsdl.BindingInput; -import javax.wsdl.BindingOperation; -import javax.wsdl.BindingOutput; -import javax.wsdl.Definition; -import javax.wsdl.Fault; -import javax.wsdl.Import; -import javax.wsdl.Input; -import javax.wsdl.Message; -import javax.wsdl.Operation; -import javax.wsdl.Output; -import javax.wsdl.Part; -import javax.wsdl.Port; -import javax.wsdl.PortType; -import javax.wsdl.Service; -import javax.wsdl.Types; -import javax.wsdl.extensions.ExtensibilityElement; -import javax.wsdl.extensions.soap.SOAPBinding; -import javax.wsdl.extensions.soap.SOAPBody; -import javax.wsdl.extensions.soap.SOAPFault; -import javax.wsdl.extensions.soap.SOAPHeader; -import javax.wsdl.extensions.soap.SOAPHeaderFault; -import javax.wsdl.extensions.soap.SOAPOperation; - -import org.w3c.dom.Element; - -/** - * The class adapts the given object with the implemented - * <code>WSDLVisitor</code> methods. - * - * @author Kulik - */ -public class VisitorAdaptor implements InvocationHandler -{ - - // optimization hint - static final private Class[] visitorClass = new Class[] { WSDLVisitor.class }; - - /** - * The array is used for determination of actual javax.wsdl class - */ - private static Class[] wsdl = - new Class[] { - Part.class, - Service.class, - Types.class, - Operation.class, - Input.class, - Output.class, - Fault.class, - Binding.class, - BindingOperation.class, - BindingInput.class, - BindingOutput.class, - BindingFault.class, - Import.class, - Element.class, - Message.class, - Port.class, - PortType.class, - Definition.class, - ExtensibilityElement.class, - SOAPBinding.class, - SOAPBody.class, - SOAPHeader.class, - SOAPHeaderFault.class, - SOAPFault.class, - SOAPOperation.class }; - - final private Object visitor; - - private Map methods = new HashMap(); - - /** - * Constructor. - * @param o a visitor object. - */ - private VisitorAdaptor(Object o) - { - this.visitor = o; - } - - /** - * Adds method to method binding. - * @param wsdlMethod a WSDL method. - * @param targetMethod a target method. - */ - private void addMethodBinding(Method wsdlMethod, Method targetMethod) - { - methods.put(wsdlMethod, targetMethod); - } - - /** - * The method proxies all "visit(XXX)" methods to the corresponding - * "visit(XXX)" methods of the target visitor object. - * @see java.lang.reflect.InvocationHandler#invoke(Object, Method, Object[]) - */ - public Object invoke(Object proxy, Method m, Object[] params) - { - try - { - Method target = (Method) methods.get(m); - // assert target != null - return target.invoke(visitor, params); - } - catch (Throwable t) - { - t.printStackTrace(); - } - return null; - } - - /** - * The method extract the short class name. - * @param c a class. - * @return the short class name. - */ - static private String getName(Class c) - { - if (c != null) - { - String name = c.getName(); - return name.substring(name.lastIndexOf(".") + 1); - } - return null; - } - - /** - * The method generates proxy for the given visitor. - * Proxy redirects all visit(XXX) callback to the implemented in visitor - * object. - * @param visitor a vistor object. - * @return a proxy for the given visitor. - */ - public static WSDLTraversal adapt(Object visitor) - { - WSDLTraversal traversal = new WSDLTraversal(); - - if (visitor == null) - throw new IllegalArgumentException("Visitor object can not be NULL"); - - VisitorAdaptor adaptor = new VisitorAdaptor(visitor); - - // check whether methods are implemented - // get real class of the object - Class c = visitor.getClass(); - // iterates through wsdl artifacts and looking for - // void visit(XXX) implemented methods. - for (int i = 0; i < wsdl.length; i++) - try - { - // if method is not found the exception will be thrown - Method m = - c.getMethod( - "visit", - new Class[] { wsdl[i], Object.class, WSDLTraversalContext.class }); - // register binding WSDLVisitor method -> target visitor method - adaptor.addMethodBinding( - WSDLVisitor.class.getMethod( - "visit", - new Class[] { wsdl[i], Object.class, WSDLTraversalContext.class }), - m); - // register visitXXX in WSDLTraversalBuilder - m = - WSDLTraversal.class.getMethod( - "visit" + getName(wsdl[i]), - new Class[] { boolean.class }); - m.invoke(traversal, new Object[] { Boolean.TRUE }); - } - catch (Exception e) - { - } - - // construct the WSDLVisitor by using java.lang.reflect.Proxy - ClassLoader loader = Thread.currentThread().getContextClassLoader(); - WSDLVisitor wsdlVisitor = - (WSDLVisitor) Proxy.newProxyInstance(loader, visitorClass, adaptor); - // traverse WSDL document - traversal.setVisitor(wsdlVisitor); - return traversal; - } -} |