Hi,

Peter Braswell wrote:
> 
> >
> > If OK with you, I will change the BMP
> > implementation as follows:
> > - No implicit database clear here.
> > - Database table will be automagically
> >   created whenever needed, if it does
> >   not exist.
> > - A few other minor changes to the
> >   persistence handling.
> >
> > I do not know for sure, but I would
> > guess that the removal of the database
> > table clearing in ejbCreate() could
> > break some tests that depend on it.
> 
> Hi Ole!
> 
> I think this will be okay to do.  You are right, it is
> a problem.  I think the tests will be okay if you make
> the change you propose.  One test does not depend on
> the completion of another.  Please make your change
> and well fix whatever breaks!

I changed the ejbFindAll() method to create the
table, if it doesn't exist. Then, in the JUnit
test fixture setup, I do a home.findAll() and
loop to remove everything found from older
tests.
I also gave all of the BMP bean implementation
and the BMP test a major overhaul. For example,
the ejbLoad() method now throws
javax.ejb.NoSuchEntityException when the
instance does not exist in the database.

Now all BMP tests seem to run fine with recent
CVS, except for the EjbRemove test. This test
tries to call a business method on a bean
instance that was removed. When the container
calls ejbLoad(), javax.ejb.NoSuchEntityException
is thrown. At client side, a
java.rmi.NoSuchObjectException exception is
expected. But instead the container throws a
java.rmi.ServerException, wrapping a
javax.transaction.TransactionRolledbackException,
wrapping the original
javax.ejb.NoSuchEntityException.

This looks like the container does not do what
EJB1.1, sect. 12.3.3 suggests. Not a strict
requirement (it says "should" rather than
"must"), but I think we should follow it.


With a bit of luck, I'll be able to commit
this tonight.


Best Regards,

Ole Husgaard.

Reply via email to