User: starksm
Date: 01/09/11 11:35:00
Modified: src/main/org/jboss/ejb/plugins/cmp/jdbc JDBCCommand.java
JDBCCommandFactory.java JDBCDestroyCommand.java
JDBCInsertRelationsCommand.java
JDBCRelationInterceptor.java JDBCStartCommand.java
JDBCUtil.java
Log:
Convert all logging to org.jboss.logging.Logger which is a subclass of
org.apache.log4j.Category.
Revision Changes Path
1.4 +3 -3 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCCommand.java
Index: JDBCCommand.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCCommand.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- JDBCCommand.java 2001/09/01 22:03:15 1.3
+++ JDBCCommand.java 2001/09/11 18:35:00 1.4
@@ -11,7 +11,7 @@
import java.sql.PreparedStatement;
import java.sql.SQLException;
-import org.jboss.logging.Log;
+import org.jboss.logging.Logger;
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge;
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCEntityMetaData;
@@ -24,7 +24,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Dirk Zimmermann</a>
- * @version $Revision: 1.3 $
+ * @version $Revision: 1.4 $
*/
public abstract class JDBCCommand {
// Attributes ----------------------------------------------------
@@ -32,7 +32,7 @@
protected JDBCStoreManager manager;
protected JDBCEntityBridge entity;
protected JDBCEntityMetaData entityMetaData;
- protected Log log;
+ protected Logger log;
// Command name, used for debug trace
protected String name;
1.6 +1 -2
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCCommandFactory.java
Index: JDBCCommandFactory.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCCommandFactory.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- JDBCCommandFactory.java 2001/09/01 22:03:15 1.5
+++ JDBCCommandFactory.java 2001/09/11 18:35:00 1.6
@@ -33,7 +33,6 @@
import org.jboss.ejb.plugins.cmp.jdbc.metadata.JDBCQueryMetaData;
-import org.jboss.logging.Log;
/**
* JDBCCommandFactory creates all required CMP command and some JDBC
@@ -43,7 +42,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
* @author <a href="[EMAIL PROTECTED]">danch (Dan Christopherson</a>
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
public class JDBCCommandFactory implements CommandFactory
{
1.6 +2 -2
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCDestroyCommand.java
Index: JDBCDestroyCommand.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCDestroyCommand.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- JDBCDestroyCommand.java 2001/09/01 22:03:15 1.5
+++ JDBCDestroyCommand.java 2001/09/11 18:35:00 1.6
@@ -22,7 +22,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Marc Fleury</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
public class JDBCDestroyCommand extends JDBCUpdateCommand implements DestroyCommand
{
// Constructors --------------------------------------------------
@@ -73,7 +73,7 @@
manager.getContainer().getTransactionManager().begin ();
jdbcExecute("DROP TABLE " + tableName);
manager.getContainer().getTransactionManager().commit ();
- log.log("Dropped table '" + tableName + "' successfully.");
+ log.info("Dropped table '" + tableName + "' successfully.");
} catch (Exception e) {
log.debug("Could not drop table " + tableName + ": " + e.getMessage());
try {
1.5 +4 -3
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCInsertRelationsCommand.java
Index: JDBCInsertRelationsCommand.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCInsertRelationsCommand.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- JDBCInsertRelationsCommand.java 2001/09/01 22:03:15 1.4
+++ JDBCInsertRelationsCommand.java 2001/09/11 18:35:00 1.5
@@ -10,19 +10,20 @@
import java.sql.PreparedStatement;
import java.util.Iterator;
import javax.ejb.EJBException;
+
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCCMPFieldBridge;
import org.jboss.ejb.plugins.cmp.jdbc.bridge.JDBCEntityBridge;
-import org.jboss.logging.Log;
+import org.jboss.logging.Logger;
/**
* Inserts relations into a relation table.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
- * @version $Revision: 1.4 $
+ * @version $Revision: 1.5 $
*/
public class JDBCInsertRelationsCommand {
protected JDBCStoreManager manager;
- protected Log log;
+ protected Logger log;
// Command name, used for debug trace
protected String name;
1.5 +3 -2
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCRelationInterceptor.java
Index: JDBCRelationInterceptor.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCRelationInterceptor.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- JDBCRelationInterceptor.java 2001/09/01 22:03:15 1.4
+++ JDBCRelationInterceptor.java 2001/09/11 18:35:00 1.5
@@ -34,13 +34,14 @@
* relationship. This interceptor also manages the relation table data.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
-* @version $Revision: 1.4 $
+* @version $Revision: 1.5 $
*/
public class JDBCRelationInterceptor extends AbstractInterceptor {
// Constants -----------------------------------------------------
protected static final Method GET_RELATED_ID;
protected static final Method ADD_RELATION;
protected static final Method REMOVE_RELATION;
+ protected static Logger log = Logger.create(JDBCRelationInterceptor.class);
static {
try {
@@ -233,7 +234,7 @@
}
}
} catch (Exception e) {
- Logger.exception(e);
+ log.error("ex", e);
// Store failed -> rollback!
try {
1.6 +5 -5
jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java
Index: JDBCStartCommand.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCStartCommand.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- JDBCStartCommand.java 2001/09/01 22:03:15 1.5
+++ JDBCStartCommand.java 2001/09/11 18:35:00 1.6
@@ -23,7 +23,7 @@
* @author <a href="mailto:[EMAIL PROTECTED]">Joe Shevland</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Justin Forder</a>
* @author <a href="mailto:[EMAIL PROTECTED]">Michel de Groot</a>
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
public class JDBCStartCommand extends JDBCUpdateCommand implements StartCommand {
// Constructors --------------------------------------------------
@@ -63,7 +63,7 @@
DatabaseMetaData dmd = con.getMetaData();
rs = dmd.getTables(con.getCatalog(), null, tableName, null);
if (rs.next ()) {
- log.log("Table '" + tableName + "' already exists");
+ log.info("Table '" + tableName + "' already exists");
return;
}
} finally {
@@ -78,13 +78,13 @@
manager.getContainer().getTransactionManager().commit ();
// Create successful, log this
- log.log("Created table '" + tableName + "' successfully.");
+ log.info("Created table '" + tableName + "' successfully.");
} catch (Exception e) {
- log.debug("Could not create table " + tableName + ": " + e.getMessage());
+ log.debug("Could not create table " + tableName, e);
try {
manager.getContainer().getTransactionManager().rollback ();
} catch (Exception _e) {
- log.error("Could not roll back transaction: "+ _e.getMessage());
+ log.error("Could not roll back transaction: ", e);
}
}
}
1.6 +294 -200 jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCUtil.java
Index: JDBCUtil.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/jdbc/JDBCUtil.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- JDBCUtil.java 2001/09/01 22:03:15 1.5
+++ JDBCUtil.java 2001/09/11 18:35:00 1.6
@@ -35,8 +35,6 @@
import javax.ejb.EJBObject;
import javax.ejb.Handle;
-// TODO this needs to be replaced with the log4j logging
-import org.jboss.logging.Log;
import org.jboss.logging.Logger;
/**
@@ -45,110 +43,144 @@
* parameters and loading query results.
*
* @author <a href="mailto:[EMAIL PROTECTED]">Dain Sundstrom</a>
- * @version $Revision: 1.5 $
+ * @version $Revision: 1.6 $
*/
-public class JDBCUtil {
- public static void safeClose(Connection con) {
- if(con != null) {
- try {
+public class JDBCUtil
+{
+ static Logger log = Logger.create(JDBCUtil.class);
+
+ public static void safeClose(Connection con)
+ {
+ if(con != null)
+ {
+ try
+ {
con.close();
- } catch(SQLException e) {
- Logger.debug(e);
+ } catch(SQLException e)
+ {
+ log.debug("SQL error", e);
+ }
+ }
+ }
+
+ public static void safeClose(ResultSet rs)
+ {
+ if(rs != null)
+ {
+ try
+ {
+ rs.close();
+ } catch(SQLException e)
+ {
+ log.debug("SQL error", e);
+ }
+ }
+ }
+
+ public static void safeClose(Statement statement)
+ {
+ if(statement != null)
+ {
+ try
+ {
+ statement.close();
+ } catch(SQLException e)
+ {
+ log.debug("SQL error", e);
+ }
+ }
+ }
+
+ public static void safeClose(InputStream in)
+ {
+ if(in != null)
+ {
+ try
+ {
+ in.close();
+ } catch(IOException e)
+ {
+ log.debug("SQL error", e);
+ }
+ }
+ }
+
+ public static void safeClose(OutputStream out)
+ {
+ if(out != null)
+ {
+ try
+ {
+ out.close();
+ } catch(IOException e)
+ {
+ log.debug("SQL error", e);
}
}
}
-
- public static void safeClose(ResultSet rs) {
- if(rs != null) {
- try {
- rs.close();
- } catch(SQLException e) {
- Logger.debug(e);
- }
- }
- }
-
- public static void safeClose(Statement statement) {
- if(statement != null) {
- try {
- statement.close();
- } catch(SQLException e) {
- Logger.debug(e);
- }
- }
- }
-
- public static void safeClose(InputStream in) {
- if(in != null) {
- try {
- in.close();
- } catch(IOException e) {
- Logger.debug(e);
- }
- }
- }
-
- public static void safeClose(OutputStream out) {
- if(out != null) {
- try {
- out.close();
- } catch(IOException e) {
- Logger.debug(e);
- }
- }
- }
-
-
- /**
- * Sets a parameter in this Command's PreparedStatement.
- * Handles null values, and provides tracing.
- *
- * @param ps the PreparedStatement whose parameter needs to be set.
- * @param index the index (1-based) of the parameter to be set.
- * @param jdbcType the JDBC type of the parameter.
- * @param value the value which the parameter is to be set to.
- * @throws SQLException if parameter setting fails.
- */
- public static void setParameter(Log log, PreparedStatement ps, int index, int
jdbcType, Object value) throws SQLException {
- if(JDBCCommand.debug) {
+
+
+ /**
+ * Sets a parameter in this Command's PreparedStatement.
+ * Handles null values, and provides tracing.
+ *
+ * @param ps the PreparedStatement whose parameter needs to be set.
+ * @param index the index (1-based) of the parameter to be set.
+ * @param jdbcType the JDBC type of the parameter.
+ * @param value the value which the parameter is to be set to.
+ * @throws SQLException if parameter setting fails.
+ */
+ public static void setParameter(Logger log, PreparedStatement ps, int index, int
jdbcType, Object value) throws SQLException
+ {
+ if(JDBCCommand.debug)
+ {
log.debug("Set parameter: " +
- "index=" + index + ", " +
- "jdbcType=" + getJDBCTypeName(jdbcType) + ", " +
- "value=" + ((value == null) ? "NULL" : value));
- }
-
- if (value == null) {
+ "index=" + index + ", " +
+ "jdbcType=" + getJDBCTypeName(jdbcType) + ", " +
+ "value=" + ((value == null) ? "NULL" : value));
+ }
+
+ if (value == null)
+ {
ps.setNull(index, jdbcType);
- } else {
+ } else
+ {
// convert to valid SQL data types (for DATE, TIME, TIMESTAMP)
value = convertToSQLType(jdbcType, value);
-
- if(isBinaryJDBCType(jdbcType)) {
+
+ if(isBinaryJDBCType(jdbcType))
+ {
byte[] bytes = convertObjectToByteArray(value);
setBinaryParameter(ps, index, bytes);
- } else {
+ } else
+ {
ps.setObject(index, value, jdbcType);
}
}
}
-
- private static void setBinaryParameter(PreparedStatement ps, int index, byte[]
bytes) throws SQLException {
+
+ private static void setBinaryParameter(PreparedStatement ps, int index, byte[]
bytes) throws SQLException
+ {
// it's more efficient to use setBinaryStream for large
// streams, and causes problems if not done on some DBMS
// implementations
- if (bytes.length < 2000) {
+ if (bytes.length < 2000)
+ {
ps.setBytes(index, bytes);
- } else {
+ } else
+ {
InputStream in = null;
- try {
+ try
+ {
in = new ByteArrayInputStream(bytes);
ps.setBinaryStream(index, in, bytes.length);
- } finally {
+ } finally
+ {
safeClose(in);
}
}
}
-
+
/**
* Used for all retrieval of results from <code>ResultSet</code>s.
* Implements tracing, and allows some tweaking of returned types.
@@ -157,126 +189,158 @@
* @param index index of the result column.
* @param destination The class of the variable this is going into
*/
- public static Object getResult(Log log, ResultSet rs, int index, Class
destination) throws SQLException {
+ public static Object getResult(Logger log, ResultSet rs, int index, Class
destination) throws SQLException
+ {
Object[] returnValue = new Object[1];
- if(getNonBinaryResult(rs, index, destination, returnValue)) {
- if(JDBCCommand.debug) {
- log.debug("Get result: index=" + index + ", javaType=" +
destination.getName() + ", S value=" + returnValue[0]);
+ if(getNonBinaryResult(rs, index, destination, returnValue))
+ {
+ if(JDBCCommand.debug)
+ {
+ log.debug("Get result: index=" + index + ", javaType=" +
destination.getName() + ", S value=" + returnValue[0]);
}
return returnValue[0];
- } else if(getObjectResult(rs, index, destination, returnValue)) {
- if(JDBCCommand.debug) {
- log.debug("Get result: index=" + index + ", javaType=" +
destination.getName() + ", O value=" + returnValue[0]);
+ } else if(getObjectResult(rs, index, destination, returnValue))
+ {
+ if(JDBCCommand.debug)
+ {
+ log.debug("Get result: index=" + index + ", javaType=" +
destination.getName() + ", O value=" + returnValue[0]);
}
return returnValue[0];
- } else if(getBinaryResult(rs, index, destination, returnValue)) {
- if(JDBCCommand.debug) {
- log.debug("Get result: index=" + index + ", javaType=" +
destination.getName() + ", B value=" + returnValue[0]);
+ } else if(getBinaryResult(rs, index, destination, returnValue))
+ {
+ if(JDBCCommand.debug)
+ {
+ log.debug("Get result: index=" + index + ", javaType=" +
destination.getName() + ", B value=" + returnValue[0]);
}
return returnValue[0];
}
throw new SQLException("Unable to load a ResultSet column into a variable of
type '" + destination.getName() + "'");
}
-
- private static boolean getNonBinaryResult(ResultSet rs, int index, Class
destination, Object returnValue[]) throws SQLException {
+
+ private static boolean getNonBinaryResult(ResultSet rs, int index, Class
destination, Object returnValue[]) throws SQLException
+ {
Method method = (Method)rsTypes.get(destination.getName());
- if(method != null) {
- try {
- Object value = method.invoke(rs, new Object[]{new Integer(index)});
- if(rs.wasNull()) {
+ if(method != null)
+ {
+ try
+ {
+ Object value = method.invoke(rs, new Object[]
+ {new Integer(index)});
+ if(rs.wasNull())
+ {
returnValue[0] = null;
- } else {
+ } else
+ {
if(value instanceof String &&
- (destination.isAssignableFrom(Character.class) ||
- destination.isAssignableFrom(Character.TYPE) )) {
+ (destination.isAssignableFrom(Character.class) ||
+ destination.isAssignableFrom(Character.TYPE) ))
+ {
value = new Character(((String)value).charAt(0));
}
returnValue[0] = value;
}
return true;
- } catch(IllegalAccessException e) {
- // What-ever, I guess non-binary will not work for this field.
- } catch(InvocationTargetException e) {
- // What-ever, I guess non-binary will not work for this field.
+ } catch(IllegalAccessException e)
+ {
+ // What-ever, I guess non-binary will not work for this field.
+ } catch(InvocationTargetException e)
+ {
+ // What-ever, I guess non-binary will not work for this field.
}
}
return false;
}
-
- private static boolean getObjectResult(ResultSet rs, int index, Class
destination, Object returnValue[]) throws SQLException {
+
+ private static boolean getObjectResult(ResultSet rs, int index, Class
destination, Object returnValue[]) throws SQLException
+ {
//
// I think this method is very dangerous, and we should consider removing it.
// Some lesser databases only allow you to read a column once and if the
// object based stratege fails, we have to read the column again with
getBytes.
Object value = rs.getObject(index);
- if(value == null) {
+ if(value == null)
+ {
returnValue[0] = null;
return true;
}
-
+
return convertToJavaType(value, destination, returnValue);
}
-
- private static boolean getBinaryResult(ResultSet rs, int index, Class
destination, Object returnValue[]) throws SQLException {
+
+ private static boolean getBinaryResult(ResultSet rs, int index, Class
destination, Object returnValue[]) throws SQLException
+ {
byte[] bytes = rs.getBytes(index);
- if( bytes == null ) {
+ if( bytes == null )
+ {
returnValue[0] = null;
return true;
}
-
+
Object value = convertByteArrayToObject(bytes);
return convertToJavaType(value, destination, returnValue);
- }
-
- private static boolean convertToJavaType(Object value, Class destination, Object
returnValue[]) throws SQLException {
- try {
+ }
+
+ private static boolean convertToJavaType(Object value, Class destination, Object
returnValue[]) throws SQLException
+ {
+ try
+ {
// Was the object double marshalled?
- if(value instanceof MarshalledObject &&
!destination.equals(MarshalledObject.class)) {
+ if(value instanceof MarshalledObject &&
!destination.equals(MarshalledObject.class))
+ {
value = ((MarshalledObject)value).get();
}
-
+
// ejb-reference: get the object back from the handle
- if(value instanceof Handle) {
+ if(value instanceof Handle)
+ {
value = ((Handle)value).getEJBObject();
- if(destination.isAssignableFrom(value.getClass())) {
+ if(destination.isAssignableFrom(value.getClass()))
+ {
returnValue[0] = value;
return true;
- } else {
+ } else
+ {
throw new SQLException("Got a " + value.getClass().getName() + ": '"
+ value + "' while looking for a " + destination.getName());
}
}
-
+
// Are we done yet?
- if(destination.isAssignableFrom(value.getClass())) {
+ if(destination.isAssignableFrom(value.getClass()))
+ {
returnValue[0] = value;
return true;
}
-
+
// Ok is this a primitive wrapper
- if(destination.isPrimitive()) {
+ if(destination.isPrimitive())
+ {
if((destination.equals(Byte.TYPE) && value instanceof Byte) ||
- (destination.equals(Short.TYPE) && value instanceof Short) ||
- (destination.equals(Character.TYPE) && value instanceof
Character) ||
- (destination.equals(Boolean.TYPE) && value instanceof Boolean) ||
- (destination.equals(Integer.TYPE) && value instanceof Integer) ||
- (destination.equals(Long.TYPE) && value instanceof Long) ||
- (destination.equals(Float.TYPE) && value instanceof Float) ||
- (destination.equals(Double.TYPE) && value instanceof Double)
- ) {
+ (destination.equals(Short.TYPE) && value instanceof Short) ||
+ (destination.equals(Character.TYPE) && value instanceof Character) ||
+ (destination.equals(Boolean.TYPE) && value instanceof Boolean) ||
+ (destination.equals(Integer.TYPE) && value instanceof Integer) ||
+ (destination.equals(Long.TYPE) && value instanceof Long) ||
+ (destination.equals(Float.TYPE) && value instanceof Float) ||
+ (destination.equals(Double.TYPE) && value instanceof Double)
+ )
+ {
returnValue[0] = value;
return true;
}
}
- } catch (RemoteException e) {
+ } catch (RemoteException e)
+ {
throw new SQLException("Unable to load EJBObject back from Handle: " +e);
- } catch(IOException e) {
+ } catch(IOException e)
+ {
throw new SQLException("Unable to load to deserialize result: "+e);
- } catch (ClassNotFoundException e) {
+ } catch (ClassNotFoundException e)
+ {
throw new SQLException("Unable to load to deserialize result: "+e);
}
return false;
}
-
+
/**
* Returns true if the JDBC type should be (de-)serialized as a
* binary stream and false otherwise.
@@ -284,103 +348,125 @@
* @param jdbcType the JDBC type
* @return true if binary type, false otherwise
*/
- public static boolean isBinaryJDBCType(int jdbcType) {
+ public static boolean isBinaryJDBCType(int jdbcType)
+ {
return (Types.BINARY == jdbcType ||
- Types.BLOB == jdbcType ||
- Types.CLOB == jdbcType ||
- Types.JAVA_OBJECT == jdbcType ||
- Types.LONGVARBINARY == jdbcType ||
- Types.OTHER == jdbcType ||
- Types.STRUCT == jdbcType ||
- Types.VARBINARY == jdbcType);
- }
-
- private static Object convertToSQLType(int jdbcType, Object value) {
- if(jdbcType == Types.DATE) {
- if(value.getClass().getName().equals("java.util.Date")) {
- return new java.sql.Date(((java.util.Date)value).getTime());
- }
- } else if(jdbcType == Types.TIME) {
- if(value.getClass().getName().equals("java.util.Date")) {
- return new java.sql.Time(((java.util.Date)value).getTime());
- }
- } else if(jdbcType == Types.TIMESTAMP) {
- if(value.getClass().getName().equals("java.util.Date")) {
- return new java.sql.Timestamp(((java.util.Date)value).getTime());
+ Types.BLOB == jdbcType ||
+ Types.CLOB == jdbcType ||
+ Types.JAVA_OBJECT == jdbcType ||
+ Types.LONGVARBINARY == jdbcType ||
+ Types.OTHER == jdbcType ||
+ Types.STRUCT == jdbcType ||
+ Types.VARBINARY == jdbcType);
+ }
+
+ private static Object convertToSQLType(int jdbcType, Object value)
+ {
+ if(jdbcType == Types.DATE)
+ {
+ if(value.getClass().getName().equals("java.util.Date"))
+ {
+ return new java.sql.Date(((java.util.Date)value).getTime());
+ }
+ } else if(jdbcType == Types.TIME)
+ {
+ if(value.getClass().getName().equals("java.util.Date"))
+ {
+ return new java.sql.Time(((java.util.Date)value).getTime());
+ }
+ } else if(jdbcType == Types.TIMESTAMP)
+ {
+ if(value.getClass().getName().equals("java.util.Date"))
+ {
+ return new java.sql.Timestamp(((java.util.Date)value).getTime());
}
}
return value;
}
-
- private static byte[] convertObjectToByteArray(Object value) throws SQLException
{
+
+ private static byte[] convertObjectToByteArray(Object value) throws SQLException
+ {
// Do we already have a byte array?
- if (value instanceof byte[]) {
+ if (value instanceof byte[])
+ {
return (byte[])value;
}
-
+
ByteArrayOutputStream baos = null;
ObjectOutputStream oos = null;
- try {
+ try
+ {
// ejb-reference: store the handle
- if (value instanceof EJBObject) {
- value = ((EJBObject)value).getHandle();
+ if (value instanceof EJBObject)
+ {
+ value = ((EJBObject)value).getHandle();
}
-
+
// return the serialize the value
baos = new ByteArrayOutputStream();
oos = new ObjectOutputStream(baos);
-
+
// Marshall the object and write it
oos.writeObject(new MarshalledObject(value));
return baos.toByteArray();
- } catch(RemoteException e) {
+ } catch(RemoteException e)
+ {
throw new SQLException("Cannot get Handle of EJBObject: "+e);
- } catch(IOException e) {
+ } catch(IOException e)
+ {
throw new SQLException("Can't serialize binary object: " + e);
- } finally {
+ } finally
+ {
safeClose(oos);
safeClose(baos);
}
}
-
- private static Object convertByteArrayToObject(byte[] bytes) throws SQLException
{
+
+ private static Object convertByteArrayToObject(byte[] bytes) throws SQLException
+ {
ByteArrayInputStream bais = null;
ObjectInputStream ois = null;
-
- try {
+
+ try
+ {
Object value;
-
+
// deserialize result
bais = new ByteArrayInputStream(bytes);
ois = new ObjectInputStream(bais);
value = ois.readObject();
-
+
// de-marshall value
value = ((MarshalledObject)value).get();
-
+
// ejb-reference: get the object back from the handle
- if(value instanceof Handle) {
- value = ((Handle)value).getEJBObject();
+ if(value instanceof Handle)
+ {
+ value = ((Handle)value).getEJBObject();
}
return value;
- } catch (RemoteException e) {
+ } catch (RemoteException e)
+ {
throw new SQLException("Unable to load EJBObject back from Handle: " +e);
- } catch (IOException e) {
+ } catch (IOException e)
+ {
throw new SQLException("Unable to load to deserialize result: "+e);
- } catch (ClassNotFoundException e) {
+ } catch (ClassNotFoundException e)
+ {
throw new SQLException("Unable to load to deserialize result: "+e);
- } finally {
+ } finally
+ {
safeClose(ois);
safeClose(bais);
}
}
-
+
//
// Simple helper methods
//
private static Map jdbcTypeNames;
private final static Map rsTypes;
-
+
/**
* Gets the JDBC type name corresponding to the given type code.
* Only used in debug log messages.
@@ -389,17 +475,21 @@
* @return the JDBC type name.
* @see Types
*/
- private static String getJDBCTypeName(int jdbcType) {
+ private static String getJDBCTypeName(int jdbcType)
+ {
return (String)jdbcTypeNames.get(new Integer(jdbcType));
}
-
- static {
+
+ static
+ {
// Initialize the mapping between non-binary java result set
// types and the method on ResultSet that is used to retrieve
// a value of the java type.
rsTypes = new HashMap();
- Class[] arg = new Class[]{Integer.TYPE};
- try {
+ Class[] arg = new Class[]
+ {Integer.TYPE};
+ try
+ {
rsTypes.put(java.util.Date.class.getName(),
ResultSet.class.getMethod("getTimestamp", arg));
rsTypes.put(java.sql.Date.class.getName(),
ResultSet.class.getMethod("getDate", arg));
rsTypes.put(java.sql.Time.class.getName(),
ResultSet.class.getMethod("getTime", arg));
@@ -423,23 +513,27 @@
rsTypes.put(Float.TYPE.getName(),
ResultSet.class.getMethod("getFloat", arg));
rsTypes.put(java.lang.Double.class.getName(),
ResultSet.class.getMethod("getDouble", arg));
rsTypes.put(Double.TYPE.getName(),
ResultSet.class.getMethod("getDouble", arg));
- } catch(NoSuchMethodException e) {
+ } catch(NoSuchMethodException e)
+ {
// Should never happen
- Logger.debug(e);
+ log.debug("SQL error", e);
}
-
+
// Initializes the map between jdbcType (int) and the name of the type.
// This map is used to print meaningful debug and error messages.
jdbcTypeNames = new HashMap();
Field[] fields = Types.class.getFields();
- for(int i = 0; i < fields.length; i++) {
- try {
- jdbcTypeNames.put(fields[i].get(null), fields[i].getName());
- } catch (IllegalAccessException e) {
- // Should never happen
- Logger.debug(e);
+ for(int i = 0; i < fields.length; i++)
+ {
+ try
+ {
+ jdbcTypeNames.put(fields[i].get(null), fields[i].getName());
+ } catch (IllegalAccessException e)
+ {
+ // Should never happen
+ log.debug("SQL error", e);
}
}
}
-
+
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development