dain        2005/06/26 04:17:55

  Modified:    modules/core/src/java/org/openejb/corba
                        CorbaApplicationServer.java StandardServant.java
  Log:

  Fix typo in ejb metadata generation for corba
  Handle remove exceptions from remove methods
  Turn on localy optimized stubs in sun orb... don't think this actually works
  
  Revision  Changes    Path
  1.2       +5 -5      
openejb/modules/core/src/java/org/openejb/corba/CorbaApplicationServer.java
  
  Index: CorbaApplicationServer.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/CorbaApplicationServer.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- CorbaApplicationServer.java       25 Jun 2005 07:00:29 -0000      1.1
  +++ CorbaApplicationServer.java       26 Jun 2005 08:17:54 -0000      1.2
  @@ -101,11 +101,11 @@
       public EJBMetaData getEJBMetaData(ProxyInfo proxyInfo) {
           int componentType = proxyInfo.getComponentType();
           byte ejbType;
  -        if (componentType != EJBComponentType.STATEFUL) {
  +        if (componentType == EJBComponentType.STATEFUL) {
               ejbType = CORBAEJBMetaData.STATEFUL;
  -        } else if (componentType != EJBComponentType.STATELESS) {
  +        } else if (componentType == EJBComponentType.STATELESS) {
               ejbType = CORBAEJBMetaData.STATELESS;
  -        } else if (componentType != EJBComponentType.BMP_ENTITY || 
componentType == EJBComponentType.CMP_ENTITY) {
  +        } else if (componentType == EJBComponentType.BMP_ENTITY || 
componentType == EJBComponentType.CMP_ENTITY) {
               ejbType = CORBAEJBMetaData.ENTITY;
           } else {
               throw new IllegalArgumentException("Unknown component type: " + 
componentType);
  
  
  
  1.8       +31 -7     
openejb/modules/core/src/java/org/openejb/corba/StandardServant.java
  
  Index: StandardServant.java
  ===================================================================
  RCS file: 
/home/projects/openejb/scm/openejb/modules/core/src/java/org/openejb/corba/StandardServant.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- StandardServant.java      26 Jun 2005 03:11:23 -0000      1.7
  +++ StandardServant.java      26 Jun 2005 08:17:54 -0000      1.8
  @@ -59,6 +59,7 @@
   import javax.ejb.EJBHome;
   import javax.ejb.EJBObject;
   import javax.ejb.Handle;
  +import javax.ejb.RemoveException;
   import javax.transaction.InvalidTransactionException;
   import javax.transaction.TransactionRequiredException;
   import javax.transaction.TransactionRolledbackException;
  @@ -226,8 +227,12 @@
                       } else if (method.equals(GETEJBHOME)) {
                           result = ejbContainer.getEjbHome();
                       } else if (method.equals(REMOVE)) {
  -                        ejbContainer.getEjbObject(primaryKey).remove();
  -                        result = null;
  +                        try {
  +                            ejbContainer.getEjbObject(primaryKey).remove();
  +                            result = null;
  +                        } catch (RemoveException e) {
  +                            return Util.writeUserException(method, reply, e);
  +                        }
                       } else {
                           throw new UnsupportedOperationException("Unkown 
method: " + method);
                       }
  @@ -238,11 +243,30 @@
                           result = ejbContainer.getEjbHome().getHomeHandle();
                       } else if (method.equals(REMOVE_W_HAND)) {
                           Handle handle = (Handle) arguments[0];
  -                        ejbContainer.getEjbHome().remove(handle);
  +                        try {
  +                            if 
(ejbContainer.getProxyInfo().isStatelessSessionBean()) {
  +                                if (handle == null) {
  +                                    throw new RemoveException("Handle is 
null");
  +                                }
  +                                Class remoteInterface = 
ejbContainer.getProxyInfo().getRemoteInterface();
  +                                if 
(!remoteInterface.isInstance(handle.getEJBObject())) {
  +                                    throw new RemoteException("Handle does 
not hold a " + remoteInterface.getName());
  +                                }
  +                            } else {
  +                                EJBObject ejbObject = handle.getEJBObject();
  +                                ejbObject.remove();
  +                            }
  +                        } catch (RemoveException e) {
  +                            return Util.writeUserException(method, reply, e);
  +                        }
                           result = null;
                       } else if (method.equals(REMOVE_W_KEY)) {
  -                        ejbContainer.getEjbHome().remove(arguments[0]);
  -                        result = null;
  +                        try {
  +                            ejbContainer.getEjbHome().remove(arguments[0]);
  +                            result = null;
  +                        } catch (RemoveException e) {
  +                            return Util.writeUserException(method, reply, e);
  +                        }
                       } else {
                           throw new UnsupportedOperationException("Unkown 
method: " + method);
                       }
  
  
  

Reply via email to