/****************************************************************************
* Copyright (c) 2004 Composent, Inc. 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:
* Composent, Inc. - initial API and implementation
*****************************************************************************/
package org.eclipse.ecf.core;
import org.eclipse.core.runtime.IAdapterFactory;
/**
* Abstract container adapter factory. This is an abstract implementation of the
* {@link IAdapterFactory} interface. Subclasses may be created as appropriate.
*/
public abstract class AbstractContainerAdapterFactory implements IAdapterFactory {
/*
* (non-Javadoc)
*
* @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object,
* java.lang.Class)
*/
public Object getAdapter(Object adaptableObject, Class adapterType) {
if (adaptableObject == null || adapterType == null)
return null;
if (IContainer.class.isInstance(adaptableObject))
return getContainerAdapter((IContainer) adaptableObject, adapterType);
return null;
}
/**
* Method called by implementation of {@link #getAdapter(Object, Class)} if the
* adaptableObject is an instance of {@link IContainer}. Subclasses should implement to
* return the proper container adapter object based upon the given adapterType.
*
* @param container the IContainer adaptable object provided to the adapter. Will not be <code>null</code>.
* @param adapterType the type (interface) of the adapter on the given container. Will not be <code>null</code>
* @return Object the container adapter instance. May be <code>null</code>.
*/
protected abstract Object getContainerAdapter(IContainer container, Class adapterType);
/*
* (non-Javadoc)
*
* @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
*/
public abstract Class[] getAdapterList();
}