Top Description Fields Constructors Methods
org.apache.derby.iapi.sql.dictionary

public Class TriggerDescriptor

extends UniqueSQLObjectDescriptor
implements Provider, Dependent, Formatable
Class Inheritance
All Implemented Interfaces
org.apache.derby.iapi.services.io.Formatable, org.apache.derby.iapi.services.io.TypedFormat, java.io.Externalizable, java.io.Serializable, org.apache.derby.iapi.sql.depend.Dependent, org.apache.derby.catalog.Dependable, org.apache.derby.iapi.sql.depend.Provider
Imports
org.apache.derby.shared.common.util.ArrayUtil, org.apache.derby.iapi.services.io.Formatable, .StoredFormatIds, org.apache.derby.iapi.sql.depend.Dependent, .Provider, .DependencyManager, org.apache.derby.shared.common.error.StandardException, org.apache.derby.iapi.types.DataTypeUtilities, org.apache.derby.catalog.UUID, .DependableFinder, .Dependable, java.sql.Timestamp, org.apache.derby.shared.common.reference.SQLState, org.apache.derby.shared.common.sanity.SanityManager, org.apache.derby.iapi.sql.StatementType, org.apache.derby.iapi.sql.conn.LanguageConnectionContext, org.apache.derby.iapi.store.access.TransactionController, org.apache.derby.iapi.services.context.Context, .ContextService, org.apache.derby.iapi.sql.compile.CompilerContext, .Parser, .Visitable, java.io.ObjectOutput, .ObjectInput, .IOException

A trigger.

We are dependent on TableDescriptors, SPSDescriptors (for our WHEN clause and our action). Note that we don't strictly need to be dependent on out SPSes because we could just disallow anyone from dropping an sps of type 'T', but to keep dependencies uniform, we'll do be dependent.

We are a provider for DML (PreparedStatements or SPSes) The public methods for this class are:

  1. getUUID
  2. getName
  3. getSchemaDescriptor
  4. public boolean listensForEvent(int event);
  5. public int getTriggerEventMask();
  6. public Timestamp getCreationTimestamp();
  7. public boolean isBeforeTrigger();
  8. public boolean isRowTrigger();
  9. public UUID getActionId();
  10. public SPSDescriptor getActionSPS();
  11. public UUID getWhenClauseId();
  12. public SPSDescriptor getWhenClauseSPS()
  13. public String getWhenClauseText();
  14. public TableDescriptor getTableDescriptor()
  15. public ReferencedColumns getReferencedColumnsDescriptor()
  16. public int[] getReferencedCols();
  17. public int[] getReferencedColsInTriggerAction();
  18. public boolean enforced();
  19. public void setEnabled();
  20. public void setDisabled();
  21. public boolean needsToFire(int stmtType, int[] modifiedCols)
  22. public String getTriggerDefinition();
  23. public boolean getReferencingOld();
  24. public boolean getReferencingNew();
  25. public String getOldReferencingName();
  26. public String getNewReferencingName();

Field Summary

Modifier and TypeField and Description
private SPSDescriptor
private UUID
private Timestamp
private int
private UUID
private boolean
private boolean
private boolean
private String
private String
private String
private int[]
private int[]
private boolean
private boolean
private SchemaDescriptor
public static final int
private TableDescriptor
public static final int
public static final int
public static final int
private String
private UUID
private UUID
private String
private SPSDescriptor
private UUID

Constructor Summary

AccessConstructor and Description
public
TriggerDescriptor()

Niladic constructor, for formatable

pack-priv
TriggerDescriptor(DataDictionary
the data dictionary
dataDictionary
,
SchemaDescriptor
the schema descriptor for this trigger
sd
,
UUID
the trigger id
id
,
String
the trigger name
name
,
int
TriggerDescriptor.TRIGGER_EVENT_XXXX
eventMask
,
boolean
is this a before (as opposed to after) trigger
isBefore
,
boolean
is this a row trigger or statement trigger
isRow
,
boolean
is this trigger enabled or disabled
isEnabled
,
TableDescriptor
the table upon which this trigger is defined
td
,
UUID
the sps id for the when clause (may be null)
whenSPSId
,
UUID
the spsid for the trigger action (may be null)
actionSPSId
,
Timestamp
when was this trigger created?
creationTimestamp
,
int[]
what columns does this trigger reference (may be null)
referencedCols
,
int[]
what columns does the trigger action reference through old/new transition variables (may be null)
referencedColsInTriggerAction
,
String
The original user text of the trigger action
triggerDefinition
,
boolean
whether or not OLD appears in REFERENCING clause
referencingOld
,
boolean
whether or not NEW appears in REFERENCING clause
referencingNew
,
String
old referencing table name, if any, that appears in REFERCING clause
oldReferencingName
,
String
new referencing table name, if any, that appears in REFERCING clause
newReferencingName
,
String
the SQL text of the WHEN clause, or null if there is no WHEN clause
whenClauseText
)

