View Javadoc

1   /*
2    * $Id: StatementInvocationHandler.java 9431 2007-10-29 13:04:36Z aperepel $
3    * --------------------------------------------------------------------------------------
4    * Copyright (c) MuleSource, Inc.  All rights reserved.  http://www.mulesource.com
5    *
6    * The software in this package is published under the terms of the CPAL v1.0
7    * license, a copy of which has been included with this distribution in the
8    * LICENSE.txt file.
9    */
10  package org.mule.providers.jdbc.xa;
11  
12  import java.lang.reflect.InvocationHandler;
13  import java.lang.reflect.InvocationTargetException;
14  import java.lang.reflect.Method;
15  import java.sql.Statement;
16  
17  
18  public class StatementInvocationHandler implements InvocationHandler
19  {
20  
21      private Statement statement;
22      private ConnectionWrapper connectionWrapper;
23  
24      public StatementInvocationHandler(ConnectionWrapper connectionWrapper, Statement statement)
25      {
26          this.connectionWrapper = connectionWrapper;
27          this.statement = statement;
28      }
29  
30      /*
31       * (non-Javadoc)
32       *
33       * @see java.lang.reflect.InvocationHandler#invoke(java.lang.Object,
34       *      java.lang.reflect.Method, java.lang.Object[])
35       */
36      public Object invoke(Object proxy, Method method, Object[] args) throws Throwable
37      {
38          if (method.getName().startsWith("execute"))
39          {
40              connectionWrapper.enlist();
41          }
42          try
43          {
44              return method.invoke(statement, args);
45          }
46          catch (InvocationTargetException ex)
47          {
48              throw ex.getCause();
49          }
50      }
51  
52  }