KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > alfresco > repo > transaction > NodeDaoServiceTransactionInterceptor


1 /*
2  * Copyright (C) 2005 Alfresco, Inc.
3  *
4  * Licensed under the Mozilla Public License version 1.1
5  * with a permitted attribution clause. You may obtain a
6  * copy of the License at
7  *
8  * http://www.alfresco.org/legal/license.txt
9  *
10  * Unless required by applicable law or agreed to in writing,
11  * software distributed under the License is distributed on an
12  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
13  * either express or implied. See the License for the specific
14  * language governing permissions and limitations under the
15  * License.
16  */

17 package org.alfresco.repo.transaction;
18
19 import org.alfresco.error.AlfrescoRuntimeException;
20 import org.alfresco.repo.node.db.NodeDaoService;
21 import org.aopalliance.intercept.MethodInterceptor;
22 import org.aopalliance.intercept.MethodInvocation;
23 import org.springframework.beans.factory.InitializingBean;
24
25 /**
26  * Utility class that ensures that a <tt>NodeDaoService</tt> has been registered
27  * with the current transaction.
28  * <p>
29  * It is designed to act as a <b>postInterceptor</b> on the <tt>NodeDaoService</tt>'s
30  * {@link org.springframework.transaction.interceptor.TransactionProxyFactoryBean}.
31  *
32  * @author Derek Hulley
33  */

34 public class NodeDaoServiceTransactionInterceptor implements MethodInterceptor, InitializingBean
35 {
36     private NodeDaoService nodeDaoService;
37
38     /**
39      * @param nodeDaoService the <tt>NodeDaoService</tt> to register
40      */

41     public void setNodeDaoService(NodeDaoService nodeDaoService)
42     {
43         this.nodeDaoService = nodeDaoService;
44     }
45
46     /**
47      * Checks that required values have been injected
48      */

49     public void afterPropertiesSet() throws Exception JavaDoc
50     {
51         if (nodeDaoService == null)
52         {
53             throw new AlfrescoRuntimeException("NodeDaoService is required: " + this);
54         }
55     }
56
57     public Object JavaDoc invoke(MethodInvocation invocation) throws Throwable JavaDoc
58     {
59         AlfrescoTransactionSupport.bindNodeDaoService(nodeDaoService);
60         // propogate the call
61
return invocation.proceed();
62     }
63 }
64
Popular Tags