From 6d12174752a1a3d44a03e513b63d99ad982d12b6 Mon Sep 17 00:00:00 2001 From: pesse Date: Mon, 22 Oct 2018 16:41:44 +0200 Subject: [PATCH 1/2] Added ParametersAreNonnullByDefault --- pom.xml | 7 ++++++- src/main/java/org/utplsql/api/DBHelper.java | 6 ------ src/main/java/org/utplsql/api/EnvironmentVariableUtil.java | 4 +++- src/main/java/org/utplsql/api/JavaApiVersionInfo.java | 2 +- src/main/java/org/utplsql/api/TestRunner.java | 2 +- src/main/java/org/utplsql/api/Version.java | 3 ++- src/main/java/org/utplsql/api/db/DatabaseInformation.java | 3 ++- .../org/utplsql/api/db/DefaultDatabaseInformation.java | 6 ++---- .../utplsql/api/exception/SomeTestsFailedException.java | 3 ++- src/main/java/org/utplsql/api/package-info.java | 4 ++++ .../java/org/utplsql/api/reporter/ReporterFactory.java | 3 ++- 11 files changed, 25 insertions(+), 18 deletions(-) create mode 100644 src/main/java/org/utplsql/api/package-info.java diff --git a/pom.xml b/pom.xml index 56d10d4..c2c3398 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ org.utplsql java-api - 3.1.1.1-SNAPSHOT + 3.1.2-SNAPSHOT jar utPLSQL-java-api @@ -36,6 +36,11 @@ 12.2.0.1 compile + + com.google.code.findbugs + jsr305 + 3.0.2 + org.junit.jupiter junit-jupiter-api diff --git a/src/main/java/org/utplsql/api/DBHelper.java b/src/main/java/org/utplsql/api/DBHelper.java index f89471c..ce0a7f5 100644 --- a/src/main/java/org/utplsql/api/DBHelper.java +++ b/src/main/java/org/utplsql/api/DBHelper.java @@ -20,7 +20,6 @@ private DBHelper() {} * @throws SQLException any database error */ public static String newSysGuid(Connection conn) throws SQLException { - assert conn != null; try (CallableStatement callableStatement = conn.prepareCall("BEGIN ? := sys_guid(); END;")) { callableStatement.registerOutParameter(1, OracleTypes.RAW); callableStatement.executeUpdate(); @@ -38,7 +37,6 @@ public static String newSysGuid(Connection conn) throws SQLException { */ @Deprecated public static String getCurrentSchema(Connection conn) throws SQLException { - assert conn != null; try (CallableStatement callableStatement = conn.prepareCall("BEGIN ? := sys_context('userenv', 'current_schema'); END;")) { callableStatement.registerOutParameter(1, Types.VARCHAR); callableStatement.executeUpdate(); @@ -55,7 +53,6 @@ public static String getCurrentSchema(Connection conn) throws SQLException { */ @Deprecated public static Version getDatabaseFrameworkVersion( Connection conn ) throws SQLException { - Objects.requireNonNull(conn); Version result = new Version(""); try (PreparedStatement stmt = conn.prepareStatement("select ut_runner.version() from dual")) { @@ -84,7 +81,6 @@ public static Version getDatabaseFrameworkVersion( Connection conn ) throws SQLE */ @Deprecated public static String getOracleDatabaseVersion( Connection conn ) throws SQLException { - assert conn != null; String result = null; try (PreparedStatement stmt = conn.prepareStatement("select version from product_component_version where product like 'Oracle Database%'")) { @@ -102,7 +98,6 @@ public static String getOracleDatabaseVersion( Connection conn ) throws SQLExcep * @param conn the connection */ public static void enableDBMSOutput(Connection conn) { - assert conn != null; try (CallableStatement call = conn.prepareCall("BEGIN dbms_output.enable(NULL); END;")) { call.execute(); } catch (SQLException e) { @@ -115,7 +110,6 @@ public static void enableDBMSOutput(Connection conn) { * @param conn the connection */ public static void disableDBMSOutput(Connection conn) { - assert conn != null; try (CallableStatement call = conn.prepareCall("BEGIN dbms_output.disable(); END;")) { call.execute(); } catch (SQLException e) { diff --git a/src/main/java/org/utplsql/api/EnvironmentVariableUtil.java b/src/main/java/org/utplsql/api/EnvironmentVariableUtil.java index 57afa30..9552fee 100644 --- a/src/main/java/org/utplsql/api/EnvironmentVariableUtil.java +++ b/src/main/java/org/utplsql/api/EnvironmentVariableUtil.java @@ -1,5 +1,7 @@ package org.utplsql.api; +import javax.annotation.Nullable; + /** * This class provides an easy way to get environmental variables. * This is mainly to improve testability but also to standardize the way how utPLSQL API and CLI read from @@ -37,7 +39,7 @@ public static String getEnvValue(String key) { * @param defaultValue Default value if nothing found * @return Environment value or defaultValue */ - public static String getEnvValue(String key, String defaultValue) { + public static String getEnvValue(String key, @Nullable String defaultValue) { String val = System.getProperty(key); if (val == null || val.isEmpty()) val = System.getenv(key); diff --git a/src/main/java/org/utplsql/api/JavaApiVersionInfo.java b/src/main/java/org/utplsql/api/JavaApiVersionInfo.java index cd6ab82..60456b3 100644 --- a/src/main/java/org/utplsql/api/JavaApiVersionInfo.java +++ b/src/main/java/org/utplsql/api/JavaApiVersionInfo.java @@ -11,7 +11,7 @@ private JavaApiVersionInfo() { } private static final String BUILD_NO = "123"; private static final String MAVEN_PROJECT_NAME = "utPLSQL-java-api"; - private static final String MAVEN_PROJECT_VERSION = "3.1.1.1-SNAPSHOT"; + private static final String MAVEN_PROJECT_VERSION = "3.1.2-SNAPSHOT"; public static String getVersion() { return MAVEN_PROJECT_VERSION + "." + BUILD_NO; diff --git a/src/main/java/org/utplsql/api/TestRunner.java b/src/main/java/org/utplsql/api/TestRunner.java index 745462f..0f4a401 100644 --- a/src/main/java/org/utplsql/api/TestRunner.java +++ b/src/main/java/org/utplsql/api/TestRunner.java @@ -58,7 +58,7 @@ public TestRunner colorConsole(boolean colorConsole) { } public TestRunner addReporterList(List reporterList) { - if (options.reporterList != null) options.reporterList.addAll(reporterList); + options.reporterList.addAll(reporterList); return this; } diff --git a/src/main/java/org/utplsql/api/Version.java b/src/main/java/org/utplsql/api/Version.java index b2b802a..e5edfa0 100644 --- a/src/main/java/org/utplsql/api/Version.java +++ b/src/main/java/org/utplsql/api/Version.java @@ -2,6 +2,7 @@ import org.utplsql.api.exception.InvalidVersionException; +import javax.annotation.Nullable; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -105,7 +106,7 @@ public String getNormalizedString() return "invalid"; } - private int compareToWithNulls( Integer i1, Integer i2 ) { + private int compareToWithNulls(@Nullable Integer i1, @Nullable Integer i2 ) { if ( i1 == null && i2 == null ) return 0; else if ( i1 == null ) diff --git a/src/main/java/org/utplsql/api/db/DatabaseInformation.java b/src/main/java/org/utplsql/api/db/DatabaseInformation.java index 5e842e9..8ea058f 100644 --- a/src/main/java/org/utplsql/api/db/DatabaseInformation.java +++ b/src/main/java/org/utplsql/api/db/DatabaseInformation.java @@ -2,6 +2,7 @@ import org.utplsql.api.Version; +import javax.annotation.Nullable; import java.sql.Connection; import java.sql.SQLException; @@ -17,5 +18,5 @@ public interface DatabaseInformation { String getCurrentSchema( Connection conn ) throws SQLException; - int frameworkCompatibilityCheck(Connection conn, String requested, String current) throws SQLException; + int frameworkCompatibilityCheck(Connection conn, String requested, @Nullable String current) throws SQLException; } diff --git a/src/main/java/org/utplsql/api/db/DefaultDatabaseInformation.java b/src/main/java/org/utplsql/api/db/DefaultDatabaseInformation.java index 27f7798..4d7207c 100644 --- a/src/main/java/org/utplsql/api/db/DefaultDatabaseInformation.java +++ b/src/main/java/org/utplsql/api/db/DefaultDatabaseInformation.java @@ -3,6 +3,7 @@ import org.utplsql.api.Version; import org.utplsql.api.exception.UtPLSQLNotInstalledException; +import javax.annotation.Nullable; import java.sql.*; import java.util.Objects; @@ -10,7 +11,6 @@ public class DefaultDatabaseInformation implements DatabaseInformation { @Override public Version getUtPlsqlFrameworkVersion(Connection conn) throws SQLException { - Objects.requireNonNull(conn); Version result = new Version(""); try (PreparedStatement stmt = conn.prepareStatement("select ut_runner.version() from dual")) { @@ -32,7 +32,6 @@ public Version getUtPlsqlFrameworkVersion(Connection conn) throws SQLException { @Override public String getOracleVersion(Connection conn) throws SQLException { - Objects.requireNonNull(conn); String result = null; try (PreparedStatement stmt = conn.prepareStatement("select version from product_component_version where product like 'Oracle Database%'")) { @@ -47,7 +46,6 @@ public String getOracleVersion(Connection conn) throws SQLException { @Override public String getCurrentSchema(Connection conn) throws SQLException { - Objects.requireNonNull(conn); try (CallableStatement callableStatement = conn.prepareCall("BEGIN ? := sys_context('userenv', 'current_schema'); END;")) { callableStatement.registerOutParameter(1, Types.VARCHAR); callableStatement.executeUpdate(); @@ -56,7 +54,7 @@ public String getCurrentSchema(Connection conn) throws SQLException { } @Override - public int frameworkCompatibilityCheck(Connection conn, String requested, String current) throws SQLException { + public int frameworkCompatibilityCheck(Connection conn, String requested, @Nullable String current) throws SQLException { try(CallableStatement callableStatement = conn.prepareCall("BEGIN ? := ut_runner.version_compatibility_check(?, ?); END;")) { callableStatement.registerOutParameter(1, Types.SMALLINT); callableStatement.setString(2, requested); diff --git a/src/main/java/org/utplsql/api/exception/SomeTestsFailedException.java b/src/main/java/org/utplsql/api/exception/SomeTestsFailedException.java index 708bad6..3fc2379 100644 --- a/src/main/java/org/utplsql/api/exception/SomeTestsFailedException.java +++ b/src/main/java/org/utplsql/api/exception/SomeTestsFailedException.java @@ -1,5 +1,6 @@ package org.utplsql.api.exception; +import javax.annotation.Nullable; import java.sql.SQLException; /** @@ -9,7 +10,7 @@ public class SomeTestsFailedException extends SQLException { public static final int ERROR_CODE = 20213; - public SomeTestsFailedException(String reason, Throwable cause) { + public SomeTestsFailedException(String reason, @Nullable Throwable cause) { super(reason, cause); } diff --git a/src/main/java/org/utplsql/api/package-info.java b/src/main/java/org/utplsql/api/package-info.java new file mode 100644 index 0000000..56a090f --- /dev/null +++ b/src/main/java/org/utplsql/api/package-info.java @@ -0,0 +1,4 @@ +@ParametersAreNonnullByDefault +package org.utplsql.api; + +import javax.annotation.ParametersAreNonnullByDefault; \ No newline at end of file diff --git a/src/main/java/org/utplsql/api/reporter/ReporterFactory.java b/src/main/java/org/utplsql/api/reporter/ReporterFactory.java index 17662d5..510896b 100644 --- a/src/main/java/org/utplsql/api/reporter/ReporterFactory.java +++ b/src/main/java/org/utplsql/api/reporter/ReporterFactory.java @@ -5,6 +5,7 @@ import oracle.sql.ORADataFactory; import org.utplsql.api.compatibility.CompatibilityProxy; +import javax.annotation.Nullable; import java.sql.SQLException; import java.sql.Struct; import java.util.HashMap; @@ -74,7 +75,7 @@ public synchronized boolean hasRegisteredFactoryMethodFor( String reporterName ) * @param attributes attributes from STRUCT * @return A reporter */ - public Reporter createReporter(String reporterName, Object[] attributes) { + public Reporter createReporter(String reporterName, @Nullable Object[] attributes) { reporterName = reporterName.toUpperCase(); BiFunction supplier = DefaultReporter::new; From 9b0452c0388d4d918c6fef0ff83be3521938d224 Mon Sep 17 00:00:00 2001 From: pesse Date: Mon, 22 Oct 2018 20:40:24 +0200 Subject: [PATCH 2/2] Tidying up --- src/main/java/org/utplsql/api/FileMapping.java | 2 +- src/main/java/org/utplsql/api/KeyValuePair.java | 2 +- src/main/java/org/utplsql/api/TestRunner.java | 2 +- .../api/compatibility/CompatibilityProxy.java | 13 +++---------- .../utplsql/api/outputBuffer/NonOutputBuffer.java | 4 ++-- src/test/java/org/utplsql/api/OutputBufferIT.java | 2 +- 6 files changed, 9 insertions(+), 16 deletions(-) diff --git a/src/main/java/org/utplsql/api/FileMapping.java b/src/main/java/org/utplsql/api/FileMapping.java index 30a9d8e..e7fea84 100644 --- a/src/main/java/org/utplsql/api/FileMapping.java +++ b/src/main/java/org/utplsql/api/FileMapping.java @@ -57,7 +57,7 @@ private void setObjectType(String objectType) { } @Override - public String getSQLTypeName() throws SQLException { + public String getSQLTypeName() { return CustomTypes.UT_FILE_MAPPING; } diff --git a/src/main/java/org/utplsql/api/KeyValuePair.java b/src/main/java/org/utplsql/api/KeyValuePair.java index 04be4cf..c71a3ae 100644 --- a/src/main/java/org/utplsql/api/KeyValuePair.java +++ b/src/main/java/org/utplsql/api/KeyValuePair.java @@ -27,7 +27,7 @@ public String getValue() { } @Override - public String getSQLTypeName() throws SQLException { + public String getSQLTypeName() { return CustomTypes.UT_KEY_VALUE_PAIR; } diff --git a/src/main/java/org/utplsql/api/TestRunner.java b/src/main/java/org/utplsql/api/TestRunner.java index 0f4a401..83ee237 100644 --- a/src/main/java/org/utplsql/api/TestRunner.java +++ b/src/main/java/org/utplsql/api/TestRunner.java @@ -120,7 +120,7 @@ private void delayedAddReporters() { throw new IllegalStateException("ReporterFactory must be set to add delayed Reporters!"); } - public void run(Connection conn) throws SomeTestsFailedException, SQLException, DatabaseNotCompatibleException, UtPLSQLNotInstalledException { + public void run(Connection conn) throws SQLException { DatabaseInformation databaseInformation = new DefaultDatabaseInformation(); diff --git a/src/main/java/org/utplsql/api/compatibility/CompatibilityProxy.java b/src/main/java/org/utplsql/api/compatibility/CompatibilityProxy.java index bf817fd..8ecc668 100644 --- a/src/main/java/org/utplsql/api/compatibility/CompatibilityProxy.java +++ b/src/main/java/org/utplsql/api/compatibility/CompatibilityProxy.java @@ -1,6 +1,5 @@ package org.utplsql.api.compatibility; -import org.utplsql.api.DBHelper; import org.utplsql.api.TestRunnerOptions; import org.utplsql.api.Version; import org.utplsql.api.db.DatabaseInformation; @@ -12,10 +11,8 @@ import org.utplsql.api.testRunner.TestRunnerStatement; import org.utplsql.api.testRunner.TestRunnerStatementProvider; -import java.sql.CallableStatement; import java.sql.Connection; import java.sql.SQLException; -import java.sql.Types; import java.util.Objects; /** Class to check compatibility with database framework and also to give several specific implementations depending @@ -120,13 +117,9 @@ private boolean versionCompatibilityCheckPre303(String requested ) Version requestedVersion = new Version(requested); Objects.requireNonNull(databaseVersion.getMajor(), "Illegal database Version: " + databaseVersion.toString()); - if ( - databaseVersion.getMajor().equals(requestedVersion.getMajor()) - && (requestedVersion.getMinor() == null - || requestedVersion.getMinor().equals(databaseVersion.getMinor())) ) - return true; - else - return false; + return databaseVersion.getMajor().equals(requestedVersion.getMajor()) + && (requestedVersion.getMinor() == null + || requestedVersion.getMinor().equals(databaseVersion.getMinor())); } /** Checks if actual API-version is compatible with utPLSQL database version and throws a DatabaseNotCompatibleException if not diff --git a/src/main/java/org/utplsql/api/outputBuffer/NonOutputBuffer.java b/src/main/java/org/utplsql/api/outputBuffer/NonOutputBuffer.java index e1cdeea..3e289e2 100644 --- a/src/main/java/org/utplsql/api/outputBuffer/NonOutputBuffer.java +++ b/src/main/java/org/utplsql/api/outputBuffer/NonOutputBuffer.java @@ -47,12 +47,12 @@ public void printAvailable(Connection conn, List printStreams) thro } @Override - public void fetchAvailable(Connection conn, Consumer onLineFetched) throws SQLException { + public void fetchAvailable(Connection conn, Consumer onLineFetched) { onLineFetched.accept(null); } @Override - public List fetchAll(Connection conn) throws SQLException { + public List fetchAll(Connection conn) { return new ArrayList<>(); } } diff --git a/src/test/java/org/utplsql/api/OutputBufferIT.java b/src/test/java/org/utplsql/api/OutputBufferIT.java index 5909d57..4298130 100644 --- a/src/test/java/org/utplsql/api/OutputBufferIT.java +++ b/src/test/java/org/utplsql/api/OutputBufferIT.java @@ -110,7 +110,7 @@ public void fetchAllLines() throws SQLException { } @Test - public void getOutputFromSonarReporter() throws SQLException, InvalidVersionException { + public void getOutputFromSonarReporter() throws SQLException { Reporter reporter = new DefaultReporter(CoreReporters.UT_SONAR_TEST_REPORTER.name(), null).init(newConnection()); new TestRunner()