01: /*
02: * All content copyright (c) 2003-2006 Terracotta, Inc., except as may otherwise be noted in a separate copyright notice. All rights reserved.
03: */
04: package com.tc.object.dna.api;
05:
06: import com.tc.object.ObjectID;
07:
08: /**
09: * Represents the data of an object. Implementations of this interface are used to extract data from and apply
10: * (new/updated) data to objects. It's like serialization data, but it allows deltas to be extracted and applied.
11: *
12: * @author Orion Letizi
13: */
14: public interface DNA {
15: /** Array size constant indicating no array size */
16: public static final int NULL_ARRAY_SIZE = -1;
17:
18: /** Version constant indicating no version */
19: public static final int NULL_VERSION = -1;
20:
21: /**
22: * Get the version of this DNA based on the global transaction ID,
23: * may be {@link #NULL_VERSION}.
24: */
25: public long getVersion();
26:
27: /**
28: * Determine whether this DNA has an array length
29: * @return True if has length
30: */
31: public boolean hasLength();
32:
33: /**
34: * Get length of the array in the DNA or {@link #NULL_ARRAY_SIZE} if it
35: * has no array length.
36: * @return Array length or {@link #NULL_ARRAY_SIZE}
37: */
38: public int getArraySize();
39:
40: /**
41: * Determine whether this DNA is a whole object or just a delta
42: * @return true if the DNA represents a change of an object and
43: * false if the DNA represents the entire object.
44: */
45: public boolean isDelta();
46:
47: /**
48: * Get the class name of the type for this piece of DNA
49: * @return Class name
50: */
51: public String getTypeName();
52:
53: /**
54: * Gets the id of the object represented by this DNA strand. The id is globally unique.
55: * <p>
56: * TODO: Potentially change the type from long to something which can be a composite key. We want to be able to
57: * generate new ids in the local VM without making a round trip to the object service.
58: *
59: * @return The id in question
60: * @throws DNAException Exception thrown if the id cannot be resolved from the DNA strand.
61: */
62: public ObjectID getObjectID() throws DNAException;
63:
64: /**
65: * If this object is an inner class, get the parent object identifier
66: * @return The parent object if one exists
67: * @throws DNAException Exception thrown if the id cannot be resolved
68: */
69: public ObjectID getParentObjectID() throws DNAException;
70:
71: /**
72: * Gets a DNACursor to spin through the field values.
73: *
74: * @return The cursor
75: */
76: public DNACursor getCursor();
77:
78: /**
79: * Get defining classloader name
80: * @return Classloader name
81: */
82: public String getDefiningLoaderDescription();
83: }
|