jboynes 2005/07/31 15:32:24
Modified: modules/itests/src/java/org/openejb/test/entity/cmp2/model
StorageBean.java StorageRemote.java
Log:
Add tests for byte[] cmp fields; require tranql 1.1
Revision Changes Path
1.2 +56 -1
openejb/modules/itests/src/java/org/openejb/test/entity/cmp2/model/StorageBean.java
Index: StorageBean.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/itests/src/java/org/openejb/test/entity/cmp2/model/StorageBean.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- StorageBean.java 29 Jul 2005 22:29:44 -0000 1.1
+++ StorageBean.java 31 Jul 2005 19:32:24 -0000 1.2
@@ -47,14 +47,26 @@
*/
package org.openejb.test.entity.cmp2.model;
+import java.sql.Connection;
+import java.sql.Statement;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.io.ByteArrayOutputStream;
import javax.ejb.CreateException;
import javax.ejb.EntityBean;
import javax.ejb.EntityContext;
+import javax.ejb.EJBException;
+import javax.sql.DataSource;
+import javax.naming.InitialContext;
+import javax.naming.NamingException;
/**
* @version $Revision$ $Date$
*/
public abstract class StorageBean implements EntityBean {
+ private EntityContext ctx;
// CMP
public abstract Integer getId();
@@ -63,6 +75,47 @@
public abstract byte[] getBlob();
public abstract void setBlob(byte[] blob);
+ public void setBytes(byte[] bytes) {
+ try {
+ DataSource ds = (DataSource) new
InitialContext().lookup("java:comp/env/jdbc/DefaultDatabase");
+ Connection c = ds.getConnection();
+ PreparedStatement ps = c.prepareStatement("UPDATE storage SET
blob_column = ? WHERE id = ?");
+ ps.setBinaryStream(1, new ByteArrayInputStream(bytes),
bytes.length);
+ ps.setInt(2, ((Integer)ctx.getPrimaryKey()).intValue());
+ ps.executeUpdate();
+ ps.close();
+ c.close();
+ } catch (Exception e) {
+ throw new EJBException(e);
+ }
+ }
+
+ public byte[] getBytes() {
+ try {
+ DataSource ds = (DataSource) new
InitialContext().lookup("java:comp/env/jdbc/DefaultDatabase");
+ Connection c = ds.getConnection();
+ PreparedStatement ps = c.prepareStatement("SELECT blob_column
FROM storage WHERE id = ?");
+ ps.setInt(1, ((Integer)ctx.getPrimaryKey()).intValue());
+ ResultSet rs = ps.executeQuery();
+ rs.next();
+ InputStream is = rs.getBinaryStream(1);
+ ByteArrayOutputStream os = new ByteArrayOutputStream();
+ byte[] buffer = new byte[1024];
+ int count;
+ while ((count = is.read(buffer)) > 0) {
+ os.write(buffer, 0, count);
+ }
+ is.close();
+ os.close();
+ rs.close();
+ ps.close();
+ c.close();
+ return os.toByteArray();
+ } catch (Exception e) {
+ throw new EJBException(e);
+ }
+ }
+
public Integer ejbCreate(Integer id) throws CreateException {
setId(id);
return null;
@@ -75,9 +128,11 @@
}
public void setEntityContext(EntityContext ctx) {
+ this.ctx = ctx;
}
public void unsetEntityContext() {
+ this.ctx = null;
}
public void ejbStore() {
1.2 +8 -4
openejb/modules/itests/src/java/org/openejb/test/entity/cmp2/model/StorageRemote.java
Index: StorageRemote.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/itests/src/java/org/openejb/test/entity/cmp2/model/StorageRemote.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- StorageRemote.java 29 Jul 2005 22:29:44 -0000 1.1
+++ StorageRemote.java 31 Jul 2005 19:32:24 -0000 1.2
@@ -47,6 +47,7 @@
*/
package org.openejb.test.entity.cmp2.model;
+import java.rmi.RemoteException;
import javax.ejb.EJBObject;
/**
@@ -54,8 +55,11 @@
*/
public interface StorageRemote extends EJBObject {
// CMP
- public Integer getId();
+ public Integer getId() throws RemoteException;
- public byte[] getBlob();
- public void setBlob(byte[] blob);
+ public byte[] getBlob() throws RemoteException;
+ public void setBlob(byte[] blob) throws RemoteException;
+
+ public void setBytes(byte[] bytes) throws RemoteException;
+ public byte[] getBytes() throws RemoteException;
}