Top Description Inners Fields Constructors Methods
com.amazon.ion.impl

pack-priv final Class SubstituteSymbolTable

extends Object
implements SymbolTable
Class Inheritance
All Implemented Interfaces
com.amazon.ion.SymbolTable
Imports
com.amazon.ion.IonReader, .IonWriter, .ReadOnlyValueException, .SymbolTable, .SymbolToken, java.io.IOException, java.util.Collections, .Iterator

A symbol table used for an import where no exact match could be found. This ensures that the declared max_id and version are exposed through the library.

Note that isSubstitute() is always true for instances of this class.

Nested and Inner Type Summary

Modifier and TypeClass and Description
private class

Field Summary

Modifier and TypeField and Description
private final int
private final String
private final SymbolTable
myOriginalSymTab

This is the original symbol table that is being substituted.

private final int

Constructor Summary

AccessConstructor and Description
pack-priv
SubstituteSymbolTable(String name, int version, int maxId)

pack-priv
SubstituteSymbolTable(SymbolTable original, int version, int maxId)

Method Summary

Modifier and TypeMethod and Description
public SymbolToken
find(String
the symbol text to find.
text
)

Implements com.amazon.ion.SymbolTable.find.

Finds a symbol already interned by this table.

public String
findKnownSymbol(int
the requested symbol ID.
id
)

Implements com.amazon.ion.SymbolTable.findKnownSymbol.

Gets the interned text for a symbol ID.

public int
findSymbol(String
must not be null or empty.
text
)

Implements com.amazon.ion.SymbolTable.findSymbol.

Gets the symbol ID associated with a given symbol name.

public int
getImportedMaxId()

Implements com.amazon.ion.SymbolTable.getImportedMaxId.

Gets the highest symbol id reserved by this table's imports (including system symbols).

public SymbolTable[]
getImportedTables()

Implements com.amazon.ion.SymbolTable.getImportedTables.

Gets the sequence of shared symbol tables imported by this (local) symbol table.

public String
getIonVersionId()

Implements com.amazon.ion.SymbolTable.getIonVersionId.

Gets the identifier for the Ion version (and thus the system symbol table) used by this table.

public int
getMaxId()

Implements com.amazon.ion.SymbolTable.getMaxId.

Gets the highest symbol id reserved by this table.

public String
getName()

Implements com.amazon.ion.SymbolTable.getName.

Gets the unique name of this symbol table.

public SymbolTable
getSystemSymbolTable()

Implements com.amazon.ion.SymbolTable.getSystemSymbolTable.

Gets the system symbol table being used by this local table.

public int
getVersion()

Implements com.amazon.ion.SymbolTable.getVersion.

Gets the version of this symbol table.

public SymbolToken
intern(String
the symbol text to intern.
text
)

Implements com.amazon.ion.SymbolTable.intern.

Adds a new symbol to this table, or finds an existing definition of it.

public boolean
isLocalTable()

Implements com.amazon.ion.SymbolTable.isLocalTable.

Determines whether this symbol table is local, and therefore unnamed and unversioned.

public boolean
isReadOnly()

Implements com.amazon.ion.SymbolTable.isReadOnly.

Determines whether this symbol table can have symbols added to it.

public boolean
isSharedTable()

Implements com.amazon.ion.SymbolTable.isSharedTable.

Determines whether this symbol table is shared, and therefore named, versioned, and read-only.

public boolean
isSubstitute()

Implements com.amazon.ion.SymbolTable.isSubstitute.

Determines whether this instance is substituting for an imported shared table for which no exact match was found in the catalog.

public boolean
isSystemTable()

Implements com.amazon.ion.SymbolTable.isSystemTable.

Determines whether this symbol table is a system symbol table, and therefore shared, named, versioned, and read-only.

public Iterator<String>
iterateDeclaredSymbolNames()

Implements com.amazon.ion.SymbolTable.iterateDeclaredSymbolNames.

Creates an iterator that will return all non-imported symbol names, in order of their symbol IDs.

public void
makeReadOnly()

Implements com.amazon.ion.SymbolTable.makeReadOnly.

Prevents this symbol table from accepting any more new symbols.

public void
writeTo(IonWriter
must not be null.
writer
)

Implements com.amazon.ion.SymbolTable.writeTo.

Writes an Ion representation of this symbol table.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

myMaxIdback to summary
private final int myMaxId
myNameback to summary
private final String myName
myOriginalSymTabback to summary
private final SymbolTable myOriginalSymTab

This is the original symbol table that is being substituted. Either null or a non-system shared table.

myVersionback to summary
private final int myVersion

Constructor Detail

SubstituteSymbolTableback to summary
pack-priv SubstituteSymbolTable(String name, int version, int maxId)
SubstituteSymbolTableback to summary
pack-priv SubstituteSymbolTable(SymbolTable original, int version, int maxId)

Method Detail

findback to summary
public SymbolToken find(String text)

