[jboss-cvs] JBossAS SVN: r61946 - trunk/server/src/main/org/jboss/ejb/txtimer.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Sat Mar 31 15:52:47 EDT 2007
Author: alex.loubyansky at jboss.com
Date: 2007-03-31 15:52:47 -0400 (Sat, 31 Mar 2007)
New Revision: 61946
Modified:
trunk/server/src/main/org/jboss/ejb/txtimer/GeneralPurposeDatabasePersistencePlugin.java
Log:
JBAS-4278
Modified: trunk/server/src/main/org/jboss/ejb/txtimer/GeneralPurposeDatabasePersistencePlugin.java
===================================================================
--- trunk/server/src/main/org/jboss/ejb/txtimer/GeneralPurposeDatabasePersistencePlugin.java 2007-03-31 19:51:59 UTC (rev 61945)
+++ trunk/server/src/main/org/jboss/ejb/txtimer/GeneralPurposeDatabasePersistencePlugin.java 2007-03-31 19:52:47 UTC (rev 61946)
@@ -49,6 +49,7 @@
import org.jboss.ejb.plugins.cmp.jdbc.SQLUtil;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCFunctionMappingMetaData;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCTypeMappingMetaData;
+import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCMappingMetaData;
import org.jboss.invocation.MarshalledValueInputStream;
import org.jboss.logging.Logger;
import org.jboss.mx.util.ObjectNameFactory;
@@ -76,6 +77,8 @@
protected DataSource ds;
// datasource meta data
protected ObjectName metaDataName;
+ // default JDBC type code for binary data
+ private int binarySqlType;
/** Initialize the plugin */
public void init(MBeanServer server, ObjectName dataSourceName) throws SQLException
@@ -108,17 +111,21 @@
Connection con = null;
Statement st = null;
try
- {
+ {
+ JDBCTypeMappingMetaData typeMapping = (JDBCTypeMappingMetaData)server.getAttribute(metaDataName, "TypeMappingMetaData");
+ if (typeMapping == null)
+ throw new IllegalStateException("Cannot obtain type mapping from: " + metaDataName);
+
+ JDBCMappingMetaData objectMetaData = typeMapping.getTypeMappingMetaData(Object.class);
+ binarySqlType = objectMetaData.getJdbcType();
+
if (!SQLUtil.tableExists(getTableName(), ds))
{
con = ds.getConnection();
- JDBCTypeMappingMetaData typeMapping = (JDBCTypeMappingMetaData)server.getAttribute(metaDataName, "TypeMappingMetaData");
- if (typeMapping == null)
- throw new IllegalStateException("Cannot obtain type mapping from: " + metaDataName);
String dateType = typeMapping.getTypeMappingMetaData(Timestamp.class).getSqlType();
- String objectType = typeMapping.getTypeMappingMetaData(Object.class).getSqlType();
String longType = typeMapping.getTypeMappingMetaData(Long.class).getSqlType();
+ String objectType = objectMetaData.getSqlType();
// The create table DDL
StringBuffer createTableDDL = new StringBuffer("create table " + getTableName() + " (" +
@@ -180,9 +187,27 @@
st.setString(2, timedObjectId.toString());
st.setTimestamp(3, new Timestamp(initialExpiration.getTime()));
st.setLong(4, intervalDuration);
- st.setBytes(5, serialize(timedObjectId.getInstancePk()));
- st.setBytes(6, serialize(info));
+ byte[] bytes = serialize(timedObjectId.getInstancePk());
+ if(bytes == null)
+ {
+ st.setNull(5, binarySqlType);
+ }
+ else
+ {
+ st.setBytes(5, bytes);
+ }
+
+ bytes = serialize(info);
+ if(bytes == null)
+ {
+ st.setNull(6, binarySqlType);
+ }
+ else
+ {
+ st.setBytes(6, bytes);
+ }
+
int rows = st.executeUpdate();
if (rows != 1)
log.error("Unable to insert timer for: " + timedObjectId);
More information about the jboss-cvs-commits
mailing list