r92 - in trunk: . nuiton-struts2/src/main/java/org/nuiton/web/struts2 nuiton-struts2/src/main/java/org/nuiton/web/struts2/interceptor
Author: tchemit Date: 2011-07-07 20:02:25 +0200 (Thu, 07 Jul 2011) New Revision: 92 Url: http://nuiton.org/repositories/revision/nuiton-web/92 Log: Evolution #1627: Updates to ToPIA 2.6.1 Evolution #1624: Remove TopiaTransactionAware Evolution #1628: Improve the TopiaTransactionInterceptor Modified: trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/TopiaTransactionAware.java trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/interceptor/TopiaTransactionInterceptor.java trunk/pom.xml Modified: trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/TopiaTransactionAware.java =================================================================== --- trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/TopiaTransactionAware.java 2011-07-05 13:19:59 UTC (rev 91) +++ trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/TopiaTransactionAware.java 2011-07-07 18:02:25 UTC (rev 92) @@ -37,22 +37,9 @@ * * @author tchemit <chemit@codelutin.com> * @since 1.2 + * @deprecated since 1.4, prefer use the same class in topia project., will be remove soon */ -public interface TopiaTransactionAware { +@Deprecated +public interface TopiaTransactionAware extends org.nuiton.topia.framework.TopiaTransactionAware { - /** - * Obtains the internal transaction. - * <p/> - * If no transaction was opened, can return the {@code null} object. - * - * @return the current transaction (can be null or closed...). - */ - TopiaContext getTransaction(); - - /** - * Put in the instance, the given transaction. - * - * @param transaction the transaction to push - */ - void setTransaction(TopiaContext transaction); } Modified: trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/interceptor/TopiaTransactionInterceptor.java =================================================================== --- trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/interceptor/TopiaTransactionInterceptor.java 2011-07-05 13:19:59 UTC (rev 91) +++ trunk/nuiton-struts2/src/main/java/org/nuiton/web/struts2/interceptor/TopiaTransactionInterceptor.java 2011-07-07 18:02:25 UTC (rev 92) @@ -136,51 +136,58 @@ @Override public String intercept(ActionInvocation invocation) throws Exception { - TopiaTransactionAware transactionAware = null; + org.nuiton.topia.framework.TopiaTransactionAware transactionAware = null; Object action = invocation.getProxy().getAction(); - if (action instanceof TopiaTransactionAware) { - transactionAware = (TopiaTransactionAware) action; + if (action instanceof org.nuiton.topia.framework.TopiaTransactionAware) { + transactionAware = (org.nuiton.topia.framework.TopiaTransactionAware) action; } - TopiaContext transaction = null; - if (transactionAware != null) { + if (transactionAware == null) { - // action need a transaction - transaction = beginTransaction(); + // not a transaction aware action + return invocation.invoke(); + } - if (log.isDebugEnabled()) { - log.debug("Open transaction " + transaction); - } - // creates a proxy on the transaction to push back in action - TopiaContext proxy = (TopiaContext) Proxy.newProxyInstance( - getClass().getClassLoader(), - new Class<?>[]{TopiaContext.class, - TopiaContextImplementor.class}, - new TopiaTransactionProxyInvocationHandler(transaction) - ); + // action need a transaction + TopiaContext transaction = beginTransaction(); - // set the transaction in the action - transactionAware.setTransaction(proxy); + if (log.isDebugEnabled()) { + log.debug("Open transaction " + transaction); } + + // creates a proxy on the transaction to push back in action + TopiaContext proxy = (TopiaContext) Proxy.newProxyInstance( + getClass().getClassLoader(), + new Class<?>[]{TopiaContext.class, + TopiaContextImplementor.class}, + new TopiaTransactionProxyInvocationHandler(transaction) + ); + + // set the transaction in the action + transactionAware.setTransaction(proxy); + + boolean doCommit = true; try { return invocation.invoke(); - } finally { + } catch (Exception e) { - if (transactionAware != null) { + doCommit = false; + transaction.rollbackTransaction(); - // we are on a action with a internal topia transaction + throw e; + } finally { - if (transaction != null && !transaction.isClosed()) { + if (doCommit) { + transaction.commitTransaction(); + } - if (log.isDebugEnabled()) { - log.debug("Close transaction " + transaction); - } - // close the opened transaction - transaction.closeContext(); - } + if (log.isDebugEnabled()) { + log.debug("Close transaction " + transaction); } + // close the opened transaction + transaction.closeContext(); } } Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2011-07-05 13:19:59 UTC (rev 91) +++ trunk/pom.xml 2011-07-07 18:02:25 UTC (rev 92) @@ -215,7 +215,7 @@ <nuitonI18nPluginVersion>2.4</nuitonI18nPluginVersion> <jredminePluginVersion>1.2</jredminePluginVersion> - <topiaVersion>2.6</topiaVersion> + <topiaVersion>2.6.1-SNAPSHOT</topiaVersion> <!-- Tapestry --> <tapestryVersion>5.2.4</tapestryVersion>
participants (1)
-
tchemit@users.nuiton.org