package org.juxtapose.streamline.producer;
import java.util.HashSet;
import org.juxtapose.streamline.stm.ReferenceLink;
import org.juxtapose.streamline.stm.TemporaryController;
import org.juxtapose.streamline.util.ISTMEntrySubscriber;
import org.juxtapose.streamline.util.ISTMEntry;
/**
* @author Pontus J�rgne
* Feb 26, 2012
* Copyright (c) Pontus J�rgne. All rights reserved
* A producer is associated with a published data. The producer is based on a temporary controller and is started after the initial transaction.
* The producer is stopped when the published data is disposed. If the same published data is requested again, a new instance of the producer is instantiated and started.
*/
public interface ISTMEntryProducer extends ISTMEntrySubscriber
{
public void init();
public void dispose();
public boolean isDisposed();
public void addDataReferences( String inFieldKey, ReferenceLink inLink );
public ReferenceLink removeReferenceLink( String inField );
void referencedDataUpdated( final String inFieldKey, final ReferenceLink inLink, final ISTMEntry inData );
public void addDependency( String inKey, TemporaryController inController );
public TemporaryController removeDependency( String inDataKey );
public void setPriority( int inPriority );
public int getPriority( );
public HashSet<TemporaryController> getDependencyControllers();
}