This is an automated email from the ASF dual-hosted git repository. matthiasblaesing pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/incubator-netbeans.git
commit 9fd82251f6453271460b6b868a358dd1964da933 Author: Matthias Bläsing <[email protected]> AuthorDate: Sun Nov 12 21:40:36 2017 +0100 #271446: Add more information to RuntimeExceptions DatabaseMetaData#getProcedureColumns --- db.metadata.model/nbproject/project.properties | 3 +- .../db/metadata/model/jdbc/JDBCProcedure.java | 69 ++++++++++++---------- 2 files changed, 41 insertions(+), 31 deletions(-) diff --git a/db.metadata.model/nbproject/project.properties b/db.metadata.model/nbproject/project.properties index 9093583..41f8d78 100644 --- a/db.metadata.model/nbproject/project.properties +++ b/db.metadata.model/nbproject/project.properties @@ -14,7 +14,8 @@ # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. -javac.source=1.6 + +javac.source=1.8 javac.compilerargs=-Xlint -Xlint:-serial test.unit.cp.extra=\ diff --git a/db.metadata.model/src/org/netbeans/modules/db/metadata/model/jdbc/JDBCProcedure.java b/db.metadata.model/src/org/netbeans/modules/db/metadata/model/jdbc/JDBCProcedure.java index 5d7c8da..8ae5a79 100644 --- a/db.metadata.model/src/org/netbeans/modules/db/metadata/model/jdbc/JDBCProcedure.java +++ b/db.metadata.model/src/org/netbeans/modules/db/metadata/model/jdbc/JDBCProcedure.java @@ -117,42 +117,49 @@ public class JDBCProcedure extends ProcedureImplementation { } protected void createProcedureInfo() { - LOGGER.log(Level.FINE, "Initializing procedure info in " + this); + LOGGER.log(Level.FINE, "Initializing procedure info in {0}", this); - Map<String, Column> newColumns = new LinkedHashMap<String, Column>(); - Map<String, Parameter> newParams = new LinkedHashMap<String, Parameter>(); + Map<String, Column> newColumns = new LinkedHashMap<>(); + Map<String, Parameter> newParams = new LinkedHashMap<>(); int resultCount = 0; int paramCount = 0; - - try { - ResultSet rs = jdbcSchema.getJDBCCatalog().getJDBCMetadata().getDmd().getProcedureColumns(jdbcSchema.getJDBCCatalog().getName(), jdbcSchema.getName(), name, "%"); // NOI18N - try { - while (rs.next()) { - short columnType = rs.getShort("COLUMN_TYPE"); - switch (columnType) { - case DatabaseMetaData.procedureColumnResult: - addColumn(++resultCount, rs, newColumns); - break; - case DatabaseMetaData.procedureColumnIn: - case DatabaseMetaData.procedureColumnInOut: - case DatabaseMetaData.procedureColumnOut: - case DatabaseMetaData.procedureColumnUnknown: - addParameter(++paramCount, rs, newParams); - break; - case DatabaseMetaData.procedureColumnReturn: - setReturnValue(rs); - break; - default: - LOGGER.log(Level.INFO, "Encountered unexpected column type " + columnType + " when retrieving metadadta for procedure " + name); - } - } - } finally { - if (rs != null) { - rs.close(); + + DatabaseMetaData dmd = jdbcSchema.getJDBCCatalog().getJDBCMetadata().getDmd(); + String catalogName = jdbcSchema.getJDBCCatalog().getName(); + String schemaName = jdbcSchema.getName(); + + try (ResultSet rs = dmd.getProcedureColumns(catalogName, schemaName, name, "%");) { // NOI18N + while (rs.next()) { + short columnType = rs.getShort("COLUMN_TYPE"); + switch (columnType) { + case DatabaseMetaData.procedureColumnResult: + resultCount++; + addColumn(resultCount, rs, newColumns); + break; + case DatabaseMetaData.procedureColumnIn: + case DatabaseMetaData.procedureColumnInOut: + case DatabaseMetaData.procedureColumnOut: + case DatabaseMetaData.procedureColumnUnknown: + paramCount++; + addParameter(paramCount, rs, newParams); + break; + case DatabaseMetaData.procedureColumnReturn: + setReturnValue(rs); + break; + default: + LOGGER.log(Level.INFO, "Encountered unexpected column type {0} when retrieving metadadta for procedure {1}", new Object[]{columnType, name}); } } + } catch (RuntimeException e) { + throw new RuntimeException(String.format( + "Failed to retrieve procedure info for catalog: '%s', schema: '%s', procedure: '%s'", + catalogName, schemaName, name + ), e); } catch (SQLException e) { - throw new MetadataException(e); + throw new MetadataException(String.format( + "Failed to retrieve procedure info for catalog: '%s', schema: '%s', procedure: '%s'", + catalogName, schemaName, name + ), e); } columns = Collections.unmodifiableMap(newColumns); parameters = Collections.unmodifiableMap(newParams); @@ -175,6 +182,7 @@ public class JDBCProcedure extends ProcedureImplementation { LOGGER.log(Level.FINE, "Created return value {0}", returnValue); } + @SuppressWarnings("ReturnOfCollectionOrArrayField") private Map<String, Column> initColumns() { if (columns != null) { return columns; @@ -183,6 +191,7 @@ public class JDBCProcedure extends ProcedureImplementation { return columns; } + @SuppressWarnings("ReturnOfCollectionOrArrayField") private Map<String, Parameter> initParameters() { if (parameters != null) { return parameters; -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
