44
44
import org .springframework .util .StringUtils ;
45
45
46
46
/**
47
- * Class to manage context metadata used for the configuration and execution of the call.
47
+ * Class to manage context meta-data used for the configuration
48
+ * and execution of a stored procedure call.
48
49
*
49
50
* @author Thomas Risberg
50
51
* @author Juergen Hoeller
@@ -87,13 +88,13 @@ public class CallMetaDataContext {
87
88
// Indicates whether this procedure's return value should be included
88
89
private boolean returnValueRequired = false ;
89
90
90
- // Should we access call parameter meta data info or not
91
+ // Should we access call parameter meta- data info or not
91
92
private boolean accessCallParameterMetaData = true ;
92
93
93
94
// Should we bind parameter by name
94
95
private boolean namedBinding ;
95
96
96
- // The provider of call meta data
97
+ // The provider of call meta- data
97
98
@ Nullable
98
99
private CallMetaDataProvider metaDataProvider ;
99
100
@@ -214,14 +215,14 @@ public boolean isReturnValueRequired() {
214
215
}
215
216
216
217
/**
217
- * Specify whether call parameter metadata should be accessed.
218
+ * Specify whether call parameter meta-data should be accessed.
218
219
*/
219
220
public void setAccessCallParameterMetaData (boolean accessCallParameterMetaData ) {
220
221
this .accessCallParameterMetaData = accessCallParameterMetaData ;
221
222
}
222
223
223
224
/**
224
- * Check whether call parameter metadata should be accessed.
225
+ * Check whether call parameter meta-data should be accessed.
225
226
*/
226
227
public boolean isAccessCallParameterMetaData () {
227
228
return this .accessCallParameterMetaData ;
@@ -245,8 +246,8 @@ public boolean isNamedBinding() {
245
246
246
247
247
248
/**
248
- * Initialize this class with metadata from the database.
249
- * @param dataSource the DataSource used to retrieve metadata
249
+ * Initialize this class with meta-data from the database.
250
+ * @param dataSource the DataSource used to retrieve meta-data
250
251
*/
251
252
public void initializeMetaData (DataSource dataSource ) {
252
253
this .metaDataProvider = CallMetaDataProviderFactory .createMetaDataProvider (dataSource , this );
@@ -305,8 +306,8 @@ public List<SqlParameter> getCallParameters() {
305
306
}
306
307
307
308
/**
308
- * Process the list of parameters provided, and if procedure column metadata is used,
309
- * the parameters will be matched against the metadata information and any missing
309
+ * Process the list of parameters provided, and if procedure column meta-data is used,
310
+ * the parameters will be matched against the meta-data information and any missing
310
311
* ones will be automatically included.
311
312
* @param parameters the list of parameters to use as a base
312
313
*/
@@ -315,7 +316,7 @@ public void processParameters(List<SqlParameter> parameters) {
315
316
}
316
317
317
318
/**
318
- * Reconcile the provided parameters with available metadata and add new ones where appropriate.
319
+ * Reconcile the provided parameters with available meta-data and add new ones where appropriate.
319
320
*/
320
321
protected List <SqlParameter > reconcileParameters (List <SqlParameter > parameters ) {
321
322
CallMetaDataProvider provider = obtainMetaDataProvider ();
@@ -326,9 +327,9 @@ protected List<SqlParameter> reconcileParameters(List<SqlParameter> parameters)
326
327
List <String > outParamNames = new ArrayList <>();
327
328
List <String > metaDataParamNames = new ArrayList <>();
328
329
329
- // Get the names of the meta data parameters
330
+ // Get the names of the meta- data parameters
330
331
for (CallParameterMetaData meta : provider .getCallParameterMetaData ()) {
331
- if (meta .getParameterType () != DatabaseMetaData . procedureColumnReturn ) {
332
+ if (! meta .isReturnParameter () ) {
332
333
metaDataParamNames .add (lowerCase (meta .getParameterName ()));
333
334
}
334
335
}
@@ -380,10 +381,9 @@ protected List<SqlParameter> reconcileParameters(List<SqlParameter> parameters)
380
381
paramNameToCheck = lowerCase (provider .parameterNameToUse (paramName ));
381
382
}
382
383
String paramNameToUse = provider .parameterNameToUse (paramName );
383
- if (declaredParams .containsKey (paramNameToCheck ) ||
384
- (meta .getParameterType () == DatabaseMetaData .procedureColumnReturn && returnDeclared )) {
384
+ if (declaredParams .containsKey (paramNameToCheck ) || (meta .isReturnParameter () && returnDeclared )) {
385
385
SqlParameter param ;
386
- if (meta .getParameterType () == DatabaseMetaData . procedureColumnReturn ) {
386
+ if (meta .isReturnParameter () ) {
387
387
param = declaredParams .get (getFunctionReturnName ());
388
388
if (param == null && !getOutParameterNames ().isEmpty ()) {
389
389
param = declaredParams .get (getOutParameterNames ().get (0 ).toLowerCase ());
@@ -409,11 +409,12 @@ else if (paramName != null) {
409
409
}
410
410
}
411
411
else {
412
- if (meta .getParameterType () == DatabaseMetaData .procedureColumnReturn ) {
412
+ if (meta .isReturnParameter ()) {
413
+ // DatabaseMetaData.procedureColumnReturn or possibly procedureColumnResult
413
414
if (!isFunction () && !isReturnValueRequired () && paramName != null &&
414
415
provider .byPassReturnParameter (paramName )) {
415
416
if (logger .isDebugEnabled ()) {
416
- logger .debug ("Bypassing metadata return parameter for '" + paramName + "'" );
417
+ logger .debug ("Bypassing meta-data return parameter for '" + paramName + "'" );
417
418
}
418
419
}
419
420
else {
@@ -425,7 +426,7 @@ else if (paramName != null) {
425
426
outParamNames .add (returnNameToUse );
426
427
}
427
428
if (logger .isDebugEnabled ()) {
428
- logger .debug ("Added metadata return parameter for '" + returnNameToUse + "'" );
429
+ logger .debug ("Added meta-data return parameter for '" + returnNameToUse + "'" );
429
430
}
430
431
}
431
432
}
@@ -437,22 +438,23 @@ else if (paramName != null) {
437
438
workParams .add (provider .createDefaultOutParameter (paramNameToUse , meta ));
438
439
outParamNames .add (paramNameToUse );
439
440
if (logger .isDebugEnabled ()) {
440
- logger .debug ("Added metadata out parameter for '" + paramNameToUse + "'" );
441
+ logger .debug ("Added meta-data out parameter for '" + paramNameToUse + "'" );
441
442
}
442
443
}
443
444
else if (meta .getParameterType () == DatabaseMetaData .procedureColumnInOut ) {
444
445
workParams .add (provider .createDefaultInOutParameter (paramNameToUse , meta ));
445
446
outParamNames .add (paramNameToUse );
446
447
if (logger .isDebugEnabled ()) {
447
- logger .debug ("Added metadata in out parameter for '" + paramNameToUse + "'" );
448
+ logger .debug ("Added meta-data in- out parameter for '" + paramNameToUse + "'" );
448
449
}
449
450
}
450
451
else {
452
+ // DatabaseMetaData.procedureColumnIn or possibly procedureColumnUnknown
451
453
if (this .limitedInParameterNames .isEmpty () ||
452
454
limitedInParamNamesMap .containsKey (lowerCase (paramNameToUse ))) {
453
455
workParams .add (provider .createDefaultInParameter (paramNameToUse , meta ));
454
456
if (logger .isDebugEnabled ()) {
455
- logger .debug ("Added metadata in parameter for '" + paramNameToUse + "'" );
457
+ logger .debug ("Added meta-data in parameter for '" + paramNameToUse + "'" );
456
458
}
457
459
}
458
460
else {
@@ -476,7 +478,7 @@ else if (meta.getParameterType() == DatabaseMetaData.procedureColumnInOut) {
476
478
*/
477
479
public Map <String , Object > matchInParameterValuesWithCallParameters (SqlParameterSource parameterSource ) {
478
480
// For parameter source lookups we need to provide case-insensitive lookup support
479
- // since the database metadata is not necessarily providing case sensitive parameter names.
481
+ // since the database meta-data is not necessarily providing case sensitive parameter names.
480
482
Map <String , String > caseInsensitiveParameterNames =
481
483
SqlParameterSourceUtils .extractCaseInsensitiveParameterNames (parameterSource );
482
484
@@ -612,7 +614,7 @@ public Map<String, Object> matchInParameterValuesWithCallParameters(SqlParameter
612
614
}
613
615
614
616
/**
615
- * Build the call string based on configuration and metadata information.
617
+ * Build the call string based on configuration and meta-data information.
616
618
* @return the call string to be used
617
619
*/
618
620
public String createCallString () {
@@ -651,7 +653,7 @@ public String createCallString() {
651
653
}
652
654
653
655
for (SqlParameter parameter : this .callParameters ) {
654
- if (!( parameter .isResultsParameter () )) {
656
+ if (!parameter .isResultsParameter ()) {
655
657
if (parameterCount > 0 ) {
656
658
callString .append (", " );
657
659
}
0 commit comments