Martin Desruisseaux created SIS-441:
---------------------------------------
Summary: UnconvertibleObjectException when reading code list value from PostgreSQL
Key: SIS-441
URL: https://issues.apache.org/jira/browse/SIS-441
Project: Spatial Information Systems
Issue Type: Task
Components: Metadata
Affects Versions: 0.8
Reporter: Martin Desruisseaux
Assignee: Martin Desruisseaux
Fix For: 1.0
When metadata are read from database using {{org.apache.sis.sql.MetadataSource}}, an attempt
to get the {{CodeList}} value of a metadata entry produce the following error:
{noformat}
org.apache.sis.util.collection.BackingStoreException: Database error while creating a ‘Role’
object for the “IOGP” identifier.
at org.apache.sis.metadata.sql.Dispatcher.invoke(Dispatcher.java:161)
at org.apache.sis.metadata.sql.$Proxy233.getRole(Unknown Source)
(…snip…)
Caused by: org.apache.sis.metadata.sql.MetadataStoreException: Expected an instance of ‘Role’
for the “role” property, but got an instance of ‘PGobject’.
at org.apache.sis.metadata.sql.MetadataSource.readColumn(MetadataSource.java:990)
at org.apache.sis.metadata.sql.Dispatcher.fetchValue(Dispatcher.java:227)
at org.apache.sis.metadata.sql.Dispatcher.invoke(Dispatcher.java:159)
Caused by: org.apache.sis.util.UnconvertibleObjectException: Can not convert from type ‘PGobject’
to type ‘Role’.
at org.apache.sis.internal.converter.ConverterRegistry.find(ConverterRegistry.java:528)
(…snip…)
{noformat}
This happen only with PostgreSQL database, because we store metadata as `VARCHAR` on Derby.
The workaround is to read {{CodeList}} value using {{ResultSet.getString(int)}} instead than
{{ResultSet.getObject(…)}}, so the {{PGobject}} is converted to a {{String}} that we can
later parse as a {{CodeList}}.
--
This message was sent by Atlassian JIRA
(v7.6.3#76005)
|