11/*
2- * Copyright 2002-2014 the original author or authors.
2+ * Copyright 2002-2015 the original author or authors.
33 *
44 * Licensed under the Apache License, Version 2.0 (the "License");
55 * you may not use this file except in compliance with the License.
@@ -75,31 +75,31 @@ public void initializeWithMetaData(DatabaseMetaData databaseMetaData) throws SQL
7575 }
7676 catch (SQLException ex ) {
7777 if (logger .isWarnEnabled ()) {
78- logger .warn ("Error retrieving 'DatabaseMetaData.supportsCatalogsInProcedureCalls' - " + ex .getMessage ());
78+ logger .warn ("Error retrieving 'DatabaseMetaData.supportsCatalogsInProcedureCalls': " + ex .getMessage ());
7979 }
8080 }
8181 try {
8282 setSupportsSchemasInProcedureCalls (databaseMetaData .supportsSchemasInProcedureCalls ());
8383 }
8484 catch (SQLException ex ) {
8585 if (logger .isWarnEnabled ()) {
86- logger .warn ("Error retrieving 'DatabaseMetaData.supportsSchemasInProcedureCalls' - " + ex .getMessage ());
86+ logger .warn ("Error retrieving 'DatabaseMetaData.supportsSchemasInProcedureCalls': " + ex .getMessage ());
8787 }
8888 }
8989 try {
9090 setStoresUpperCaseIdentifiers (databaseMetaData .storesUpperCaseIdentifiers ());
9191 }
9292 catch (SQLException ex ) {
9393 if (logger .isWarnEnabled ()) {
94- logger .warn ("Error retrieving 'DatabaseMetaData.storesUpperCaseIdentifiers' - " + ex .getMessage ());
94+ logger .warn ("Error retrieving 'DatabaseMetaData.storesUpperCaseIdentifiers': " + ex .getMessage ());
9595 }
9696 }
9797 try {
9898 setStoresLowerCaseIdentifiers (databaseMetaData .storesLowerCaseIdentifiers ());
9999 }
100100 catch (SQLException ex ) {
101101 if (logger .isWarnEnabled ()) {
102- logger .warn ("Error retrieving 'DatabaseMetaData.storesLowerCaseIdentifiers' - " + ex .getMessage ());
102+ logger .warn ("Error retrieving 'DatabaseMetaData.storesLowerCaseIdentifiers': " + ex .getMessage ());
103103 }
104104 }
105105 }
@@ -309,15 +309,18 @@ protected boolean isStoresLowerCaseIdentifiers() {
309309 /**
310310 * Process the procedure column metadata
311311 */
312- private void processProcedureColumns (DatabaseMetaData databaseMetaData , String catalogName , String schemaName , String procedureName ) {
313- ResultSet procs = null ;
312+ private void processProcedureColumns (
313+ DatabaseMetaData databaseMetaData , String catalogName , String schemaName , String procedureName ) {
314+
314315 String metaDataCatalogName = metaDataCatalogNameToUse (catalogName );
315316 String metaDataSchemaName = metaDataSchemaNameToUse (schemaName );
316317 String metaDataProcedureName = procedureNameToUse (procedureName );
317318 if (logger .isDebugEnabled ()) {
318319 logger .debug ("Retrieving metadata for " + metaDataCatalogName + "/" +
319320 metaDataSchemaName + "/" + metaDataProcedureName );
320321 }
322+
323+ ResultSet procs = null ;
321324 try {
322325 procs = databaseMetaData .getProcedures (metaDataCatalogName , metaDataSchemaName , metaDataProcedureName );
323326 List <String > found = new ArrayList <String >();
@@ -326,16 +329,24 @@ private void processProcedureColumns(DatabaseMetaData databaseMetaData, String c
326329 "." + procs .getString ("PROCEDURE_NAME" ));
327330 }
328331 procs .close ();
332+
329333 if (found .size () > 1 ) {
330- throw new InvalidDataAccessApiUsageException ("Unable to determine the correct call signature - " +
331- "multiple procedures/functions/signatures for " + metaDataProcedureName + " found " + found );
334+ throw new InvalidDataAccessApiUsageException (
335+ "Unable to determine the correct call signature - multiple " +
336+ "procedures/functions/signatures for '" + metaDataProcedureName + "': found " + found );
332337 }
333- if (found .size () < 1 ) {
338+ else if (found .isEmpty () ) {
334339 if (metaDataProcedureName .contains ("." ) && !StringUtils .hasText (metaDataCatalogName )) {
335340 String packageName = metaDataProcedureName .substring (0 , metaDataProcedureName .indexOf ("." ));
336- throw new InvalidDataAccessApiUsageException ("Unable to determine the correct call signature for " +
337- metaDataProcedureName + " - package name should be specified separately using " +
338- "'.withCatalogName(\" " + packageName + "\" )'" );
341+ throw new InvalidDataAccessApiUsageException (
342+ "Unable to determine the correct call signature for '" + metaDataProcedureName +
343+ "' - package name should be specified separately using '.withCatalogName(\" " +
344+ packageName + "\" )'" );
345+ }
346+ else {
347+ throw new InvalidDataAccessApiUsageException (
348+ "Unable to determine the correct call signature - no " +
349+ "procedure/function/signature for '" + metaDataProcedureName + "'" );
339350 }
340351 }
341352
0 commit comments