Constructor.

Method Summary

Modifier and TypeMethod and Description
public void
public UUID

Returns:

the uuid of the sps action
getActionId
()

Get the trigger action sps UUID

public SPSDescriptor

Returns:

the trigger action sps
getActionSPS
(LanguageConnectionContext
The LanguageConnectionContext to use.
lcc
)

Get the trigger action sps from SYSSTATEMENTS.

public String

Returns:

char The provider's type.
getClassType
()

Implements org.apache.derby.catalog.Dependable.getClassType.

Get the provider's type.

private static Context
getContext(final String contextID)

Must be private so that user code can't call this entry point.

public Timestamp

Returns:

the time the trigger was created
getCreationTimestamp
()

Get the time that this trigger was created.

protected DataDictionary
public DependableFinder

Returns:

the stored form of this provider
getDependableFinder
()

Implements org.apache.derby.catalog.Dependable.getDependableFinder.

Get an object which can be written to disk and which, when read from disk, will find or reconstruct this in-memory Dependable.

public String
public String
getDescriptorType()

Overrides org.apache.derby.iapi.sql.dictionary.TupleDescriptor.getDescriptorType.

Each descriptor must identify itself with its type; i.e index, check constraint whatever.

public String

Returns:

the name
getName
()

Implements abstract org.apache.derby.iapi.sql.dictionary.UniqueSQLObjectDescriptor.getName.

Get the trigger name

public String

Returns:

The new Referencing name, if any, from the REFERENCING clause.
getNewReferencingName
()

Get the new Referencing name, if any, from the REFERENCING clause.

public UUID

Returns:

The provider's UUID
getObjectID
()

Implements org.apache.derby.catalog.Dependable.getObjectID.

Get the provider's UUID

public String

Returns:

String The name of this provider.
getObjectName
()

Implements org.apache.derby.catalog.Dependable.getObjectName.

Return the name of this Provider.

public String

Returns:

The old Referencing name, if any, from the REFERENCING clause.
getOldReferencingName
()

Get the old Referencing name, if any, from the REFERENCING clause.

public int[]

Returns:

the referenced column array
getReferencedCols
()

Get the referenced column array for this trigger, used in "alter table drop column", we get the handle and change it

public int[]

Returns:

the referenced column array
getReferencedColsInTriggerAction
()

Get the referenced column array for the trigger action columns.

public boolean

Returns:

Whether or not NEW was replaced in the REFERENCING clause.
getReferencingNew
()

Get whether or not NEW was replaced in the REFERENCING clause.

public boolean

Returns:

Whether or not OLD was replaced in the REFERENCING clause.
getReferencingOld
()

Get whether or not OLD was replaced in the REFERENCING clause.

public SchemaDescriptor

Returns:

the schema descriptor
getSchemaDescriptor
()

Implements abstract org.apache.derby.iapi.sql.dictionary.UniqueSQLObjectDescriptor.getSchemaDescriptor.

Get the triggers schema descriptor

private SPSDescriptor

Returns:

the requested SPS
getSPS
(LanguageConnectionContext
the LanguageConnectionContext to use
lcc
,
boolean
true if the SPS for the WHEN clause is requested, false if it is the triggered SQL statement
isWhenClause
)

Get the SPS for the triggered SQL statement or the WHEN clause.

public TableDescriptor

Returns:

the table descripor upon which this trigger is declared
getTableDescriptor
()

Get the trigger table descriptor

public UUID
public String

Returns:

The trigger definition.
getTriggerDefinition
()

Get the original trigger definition.

public int

Returns:

the trigger event mask
getTriggerEventMask
()

Get the trigger event mask.

public int

Returns:

the formatID of this class
getTypeFormatId
()

Implements org.apache.derby.iapi.services.io.TypedFormat.getTypeFormatId.

Get the formatID which corresponds to this class.

public UUID

Returns:

the id
getUUID
()

Implements abstract org.apache.derby.iapi.sql.dictionary.UniqueTupleDescriptor.getUUID.

Get the trigger UUID

public UUID

Returns:

the uuid of the sps action
getWhenClauseId
()

Get the trigger when clause sps UUID

public SPSDescriptor

Returns:

the sps of the when clause
getWhenClauseSPS
(LanguageConnectionContext
the LanguageConnectionContext to use
lcc
)

Get the trigger when clause sps

public String

Returns:

SQL text for the WHEN clause, or null if there is no WHEN clause
getWhenClauseText
()

Get the SQL text of the WHEN clause.

public boolean

Returns:

true if it is a before trigger
isBeforeTrigger
()

Is this a before trigger

public boolean

Returns:

true if it is enforced
isEnabled
()

Is this trigger enforced

public boolean

Returns:

true if it is a before trigger
isRowTrigger
()

Is this a row trigger

public synchronized boolean

Returns:

true if the dependent is currently valid
isValid
()

Implements org.apache.derby.iapi.sql.depend.Dependent.isValid.

Check that all of the dependent's dependencies are valid.

public boolean

Returns:

true if it listens to the specified event.
listensForEvent
(int
TRIGGER_EVENT_XXXX
event
)

Indicate whether this trigger listens for this type of event.

public void
makeInvalid(int
The action causing the invalidation
action
,
LanguageConnectionContext
the language connection context
lcc
)

Implements org.apache.derby.iapi.sql.depend.Dependent.makeInvalid.

Mark the dependent as invalid (due to at least one of its dependencies being invalid).

public boolean

Returns:

true/false
needsToFire
(int
the type of DML (StatementType.INSERT|StatementType.UPDATE|StatementType.DELETE)
stmtType
,
int[]
the columns modified, or null for all
modifiedCols
)

Does this trigger need to fire on this type of DML?

public void
prepareToInvalidate(Provider
the provider
p
,
int
The action causing the invalidation
action
,
LanguageConnectionContext
the language connection context
lcc
)

Implements org.apache.derby.iapi.sql.depend.Dependent.prepareToInvalidate.

Prepare to mark the dependent as invalid (due to at least one of its dependencies being invalid).

public void
readExternal(ObjectInput
read this.
in
)

Implements java.io.Externalizable.readExternal.

Read this object from a stream of stored objects.

public void
setDisabled()

Mark this trigger as disabled

public void
setEnabled()

Mark this trigger as enforced

public void
setReferencedCols(int[] newCols)

Update the array of referenced columns

public void
setReferencedColsInTriggerAction(int[] referencedColsInTriggerAction)

Set the referenced column array for trigger actions

public String
toString()

Overrides java.lang.Object.toString.

Returns a string representation of the object.

public void
writeExternal(ObjectOutput
write bytes here.
out
)

Implements java.io.Externalizable.writeExternal.

Write this object to a stream of stored objects.

Field Detail

actionSPSback to summary
private SPSDescriptor actionSPS
actionSPSIdback to summary
private UUID actionSPSId
creationTimestampback to summary
private Timestamp creationTimestamp
eventMaskback to summary
private int eventMask
idback to summary
private UUID id
isBeforeback to summary
private boolean isBefore
isEnabledback to summary
private boolean isEnabled
isRowback to summary
private boolean isRow
nameback to summary
private String name
newReferencingNameback to summary
private String newReferencingName
oldReferencingNameback to summary
private String oldReferencingName
referencedColsback to summary
private int[] referencedCols
referencedColsInTriggerActionback to summary
private int[] referencedColsInTriggerAction
referencingNewback to summary
private boolean referencingNew
referencingOldback to summary
private boolean referencingOld
sdback to summary
private SchemaDescriptor sd
SYSTRIGGERS_STATE_FIELDback to summary
public static final int SYSTRIGGERS_STATE_FIELD
tdback to summary
private TableDescriptor td
TRIGGER_EVENT_DELETEback to summary
public static final int TRIGGER_EVENT_DELETE
TRIGGER_EVENT_INSERTback to summary
public static final int TRIGGER_EVENT_INSERT
TRIGGER_EVENT_UPDATEback to summary
public static final int TRIGGER_EVENT_UPDATE
triggerDefinitionback to summary
private String triggerDefinition
triggerSchemaIdback to summary
private UUID triggerSchemaId
triggerTableIdback to summary
private UUID triggerTableId
whenClauseTextback to summary
private String whenClauseText
whenSPSback to summary
private SPSDescriptor whenSPS
whenSPSIdback to summary
private UUID whenSPSId

Constructor Detail

TriggerDescriptorback to summary
public TriggerDescriptor()

Niladic constructor, for formatable

TriggerDescriptorback to summary
pack-priv TriggerDescriptor(DataDictionary dataDictionary, SchemaDescriptor sd, UUID id, String name, int eventMask, boolean isBefore, boolean isRow, boolean isEnabled, TableDescriptor td, UUID whenSPSId, UUID actionSPSId, Timestamp creationTimestamp, int[] referencedCols, int[] referencedColsInTriggerAction, String triggerDefinition, boolean referencingOld, boolean referencingNew, String oldReferencingName, String newReferencingName, String whenClauseText)

Constructor. Used when creating a trigger from SYS.SYSTRIGGERS

Parameters
dataDictionary:DataDictionary

the data dictionary

sd:SchemaDescriptor

the schema descriptor for this trigger

id:UUID

the trigger id

name:String

the trigger name

eventMask:int

TriggerDescriptor.TRIGGER_EVENT_XXXX

isBefore:boolean

is this a before (as opposed to after) trigger

isRow:boolean

is this a row trigger or statement trigger

isEnabled:boolean

is this trigger enabled or disabled

td:TableDescriptor

the table upon which this trigger is defined

whenSPSId:UUID

the sps id for the when clause (may be null)

actionSPSId:UUID

the spsid for the trigger action (may be null)

creationTimestamp:Timestamp

when was this trigger created?

referencedCols:int[]

what columns does this trigger reference (may be null)

referencedColsInTriggerAction:int[]

what columns does the trigger action reference through old/new transition variables (may be null)

triggerDefinition:String

The original user text of the trigger action

referencingOld:boolean

whether or not OLD appears in REFERENCING clause

referencingNew:boolean

whether or not NEW appears in REFERENCING clause

oldReferencingName:String

old referencing table name, if any, that appears in REFERCING clause

newReferencingName:String

new referencing table name, if any, that appears in REFERCING clause

whenClauseText:String

the SQL text of the WHEN clause, or null if there is no WHEN clause

Method Detail

dropback to summary
public void drop(LanguageConnectionContext lcc) throws StandardException
getActionIdback to summary
public UUID getActionId()

Get the trigger action sps UUID

Returns:UUID

the uuid of the sps action

getActionSPSback to summary
public SPSDescriptor getActionSPS(LanguageConnectionContext lcc) throws StandardException

Get the trigger action sps from SYSSTATEMENTS. If we find that the sps is invalid and the trigger is defined at row level and it has OLD/NEW transient variables through REFERENCES clause, then the sps from SYSSTATEMENTS may not be valid anymore. In such a case, we regenerate the trigger action sql and use that for the sps and update SYSSTATEMENTS using this new sps. This update of SYSSTATEMENTS was introduced with DERBY-4874

Parameters
lcc:LanguageConnectionContext

The LanguageConnectionContext to use.

Returns:SPSDescriptor

the trigger action sps

Exceptions
StandardException:
on error
getClassTypeback to summary
public String getClassType()

Implements org.apache.derby.catalog.Dependable.getClassType.

Get the provider's type.

Returns:String

char The provider's type.

getContextback to summary
private static Context getContext(final String contextID)

Must be private so that user code can't call this entry point.

getCreationTimestampback to summary
public Timestamp getCreationTimestamp()

Get the time that this trigger was created.

Returns:Timestamp

the time the trigger was created

getDataDictionaryback to summary
protected DataDictionary getDataDictionary()

Overrides org.apache.derby.iapi.sql.dictionary.TupleDescriptor.getDataDictionary.

getDependableFinderback to summary
public DependableFinder getDependableFinder()

Implements org.apache.derby.catalog.Dependable.getDependableFinder.

Doc from org.apache.derby.catalog.Dependable.getDependableFinder.

