You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@isis.apache.org by da...@apache.org on 2014/06/18 00:06:11 UTC

git commit: ISIS-812: fix for PostgreSQL blob handling (for null blobs)

Repository: isis
Updated Branches:
  refs/heads/master ebf3445ee -> 016bd824e


ISIS-812: fix for PostgreSQL blob handling (for null blobs)


Project: http://git-wip-us.apache.org/repos/asf/isis/repo
Commit: http://git-wip-us.apache.org/repos/asf/isis/commit/016bd824
Tree: http://git-wip-us.apache.org/repos/asf/isis/tree/016bd824
Diff: http://git-wip-us.apache.org/repos/asf/isis/diff/016bd824

Branch: refs/heads/master
Commit: 016bd824e27ec56f99a341a95e363ab556ee2fe7
Parents: ebf3445
Author: Dan Haywood <da...@haywood-associates.co.uk>
Authored: Tue Jun 17 23:02:35 2014 +0100
Committer: Dan Haywood <da...@haywood-associates.co.uk>
Committed: Tue Jun 17 23:02:35 2014 +0100

----------------------------------------------------------------------
 .../jdo/datanucleus/valuetypes/IsisBlobMapping.java | 16 +++++++++++++---
 .../dom/src/main/java/dom/todo/ToDoItems.java       |  2 +-
 .../src/main/webapp/WEB-INF/persistor.properties    | 12 ++++++------
 3 files changed, 20 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/isis/blob/016bd824/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisBlobMapping.java
----------------------------------------------------------------------
diff --git a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisBlobMapping.java b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisBlobMapping.java
index bdbb61d..0d5e204 100644
--- a/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisBlobMapping.java
+++ b/component/objectstore/jdo/jdo-datanucleus/src/main/java/org/apache/isis/objectstore/jdo/datanucleus/valuetypes/IsisBlobMapping.java
@@ -20,6 +20,7 @@ package org.apache.isis.objectstore.jdo.datanucleus.valuetypes;
 
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
+import java.sql.SQLException;
 import org.datanucleus.ClassLoaderResolver;
 import org.datanucleus.ClassNameConstants;
 import org.datanucleus.ExecutionContext;
@@ -75,9 +76,18 @@ public class IsisBlobMapping extends SingleFieldMultiMapping {
     {
         Blob blob = ((Blob)value);
         if (blob == null) {
-            getDatastoreMapping(0).setObject(preparedStmt, exprIndex[0], null);
-            getDatastoreMapping(1).setObject(preparedStmt, exprIndex[1], null);
-            getDatastoreMapping(2).setObject(preparedStmt, exprIndex[2], null);
+            getDatastoreMapping(0).setString(preparedStmt, exprIndex[0], null);
+            getDatastoreMapping(1).setString(preparedStmt, exprIndex[1], null);
+
+            // using:
+            // getDatastoreMapping(2).setObject(preparedStmt, exprIndex[2], null);
+            // fails for PostgreSQL, as interprets as a reference to an oid (pointer to offline blob)
+            // rather than a bytea (inline blob)
+            try {
+                preparedStmt.setBytes(exprIndex[2], null);
+            } catch (SQLException e) {
+                // ignore
+            }
         } else {
             getDatastoreMapping(0).setString(preparedStmt, exprIndex[0], blob.getName());
             getDatastoreMapping(1).setString(preparedStmt, exprIndex[1], blob.getMimeType().getBaseType());

http://git-wip-us.apache.org/repos/asf/isis/blob/016bd824/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java
index a425e5a..bd9edf5 100644
--- a/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java
+++ b/example/application/quickstart_wicket_restful_jdo/dom/src/main/java/dom/todo/ToDoItems.java
@@ -138,7 +138,7 @@ public class ToDoItems {
     public ToDoItem newToDo(
             final @RegEx(validation = "\\w[@&:\\-\\,\\.\\+ \\w]*") @Named("Description") String description, 
             final @Named("Category") Category category,
-            final @Named("Subcategory") Subcategory subcategory,
+            final @Optional @Named("Subcategory") Subcategory subcategory,
             final @Optional @Named("Due by") LocalDate dueBy,
             final @Optional @Named("Cost") BigDecimal cost) {
         return newToDo(description, category, subcategory, currentUserName(), dueBy, cost);

http://git-wip-us.apache.org/repos/asf/isis/blob/016bd824/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/persistor.properties
----------------------------------------------------------------------
diff --git a/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/persistor.properties b/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/persistor.properties
index 6d5effd..913b16a 100644
--- a/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/persistor.properties
+++ b/example/application/quickstart_wicket_restful_jdo/webapp/src/main/webapp/WEB-INF/persistor.properties
@@ -91,14 +91,14 @@ isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=
 # MS SQL Server
 #
 #isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=com.microsoft.sqlserver.jdbc.SQLServerDriver
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:sqlserver://127.0.0.1:1433;instance=.;databaseName=quickstart
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=sa
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=p4ssword
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:sqlserver://127.0.0.1:1433;instance=.;databaseName=isis
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=isis
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=isis
 
 #
 # MS SQL Server (using log4jdbc-remix)
 #
 #isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionDriverName=net.sf.log4jdbc.DriverSpy
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:sqlserver://127.0.0.1:1433;instance=SQLEXPRESS;databaseName=jdo
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=jdo
-#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=jdopass
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionURL=jdbc:log4jdbc:sqlserver://127.0.0.1:1433;instance=.;databaseName=isis
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionUserName=isis
+#isis.persistor.datanucleus.impl.javax.jdo.option.ConnectionPassword=isis