Implements com.amazon.ion.SymbolTable.find.

Doc from com.amazon.ion.SymbolTable.find.

Finds a symbol already interned by this table.

This method will not necessarily return the same instance given the same input.

Parameters
text:String

the symbol text to find.

Returns:SymbolToken

the interned symbol, with both text and SID defined; or null if it's not already interned.

findKnownSymbolback to summary
public String findKnownSymbol(int id)

Implements com.amazon.ion.SymbolTable.findKnownSymbol.

Doc from com.amazon.ion.SymbolTable.findKnownSymbol.

Gets the interned text for a symbol ID.

Parameters
id:int

the requested symbol ID.

Returns:String

the interned text associated with the symbol ID, or null if the text is not known.

findSymbolback to summary
public int findSymbol(String text)

Implements com.amazon.ion.SymbolTable.findSymbol.

Doc from com.amazon.ion.SymbolTable.findSymbol.

Gets the symbol ID associated with a given symbol name.

Parameters
text:String

must not be null or empty.

Returns:int

the id of the requested symbol, or UNKNOWN_SYMBOL_ID if it's not defined.

getImportedMaxIdback to summary
public int getImportedMaxId()

Implements com.amazon.ion.SymbolTable.getImportedMaxId.

Doc from com.amazon.ion.SymbolTable.getImportedMaxId.

Gets the highest symbol id reserved by this table's imports (including system symbols). Any id higher than this value is a local symbol declared by this table. This value is zero for shared symbol tables, since they do not utilize imports.

getImportedTablesback to summary
public SymbolTable[] getImportedTables()

Implements com.amazon.ion.SymbolTable.getImportedTables.

Doc from com.amazon.ion.SymbolTable.getImportedTables.

Gets the sequence of shared symbol tables imported by this (local) symbol table. The result does not include a system table.

If this local table imported a shared table for which the relevant IonCatalog has the same name but different version and/or max_id, then that entry will be a substitute table with the correct version and max_id, wrapping the original shared symbol table that was found.

If this local table imported a shared table for which the relevant IonCatalog has no entry with the same name, but the import declaration has a max_id available, then that entry will be a substitute table with max_id undefined symbols.

Returns:SymbolTable[]

null if this is a shared or system table, otherwise a non-null but potentially zero-length array of shared tables (but no system table).

getIonVersionIdback to summary
public String getIonVersionId()

Implements com.amazon.ion.SymbolTable.getIonVersionId.

Doc from com.amazon.ion.SymbolTable.getIonVersionId.

Gets the identifier for the Ion version (and thus the system symbol table) used by this table. The version identifier is a string of the form "$ion_X_Y".

Returns:String

the version identifier; or null for non-system shared tables.

getMaxIdback to summary
public int getMaxId()

Implements com.amazon.ion.SymbolTable.getMaxId.

Doc from com.amazon.ion.SymbolTable.getMaxId.

Gets the highest symbol id reserved by this table.

Returns:int

the largest integer such that findKnownSymbol(int) could return a non-null result. Note that there is no promise that it will return a name, only that any larger id will not have a name defined.

getNameback to summary
public String getName()

Implements com.amazon.ion.SymbolTable.getName.

Doc from com.amazon.ion.SymbolTable.getName.

Gets the unique name of this symbol table.

Returns:String

the unique name, or null if isLocalTable().

getSystemSymbolTableback to summary
public SymbolTable getSystemSymbolTable()

Implements com.amazon.ion.SymbolTable.getSystemSymbolTable.

Doc from com.amazon.ion.SymbolTable.getSystemSymbolTable.

Gets the system symbol table being used by this local table.

If isSystemTable() then this method returns this. Otherwise, if isSharedTable() then this method returns null.

Returns:SymbolTable

not null, except for non-system shared tables.

getVersionback to summary
public int getVersion()

Implements com.amazon.ion.SymbolTable.getVersion.

Doc from com.amazon.ion.SymbolTable.getVersion.

Gets the version of this symbol table.

Returns:int

at least one, or zero if isLocalTable().

internback to summary
public SymbolToken intern(String text)

Implements com.amazon.ion.SymbolTable.intern.

Doc from com.amazon.ion.SymbolTable.intern.

Adds a new symbol to this table, or finds an existing definition of it.

The resulting SymbolToken has the same String instance that was first interned. In order to reduce memory footprint, callers should generally replace their copy of the text with the string in the result.

This method will not necessarily return the same instance given the same input.

Parameters
text:String

the symbol text to intern.

Returns:SymbolToken

the interned symbol, with both text and SID defined; not null.

isLocalTableback to summary
public boolean isLocalTable()

Implements com.amazon.ion.SymbolTable.isLocalTable.

Doc from com.amazon.ion.SymbolTable.isLocalTable.

Determines whether this symbol table is local, and therefore unnamed and unversioned.

If this method returns true, then both isSharedTable() and isSystemTable() will return false.

isReadOnlyback to summary
public boolean isReadOnly()

