|
GigaSpaces XAP 7.0 API | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object com.j_spaces.core.client.ExternalEntry
public class ExternalEntry
ExternalEntry is special kind of JavaSpace entry that allows users to fill
in data using simple methods to form standard Jini entry without implementing
the Entry Interface or define public attribute.
The ExternalEntry objects can be used with all Space operations � write, read, take,
notify, update, writeMultiple, readMultiple, writeMultiple, updateMultiple and takeMultiple.
See the example below demonstrating ExternalEntry construction:
The following Entry:
class Message {
public Integer id;
public String content;
public Message(Integer id, String content) {
this.id = id;
this.content = content;
}
}
Message m = new Message( 1, "free text");
Can be defined as ExternalEntry in the following way:
String[] fieldNames = {"id", "content"};
Object[] fieldValues = { 1, "free text"};
String[] fieldsTypes = { Integer.class.getName(), String.class.getName()};
ExternalEntry xe = new ExternalEntry(Message.class.getName(), fieldValues, fieldNames, fieldsTypes)
;
Notice: When using the ExternalEntry it is not always required to
assign the class field names and types array.
It should be done only when
introducing a new Entry class to the Space, see ExternalEntry(String, Object[])
.
ExternalEntry supports entry UID based operation.
The following example shows how to read entries from space using UIDs:
Lease ls = space.write(xe, null, Lease.FOREVER);
ExternalEntry result = (ExternalEntry)space.read(new ExternalEntry(((LeaseProxy)ls).getUID()),
null, Long.MAX_VALUE);
UID support can also be used with readMultiple/takeMultiple/updateMultiple
operations. See the following example :
5 entries were written into the space. The Lease objects of those entries are kept in array.
Lease[] leaseArray = new Lease[5];
.....
// Now we will construct array of the UIDs:
String[] ids =
{((LeaseProxy)leaseArray[0]).getUID(), ((LeaseProxy)leaseArray[1]).getUID(),
((LeaseProxy)leaseArray[2]).getUID(), ((LeaseProxy)leaseArray[3]).getUID(),
((LeaseProxy)leaseArray[4]).getUID()};
Using Multiple UID ExternalEntry constructor
ExternalEntry template = new ExternalEntry(ids);
Entry[] res = space.takeMultiple(template, null, 5);
Please note, that readMultiple/takeMultiple
are synchronous
operations that return immediately.
After the completion of the above operations the res
variable will
contain an array that will have maximum 5 entries.
When setting the m_ReturnOnlyUids
flag to true
together with the readMutiple operation
the res
variable will contain one ExternalEntry object.
This ExternalEntry will contain at its m_MultipleUIDs
field array of the relevant entry UID.
All other fields of this ExternalEntry will be null.
Calling to readMultiple with ExternalEntry that includes UIDs
with m_ReturnOnlyUids
flag set to false
will return the Entries.
This approach should be used when large number of entries need to read from the space.
Remark:
If an ExternalEntry object constructed and used to share data with Java application (e.g. C++ or .Net application)
that is using regular Entry object (implementing the Entry interface).
The attributes defined at the ExternalEntry field's array should be ordered according their names in alphabetically ascending order.
The Class field types and the fields values array should correspond to the fields names order.
For examples � consider the following Entry class defined at the Java application:
package com.example;
public MyClass implements Entry {
public String A;
public Integer D;
public Long B;
public String C;
MyClass(){}
}
At the C++ or .Net application the ExternalEntry should be constructed in the following way (the following is a .Net example):
StringArray fNames = null;
StringArray fTypes = null;
ObjectArray fValues = null;
ObjectArray fValuesNull = null;
fTypes = new StringArray( 4 );
fNames = new StringArray( 4 );
fValuesNull = new ObjectArray(4 );
fValues = new ObjectArray(4 );
fValuesNull[ 0 ] = null;
fValuesNull[ 1 ] = null;
fValuesNull[ 2 ] = null;
fValuesNull[ 3 ] = null;
// Here the field names should be ordered in alphabetically ascending order
fNames[ 0 ] = "A";
fNames[ 1 ] = "B";
fNames[ 2 ] = "C";
fNames[ 3 ] = "D";
fTypes[ 0 ] = "java.lang.String";
fTypes[ 1 ] = "java.lang.Long";
fTypes[ 2 ] = "java.lang.String";
fTypes[ 3 ] = "java.lang.Integer";
fValues[ 0 ] = new java.lang.String("A") ;
fValues[ 1 ] = new java.lang.Long(10) ;
fValues[ 2 ] = new java.lang.String("C") ;
fValues[ 3 ] = new java.lang.Integer(10) ;
// The snapshot call will introduce the class to the space in case it was not done by the Java application.
// It will also introduce it to the client classes meta data cache
ExternalEntry ex1 = new ExternalEntry("com.example.MyClass", fValuesNull, fNames, fTypes);
space.snapshot(ex1);
ExternalEntry ex2 = new ExternalEntry("com.example.MyClass", fValues);
space.write(ex2 , null , LeaseImpl.FOREVER);
Field Summary | |
---|---|
short |
_objectFormat
The Object type represented by this ExternalEntry; one of ObjectFormat |
boolean[] |
_primitiveFields
|
boolean |
_returnTrueType
|
String |
m_ClassName
The Entry class name. |
short[] |
m_ExtendedMatchCodes
Codes for extending matching. |
String[] |
m_FieldsNames
The Entry field names array. |
String[] |
m_FieldsTypes
The Entry field Types. |
Object[] |
m_FieldsValues
The Entry field values. |
boolean[] |
m_IndexIndicators
Contains array of boolean values that indicate which of the class fields are index fields. |
boolean |
m_isFifo
FIFO Indication, if true the entry will be returned in a FIFO way. |
boolean |
m_isTransient
If true will be transient. |
String[] |
m_MultipleUIDs
Contains array of UIDs. |
boolean |
m_NOWriteLeaseMode
If true � Lease object would not return from the write/writeMultiple operations. |
String |
m_PrimaryKeyName
The field name representing the primary key. |
Object[] |
m_RangeValues
range values- correspond to m_ExtendedMatchCodes, this is UP-TO and include values. |
boolean[] |
m_RangeValuesInclusion
boolean array that indicates for each range value if it is included in range or not |
boolean |
m_Replicatable
Contains a tag that indicates whether the class should be replicated or not. |
boolean |
m_ReturnOnlyUids
If true readMultiple/takeMultiple return only UIDs. |
String[] |
m_SuperClassesNames
The Entry super classes names array. |
long |
m_TimeToLive
Read only field. |
String |
m_UID
Store Entry Unique ID. |
int |
m_VersionID
Contains a version number that is incremented each time the entry is updated. |
String |
routingFieldName
The field name representing routing field name. |
Constructor Summary | |
---|---|
|
ExternalEntry()
Default constructor required for java.io.Externalizable interface. |
protected |
ExternalEntry(ExternalEntry entry)
Copy constructor, creates a copy of this entry. |
|
ExternalEntry(String entryUID)
Constructs an ExternalEntry object that will be used as a template. |
|
ExternalEntry(String[] multipleUIDs)
Constructs an ExternalEntry object that will be used as a template for readMultiple/takeMultiple operations. |
|
ExternalEntry(String className,
Object[] fieldsValues)
Constructs an ExternalEntry object. |
|
ExternalEntry(String className,
Object[] fieldsValues,
String[] fieldsNames)
Constructs an ExternalEntry object. |
|
ExternalEntry(String className,
Object[] fieldsValues,
String[] fieldsNames,
String[] fieldsTypes)
Constructs an ExternalEntry object. |
Method Summary | |
---|---|
Object |
clone()
Shallow clone |
boolean |
equals(Object obj)
Checks for identical UIDs and field values. |
static boolean |
equals(Object o1,
Object o2)
General equals method that compares two objects considering null values and multi-dimensional arrays. |
String |
getClassName()
Entry class Name. |
String |
getCodebase()
Entry-class codebase. |
net.jini.core.entry.Entry |
getEntry(IJSpace space)
Converts to Entry object. |
com.j_spaces.core.ITypeDescriptor.Type |
getEntryType()
|
short |
getExtendedMatchCode(int index)
Get extended match code at specified index |
short[] |
getExtendedMatchCodes()
Matching codes array. |
ExternalEntry |
getExternalEntry(IJSpace space)
Convert to Entry object or ExternalEntry. |
int |
getFieldPosition(String fieldName)
Return the the field position in the FieldsValues array. |
String[] |
getFieldsNames()
Entry fields names. |
String[] |
getFieldsTypes()
Entry Fields Types. |
Object[] |
getFieldsValues()
Entry field Values. |
String |
getFieldType(String fieldName)
Retries the given field its type class name. |
Object |
getFieldValue(int index)
Retrieves the given field value by position. |
Object |
getFieldValue(String fieldName)
Retrieves the given field value. |
short |
getFormat()
Returns one of the applicable Object formats ObjectFormat . |
boolean[] |
getIndexIndicators()
Indexed fields array indication. |
Map.Entry |
getMapEntry()
Returns a Map.Entry (key-value pair) representation of this entity. |
String[] |
getMultipleUIDs()
Array of Entry UIDs. |
Object |
getObject(IJSpace space)
Converts to object. |
String |
getPrimaryKeyName()
The field name representing the primary key. |
boolean[] |
getPrimitiveFields()
|
Object |
getRangeValue(int index)
Get range value at specified index |
boolean |
getRangeValueInclusion(int index)
Get range value inclusion indicator at specified index |
Object[] |
getRangeValues()
Entry range Values. |
String |
getRoutingFieldName()
Get the routing field name that was selected to be the first index for partition. |
String[] |
getSuperClassesNames()
Entry Super Classes Names. |
long |
getTimeToLive()
Entry time to live. |
String |
getUID()
Entry UID. |
int |
getVersion()
Ascending version of this Entry Inherited from IGSEntry and is equivalent to calling
getVersionID() |
int |
getVersionID()
Entry Version ID. |
boolean |
hasExtendedInfo()
|
int |
hashCode()
Entry UID hashCode. |
boolean |
isExtended()
Returns true if external entry has extended matching |
boolean |
isFifo()
FIFO Indication. |
boolean |
isIndexedField(String fieldName)
Checks if the given field is indexed. |
boolean |
isNOWriteLeaseMode()
Check write mode. |
boolean |
isReplicatable()
Check if replicatable, applicable only when used with partial replication. |
boolean |
isReturnOnlyUids()
ReturnOnlyUids indication. |
boolean |
isTransient()
Check if Transient entry. |
void |
makePersistent()
Construct Persistent Entry. |
void |
makeTransient()
Construct Transient Entry. |
void |
readExternal(ObjectInput in)
Restore the class contents by calling the methods of DataInput for primitive types and readObject for objects, strings and arrays. |
void |
setClassName(String className)
This method should be used for new Entry classes introduced to the space. |
void |
setExtendedMatchCodes(short[] extendedMatchCodes)
The matching codes. |
void |
setFieldsNames(String[] fieldsNames)
Set the entry field names. |
void |
setFieldsTypes(String[] fieldsTypes)
Entry fields types to set. |
void |
setFieldsValues(Object[] fieldsValues)
Entry field values to set. |
Object |
setFieldValue(int index,
Object value)
Associates the specified value with the specified field position. |
Object |
setFieldValue(String fieldName,
Object value)
Associates the specified value with the specified field. |
void |
setFifo(boolean fifo)
Set the FIFO indication. |
void |
setFormat(short format)
Sets the Object type the ExternalEntry represents, corresponding to one of the applicable ObjectFormat attributes. |
void |
setIndexIndicators(boolean[] indexIndicators)
indexed fields array indication to set. |
void |
setMultipleUIDs(String[] multipleUIDs)
Array of Entry UIDs to read. |
void |
setNOWriteLeaseMode(boolean noWriteLeaseMode)
Set true do not return Lease object after write,
false return Lease object after write. |
void |
setPrimaryKeyName(String fieldName)
Sets the field name representing the primary key. |
void |
setRangeValues(Object[] rangeValues)
Entry range values to set. |
void |
setReplicatable(boolean replicatable)
Set the replicatable indication value. |
void |
setReturnOnlyUids(boolean returnOnlyUids)
set the ReturnOnlyUids indication. |
void |
setRoutingFieldName(String routingFieldName)
Set the routing field name that was selected to be the first index for partition. |
void |
setSuperClassesNames(String[] superClassesNames)
set the Super Classes Names Array. |
void |
setTimeToLive(long timeToLive)
Set the time left for this entry to live. |
void |
setTransient(boolean isTransient)
Sets the entry to be transient (true) or persistent (false). |
void |
setUID(String m_uid)
Set Entry UID. |
void |
setVersionID(int versionID)
Entry Version ID. |
String |
toString()
Returns a string representation of the ExternalEntry . |
void |
writeExternal(ObjectOutput out)
Save the object contents by calling the methods of DataOutput for its primitive values or calling the writeObject method of ObjectOutput for objects, strings, and arrays. |
Methods inherited from class java.lang.Object |
---|
finalize, getClass, notify, notifyAll, wait, wait, wait |
Field Detail |
---|
public String m_UID
Store Entry Unique ID. If this field is not null then this UID will be used by the Space, otherwise the space will generate it automatically. When entry have all its fields null (null template) and its UID is assigned, matching will be done using the UID only. The UID is a String based identifier and composed of the following parts: - Class information � class Hashcode and name size - Space node name � At clustered environment combined from �container-name :space name�. At non-clustered environment combined from dummy name. - Timestamp - Counter
public String m_ClassName
public String[] m_SuperClassesNames
public String[] m_FieldsNames
public String[] m_FieldsTypes
public Object[] m_FieldsValues
public boolean[] m_IndexIndicators
public String m_PrimaryKeyName
getPrimaryKeyName()
public boolean m_Replicatable
public String[] m_MultipleUIDs
public boolean m_ReturnOnlyUids
public boolean m_isFifo
true
the entry will be returned in a FIFO way.
public int m_VersionID
public short[] m_ExtendedMatchCodes
setExtendedMatchCodes(short[])
public Object[] m_RangeValues
public boolean[] m_RangeValuesInclusion
public long m_TimeToLive
public boolean m_isTransient
true
will be transient.
public boolean m_NOWriteLeaseMode
public short _objectFormat
ObjectFormat
getFormat()
,
setFormat(short)
public String routingFieldName
getRoutingFieldName()
public boolean[] _primitiveFields
public boolean _returnTrueType
Constructor Detail |
---|
public ExternalEntry()
java.io.Externalizable
interface.
public ExternalEntry(String entryUID)
entryUID
- entry UID.protected ExternalEntry(ExternalEntry entry)
entry
- another ExternalEntrypublic ExternalEntry(String[] multipleUIDs)
public class MyEntry extends MetaDataEntry{
public MyEntry (){}
public MyEntry (int num)
{
this.attr1 = "attr1 " + num;
this.attr2 = "attr2 " + num;
}
public String attr1,attr2;
public String toString()
{
return "UID:" + __getEntryInfo().m_UID + " attr1:" + attr1 + " attr2:"+ attr2;
}
}
The Application code:
IJSpace space = (IJSpace )SpaceFinder.find("/./mySpace");
String uid[] = new String[10];
for (int i=0; i < 10 ;i++ )
{
uid[i] = ClientUIDHandler.createUIDFromName(i , MyEntry.class.getName());
MyEntry entry = new MyEntry(i);
entry.__setEntryInfo(new EntryInfo(uid[i],0));
space.write(entry , null ,Lease.FOREVER );
}
ExternalEntry multiUIDtemplate = new ExternalEntry(uid);
Entry[] result = space.readMultiple(multiUIDtemplate , null , Integer.MAX_VALUE);
for (int i=0; i < result.length ;i++ )
{
ExternalEntry ee = (ExternalEntry)result[i];
System.out.println(ee.getEntry(space));
}
multipleUIDs
- Entries UIDs array.public ExternalEntry(String className, Object[] fieldsValues, String[] fieldsNames, String[] fieldsTypes)
className
- The entry class namefieldsValues
- The entry field values arrayfieldsNames
- The entry field names arrayfieldsTypes
- The entry field types array. Field types should be Java full class names.public ExternalEntry(String className, Object[] fieldsValues, String[] fieldsNames)
className
- The Entry class namefieldsValues
- The Entry field values arrayfieldsNames
- The Entry field names arraypublic ExternalEntry(String className, Object[] fieldsValues)
className
- The class namefieldsValues
- Entry field values arrayMethod Detail |
---|
public boolean[] getPrimitiveFields()
getPrimitiveFields
in interface IGSEntry
public boolean hasExtendedInfo()
public com.j_spaces.core.ITypeDescriptor.Type getEntryType()
getEntryType
in interface IGSEntry
public void writeExternal(ObjectOutput out) throws IOException
out
- the stream to write the object to
IOException
- Includes any I/O exceptions that may occurpublic void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
in
- the stream to read data from in order to restore the object
IOException
- if I/O errors occur
ClassNotFoundException
- If the class for an object being restored cannot be found.public boolean equals(Object obj)
equals
in class Object
obj
- the ExternalEntry
to compare
public static boolean equals(Object o1, Object o2)
o1
- o2
-
public int hashCode()
hashCode
in class Object
public String getClassName()
getClassName
in interface IGSEntry
public void setClassName(String className)
className
- The Entry class Name to set.public short[] getExtendedMatchCodes()
public void setExtendedMatchCodes(short[] extendedMatchCodes)
extendedMatchCodes
- The matching codes to set for template objects.
This array should match the field values array. Optional Values: TemplateMatchCodes.EQ - equal TemplateMatchCodes.NE - not equal TemplateMatchCodes.GT - greater than TemplateMatchCodes.GE - grater-equal TemplateMatchCodes.LT - less than TemplateMatchCodes.LE - less-equal TemplateMatchCodes.IS_NULL - entry field is null (template field not relevant) TemplateMatchCodes.NOT_NULL - entry field is not null (template field not relevant)
public String[] getFieldsNames()
getFieldsNames
in interface IGSEntry
public void setFieldsNames(String[] fieldsNames)
fieldsNames
- The entry field namespublic String[] getFieldsTypes()
getFieldsTypes
in interface IGSEntry
public void setFieldsTypes(String[] fieldsTypes)
fieldsTypes
- The Entry fields types to set. Field types are Java classes full names.public Object[] getFieldsValues()
getFieldsValues
in interface IGSEntry
public void setFieldsValues(Object[] fieldsValues)
fieldsValues
- Entry field values to setpublic Object[] getRangeValues()
public void setRangeValues(Object[] rangeValues)
rangeValues
- Entry range values to setpublic boolean isFifo()
isFifo
in interface IGSEntry
public void setFifo(boolean fifo)
fifo
- FIFO indication. This method should be used for new Entry Classes introduced to the space and for templates objects used for matching.public boolean[] getIndexIndicators()
getIndexIndicators
in interface IGSEntry
public void setIndexIndicators(boolean[] indexIndicators)
indexIndicators
- Array of fields to Index.
The values of this array should match the fields arraypublic String getPrimaryKeyName()
getPrimaryKeyName
in interface IGSEntry
setPrimaryKeyName(String)
public void setPrimaryKeyName(String fieldName)
fieldName
- field name of the primary key.getPrimaryKeyName()
public String[] getMultipleUIDs()
public void setMultipleUIDs(String[] multipleUIDs)
multipleUIDs
- Array of Entry UIDs to read.public boolean isReplicatable()
isReplicatable
in interface IGSEntry
true
if this entry is replicatable.IReplicatable
public void setReplicatable(boolean replicatable)
replicatable
- The replicatable indication value.
This method should be used with clustered spaces.public boolean isReturnOnlyUids()
public void setReturnOnlyUids(boolean returnOnlyUids)
returnOnlyUids
- set the returnOnlyUids indication valuepublic String[] getSuperClassesNames()
getSuperClassesNames
in interface IGSEntry
public String getCodebase()
getCodebase
in interface IGSEntry
public void setSuperClassesNames(String[] superClassesNames)
superClassesNames
- The Super Classes Names Arraypublic long getTimeToLive()
getTimeToLive
in interface IGSEntry
Lease
public void setTimeToLive(long timeToLive)
timeToLive
- in millisecondspublic int getVersion()
IGSEntry
and is equivalent to calling
getVersionID()
getVersion
in interface IGSEntry
getVersionID()
,
setVersionID(int)
public boolean isTransient()
isTransient
in interface IGSEntry
public void setTransient(boolean isTransient)
isTransient
- public void makeTransient()
public void makePersistent()
public Map.Entry getMapEntry()
null
is returned.
getMapEntry
in interface IGSEntry
null
if no representation.Map.Entry
public short getFormat()
ObjectFormat
.
getFormat
in interface IGSEntry
Default is ObjectFormat.ENTRY
public void setFormat(short format)
ObjectFormat
attributes.
format
- a format; Default is ObjectFormat.DEFAULT
public String getUID()
getUID
in interface IGSEntry
public void setUID(String m_uid)
m_uid
- The Entry UID to set.
When using this method make sure you are using unique value.
This method should get as input returned value from ClientUIDHandler.createUIDFromName
The UID is a String based identifier and composed of the following parts: - Class information � class Hashcode and name size - Space node name � At clustered environment combined from �container-name :space name�. At non-clustered environment combined from dummy name. - Timestamp - Counter
public int getVersionID()
public void setVersionID(int versionID)
versionID
- The Entry Version ID to set.public void setNOWriteLeaseMode(boolean noWriteLeaseMode)
true
do not return Lease object after write,
false
return Lease object after write.
noWriteLeaseMode
- write mode.public boolean isNOWriteLeaseMode()
true
if do not return Lease object after write, otherwise false
.public Object getFieldValue(String fieldName)
getFieldValue
in interface IGSEntry
fieldName
- name of the field (e.g. Field.getName()
.
public Object setFieldValue(String fieldName, Object value)
setFieldValue
in interface IGSEntry
fieldName
- the field name.value
- value to be associated with the specified field.
public String getFieldType(String fieldName)
getFieldType
in interface IGSEntry
fieldName
- the field name.
public boolean isIndexedField(String fieldName)
isIndexedField
in interface IGSEntry
fieldName
- the field name.
true
if the the field is indexed.public Object getFieldValue(int index) throws IllegalArgumentException, IllegalStateException
getFieldValue
in interface IGSEntry
index
- the field position.
IllegalArgumentException
- if field name is not avaliable
IllegalStateException
- if field values array was not properly setpublic Object setFieldValue(int index, Object value) throws IllegalArgumentException, IllegalStateException
setFieldValue
in interface IGSEntry
index
- the field position.value
- value to be associated with the specified field.
IllegalArgumentException
- if field name is not avaliable
IllegalStateException
- if field values array was not properly setpublic int getFieldPosition(String fieldName)
FieldsValues
array.
getFieldPosition
in interface IGSEntry
fieldName
- name of the field (e.g. Field.getName()
.
IGSEntry.getFieldsValues()
.public net.jini.core.entry.Entry getEntry(IJSpace space) throws net.jini.core.entry.UnusableEntryException
IGSEntry.setFieldValue(int, Object)
or IGSEntry.setFieldValue(String, Object)
.
getEntry
in interface IGSEntry
space
- Space proxy.
net.jini.core.entry.UnusableEntryException
- One or more fields in the entry cannot be
deserialized, or the class for the entry type
itself cannot be deserialized.public Object getObject(IJSpace space) throws net.jini.core.entry.UnusableEntryException
IGSEntry.setFieldValue(int, Object)
or IGSEntry.setFieldValue(String, Object)
.
getObject
in interface IGSEntry
space
- Space proxy.
net.jini.core.entry.UnusableEntryException
- One or more fields in the entry cannot be
deserialized, or the class for the entry type
itself cannot be deserialized.public ExternalEntry getExternalEntry(IJSpace space) throws net.jini.core.entry.UnusableEntryException
IGSEntry.setFieldValue(int, Object)
or IGSEntry.setFieldValue(String, Object)
.
getExternalEntry
in interface IGSEntry
space
- Space proxy.
net.jini.core.entry.UnusableEntryException
- One or more fields in the entry cannot be
deserialized, or the class for the entry type
itself cannot be deserialized.public String getRoutingFieldName()
getRoutingFieldName
in interface IGSEntry
public void setRoutingFieldName(String routingFieldName)
routingFieldName
- the routing field namepublic Object clone()
clone
in class Object
public short getExtendedMatchCode(int index)
index
-
public Object getRangeValue(int index)
index
-
public boolean getRangeValueInclusion(int index)
index
-
public boolean isExtended()
public String toString()
ExternalEntry
.
toString
in class Object
ExternalEntry
.
|
GigaSpaces XAP 7.0 API | |||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |