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;
   }
  
  
  

Reply via email to