3.2. Run-Time Model

A run-time model is used by the run-time system of the XL programming language. It describes the properties of relational data sources at run-time, i.e., it provides methods for obtaining information and performing operations on relational data sources.

A run-time model is represented by an instance of the interface de.grogra.xl.runtime.Model, together with instances of de.grogra.xl.runtime.Extent and de.grogra.xl.runtime.Property which are returned by methods of Model. While a Model provides methods for obtaining information and performing operations which are common to a set of relational data sources with an equal structure, an Extent provides methods which operate on a single instance of these data sources. E.g., a Model could represent features of XML documents in general, while an Extent of this model represents a single XML document. Property instances represent properties at run-time. The exact meaning of these classes and interfaces will be described in the sequel in the context of their usage.

The instance of Model that is responsible for a specific part of a programme is determined as follows: At compile-time, a compile-time model is associated with that specific part. The invocation of the method getRuntimeName on this compile-time model returns a name, this name m is used at run-time in order to obtain the corresponding instance of de.grogra.xl.runtime.Model: If c is the class-loader of the class containing the specific part, then the run-time model is obtained by the invocation ModelFactory.getInstance().modelForName( m, c).

3.2.1. Current Extent

The current Extent for a run-time model r is obtained by the invocation r.getCurrentExtent(). If the current extent is to be determined and this method returns null, a NoCurrentExtentException is thrown.

3.2.2. Current Queue Collection

The current QueueCollection of an extent e is obtained by the invocation e.getQueues(x), where x is the current extended state (Chapter 4, Extended State of the Virtual Machine). If the current queue collection is to be determined and this method returns null, a NoActiveTransformationException is thrown. The current queue collection of a run-time model is determined by first determining the current extent of the run-time model and then determining its current queue-collection.