You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@netbeans.apache.org by ma...@apache.org on 2017/11/12 20:52:24 UTC

[incubator-netbeans] 03/04: #271446: Add more information to RuntimeExceptions DatabaseMetaData#getProcedureColumns

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 <mb...@doppel-helix.eu>
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
"commits@netbeans.apache.org" <co...@netbeans.apache.org>.