- java.lang.Object
-
- javax.sql.rowset.RowSetMetaDataImpl
-
- All Implemented Interfaces:
Serializable
,ResultSetMetaData
,Wrapper
,RowSetMetaData
public class RowSetMetaDataImpl extends Object implements RowSetMetaData, Serializable
Provides implementations for the methods that set and get metadata information about aRowSet
object's columns. ARowSetMetaDataImpl
object keeps track of the number of columns in the rowset and maintains an internal array of column attributes for each column.A
RowSet
object creates aRowSetMetaDataImpl
object internally in order to set and retrieve information about its columns.NOTE: All metadata in a
RowSetMetaDataImpl
object should be considered as unavailable until theRowSet
object that it describes is populated. Therefore, anyRowSetMetaDataImpl
method that retrieves information is defined as having unspecified behavior when it is called before theRowSet
object contains data.- Since:
- 1.5
- See Also:
- Serialized Form
-
-
Field Summary
-
Fields declared in interface java.sql.ResultSetMetaData
columnNoNulls, columnNullable, columnNullableUnknown
-
-
Constructor Summary
Constructors Constructor Description RowSetMetaDataImpl()
-
Method Summary
Modifier and Type Method Description String
getCatalogName(int columnIndex)
Retrieves the catalog name of the table from which the value in the designated column was derived.String
getColumnClassName(int columnIndex)
Retrieves the fully-qualified name of the class in the Java programming language to which a value in the designated column will be mapped.int
getColumnCount()
Retrieves the number of columns in theRowSet
object for which thisRowSetMetaDataImpl
object was created.int
getColumnDisplaySize(int columnIndex)
Retrieves the normal maximum width in chars of the designated column.String
getColumnLabel(int columnIndex)
Retrieves the suggested column title for the designated column for use in printouts and displays.String
getColumnName(int columnIndex)
Retrieves the name of the designated column.int
getColumnType(int columnIndex)
Retrieves the type code (one of thejava.sql.Types
constants) for the SQL type of the value stored in the designated column.String
getColumnTypeName(int columnIndex)
Retrieves the DBMS-specific type name for values stored in the designated column.int
getPrecision(int columnIndex)
Retrieves the total number of digits for values stored in the designated column.int
getScale(int columnIndex)
Retrieves the number of digits to the right of the decimal point for values stored in the designated column.String
getSchemaName(int columnIndex)
Retrieves the schema name of the table from which the value in the designated column was derived.String
getTableName(int columnIndex)
Retrieves the name of the table from which the value in the designated column was derived.boolean
isAutoIncrement(int columnIndex)
Retrieves whether a value stored in the designated column is automatically numbered, and thus readonly.boolean
isCaseSensitive(int columnIndex)
Indicates whether the case of the designated column's name matters.boolean
isCurrency(int columnIndex)
Indicates whether a value stored in the designated column is a cash value.boolean
isDefinitelyWritable(int columnIndex)
Indicates whether a write operation on the designated column will definitely succeed.int
isNullable(int columnIndex)
Retrieves a constant indicating whether it is possible to store aNULL
value in the designated column.boolean
isReadOnly(int columnIndex)
Indicates whether the designated column is definitely not writable, thus readonly.boolean
isSearchable(int columnIndex)
Indicates whether a value stored in the designated column can be used in aWHERE
clause.boolean
isSigned(int columnIndex)
Indicates whether a value stored in the designated column is a signed number.boolean
isWrapperFor(Class<?> interfaces)
Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does.boolean
isWritable(int columnIndex)
Indicates whether it is possible for a write operation on the designated column to succeed.void
setAutoIncrement(int columnIndex, boolean property)
Sets whether the designated column is automatically numbered, thus read-only, to the givenboolean
value.void
setCaseSensitive(int columnIndex, boolean property)
Sets whether the name of the designated column is case sensitive to the givenboolean
.void
setCatalogName(int columnIndex, String catalogName)
Sets the catalog name of the table from which the designated column was derived to catalogName.void
setColumnCount(int columnCount)
Sets to the given number the number of columns in theRowSet
object for which thisRowSetMetaDataImpl
object was created.void
setColumnDisplaySize(int columnIndex, int size)
Sets the normal maximum number of chars in the designated column to the given number.void
setColumnLabel(int columnIndex, String label)
Sets the suggested column label for use in printouts and displays, if any, to label.void
setColumnName(int columnIndex, String columnName)
Sets the column name of the designated column to the given name.void
setColumnType(int columnIndex, int SQLType)
Sets the SQL type code for values stored in the designated column to the given type code from the classjava.sql.Types
.void
setColumnTypeName(int columnIndex, String typeName)
Sets the type name used by the data source for values stored in the designated column to the given type name.void
setCurrency(int columnIndex, boolean property)
Sets whether a value stored in the designated column is a cash value to the givenboolean
.void
setNullable(int columnIndex, int property)
Sets whether a value stored in the designated column can be set toNULL
to the given constant from the interfaceResultSetMetaData
.void
setPrecision(int columnIndex, int precision)
Sets the total number of decimal digits in a value stored in the designated column to the given number.void
setScale(int columnIndex, int scale)
Sets the number of digits to the right of the decimal point in a value stored in the designated column to the given number.void
setSchemaName(int columnIndex, String schemaName)
Sets the designated column's table's schema name, if any, to schemaName.void
setSearchable(int columnIndex, boolean property)
Sets whether a value stored in the designated column can be used in aWHERE
clause to the givenboolean
value.void
setSigned(int columnIndex, boolean property)
Sets whether a value stored in the designated column is a signed number to the givenboolean
.void
setTableName(int columnIndex, String tableName)
Sets the name of the table from which the designated column was derived to the given table name.<T> T
unwrap(Class<T> iface)
Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy.
-
-
-
Method Detail
-
setColumnCount
public void setColumnCount(int columnCount) throws SQLException
Sets to the given number the number of columns in theRowSet
object for which thisRowSetMetaDataImpl
object was created.- Specified by:
setColumnCount
in interfaceRowSetMetaData
- Parameters:
columnCount
- anint
giving the number of columns in theRowSet
object- Throws:
SQLException
- if the given number is equal to or less than zero
-
setAutoIncrement
public void setAutoIncrement(int columnIndex, boolean property) throws SQLException
Sets whether the designated column is automatically numbered, thus read-only, to the givenboolean
value.- Specified by:
setAutoIncrement
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns in the rowset, inclusiveproperty
-true
if the given column is automatically incremented;false
otherwise- Throws:
SQLException
- if a database access error occurs or the given index is out of bounds
-
setCaseSensitive
public void setCaseSensitive(int columnIndex, boolean property) throws SQLException
Sets whether the name of the designated column is case sensitive to the givenboolean
.- Specified by:
setCaseSensitive
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns in the rowset, inclusiveproperty
-true
to indicate that the column name is case sensitive;false
otherwise- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
setSearchable
public void setSearchable(int columnIndex, boolean property) throws SQLException
Sets whether a value stored in the designated column can be used in aWHERE
clause to the givenboolean
value.- Specified by:
setSearchable
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns in the rowset, inclusiveproperty
-true
to indicate that a column value can be used in aWHERE
clause;false
otherwise- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
setCurrency
public void setCurrency(int columnIndex, boolean property) throws SQLException
Sets whether a value stored in the designated column is a cash value to the givenboolean
.- Specified by:
setCurrency
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive between1
and the number of columns, inclusiveproperty
- true if the value is a cash value; false otherwise.- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
setNullable
public void setNullable(int columnIndex, int property) throws SQLException
Sets whether a value stored in the designated column can be set toNULL
to the given constant from the interfaceResultSetMetaData
.- Specified by:
setNullable
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusiveproperty
- one of the followingResultSetMetaData
constants:columnNoNulls
,columnNullable
, orcolumnNullableUnknown
- Throws:
SQLException
- if a database access error occurs, the given column number is out of bounds, or the value supplied for the property parameter is not one of the following constants:ResultSetMetaData.columnNoNulls
,ResultSetMetaData.columnNullable
, orResultSetMetaData.columnNullableUnknown
-
setSigned
public void setSigned(int columnIndex, boolean property) throws SQLException
Sets whether a value stored in the designated column is a signed number to the givenboolean
.- Specified by:
setSigned
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusiveproperty
-true
to indicate that a column value is a signed number;false
to indicate that it is not- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
setColumnDisplaySize
public void setColumnDisplaySize(int columnIndex, int size) throws SQLException
Sets the normal maximum number of chars in the designated column to the given number.- Specified by:
setColumnDisplaySize
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusivesize
- the maximum size of the column in chars; must be0
or more- Throws:
SQLException
- if a database access error occurs, the given column number is out of bounds, or size is less than0
-
setColumnLabel
public void setColumnLabel(int columnIndex, String label) throws SQLException
Sets the suggested column label for use in printouts and displays, if any, to label. If label isnull
, the column label is set to an empty string ("").- Specified by:
setColumnLabel
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusivelabel
- the column label to be used in printouts and displays; if the column label isnull
, an emptyString
is set- Throws:
SQLException
- if a database access error occurs or the given column index is out of bounds
-
setColumnName
public void setColumnName(int columnIndex, String columnName) throws SQLException
Sets the column name of the designated column to the given name.- Specified by:
setColumnName
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusivecolumnName
- aString
object indicating the column name; if the given name isnull
, an emptyString
is set- Throws:
SQLException
- if a database access error occurs or the given column index is out of bounds
-
setSchemaName
public void setSchemaName(int columnIndex, String schemaName) throws SQLException
Sets the designated column's table's schema name, if any, to schemaName. If schemaName isnull
, the schema name is set to an empty string ("").- Specified by:
setSchemaName
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusiveschemaName
- the schema name for the table from which a value in the designated column was derived; may be an emptyString
ornull
- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
setPrecision
public void setPrecision(int columnIndex, int precision) throws SQLException
Sets the total number of decimal digits in a value stored in the designated column to the given number.- Specified by:
setPrecision
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusiveprecision
- the total number of decimal digits; must be0
or more- Throws:
SQLException
- if a database access error occurs, columnIndex is out of bounds, or precision is less than0
-
setScale
public void setScale(int columnIndex, int scale) throws SQLException
Sets the number of digits to the right of the decimal point in a value stored in the designated column to the given number.- Specified by:
setScale
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusivescale
- the number of digits to the right of the decimal point; must be zero or greater- Throws:
SQLException
- if a database access error occurs, columnIndex is out of bounds, or scale is less than0
-
setTableName
public void setTableName(int columnIndex, String tableName) throws SQLException
Sets the name of the table from which the designated column was derived to the given table name.- Specified by:
setTableName
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusivetableName
- the column's table name; may benull
or an empty string- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
setCatalogName
public void setCatalogName(int columnIndex, String catalogName) throws SQLException
Sets the catalog name of the table from which the designated column was derived to catalogName. If catalogName isnull
, the catalog name is set to an empty string.- Specified by:
setCatalogName
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusivecatalogName
- the column's table's catalog name; if the catalogName isnull
, an emptyString
is set- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
setColumnType
public void setColumnType(int columnIndex, int SQLType) throws SQLException
Sets the SQL type code for values stored in the designated column to the given type code from the classjava.sql.Types
.- Specified by:
setColumnType
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusiveSQLType
- the designated column's SQL type, which must be one of the constants in the classjava.sql.Types
- Throws:
SQLException
- if a database access error occurs, the given column number is out of bounds, or the column type specified is not one of the constants injava.sql.Types
- See Also:
Types
-
setColumnTypeName
public void setColumnTypeName(int columnIndex, String typeName) throws SQLException
Sets the type name used by the data source for values stored in the designated column to the given type name.- Specified by:
setColumnTypeName
in interfaceRowSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusivetypeName
- the data source-specific type name; if typeName isnull
, an emptyString
is set- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
getColumnCount
public int getColumnCount() throws SQLException
Retrieves the number of columns in theRowSet
object for which thisRowSetMetaDataImpl
object was created.- Specified by:
getColumnCount
in interfaceResultSetMetaData
- Returns:
- the number of columns
- Throws:
SQLException
- if an error occurs determining the column count
-
isAutoIncrement
public boolean isAutoIncrement(int columnIndex) throws SQLException
Retrieves whether a value stored in the designated column is automatically numbered, and thus readonly.- Specified by:
isAutoIncrement
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
true
if the column is automatically numbered;false
otherwise- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
isCaseSensitive
public boolean isCaseSensitive(int columnIndex) throws SQLException
Indicates whether the case of the designated column's name matters.- Specified by:
isCaseSensitive
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
true
if the column name is case sensitive;false
otherwise- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
isSearchable
public boolean isSearchable(int columnIndex) throws SQLException
Indicates whether a value stored in the designated column can be used in aWHERE
clause.- Specified by:
isSearchable
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
true
if a value in the designated column can be used in aWHERE
clause;false
otherwise- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
isCurrency
public boolean isCurrency(int columnIndex) throws SQLException
Indicates whether a value stored in the designated column is a cash value.- Specified by:
isCurrency
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
true
if a value in the designated column is a cash value;false
otherwise- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
isNullable
public int isNullable(int columnIndex) throws SQLException
Retrieves a constant indicating whether it is possible to store aNULL
value in the designated column.- Specified by:
isNullable
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- a constant from the
ResultSetMetaData
interface; eithercolumnNoNulls
,columnNullable
, orcolumnNullableUnknown
- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
isSigned
public boolean isSigned(int columnIndex) throws SQLException
Indicates whether a value stored in the designated column is a signed number.- Specified by:
isSigned
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
true
if a value in the designated column is a signed number;false
otherwise- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
getColumnDisplaySize
public int getColumnDisplaySize(int columnIndex) throws SQLException
Retrieves the normal maximum width in chars of the designated column.- Specified by:
getColumnDisplaySize
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- the maximum number of chars that can be displayed in the designated column
- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
getColumnLabel
public String getColumnLabel(int columnIndex) throws SQLException
Retrieves the suggested column title for the designated column for use in printouts and displays.- Specified by:
getColumnLabel
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- the suggested column name to use in printouts and displays
- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
getColumnName
public String getColumnName(int columnIndex) throws SQLException
Retrieves the name of the designated column.- Specified by:
getColumnName
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- the column name of the designated column
- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
getSchemaName
public String getSchemaName(int columnIndex) throws SQLException
Retrieves the schema name of the table from which the value in the designated column was derived.- Specified by:
getSchemaName
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- the schema name or an empty
String
if no schema name is available - Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
getPrecision
public int getPrecision(int columnIndex) throws SQLException
Retrieves the total number of digits for values stored in the designated column.- Specified by:
getPrecision
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- the precision for values stored in the designated column
- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
getScale
public int getScale(int columnIndex) throws SQLException
Retrieves the number of digits to the right of the decimal point for values stored in the designated column.- Specified by:
getScale
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- the scale for values stored in the designated column
- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
getTableName
public String getTableName(int columnIndex) throws SQLException
Retrieves the name of the table from which the value in the designated column was derived.- Specified by:
getTableName
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- the table name or an empty
String
if no table name is available - Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
getCatalogName
public String getCatalogName(int columnIndex) throws SQLException
Retrieves the catalog name of the table from which the value in the designated column was derived.- Specified by:
getCatalogName
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- the catalog name of the column's table or an empty
String
if no catalog name is available - Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
getColumnType
public int getColumnType(int columnIndex) throws SQLException
Retrieves the type code (one of thejava.sql.Types
constants) for the SQL type of the value stored in the designated column.- Specified by:
getColumnType
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- an
int
representing the SQL type of values stored in the designated column - Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds- See Also:
Types
-
getColumnTypeName
public String getColumnTypeName(int columnIndex) throws SQLException
Retrieves the DBMS-specific type name for values stored in the designated column.- Specified by:
getColumnTypeName
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- the type name used by the data source
- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
isReadOnly
public boolean isReadOnly(int columnIndex) throws SQLException
Indicates whether the designated column is definitely not writable, thus readonly.- Specified by:
isReadOnly
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
true
if thisRowSet
object is read-Only and thus not updatable;false
otherwise- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
isWritable
public boolean isWritable(int columnIndex) throws SQLException
Indicates whether it is possible for a write operation on the designated column to succeed. A return value oftrue
means that a write operation may or may not succeed.- Specified by:
isWritable
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
true
if a write operation on the designated column may will succeed;false
otherwise- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
isDefinitelyWritable
public boolean isDefinitelyWritable(int columnIndex) throws SQLException
Indicates whether a write operation on the designated column will definitely succeed.- Specified by:
isDefinitelyWritable
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
true
if a write operation on the designated column will definitely succeed;false
otherwise- Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
getColumnClassName
public String getColumnClassName(int columnIndex) throws SQLException
Retrieves the fully-qualified name of the class in the Java programming language to which a value in the designated column will be mapped. For example, if the value is anint
, the class name returned by this method will bejava.lang.Integer
.If the value in the designated column has a custom mapping, this method returns the name of the class that implements
SQLData
. When the methodResultSet.getObject
is called to retrieve a value from the designated column, it will create an instance of this class or one of its subclasses.- Specified by:
getColumnClassName
in interfaceResultSetMetaData
- Parameters:
columnIndex
- the first column is 1, the second is 2, and so on; must be between1
and the number of columns, inclusive- Returns:
- the fully-qualified name of the class in the Java programming
language that would be used by the method
RowSet.getObject
to retrieve the value in the specified column. This is the class name used for custom mapping when there is a custom mapping. - Throws:
SQLException
- if a database access error occurs or the given column number is out of bounds
-
unwrap
public <T> T unwrap(Class<T> iface) throws SQLException
Returns an object that implements the given interface to allow access to non-standard methods, or standard methods not exposed by the proxy. The result may be either the object found to implement the interface or a proxy for that object. If the receiver implements the interface then that is the object. If the receiver is a wrapper and the wrapped object implements the interface then that is the object. Otherwise the object is the result of callingunwrap
recursively on the wrapped object. If the receiver is not a wrapper and does not implement the interface, then anSQLException
is thrown.- Specified by:
unwrap
in interfaceWrapper
- Type Parameters:
T
- the type of the class modeled by this Class object- Parameters:
iface
- A Class defining an interface that the result must implement.- Returns:
- an object that implements the interface. May be a proxy for the actual implementing object.
- Throws:
SQLException
- If no object found that implements the interface- Since:
- 1.6
-
isWrapperFor
public boolean isWrapperFor(Class<?> interfaces) throws SQLException
Returns true if this either implements the interface argument or is directly or indirectly a wrapper for an object that does. Returns false otherwise. If this implements the interface then return true, else if this is a wrapper then return the result of recursively callingisWrapperFor
on the wrapped object. If this does not implement the interface and is not a wrapper, return false. This method should be implemented as a low-cost operation compared tounwrap
so that callers can use this method to avoid expensiveunwrap
calls that may fail. If this method returns true then callingunwrap
with the same argument should succeed.- Specified by:
isWrapperFor
in interfaceWrapper
- Parameters:
interfaces
- a Class defining an interface.- Returns:
- true if this implements the interface or directly or indirectly wraps an object that does.
- Throws:
SQLException
- if an error occurs while determining whether this is a wrapper for an object with the given interface.- Since:
- 1.6
-
-