blob: bd3b6e906f488bbd4593121641ed090aa3b86011 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2018 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* SAP AG - initial API and implementation
******************************************************************************/
package org.eclipse.ocl.examples.impactanalyzer;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.ocl.examples.eventmanager.EventManager;
/**
* Used to observe and filter for model changes that affect derived properties
* defined by OCL expression. Construct an instance for a single
* {@link EStructuralFeature} or all properties of an {@link EPackage} and
* {@link #subscribe(EventManager) subscribe} for change notifications at an
* {@link EventManager}. When changes affecting a derived property's value are
* received, the actual changes are determined, and new {@link Notification}s
* are created for those objects on which the derived property's value did
* change.
*
* @author Axel Uhl
*/
public interface DerivedPropertyNotifier {
/**
* Activates the services of this notifier for the scope observed by the <code>eventManager</code>.
* If the event manager is {@link EventManager#setActive(boolean) set inactive}, no notifications
* are created by this notifier until the event manager is activated again.
*/
public abstract void subscribe(EventManager eventManager);
/**
* Deactivates this notifier by unregistering all its internal adapters from the
* <code>eventManager</code> again.
*/
public abstract void unsubscribe(EventManager eventManager);
}