Fixed the akquisition of a database-connection, if one is needed
authorKai Moritz <kai@juplo.de>
Sun, 13 Nov 2016 14:56:56 +0000 (15:56 +0100)
committerKai Moritz <kai@juplo.de>
Sun, 13 Nov 2016 16:37:15 +0000 (17:37 +0100)
 * The helper-class SimpleConnectionProvider was not changed to reflect the
   alterd handling of the configuration parameters.
 * If only the user is missing, SimpleConnectionProvider tries to akquire a
   connection, because for example H2 does not always need a user, hence
   this is an sufficient configuration.
 * If an exception is thrown during database akquisition, it is only logged,
   instead of rethrown.
 * Adapted the example-code for the hibernate-bug HHH-9615 to function as
   an additional integration-test and used it, to proof, that an database
   connection can be akquired, if only the driver and the URL is present.

src/it/hibernate-lob-converter-bug/create.sql [new file with mode: 0644]
src/it/hibernate-lob-converter-bug/pom.xml
src/it/hibernate-lob-converter-bug/src/main/java/io/blep/MyEntity.java [new file with mode: 0644]
src/it/hibernate-lob-converter-bug/src/main/resources/META-INF/persistence.xml [new file with mode: 0644]
src/it/hibernate-lob-converter-bug/src/test/java/io/blep/LobConverterTest.java [deleted file]
src/it/hibernate-lob-converter-bug/src/test/java/io/blep/MyEntity.java [deleted file]
src/it/hibernate-lob-converter-bug/src/test/resources/META-INF/persistence.xml [deleted file]
src/it/hibernate-lob-converter-bug/verify.bsh [new file with mode: 0644]
src/main/java/de/juplo/plugins/hibernate/SimpleConnectionProvider.java

diff --git a/src/it/hibernate-lob-converter-bug/create.sql b/src/it/hibernate-lob-converter-bug/create.sql
new file mode 100644 (file)
index 0000000..ed04fc4
--- /dev/null
@@ -0,0 +1,7 @@
+create sequence hibernate_sequence start with 1 increment by 1;
+
+    create table MyEntity (
+        id integer not null,
+        status blob,
+        primary key (id)
+    );
index 3d1eefd..c98a1cb 100644 (file)
             <artifactId>h2</artifactId>
             <version>1.3.168</version>
         </dependency>
-
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.11</version>
-            <scope>test</scope>
-        </dependency>
         <dependency>
             <groupId>org.hibernate</groupId>
             <artifactId>hibernate-entitymanager</artifactId>
             <version>5.1.0.Final</version>
         </dependency>
-
     </dependencies>
 
 
           <showWarnings>true</showWarnings>
         </configuration>
       </plugin>
+      <plugin>
+        <groupId>de.juplo</groupId>
+        <artifactId>hibernate-maven-plugin</artifactId>
+        <version>@project.version@</version>
+        <configuration>
+          <execute>false</execute>
+          <format>true</format>
+          <scanTestClasses>true</scanTestClasses>
+        </configuration>
+        <executions>
+          <execution>
+            <id>create</id>
+            <goals>
+              <goal>create</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
     </plugins>
   </build>
 
