Author: areshetnyak
Date: 2010-12-09 02:33:13 -0500 (Thu, 09 Dec 2010)
New Revision: 3622
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RdbmsWorkspaceInitializer.java
Log:
EXOJCR-1078 : RdbmsWorkspaceInitializer was used setString for HSQLDB.
Modified:
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RdbmsWorkspaceInitializer.java
===================================================================
---
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RdbmsWorkspaceInitializer.java 2010-12-09
07:32:01 UTC (rev 3621)
+++
jcr/trunk/exo.jcr.component.core/src/main/java/org/exoplatform/services/jcr/impl/core/RdbmsWorkspaceInitializer.java 2010-12-09
07:33:13 UTC (rev 3622)
@@ -121,6 +121,16 @@
public static final byte LONG_LEN = 3;
/**
+ * Indicates the way to set value thru setBinaryStream() method.
+ */
+ public static final int SET_BINARY_STREAM_METHOD = 0;
+
+ /**
+ * Indicates the way to set value thru setString() method.
+ */
+ public static final int SET_STRING_METHOD = 1;
+
+ /**
* List of temporary files.
*/
protected List<File> spoolFileList = new ArrayList<File>();
@@ -503,6 +513,14 @@
PreparedStatement insertNode = null;
+ int setValueMethod = SET_BINARY_STREAM_METHOD;
+
+ String dbDialect = DialectDetecter.detect(jdbcConn.getMetaData());
+ if (dbDialect.equals(DBConstants.DB_DIALECT_HSQLDB))
+ {
+ setValueMethod = SET_STRING_METHOD;
+ }
+
try
{
contentReader =
@@ -591,7 +609,16 @@
}
else
{
- insertNode.setBinaryStream(i + 1, stream, (int)len);
+ if (setValueMethod == SET_STRING_METHOD)
+ {
+ byte[] buf = new byte[(int) len];
+ stream.read(buf);
+ insertNode.setString(i + 1, new String(buf,
Constants.DEFAULT_ENCODING));
+ }
+ else
+ {
+ insertNode.setBinaryStream(i + 1, stream, (int) len);
+ }
}
}
else
Show replies by date