Author: aadamchik Date: Fri Jan 28 14:27:36 2011 New Revision: 1064693 URL: http://svn.apache.org/viewvc?rev=1064693&view=rev Log: CAY-1532 Import cayenne-lifecycle from sandbox
version labels, removing unused non-public class Removed: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/ref/ReferenceableBatchFaultMap.java Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/Auditable.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableChild.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableOperation.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/cache/CacheGroups.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/cache/CacheInvalidationFilter.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSet.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSetFilter.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/PropertyChange.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/ref/Referenceable.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/ref/ReferenceableHandler.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationship.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipBatchFaultingStrategy.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipFaultingStrategy.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipFilter.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/UuidBatchFault.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/UuidFault.java cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/uuid/UuidCoder.java Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/Auditable.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/Auditable.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/Auditable.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/Auditable.java Fri Jan 28 14:27:36 2011 @@ -31,6 +31,8 @@ import org.apache.cayenne.lifecycle.ref. * A built-in annotation that adds auditable behavior to DataObjects. All Auditable * objects must be also tagged with {@link Referenceable} annotation, as audit records are * based on UUIDs. + * + * @since 3.1 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableChild.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableChild.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableChild.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableChild.java Fri Jan 28 14:27:36 2011 @@ -29,6 +29,8 @@ import java.lang.annotation.Target; * A built-in annotation used to tag an object that is not auditable on its own, but whose * changes should be tracked together with changes of another ("parent") object. This * annotation allows to group changes in a closely related subtree of objects. + * + * @since 3.1 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableOperation.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableOperation.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableOperation.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/audit/AuditableOperation.java Fri Jan 28 14:27:36 2011 @@ -20,8 +20,10 @@ package org.apache.cayenne.lifecycle.aud /** * An enum of auditable operations. + * + * @since 3.1 */ public enum AuditableOperation { - INSERT, UPDATE, DELETE; + INSERT, UPDATE, DELETE; } Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/cache/CacheGroups.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/cache/CacheGroups.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/cache/CacheGroups.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/cache/CacheGroups.java Fri Jan 28 14:27:36 2011 @@ -28,6 +28,8 @@ import java.lang.annotation.Target; /** * A built-in annotation that provides declarative cache management for persistent * objects. + * + * @since 3.1 */ @Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/cache/CacheInvalidationFilter.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/cache/CacheInvalidationFilter.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/cache/CacheInvalidationFilter.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/cache/CacheInvalidationFilter.java Fri Jan 28 14:27:36 2011 @@ -38,6 +38,8 @@ import org.apache.cayenne.query.Query; /** * A {@link DataChannelFilter} that invalidates cache groups defined for mapped entities * via {@link CacheGroups} annotations. + * + * @since 3.1 */ public class CacheInvalidationFilter implements DataChannelFilter { Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSet.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSet.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSet.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSet.java Fri Jan 28 14:27:36 2011 @@ -28,6 +28,8 @@ import org.apache.cayenne.graph.GraphDif * stage. The changes are presented in a more usable form compared to the internal Cayenne * representation as {@link GraphDiff}. One or more changes to the same property of the * same object are all combined in a single {@link PropertyChange} instance. + * + * @since 3.1 */ public interface ChangeSet { Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSetFilter.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSetFilter.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSetFilter.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/ChangeSetFilter.java Fri Jan 28 14:27:36 2011 @@ -32,6 +32,8 @@ import org.apache.cayenne.query.Query; * within the scope of the filter * {@link #onSync(ObjectContext, GraphDiff, int, DataChannelFilterChain)} method. The * filter is intended to be used by pre-commit and post-commit listeners. + * + * @since 3.1 */ public class ChangeSetFilter implements DataChannelFilter { Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/GenericChangeSet.java Fri Jan 28 14:27:36 2011 @@ -34,6 +34,8 @@ import org.apache.cayenne.graph.GraphDif * Synchronization note: While this class is thread safe, but is not generally intended * for use in multi-threaded manner. It is common to use it within a single transaction * thread. + * + * @since 3.1 */ public class GenericChangeSet implements ChangeSet { Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/PropertyChange.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/PropertyChange.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/PropertyChange.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/changeset/PropertyChange.java Fri Jan 28 14:27:36 2011 @@ -20,6 +20,8 @@ package org.apache.cayenne.lifecycle.cha /** * A change to a single object property. + * + * @since 3.1 */ public class PropertyChange { Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/ref/Referenceable.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/ref/Referenceable.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/ref/Referenceable.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/ref/Referenceable.java Fri Jan 28 14:27:36 2011 @@ -26,18 +26,21 @@ import java.lang.annotation.RetentionPol import java.lang.annotation.Target; /** - * A built-in mixin annotation that results in a UUID property being injected - * into annotated DataObject. + * A built-in mixin annotation that results in a UUID property being injected into + * annotated DataObject. + * + * @since 3.1 */ -@Target( { ElementType.TYPE }) +@Target( { + ElementType.TYPE +}) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited public @interface Referenceable { - /** - * A name of UUID property injected into a DataObject, making it - * referenceable. - */ - public final String UUID_PROPERTY = "cayenne:uuid"; + /** + * A name of UUID property injected into a DataObject, making it referenceable. + */ + public final String UUID_PROPERTY = "cayenne:uuid"; } Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/ref/ReferenceableHandler.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/ref/ReferenceableHandler.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/ref/ReferenceableHandler.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/ref/ReferenceableHandler.java Fri Jan 28 14:27:36 2011 @@ -35,6 +35,8 @@ import org.apache.cayenne.map.ObjEntity; * A {@link MixinHandler} that injects {@link Referenceable#UUID_PROPERTY} into * DataObjects and provides methods to lookup objects by UUID, as well as read UUID of the * existing objects. + * + * @since 3.1 */ public class ReferenceableHandler { Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationship.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationship.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationship.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationship.java Fri Jan 28 14:27:36 2011 @@ -30,6 +30,8 @@ import java.lang.annotation.Target; * attached. When a mixin is modeled via its own set of entities, this annotation is * placed on a "mixin" entity class, telling Cayenne to inject related entity object in a * mixin entity, resolved based on the object UUID "FK". + * + * @since 3.1 */ @Target( { ElementType.TYPE Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipBatchFaultingStrategy.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipBatchFaultingStrategy.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipBatchFaultingStrategy.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipBatchFaultingStrategy.java Fri Jan 28 14:27:36 2011 @@ -20,6 +20,9 @@ package org.apache.cayenne.lifecycle.rel import org.apache.cayenne.DataObject; +/** + * @since 3.1 + */ public class MixinRelationshipBatchFaultingStrategy implements MixinRelationshipFaultingStrategy { @@ -76,7 +79,7 @@ public class MixinRelationshipBatchFault // TODO: I guess we'll need to cache this metadata for performance if we are to // support inheritance lookups, etc. - + return annotation.value(); } } Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipFaultingStrategy.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipFaultingStrategy.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipFaultingStrategy.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipFaultingStrategy.java Fri Jan 28 14:27:36 2011 @@ -22,10 +22,12 @@ import org.apache.cayenne.DataObject; /** * An abstract strategy for resolving mixin relationships. + * + * @since 3.1 */ public interface MixinRelationshipFaultingStrategy { - void afterObjectLoaded(DataObject object); + void afterObjectLoaded(DataObject object); - void afterQuery(); + void afterQuery(); } Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipFilter.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipFilter.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipFilter.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/MixinRelationshipFilter.java Fri Jan 28 14:27:36 2011 @@ -30,47 +30,54 @@ import org.apache.cayenne.graph.GraphDif import org.apache.cayenne.query.Query; /** - * A {@link DataChannelFilter} that implements mixin relationships faulting - * functionality. + * A {@link DataChannelFilter} that implements mixin relationships faulting functionality. + * + * @since 3.1 */ public class MixinRelationshipFilter implements DataChannelFilter { - private MixinRelationshipFaultingStrategy faultingStrategy; + private MixinRelationshipFaultingStrategy faultingStrategy; - @Override - public void init(DataChannel channel) { - this.faultingStrategy = createFaultingStrategy(); - } - - protected MixinRelationshipFaultingStrategy createFaultingStrategy() { - return new MixinRelationshipBatchFaultingStrategy(); - } - - @Override - public GraphDiff onSync(ObjectContext context, GraphDiff diff, - int syncType, DataChannelFilterChain chain) { - // noop for now - return chain.onSync(context, diff, syncType); - } - - @Override - public QueryResponse onQuery(ObjectContext context, Query query, - DataChannelFilterChain chain) { - - try { - return chain.onQuery(context, query); - } finally { - faultingStrategy.afterQuery(); - } - } - - /** - * A lifecycle callback method that delegates object post load event - * processing to the underlying faulting strategy. - */ - @PostLoad(entityAnnotations = MixinRelationship.class) - @PostPersist(entityAnnotations = MixinRelationship.class) - void postLoad(DataObject object) { - faultingStrategy.afterObjectLoaded(object); - } + @Override + public void init(DataChannel channel) { + this.faultingStrategy = createFaultingStrategy(); + } + + protected MixinRelationshipFaultingStrategy createFaultingStrategy() { + return new MixinRelationshipBatchFaultingStrategy(); + } + + @Override + public GraphDiff onSync( + ObjectContext context, + GraphDiff diff, + int syncType, + DataChannelFilterChain chain) { + // noop for now + return chain.onSync(context, diff, syncType); + } + + @Override + public QueryResponse onQuery( + ObjectContext context, + Query query, + DataChannelFilterChain chain) { + + try { + return chain.onQuery(context, query); + } + finally { + faultingStrategy.afterQuery(); + } + } + + /** + * A lifecycle callback method that delegates object post load event processing to the + * underlying faulting strategy. + */ + @PostLoad(entityAnnotations = MixinRelationship.class) + @PostPersist(entityAnnotations = MixinRelationship.class) + void postLoad(DataObject object) { + faultingStrategy.afterObjectLoaded(object); + } } Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/UuidBatchFault.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/UuidBatchFault.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/UuidBatchFault.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/UuidBatchFault.java Fri Jan 28 14:27:36 2011 @@ -39,6 +39,8 @@ import org.apache.cayenne.query.SelectQu /** * Provides lazy faulting functionality for a map of objects identified by UUID. + * + * @since 3.1 */ class UuidBatchFault { Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/UuidFault.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/UuidFault.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/UuidFault.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/relationship/UuidFault.java Fri Jan 28 14:27:36 2011 @@ -21,6 +21,9 @@ package org.apache.cayenne.lifecycle.rel import org.apache.cayenne.Fault; import org.apache.cayenne.Persistent; +/** + * @since 3.1 + */ class UuidFault extends Fault { private String uuid; Modified: cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/uuid/UuidCoder.java URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/uuid/UuidCoder.java?rev=1064693&r1=1064692&r2=1064693&view=diff ============================================================================== --- cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/uuid/UuidCoder.java (original) +++ cayenne/main/trunk/framework/cayenne-lifecycle/src/main/java/org/apache/cayenne/lifecycle/uuid/UuidCoder.java Fri Jan 28 14:27:36 2011 @@ -38,6 +38,8 @@ import org.apache.cayenne.util.Util; /** * An object to encode/decode persistent objects UUIDs. + * + * @since 3.1 */ public class UuidCoder {