/******************************************************************************* * 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.sharedobject; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.ecf.core.identity.ID; import org.eclipse.ecf.core.util.Event; /** * Core interface for implementing components that exist within * {@link ISharedObjectContainer} * */ public interface ISharedObject extends IAdaptable { /** * Initialize this ISharedObject. The ISharedObjectContainer for this * ISharedObject must call this method with a non-null instance of * ISharedObjectConfig. ISharedObject implementations can use this * initialization to perform any initialization necessary prior to receiving * any events (via handleEvent/s). Note that the ISharedObjectContext * provided via the ISharedObjectConfig.getSharedObjectContext() method is * not guaranteed to allow any method calls until after this init() method * call has completed. * * @param initData * the initialization data passed by the ISharedObjectContainer * upon initialization * @exception SharedObjectInitException * thrown by ISharedObject to halt initialization. * ISharedObjectContainers must respond to such an exception * by halting the addition of the ISharedObject instance and * treating it as <b>not </b> in the container. */ public void init(ISharedObjectConfig initData) throws SharedObjectInitException; /** * Handle Event passed to this IEventHandler. * * @param event * the Event for the implementer to handle */ public void handleEvent(Event event); /** * Handle Events passed to this IEventHandler. * * @param events * the Events [] for the implementer to handle */ public void handleEvents(Event[] events); /** * Method called by the ISharedObjectContainer upon ISharedObject * destruction. Once this method is called, no more Events will be passed to * a ISharedObject until the init method is called again. * * @param containerID * the ID of the container that is disposing this ISharedObject */ public void dispose(ID containerID); }