diff --git a/src/it/hibernate-lob-converter-bug/src/main/java/io/blep/MyEntity.java b/src/it/hibernate-lob-converter-bug/src/main/java/io/blep/MyEntity.java
new file mode 100644 (file)
index 0000000..e8bbd36
--- /dev/null
@@ -0,0 +1,48 @@
+package io.blep;
+
+import javax.persistence.*;
+
+/**
+ * @author blep
+ */
+@Entity
+public class MyEntity {
+    @Id
+    @GeneratedValue(strategy = GenerationType.AUTO)
+    private Integer id;
+
+    @Convert(converter = MyConverter.class)
+    @Lob
+    private String status;
+
+    @Converter
+    public static class MyConverter implements AttributeConverter<String, Integer> {
+
+        @Override
+        public Integer convertToDatabaseColumn(String attribute) {
+            return attribute == null ? 0 : attribute.length();
+        }
+
+        @Override
+        public String convertToEntityAttribute(Integer dbData) {
+            return "";
+        }
+    }
+
+    public Integer getId() {
+        return id;
+    }
+
+    public void setId(Integer id) {
+        this.id = id;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+}
diff --git a/src/it/hibernate-lob-converter-bug/src/main/resources/META-INF/persistence.xml b/src/it/hibernate-lob-converter-bug/src/main/resources/META-INF/persistence.xml
new file mode 100644 (file)
index 0000000..78e416d
--- /dev/null
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
+
+    <persistence-unit name="samplePU" transaction-type="RESOURCE_LOCAL">
+        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
+        <class>io.blep.MyEntity</class>
+        <properties>
+            <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
+            <property name="javax.persistence.schema-generation.scripts.drop-target" value="sampleDrop.ddl"/>
+            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
+            <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:sampleDB"/>
+        </properties>
+    </persistence-unit>
+</persistence>
diff --git a/src/it/hibernate-lob-converter-bug/src/test/java/io/blep/LobConverterTest.java b/src/it/hibernate-lob-converter-bug/src/test/java/io/blep/LobConverterTest.java
deleted file mode 100644 (file)
index b08b858..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-package io.blep;
-
-import org.junit.Test;
-
-import javax.persistence.*;
-
-/**
- * @author blep
- */
-public class LobConverterTest {
-
-    @Test
-    public void testName() throws Exception {
-        final EntityManagerFactory emf = Persistence.createEntityManagerFactory("samplePU");
-
-        final EntityManager em = emf.createEntityManager();
-
-        em.getTransaction().begin();
-        em.persist(new MyEntity());
-        em.getTransaction().commit();
-    }
-}
diff --git a/src/it/hibernate-lob-converter-bug/src/test/java/io/blep/MyEntity.java b/src/it/hibernate-lob-converter-bug/src/test/java/io/blep/MyEntity.java
deleted file mode 100644 (file)
index e8bbd36..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-package io.blep;
-
-import javax.persistence.*;
-
-/**
- * @author blep
- */
-@Entity
-public class MyEntity {
-    @Id
-    @GeneratedValue(strategy = GenerationType.AUTO)
-    private Integer id;
-
-    @Convert(converter = MyConverter.class)
-    @Lob
-    private String status;
-
-    @Converter
-    public static class MyConverter implements AttributeConverter<String, Integer> {
-
-        @Override
-        public Integer convertToDatabaseColumn(String attribute) {
-            return attribute == null ? 0 : attribute.length();
-        }
-
-        @Override
-        public String convertToEntityAttribute(Integer dbData) {
-            return "";
-        }
-    }
-
-    public Integer getId() {
-        return id;
-    }
-
-    public void setId(Integer id) {
-        this.id = id;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-}
diff --git a/src/it/hibernate-lob-converter-bug/src/test/resources/META-INF/persistence.xml b/src/it/hibernate-lob-converter-bug/src/test/resources/META-INF/persistence.xml
deleted file mode 100644 (file)
index 78e416d..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<persistence xmlns="http://xmlns.jcp.org/xml/ns/persistence" version="2.1">
-
-    <persistence-unit name="samplePU" transaction-type="RESOURCE_LOCAL">
-        <provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
-        <class>io.blep.MyEntity</class>
-        <properties>
-            <property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
-            <property name="javax.persistence.schema-generation.scripts.drop-target" value="sampleDrop.ddl"/>
-            <property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
-            <property name="javax.persistence.jdbc.url" value="jdbc:h2:mem:sampleDB"/>
-        </properties>
-    </persistence-unit>
-</persistence>
diff --git a/src/it/hibernate-lob-converter-bug/verify.bsh b/src/it/hibernate-lob-converter-bug/verify.bsh
new file mode 100644 (file)
index 0000000..ce2e5a5
--- /dev/null
@@ -0,0 +1,7 @@
+import de.juplo.test.FileComparator;
+
+
+FileComparator comparator = new FileComparator(basedir);
+
+if (!comparator.isEqual("create.sql","target/create.sql"))
+  return false;
index 36fe561..1983b1f 100644 (file)
@@ -45,33 +45,16 @@ class SimpleConnectionProvider implements ConnectionProvider
         MojoFailureException
   {
 
-    String driver = (String)
-        (properties.containsKey(DRIVER)
-            ? properties.getProperty(DRIVER)
-            : properties.getProperty(JDBC_DRIVER)
-            );
-    String url = (String)
-        (properties.containsKey(URL)
-            ? properties.getProperty(URL)
-            : properties.getProperty(JDBC_URL)
-            );
-    String user = (String)
-        (properties.containsKey(USER)
-            ? properties.getProperty(USER)
-            : properties.getProperty(JDBC_USER)
-            );
-    String password = (String)
-        (properties.containsKey(PASS)
-            ? properties.getProperty(PASS)
-            : properties.getProperty(JDBC_PASSWORD)
-            );
-
-    if (driver == null || url == null || user == null)
+    String driver = (String)properties.getProperty(DRIVER);
+    String url = (String)properties.getProperty(URL);
+    String user = (String)properties.getProperty(USER);
+    String password = (String)properties.getProperty(PASS);
+
+    if (driver == null || url == null)
     {
       log.info("No connection opened, because connection information is incomplete");
       log.info("Driver-Class: " + driver);
       log.info("URL: " + url);
-      log.info("User: " + user);
       return;
     }
 
@@ -84,16 +67,16 @@ class SimpleConnectionProvider implements ConnectionProvider
           .registerDriver(new DriverProxy((Driver) driverClass.newInstance()));
 
       log.debug(
-          "Opening JDBC-connection to " + properties.getProperty(URL) +
-          " as " + properties.getProperty(USERNAME) +
-          " with password " + properties.getProperty(PASSWORD)
+          "Opening JDBC-connection to " + url +
+          " as " + user +
+          " with password " + password
           );
     
       connection = DriverManager.getConnection(url, user, password);
     }
     catch (Exception e)
     {
-      throw new MojoFailureException("Could not open the JDBC-connection", e);
+      log.info("Could not open the JDBC-connection: " + e.getMessage());
     }
   }