From 9b925c2e84485368e293e6dee48972c9949c67de Mon Sep 17 00:00:00 2001 From: Michael Minella Date: Thu, 10 Apr 2014 16:48:07 -0500 Subject: [PATCH] BATCH-2172: Fixed database version check for DB2ZOS --- .../batch/support/DatabaseType.java | 12 ++++++------ .../batch/support/DatabaseTypeTests.java | 17 ++++++++++------- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/DatabaseType.java b/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/DatabaseType.java index 5fa56f98a..8bd777c09 100644 --- a/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/DatabaseType.java +++ b/spring-batch-infrastructure/src/main/java/org/springframework/batch/support/DatabaseType.java @@ -16,13 +16,13 @@ package org.springframework.batch.support; -import java.util.HashMap; -import java.util.Map; - -import javax.sql.DataSource; - import org.springframework.jdbc.support.JdbcUtils; import org.springframework.jdbc.support.MetaDataAccessException; +import org.springframework.util.StringUtils; + +import javax.sql.DataSource; +import java.util.HashMap; +import java.util.Map; /** @@ -94,7 +94,7 @@ public enum DatabaseType { public static DatabaseType fromMetaData(DataSource dataSource) throws MetaDataAccessException { String databaseProductName = JdbcUtils.extractDatabaseMetaData(dataSource, "getDatabaseProductName").toString(); - if ("DB2".equals(databaseProductName)) { + if (StringUtils.hasText(databaseProductName) && !databaseProductName.equals("DB2/Linux") && databaseProductName.startsWith("DB2")) { String databaseProductVersion = JdbcUtils.extractDatabaseMetaData(dataSource, "getDatabaseProductVersion").toString(); if (!databaseProductVersion.startsWith("SQL")) { diff --git a/spring-batch-infrastructure/src/test/java/org/springframework/batch/support/DatabaseTypeTests.java b/spring-batch-infrastructure/src/test/java/org/springframework/batch/support/DatabaseTypeTests.java index df9e1a955..8417381e6 100644 --- a/spring-batch-infrastructure/src/test/java/org/springframework/batch/support/DatabaseTypeTests.java +++ b/spring-batch-infrastructure/src/test/java/org/springframework/batch/support/DatabaseTypeTests.java @@ -15,6 +15,11 @@ */ package org.springframework.batch.support; +import org.junit.Test; +import org.springframework.jdbc.support.MetaDataAccessException; + +import javax.sql.DataSource; + import static org.junit.Assert.assertEquals; import static org.springframework.batch.support.DatabaseType.DB2; import static org.springframework.batch.support.DatabaseType.DB2ZOS; @@ -28,11 +33,6 @@ import static org.springframework.batch.support.DatabaseType.SQLSERVER; import static org.springframework.batch.support.DatabaseType.SYBASE; import static org.springframework.batch.support.DatabaseType.fromProductName; -import javax.sql.DataSource; - -import org.junit.Test; -import org.springframework.jdbc.support.MetaDataAccessException; - /** * * @author Lucas Ward @@ -75,8 +75,11 @@ public class DatabaseTypeTests { @Test public void testFromMetaDataForDB2ZOS() throws Exception { - DataSource ds = DatabaseTypeTestUtils.getMockDataSource("DB2", "DSN08015"); - assertEquals(DB2ZOS, DatabaseType.fromMetaData(ds)); + DataSource oldDs = DatabaseTypeTestUtils.getMockDataSource("DB2", "DSN08015"); + assertEquals(DB2ZOS, DatabaseType.fromMetaData(oldDs)); + + DataSource newDs = DatabaseTypeTestUtils.getMockDataSource("DB2 for DB2 UDB for z/OS", "DSN08015"); + assertEquals(DB2ZOS, DatabaseType.fromMetaData(newDs)); } @Test