package com.sap.runlet.interpreter; import behavioral.actions.Statement; import com.sap.runlet.abstractinterpreter.LinkContainer; import com.sap.runlet.abstractinterpreter.repository.Repository; import com.sap.runlet.abstractinterpreter.util.ModelAdapter; import data.classes.Association; import data.classes.AssociationEnd; import data.classes.ClassTypeDefinition; import data.classes.NativeImpl; import data.classes.SapClass; import data.classes.SignatureImplementation; import data.classes.TypeDefinition; import dataaccess.expressions.Expression; /** * Objects are structurally connected by links which are typed by associations. Each link has two * ends, at each of which it has one object whose type is a value or entity class. The type of an * object at an end has to conform with the type specified by the association end's type. * <p> * * A link container is an in-memory cache of links created by an * {@link RunletInterpreter interpreter} and those loaded from a {@link Repository}. The link * container keeps track of the entities for which it has authoritative information regarding the * links attaching to them for a given snapshot and for a given remote association end. It also does * this for those entities/ends where no links exist in a given snapshot, just to ensure that if * asked again it knows that the empty link set is the authoritative answer and no round-trip to the * repository is required. * * @author Axel Uhl (D043530) */ public class RunletLinkContainer extends LinkContainer<Association, AssociationEnd, SapClass, TypeDefinition, ClassTypeDefinition, Statement, Expression, SignatureImplementation, RunletStackFrame, NativeImpl, RunletInterpreter> { public RunletLinkContainer(Repository<Association, AssociationEnd, SapClass, TypeDefinition, ClassTypeDefinition> repository, ModelAdapter<Association, AssociationEnd, SapClass, TypeDefinition, ClassTypeDefinition> modelAdapter) { super(modelAdapter, repository); } }