/****************************************************************************
* 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.provider.datashare;
import java.util.Map;
import org.eclipse.core.runtime.*;
import org.eclipse.ecf.core.IContainer;
import org.eclipse.ecf.core.identity.*;
import org.eclipse.ecf.core.util.ECFException;
import org.eclipse.ecf.core.util.Trace;
import org.eclipse.ecf.datashare.*;
import org.eclipse.ecf.internal.provider.datashare.Activator;
import org.eclipse.ecf.internal.provider.datashare.DatashareProviderDebugOptions;
import org.eclipse.ecf.provider.generic.SOContainer;
public class DatashareContainerAdapter implements IChannelContainerAdapter {
protected SOContainer container = null;
protected static final int DEFAULT_TRANSACTION_WAIT = 30000;
protected static final int SO_CREATION_ERROR = 1001;
protected SharedObjectDatashareContainerAdapter delegate = null;
protected ID delegateID = null;
public DatashareContainerAdapter(SOContainer container) {
this.container = container;
initialize();
}
protected void initialize() {
try {
this.delegateID = IDFactory.getDefault().createStringID(SharedObjectDatashareContainerAdapter.class.getName());
this.delegate = new SharedObjectDatashareContainerAdapter();
this.container.getSharedObjectManager().addSharedObject(delegateID, delegate, null);
} catch (Exception e) {
Trace.catching(Activator.PLUGIN_ID, DatashareProviderDebugOptions.EXCEPTIONS_CATCHING, DatashareContainerAdapter.class, "DatashareContainerAdapter.initialize", e); //$NON-NLS-1$
Activator.getDefault().log(new Status(IStatus.ERROR, Activator.PLUGIN_ID, SO_CREATION_ERROR, "Exception initializing DatashareContainerAdapter instance", e)); //$NON-NLS-1$
}
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ecf.datashare.IChannelContainerAdapter#createChannel(org.eclipse.ecf.datashare.IChannelConfig)
*/
public IChannel createChannel(final ID newID, final IChannelListener listener, final Map properties) throws ECFException {
return delegate.createChannel(newID, listener, properties);
}
public IChannel createChannel(IChannelConfig newChannelConfig) throws ECFException {
return delegate.createChannel(newChannelConfig);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ecf.datashare.IChannelContainerAdapter#getChannel(org.eclipse.ecf.core.identity.ID)
*/
public IChannel getChannel(ID channelID) {
return delegate.getChannel(channelID);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ecf.datashare.IChannelContainerAdapter#disposeChannel(org.eclipse.ecf.core.identity.ID)
*/
public boolean removeChannel(ID channelID) {
return delegate.removeChannel(channelID);
}
/*
* (non-Javadoc)
*
* @see org.eclipse.ecf.datashare.IChannelContainerAdapter#getChannelNamespace()
*/
public Namespace getChannelNamespace() {
return IDFactory.getDefault().getNamespaceByName(StringID.class.getName());
}
public void addListener(IChannelContainerListener listener) {
delegate.addListener(listener);
}
public void removeListener(IChannelContainerListener listener) {
delegate.removeListener(listener);
}
public Object getAdapter(Class adapter) {
if (adapter != null && adapter.equals(IContainer.class))
return container;
final IAdapterManager adapterManager = Activator.getDefault().getAdapterManager();
return (adapterManager == null) ? null : adapterManager.loadAdapter(this, adapter.getName());
}
}