Package org.eclipse.ecf.internal.examples.provider.trivial.container

Source Code of org.eclipse.ecf.internal.examples.provider.trivial.container.TrivialContainer

/****************************************************************************
* 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.internal.examples.provider.trivial.container;

import org.eclipse.core.runtime.Assert;
import org.eclipse.ecf.core.AbstractContainer;
import org.eclipse.ecf.core.ContainerConnectException;
import org.eclipse.ecf.core.events.ContainerConnectedEvent;
import org.eclipse.ecf.core.events.ContainerConnectingEvent;
import org.eclipse.ecf.core.events.ContainerDisconnectedEvent;
import org.eclipse.ecf.core.events.ContainerDisconnectingEvent;
import org.eclipse.ecf.core.identity.ID;
import org.eclipse.ecf.core.identity.IDCreateException;
import org.eclipse.ecf.core.identity.IDFactory;
import org.eclipse.ecf.core.identity.Namespace;
import org.eclipse.ecf.core.security.IConnectContext;
import org.eclipse.ecf.examples.provider.trivial.identity.TrivialNamespace;

/**
* Trivial container implementation. Note that container adapter implementations can be
* provided by the container class to expose appropriate adapters.
*/
public class TrivialContainer extends AbstractContainer
/*
* implements IChannelContainerAdapter, ICallSessionContainerAdapter,
* IDiscoveryContainerAdapter, IRetrieveFileTransferContainerAdapter
*/
{

  /*
   * The targetID.  This value is set on 'connect' and unset in 'disconnect'.
   * This represents the other process that this container is connected to.
   * Value is returned via getConnectedID()
   */
  private ID targetID = null;
  /*
   * This is the ID for this container.  Returned via getID().
   */
  private ID containerID = null;

  public TrivialContainer() throws IDCreateException {
    super();
    this.containerID = IDFactory.getDefault().createGUID();
  }

  public TrivialContainer(ID id) {
    super();
    Assert.isNotNull(id);
    this.containerID = id;
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.core.IContainer#connect(org.eclipse.ecf.core.identity.ID,
   *      org.eclipse.ecf.core.security.IConnectContext)
   */
  public void connect(ID targetID, IConnectContext connectContext) throws ContainerConnectException {
    if (!targetID.getNamespace().getName().equals(getConnectNamespace().getName()))
      throw new ContainerConnectException("targetID not of appropriate Namespace");

    fireContainerEvent(new ContainerConnectingEvent(getID(), targetID));

    // XXX connect to remote service here

    this.targetID = targetID;
    fireContainerEvent(new ContainerConnectedEvent(getID(), targetID));

  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.core.IContainer#disconnect()
   */
  public void disconnect() {
    fireContainerEvent(new ContainerDisconnectingEvent(getID(), targetID));

    final ID oldID = targetID;

    // XXX disconnect here

    fireContainerEvent(new ContainerDisconnectedEvent(getID(), oldID));
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.core.IContainer#getConnectNamespace()
   */
  public Namespace getConnectNamespace() {
    return IDFactory.getDefault().getNamespaceByName(TrivialNamespace.NAME);
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.core.IContainer#getConnectedID()
   */
  public ID getConnectedID() {
    return targetID;
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.core.identity.IIdentifiable#getID()
   */
  public ID getID() {
    return containerID;
  }

  /*
   * (non-Javadoc)
   *
   * @see org.eclipse.ecf.core.AbstractContainer#getAdapter(java.lang.Class)
   */
  public Object getAdapter(Class serviceType) {
    /*
     * See AbstractContainer.getAdapter() implementation.
     */
    return super.getAdapter(serviceType);
  }
}
TOP

Related Classes of org.eclipse.ecf.internal.examples.provider.trivial.container.TrivialContainer

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.