User: dsundstrom
  Date: 02/02/26 15:24:53

  Modified:    src/main/org/jboss/ejb/plugins/cmp/bridge
                        EntityBridgeInvocationHandler.java
  Log:
  Cleaned up exception handling.
  
  Revision  Changes    Path
  1.14      +52 -37    
jboss/src/main/org/jboss/ejb/plugins/cmp/bridge/EntityBridgeInvocationHandler.java
  
  Index: EntityBridgeInvocationHandler.java
  ===================================================================
  RCS file: 
/cvsroot/jboss/jboss/src/main/org/jboss/ejb/plugins/cmp/bridge/EntityBridgeInvocationHandler.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- EntityBridgeInvocationHandler.java        12 Feb 2002 22:35:11 -0000      1.13
  +++ EntityBridgeInvocationHandler.java        26 Feb 2002 23:24:53 -0000      1.14
  @@ -37,7 +37,7 @@
    *      One per cmp entity bean instance, including beans in pool.       
    *
    * @author <a href="mailto:[EMAIL PROTECTED]";>Dain Sundstrom</a>
  - * @version $Revision: 1.13 $
  + * @version $Revision: 1.14 $
    */                            
   public class EntityBridgeInvocationHandler implements InvocationHandler {
      private final EntityContainer container;
  @@ -57,7 +57,7 @@
      public EntityBridgeInvocationHandler(
            EntityContainer container,
            EntityBridge entityBridge,
  -         Class beanClass) throws Exception {
  +         Class beanClass) throws DeploymentException {
   
         this.container = container;
         this.entityBridge = entityBridge;
  @@ -74,47 +74,62 @@
         this.ctx = ctx;
      }
      
  -   public Object invoke(Object proxy, Method method, Object[] args)
  -         throws Throwable {
  +   public Object invoke(Object proxy, Method method, Object[] args) 
  +         throws FinderException {
   
         String methodName = method.getName();
  -
  -      SelectorBridge selector = (SelectorBridge) selectorMap.get(method);
  -      if(selector != null) {
  -         Transaction tx;
  -         if(ctx != null) {
  -            // it is probably safer to get the tx from the context if we have
  -            // one (ejbHome methods don't have a context)
  -            tx = ctx.getTransaction();
  -         } else {
  -            tx = container.getTransactionManager().getTransaction();
  +   
  +      try {
  +         SelectorBridge selector = (SelectorBridge) selectorMap.get(method);
  +         if(selector != null) {
  +            Transaction tx;
  +            if(ctx != null) {
  +               // it is probably safer to get the tx from the context if we have
  +               // one (ejbHome methods don't have a context)
  +               tx = ctx.getTransaction();
  +            } else {
  +               tx = container.getTransactionManager().getTransaction();
  +            }
  +            EntityContainer.synchronizeEntitiesWithinTransaction(tx);
  +            return selector.execute(args);
            }
  -         EntityContainer.synchronizeEntitiesWithinTransaction(tx);
  -         return selector.execute(args);
  +      } catch(RuntimeException e) {
  +         throw e;
  +      } catch(FinderException e) {
  +         throw e;
  +      } catch(Exception e) {
  +         throw new EJBException("Internal error", e);
         }
  -
  -      // get the field object
  -      FieldBridge field = (FieldBridge) fieldMap.get(method);
  -
  -      if(field == null) { 
  -         throw new EJBException("Method is not a known CMP field accessor, " +
  -               "CMR field accessor, or ejbSelect method: " +
  -               "methodName=" + methodName);
  -      }
  -
  -      // In the case of ejbHome methods there is no context, but ejb home
  -      // methods are only allowed to call selectors.
  -      if(ctx == null) {
  -         throw new EJBException("EJB home methods are not allowed to access " +
  -               "CMP or CMR fields: methodName=" + methodName);
  +   
  +      try {
  +         // get the field object
  +         FieldBridge field = (FieldBridge) fieldMap.get(method);
  +   
  +         if(field == null) { 
  +            throw new EJBException("Method is not a known CMP field " +
  +                  "accessor, CMR field accessor, or ejbSelect method: " +
  +                  "methodName=" + methodName);
  +         }
  +   
  +         // In the case of ejbHome methods there is no context, but ejb home
  +         // methods are only allowed to call selectors.
  +         if(ctx == null) {
  +            throw new EJBException("EJB home methods are not allowed to " +
  +                  "access CMP or CMR fields: methodName=" + methodName);
  +         }
  +   
  +         if(methodName.startsWith("get")) {
  +            return field.getValue(ctx);
  +         } else if(methodName.startsWith("set")) {
  +            field.setValue(ctx, args[0]);
  +            return null;
  +         }
  +      } catch(RuntimeException e) {
  +         throw e;
  +      } catch(Exception e) {
  +         throw new EJBException("Internal error", e);
         }
   
  -      if(methodName.startsWith("get")) {
  -         return field.getValue(ctx);
  -      } else if(methodName.startsWith("set")) {
  -         field.setValue(ctx, args[0]);
  -         return null;
  -      }
         // Should never get here, but it's better to be safe then sorry.
         throw new EJBException("Unknown field accessor method: " +
               "methodName=" + methodName);
  
  
  

_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development

Reply via email to