1
1
/*
2
- * Copyright 2002-2014 the original author or authors.
2
+ * Copyright 2002-2015 the original author or authors.
3
3
*
4
4
* Licensed under the Apache License, Version 2.0 (the "License");
5
5
* you may not use this file except in compliance with the License.
@@ -75,31 +75,31 @@ public void initializeWithMetaData(DatabaseMetaData databaseMetaData) throws SQL
75
75
}
76
76
catch (SQLException ex ) {
77
77
if (logger .isWarnEnabled ()) {
78
- logger .warn ("Error retrieving 'DatabaseMetaData.supportsCatalogsInProcedureCalls' - " + ex .getMessage ());
78
+ logger .warn ("Error retrieving 'DatabaseMetaData.supportsCatalogsInProcedureCalls': " + ex .getMessage ());
79
79
}
80
80
}
81
81
try {
82
82
setSupportsSchemasInProcedureCalls (databaseMetaData .supportsSchemasInProcedureCalls ());
83
83
}
84
84
catch (SQLException ex ) {
85
85
if (logger .isWarnEnabled ()) {
86
- logger .warn ("Error retrieving 'DatabaseMetaData.supportsSchemasInProcedureCalls' - " + ex .getMessage ());
86
+ logger .warn ("Error retrieving 'DatabaseMetaData.supportsSchemasInProcedureCalls': " + ex .getMessage ());
87
87
}
88
88
}
89
89
try {
90
90
setStoresUpperCaseIdentifiers (databaseMetaData .storesUpperCaseIdentifiers ());
91
91
}
92
92
catch (SQLException ex ) {
93
93
if (logger .isWarnEnabled ()) {
94
- logger .warn ("Error retrieving 'DatabaseMetaData.storesUpperCaseIdentifiers' - " + ex .getMessage ());
94
+ logger .warn ("Error retrieving 'DatabaseMetaData.storesUpperCaseIdentifiers': " + ex .getMessage ());
95
95
}
96
96
}
97
97
try {
98
98
setStoresLowerCaseIdentifiers (databaseMetaData .storesLowerCaseIdentifiers ());
99
99
}
100
100
catch (SQLException ex ) {
101
101
if (logger .isWarnEnabled ()) {
102
- logger .warn ("Error retrieving 'DatabaseMetaData.storesLowerCaseIdentifiers' - " + ex .getMessage ());
102
+ logger .warn ("Error retrieving 'DatabaseMetaData.storesLowerCaseIdentifiers': " + ex .getMessage ());
103
103
}
104
104
}
105
105
}
@@ -309,15 +309,18 @@ protected boolean isStoresLowerCaseIdentifiers() {
309
309
/**
310
310
* Process the procedure column metadata
311
311
*/
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
+
314
315
String metaDataCatalogName = metaDataCatalogNameToUse (catalogName );
315
316
String metaDataSchemaName = metaDataSchemaNameToUse (schemaName );
316
317
String metaDataProcedureName = procedureNameToUse (procedureName );
317
318
if (logger .isDebugEnabled ()) {
318
319
logger .debug ("Retrieving metadata for " + metaDataCatalogName + "/" +
319
320
metaDataSchemaName + "/" + metaDataProcedureName );
320
321
}
322
+
323
+ ResultSet procs = null ;
321
324
try {
322
325
procs = databaseMetaData .getProcedures (metaDataCatalogName , metaDataSchemaName , metaDataProcedureName );
323
326
List <String > found = new ArrayList <String >();
@@ -326,16 +329,24 @@ private void processProcedureColumns(DatabaseMetaData databaseMetaData, String c
326
329
"." + procs .getString ("PROCEDURE_NAME" ));
327
330
}
328
331
procs .close ();
332
+
329
333
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 );
332
337
}
333
- if (found .size () < 1 ) {
338
+ else if (found .isEmpty () ) {
334
339
if (metaDataProcedureName .contains ("." ) && !StringUtils .hasText (metaDataCatalogName )) {
335
340
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 + "'" );
339
350
}
340
351
}
341
352
0 commit comments