Implements com.amazon.ion.SymbolTable.isReadOnly.

Doc from com.amazon.ion.SymbolTable.isReadOnly.

Determines whether this symbol table can have symbols added to it. Shared symtabs are always read-only. Local symtabs can also be made read-only on demand, which enables some optimizations when writing data but will cause failures if new symbols are encountered.

Returns:boolean

true if this table is read-only, false if symbols may be added.

isSharedTableback to summary
public boolean isSharedTable()

Implements com.amazon.ion.SymbolTable.isSharedTable.

Doc from com.amazon.ion.SymbolTable.isSharedTable.

Determines whether this symbol table is shared, and therefore named, versioned, and read-only.

If this method returns true, then isLocalTable() will return false.

isSubstituteback to summary
public boolean isSubstitute()

Implements com.amazon.ion.SymbolTable.isSubstitute.

Doc from com.amazon.ion.SymbolTable.isSubstitute.

Determines whether this instance is substituting for an imported shared table for which no exact match was found in the catalog. Such tables are not authoritative and may not even have any symbol text at all (as is the case when no version of an imported table is found).

Substitute tables are always shared, non-system tables.

This implementation always returns true.

isSystemTableback to summary
public boolean isSystemTable()

Implements com.amazon.ion.SymbolTable.isSystemTable.

Doc from com.amazon.ion.SymbolTable.isSystemTable.

Determines whether this symbol table is a system symbol table, and therefore shared, named, versioned, and read-only.

If this method returns true, then isLocalTable() will return false and isSharedTable() will return true.

iterateDeclaredSymbolNamesback to summary
public Iterator<String> iterateDeclaredSymbolNames()

Implements com.amazon.ion.SymbolTable.iterateDeclaredSymbolNames.

Doc from com.amazon.ion.SymbolTable.iterateDeclaredSymbolNames.

Creates an iterator that will return all non-imported symbol names, in order of their symbol IDs. The iterator will return null where there is an undefined sid.

The first string returned by the iterator has a symbol ID that is one more than getImportedMaxId(), and the last string has symbol ID equals to getMaxId().

Returns:Iterator<String>

a new iterator.

Annotations
@SuppressWarnings:unchecked
makeReadOnlyback to summary
public void makeReadOnly()

Implements com.amazon.ion.SymbolTable.makeReadOnly.

Doc from com.amazon.ion.SymbolTable.makeReadOnly.

Prevents this symbol table from accepting any more new symbols. Shared symtabs are always read-only. Making a local symtab read-only enables some optimizations when writing data, but will cause failures if new symbols are encountered.

writeToback to summary
public void writeTo(IonWriter writer) throws IOException

Implements com.amazon.ion.SymbolTable.writeTo.

Doc from com.amazon.ion.SymbolTable.writeTo.

Writes an Ion representation of this symbol table.

Parameters
writer:IonWriter

must not be null.

Exceptions
IOException:
if thrown by the writer.
com.amazon.ion.impl back to summary

private final Class SubstituteSymbolTable.SymbolIterator

extends Object
implements Iterator<String>
Class Inheritance
All Implemented Interfaces
java.util.Iterator

Field Summary

Modifier and TypeField and Description
private int
private Iterator<String>

Constructor Summary

AccessConstructor and Description
pack-priv
SymbolIterator(Iterator<String> originalIterator)

Method Summary

Modifier and TypeMethod and Description
public boolean
hasNext()

Implements java.util.Iterator.hasNext.

Returns true if the iteration has more elements.

public String
next()

Implements java.util.Iterator.next.

Returns the next element in the iteration.

public void
remove()

Overrides default java.util.Iterator.remove.

Removes from the underlying collection the last element returned by this iterator (optional operation).

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

myIndexback to summary
private int myIndex
myOriginalIteratorback to summary
private Iterator<String> myOriginalIterator

Constructor Detail

SymbolIteratorback to summary
pack-priv SymbolIterator(Iterator<String> originalIterator)

Method Detail

hasNextback to summary
public boolean hasNext()

Implements java.util.Iterator.hasNext.

Doc from java.util.Iterator.hasNext.

Returns true if the iteration has more elements. (In other words, returns true if next would return an element rather than throwing an exception.)

Returns:boolean

true if the iteration has more elements

nextback to summary
public String next()

Implements java.util.Iterator.next.

Doc from java.util.Iterator.next.

Returns the next element in the iteration.

Returns:String

the next element in the iteration

removeback to summary
public void remove()

Overrides default java.util.Iterator.remove.

Doc from java.util.Iterator.remove.

Removes from the underlying collection the last element returned by this iterator (optional operation). This method can be called only once per call to next.

The behavior of an iterator is unspecified if the underlying collection is modified while the iteration is in progress in any way other than by calling this method, unless an overriding class has specified a concurrent modification policy.

The behavior of an iterator is unspecified if this method is called after a call to the forEachRemaining method.