| /******************************************************************************* |
| * Copyright (c) 2001, 2006 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 Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.wst.wsdl.ui.internal.adapters; |
| |
| import org.eclipse.emf.common.notify.Adapter; |
| import org.eclipse.emf.common.notify.Notifier; |
| import org.eclipse.emf.common.notify.impl.AdapterFactoryImpl; |
| import org.eclipse.wst.wsdl.Binding; |
| import org.eclipse.wst.wsdl.BindingFault; |
| import org.eclipse.wst.wsdl.BindingInput; |
| import org.eclipse.wst.wsdl.BindingOperation; |
| import org.eclipse.wst.wsdl.BindingOutput; |
| import org.eclipse.wst.wsdl.Definition; |
| import org.eclipse.wst.wsdl.ExtensibilityElement; |
| import org.eclipse.wst.wsdl.Fault; |
| import org.eclipse.wst.wsdl.Import; |
| import org.eclipse.wst.wsdl.Input; |
| import org.eclipse.wst.wsdl.Message; |
| import org.eclipse.wst.wsdl.MessageReference; |
| import org.eclipse.wst.wsdl.Operation; |
| import org.eclipse.wst.wsdl.Output; |
| import org.eclipse.wst.wsdl.Part; |
| import org.eclipse.wst.wsdl.Port; |
| import org.eclipse.wst.wsdl.PortType; |
| import org.eclipse.wst.wsdl.Service; |
| import org.eclipse.wst.wsdl.binding.http.HTTPAddress; |
| import org.eclipse.wst.wsdl.binding.soap.SOAPAddress; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Binding; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11BindingMessageReference; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11BindingOperation; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Description; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11EndPoint; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Import; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Interface; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Message; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11MessageReference; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Operation; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForAttribute; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForElement; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11ParameterForPart; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Service; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.basic.W11Type; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.specialized.W11AddressExtensibilityElementAdapter; |
| import org.eclipse.wst.wsdl.ui.internal.adapters.specialized.W11ExtensibilityElementAdapter; |
| import org.eclipse.wst.wsdl.ui.internal.asd.facade.IMessageReference; |
| import org.eclipse.xsd.XSDAttributeUse; |
| import org.eclipse.xsd.XSDConcreteComponent; |
| import org.eclipse.xsd.XSDElementDeclaration; |
| import org.eclipse.xsd.XSDSchema; |
| |
| public class WSDLAdapterFactory extends AdapterFactoryImpl |
| { |
| static WSDLAdapterFactory instance; |
| |
| public static WSDLAdapterFactory getInstance() |
| { |
| if (instance == null) |
| { |
| instance = new WSDLAdapterFactory(); |
| } |
| return instance; |
| } |
| |
| public Adapter createAdapter(Notifier target) |
| { |
| Adapter adapter = null; |
| |
| if (target instanceof Definition) { |
| adapter = new W11Description(); |
| } |
| else if (target instanceof Service) { |
| adapter = new W11Service(); |
| } |
| else if (target instanceof Binding) { |
| adapter = new W11Binding(); |
| } |
| else if (target instanceof BindingOperation) { |
| adapter = new W11BindingOperation(); |
| } |
| else if (target instanceof BindingInput || |
| target instanceof BindingOutput || |
| target instanceof BindingFault) |
| { |
| adapter = new W11BindingMessageReference(); |
| } |
| else if (target instanceof Port) { |
| adapter = new W11EndPoint(); |
| } |
| else if (target instanceof PortType) { |
| adapter = new W11Interface(); |
| } |
| else if (target instanceof Operation) { |
| adapter = new W11Operation(); |
| } |
| else if (target instanceof MessageReference) |
| { |
| int kind = -1; |
| if (target instanceof Input) |
| { |
| kind = IMessageReference.KIND_INPUT; |
| } |
| else if (target instanceof Output) |
| { |
| kind = IMessageReference.KIND_OUTPUT; |
| } |
| else if (target instanceof Fault) |
| { |
| kind = IMessageReference.KIND_FAULT; |
| } |
| adapter = new W11MessageReference(kind); |
| } |
| else if (target instanceof Import) { |
| adapter = new W11Import(); |
| } |
| else if (target instanceof XSDSchema) { |
| adapter = new W11Type(); |
| } |
| else if (target instanceof Message) { |
| adapter = new W11Message(); |
| } |
| else if (target instanceof Part) |
| { |
| adapter = new W11ParameterForPart(); |
| } |
| else if (target instanceof XSDElementDeclaration) |
| { |
| adapter = new W11ParameterForElement(); |
| } |
| else if (target instanceof XSDAttributeUse) |
| { |
| adapter = new W11ParameterForAttribute(); |
| } |
| else if (target instanceof Message || |
| target instanceof XSDConcreteComponent) |
| { |
| // not we only need this adapter to serve as an 'otherThingsToListenTo' adapter |
| // for use by the W11MessageReference when computing a parameter list |
| adapter = new WSDLBaseAdapter(); |
| } |
| else if (target instanceof SOAPAddress || |
| target instanceof HTTPAddress) |
| { |
| // TODO.. we need to enable the factory to delegate to extension language adapter factories |
| // there should be no references to SOAP or HTTP stuff from within this class |
| // |
| adapter = new W11AddressExtensibilityElementAdapter(); |
| } |
| else if (target instanceof ExtensibilityElement) |
| { |
| adapter = new W11ExtensibilityElementAdapter(); |
| } |
| if (adapter == null) |
| { |
| System.out.println("NO ADAPTER CREATED FOR " + target); //$NON-NLS-1$ |
| Thread.dumpStack(); |
| } |
| |
| return adapter; |
| } |
| |
| public Adapter adapt(Notifier target) |
| { |
| return adapt(target, this); |
| } |
| } |