Get an object which can be written to disk and which, when read from disk, will find or reconstruct this in-memory Dependable.

Returns:DependableFinder

the stored form of this provider

See Also
Dependable#getDependableFinder
getDescriptorNameback to summary
public String getDescriptorName()

Overrides org.apache.derby.iapi.sql.dictionary.TupleDescriptor.getDescriptorName.

See Also
TupleDescriptor#getDescriptorName
getDescriptorTypeback to summary
public String getDescriptorType()

Overrides org.apache.derby.iapi.sql.dictionary.TupleDescriptor.getDescriptorType.

Doc from org.apache.derby.iapi.sql.dictionary.TupleDescriptor.getDescriptorType.

Each descriptor must identify itself with its type; i.e index, check constraint whatever.

See Also
TupleDescriptor#getDescriptorType
getNameback to summary
public String getName()

Implements abstract org.apache.derby.iapi.sql.dictionary.UniqueSQLObjectDescriptor.getName.

Get the trigger name

Returns:String

the name

getNewReferencingNameback to summary
public String getNewReferencingName()

Get the new Referencing name, if any, from the REFERENCING clause.

Returns:String

The new Referencing name, if any, from the REFERENCING clause.

getObjectIDback to summary
public UUID getObjectID()

Implements org.apache.derby.catalog.Dependable.getObjectID.

Get the provider's UUID

Returns:UUID

The provider's UUID

getObjectNameback to summary
public String getObjectName()

Implements org.apache.derby.catalog.Dependable.getObjectName.

Return the name of this Provider. (Useful for errors.)

Returns:String

String The name of this provider.

getOldReferencingNameback to summary
public String getOldReferencingName()

Get the old Referencing name, if any, from the REFERENCING clause.

Returns:String

The old Referencing name, if any, from the REFERENCING clause.

getReferencedColsback to summary
public int[] getReferencedCols()

Get the referenced column array for this trigger, used in "alter table drop column", we get the handle and change it

Returns:int[]

the referenced column array

getReferencedColsInTriggerActionback to summary
public int[] getReferencedColsInTriggerAction()

Get the referenced column array for the trigger action columns.

Returns:int[]

the referenced column array

getReferencingNewback to summary
public boolean getReferencingNew()

Get whether or not NEW was replaced in the REFERENCING clause.

Returns:boolean

Whether or not NEW was replaced in the REFERENCING clause.

getReferencingOldback to summary
public boolean getReferencingOld()

Get whether or not OLD was replaced in the REFERENCING clause.

Returns:boolean

Whether or not OLD was replaced in the REFERENCING clause.

getSchemaDescriptorback to summary
public SchemaDescriptor getSchemaDescriptor() throws StandardException

Implements abstract org.apache.derby.iapi.sql.dictionary.UniqueSQLObjectDescriptor.getSchemaDescriptor.

Get the triggers schema descriptor

Returns:SchemaDescriptor

the schema descriptor

Exceptions
StandardException:
on error
getSPSback to summary
private SPSDescriptor getSPS(LanguageConnectionContext lcc, boolean isWhenClause) throws StandardException

Get the SPS for the triggered SQL statement or the WHEN clause.

Parameters
lcc:LanguageConnectionContext

the LanguageConnectionContext to use

isWhenClause:boolean

true if the SPS for the WHEN clause is requested, false if it is the triggered SQL statement

Returns:SPSDescriptor

the requested SPS

Exceptions
StandardException:
if an error occurs
getTableDescriptorback to summary
public TableDescriptor getTableDescriptor() throws StandardException

Get the trigger table descriptor

Returns:TableDescriptor

the table descripor upon which this trigger is declared

Exceptions
StandardException:
on error
getTableIdback to summary
public UUID getTableId()
getTriggerDefinitionback to summary
public String getTriggerDefinition()

Get the original trigger definition.

Returns:String

The trigger definition.

getTriggerEventMaskback to summary
public int getTriggerEventMask()

Get the trigger event mask. Currently, a trigger may only listen for a single event, though it may OR multiple events in the future.

Returns:int

the trigger event mask

getTypeFormatIdback to summary
public int getTypeFormatId()

Implements org.apache.derby.iapi.services.io.TypedFormat.getTypeFormatId.

Get the formatID which corresponds to this class.

