blob: dd2e02f7bfb719fed7bbee0cd7221be53e287b69 [file] [log] [blame]
/*******************************************************************************
* 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.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.XSDConcreteComponent;
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 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);
}
}