blob: aa6d3dcf27fbf45309ea12ccc1d63d4f9fd4fa03 [file] [log] [blame]
/**
* Copyright (c) 2011, 2015 - Lunifera GmbH (Gross Enzersdorf, Austria), Loetz GmbH&Co.KG (69115 Heidelberg, Germany)
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* Florian Pirchner - Initial implementation
*/
package org.eclipse.osbp.runtime.common.state;
import org.eclipse.osbp.runtime.common.hash.HashUtil;
/**
* Different participants may share data.
* <p>
* For instance an {@link IDataState}. In a business application groups of views
* may share the same data like beans. And other groups of views will share
* their own data. A shared environment is an abstraction above this group.
* Views may share the {@link ISharedStateContext} and will also share their
* properties and data.
*
*/
public interface ISharedStateContext {
/**
* Returns the unique id of the environment.
*
* @return the id
*/
String getId();
/**
* Set and key value pair to be shared in the environment.
*
* @param key
* the key
* @param value
* the value
*/
void setProperty(Object key, Object value);
/**
* Returns the value for the key or <code>null</code> if no value
* registered.
*
* @param key
* the key
* @return the property
*/
Object getProperty(Object key);
/**
* Returns all keys that are registered in the environment.
*
* @return the property keys
*/
Object[] getPropertyKeys();
/**
* Returns the dirty state that contains all dirty objects for the shared
* state.
*
* @return the dirty state
*/
IDataState getDirtyState();
/**
* Returns the "used state" that contains all objects that are currently
* used for the shared state.
*
* @return the global data state
*/
IDataState getGlobalDataState();
/**
* Returns an immutable compound state that handles the global and dirty
* state.
*
* @return the dirty aware global state
*/
IDataState getDirtyAwareGlobalState();
/**
* Makes the given dto undirty.
*
* @param key
* the key
* @param dto
* the dto
*/
void makeUndirty(Object key, Object dto);
/**
* Adds a new "not persistent" entry. The key will be calculated using the
* {@link HashUtil}.
* <p>
* The object will be put into the dirtyState but not the global state.
*
* @param newEntry
* the new entry
*/
void addNewTransient(Object newEntry);
}