Package com.arsdigita.versioning

Provides for versioning of data objects.

See:
          Description

Interface Summary
Operation.Switch  
VersioningServlet.GraphPrinter Prints the versioning dependency graph to the specified writer.
VersioningServlet.RollbackLogger Logs operations performed during rollback.
VersioningServlet.VersionedObjects An iterator over a collection of versioned oids.
 

Class Summary
Difference Difference
HistoryCollection Encapsulates a query that returns all the tagged transactions for an object.
Initializer Sets up observers and initializes a few disconnected data objects needed by versioning.
Operation Operation
Operation.Type  
Tag Tag
TagCollection TagCollection
Transaction Transaction
TransactionCollection A collection of Transactions.
VersionedACSObject Deprecated. with no replacement.
VersioningConfig  
VersioningServlet This servlet, along with a couple of helper JSPs, is used for debugging.
Versions This class provides methods for rolling back to a previous point in the versioning log.
 

Exception Summary
VersioningException This is an unchecked exception.
 

Package com.arsdigita.versioning Description

Provides for versioning of data objects.

We refer to the previous implementations of the versioning package as the "old versioning". This includes implementations up to and including 5.2.x. If you have used the old versioning before, there is a number of key differences between old versioning and this implementation that you may want to be aware of.

The old versioning operates on the domain object level. Only those domain objects that subclass VersionedACSObject used to be versioned.

This implementation operates on the data object level. In order to make an object type versioned, its PDL definition must start with the "versioned" keyword, like so:

versioned object type Quux {
   BigInteger[1..1] id  = quuces.id INTEGER;

   String[1..1]   name  = quuces.name VARCHAR;

   object type (id);
}

Object types may also be versioned implicitly due to semantic constraints imposed by marking some other object type as "versioned". For example, a subtype of a versioned object type is also versioned.

object type GreatQuux extends Quux {
   String[0..1] email  = great_quuces.email VARCHAR;

   component Foobar[0..n] foobars = join great_quuces.id
                                      to foobars.great_quux_id;
   reference key(great_quuces.id);
}

In this example, the GreatQuux object type is versioned, because it extends a versioned type.

Components of a versioned type are also versioned. In the above example, the Foobar type is versioned, because it is a component of the versioned object type GreatQuux.

A more complete description of the supported PDL syntax and its intended semantics is outside the scope of this brief description. Please refer to the Developer Guide for further details.

About the only carryover from the old versioning is the VersionedACSObject class. It has been marked as deprecated. It may be removed in a future release. You should not be using or relying on any of the API provided by this class.

See Also:
com.arsdigita.persistence


Copyright (c) 2004 Red Hat, Inc. Corporation. All Rights Reserved. Generated at July 21 2004:2337 UTC