Returns:int

the formatID of this class

getUUIDback to summary
public UUID getUUID()

Implements abstract org.apache.derby.iapi.sql.dictionary.UniqueTupleDescriptor.getUUID.

Get the trigger UUID

Returns:UUID

the id

getWhenClauseIdback to summary
public UUID getWhenClauseId()

Get the trigger when clause sps UUID

Returns:UUID

the uuid of the sps action

getWhenClauseSPSback to summary
public SPSDescriptor getWhenClauseSPS(LanguageConnectionContext lcc) throws StandardException

Get the trigger when clause sps

Parameters
lcc:LanguageConnectionContext

the LanguageConnectionContext to use

Returns:SPSDescriptor

the sps of the when clause

Exceptions
StandardException:
on error
getWhenClauseTextback to summary
public String getWhenClauseText()

Get the SQL text of the WHEN clause.

Returns:String

SQL text for the WHEN clause, or null if there is no WHEN clause

isBeforeTriggerback to summary
public boolean isBeforeTrigger()

Is this a before trigger

Returns:boolean

true if it is a before trigger

isEnabledback to summary
public boolean isEnabled()

Is this trigger enforced

Returns:boolean

true if it is enforced

isRowTriggerback to summary
public boolean isRowTrigger()

Is this a row trigger

Returns:boolean

true if it is a before trigger

isValidback to summary
public synchronized boolean isValid()

Implements org.apache.derby.iapi.sql.depend.Dependent.isValid.

Check that all of the dependent's dependencies are valid.

Returns:boolean

true if the dependent is currently valid

listensForEventback to summary
public boolean listensForEvent(int event)

Indicate whether this trigger listens for this type of event.

Parameters
event:int

TRIGGER_EVENT_XXXX

Returns:boolean

true if it listens to the specified event.

makeInvalidback to summary
public void makeInvalid(int action, LanguageConnectionContext lcc) throws StandardException

Implements org.apache.derby.iapi.sql.depend.Dependent.makeInvalid.

Mark the dependent as invalid (due to at least one of its dependencies being invalid). Always an error for a trigger -- should never have gotten here.

Parameters
action:int

The action causing the invalidation

lcc:LanguageConnectionContext

the language connection context

Exceptions
StandardException:
thrown if called in sanity mode
needsToFireback to summary
public boolean needsToFire(int stmtType, int[] modifiedCols) throws StandardException

Does this trigger need to fire on this type of DML?

Parameters
stmtType:int

the type of DML (StatementType.INSERT|StatementType.UPDATE|StatementType.DELETE)

modifiedCols:int[]

the columns modified, or null for all

Returns:boolean

true/false

Exceptions
StandardException:
on error
prepareToInvalidateback to summary
public void prepareToInvalidate(Provider p, int action, LanguageConnectionContext lcc) throws StandardException

Implements org.apache.derby.iapi.sql.depend.Dependent.prepareToInvalidate.

Prepare to mark the dependent as invalid (due to at least one of its dependencies being invalid).

Parameters
p:Provider

the provider

action:int

The action causing the invalidation

lcc:LanguageConnectionContext

the language connection context

Exceptions
StandardException:
thrown if unable to make it invalid
readExternalback to summary
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException

Implements java.io.Externalizable.readExternal.

Read this object from a stream of stored objects.

Parameters
in:ObjectInput

read this.

Exceptions
IOException:
thrown on error
ClassNotFoundException:
thrown on error
setDisabledback to summary
public void setDisabled()

Mark this trigger as disabled

setEnabledback to summary
public void setEnabled()

Mark this trigger as enforced

setReferencedColsback to summary
public void setReferencedCols(int[] newCols)

Update the array of referenced columns

setReferencedColsInTriggerActionback to summary
public void setReferencedColsInTriggerAction(int[] referencedColsInTriggerAction)

Set the referenced column array for trigger actions

toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Doc from java.lang.Object.toString.

Returns a string representation of the object. Satisfying this method's contract implies a non-null result must be returned.

Returns:String

a string representation of the object

writeExternalback to summary
public void writeExternal(ObjectOutput out) throws IOException

Implements java.io.Externalizable.writeExternal.

Write this object to a stream of stored objects.

Parameters
out:ObjectOutput

write bytes here.

Exceptions
IOException:
thrown on error