[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