weaver      2004/10/29 07:35:51

  Modified:    portal/src/webapp/WEB-INF/assembly jetspeed-spring.xml
  Added:       portal/src/webapp/WEB-INF/assembly transaction.xml
  Log:
  Set up declarative transactions, see: http://nagoya.apache.org/jira/browse/JS2-144
  
  Revision  Changes    Path
  1.28      +242 -43   
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/assembly/jetspeed-spring.xml
  
  Index: jetspeed-spring.xml
  ===================================================================
  RCS file: 
/home/cvs/jakarta-jetspeed-2/portal/src/webapp/WEB-INF/assembly/jetspeed-spring.xml,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- jetspeed-spring.xml       18 Oct 2004 01:30:29 -0000      1.27
  +++ jetspeed-spring.xml       29 Oct 2004 14:35:51 -0000      1.28
  @@ -38,7 +38,7 @@
           <constructor-arg>
                <map>
                  <entry key="PortletRegistryComponent">
  -                     <ref 
bean="org.apache.jetspeed.components.portletregistry.PortletRegistryComponent" />
  +                     <ref 
bean="org.apache.jetspeed.components.portletregistry.PortletRegistry" />
                  </entry>
                  <entry key="SearchComponent">
                        <ref bean="org.apache.jetspeed.search.SearchEngine"/>
  @@ -138,19 +138,110 @@
     </bean>
     
     <!-- Portlet Registry DAO-->
  -  <bean 
id="org.apache.jetspeed.components.portletregistry.PortletRegistryComponent" 
  -        
class="org.apache.jetspeed.components.portletregistry.PortletRegistryComponentImpl"
  -  >             
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.components.persistence.store.PersistenceStore"/></constructor-arg>
     
  -  </bean>
  +  <bean id="portletRegistryImpl" 
class="org.apache.jetspeed.components.portletregistry.PersistenceBrokerPortletRegistry"
 init-method="init">
  +     <constructor-arg>
  +             <value>META-INF/registry_repository.xml</value>
  +     </constructor-arg>
  +    </bean>
  +             
  +    
  +     <bean id="org.apache.jetspeed.components.portletregistry.PortletRegistry"
  +               name="portletRegistry"
  +               parent="baseTransactionProxy" >
  +             <property name="proxyInterfaces">
  +                     
<value>org.apache.jetspeed.components.portletregistry.PortletRegistry</value>
  +             </property>
  +
  +             <property name="target"> 
  +                     <ref bean="portletRegistryImpl"/>
  +             </property>
  +             <property name="transactionAttributes">
  +                     <props>                         
  +                             <prop 
key="regsister*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
  +                             <prop 
key="remove*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
  +                             <prop 
key="update*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
  +                             <prop 
key="save*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletregistry.RegistryException</prop>
  +                             <prop key="*">PROPAGATION_SUPPORTS</prop>
  +                     </props>
  +             </property>
  +     </bean>
     
     <!-- Portlet Entity Access DAO-->
  -  <bean 
id="org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent" 
  -        
class="org.apache.jetspeed.components.portletentity.PortletEntityAccessComponentImpl"
  -  >             
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.components.persistence.store.PersistenceStore"/></constructor-arg>
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.components.portletregistry.PortletRegistryComponent"/></constructor-arg>
       
  -  </bean>
  +  <!--
  +  <bean id="systemCache" 
class="org.apache.jetspeed.cache.general.SimpleHashMapCache" />
  +     
  +     <bean id="systemCachingInterceptor" 
class="org.apache.jetspeed.components.interceptors.CachingInterceptor" >
  +     <constructor-arg>
  +             <ref bean="systemCache"/>
  +     </constructor-arg>
  +     </bean>
  +    
  +    <bean id="systemRemoveFromCacheInterceptor" 
class="org.apache.jetspeed.components.interceptors.RemoveFromCacheInterceptor" >
  +     <constructor-arg>
  +             <ref bean="systemCache"/>
  +     </constructor-arg>
  +    </bean>          
  +    
  +    <bean id="portletEntityCachingAdvisor" 
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
  +        <property name="advice">
  +             <ref bean="systemCachingInterceptor"/>
  +        </property>
  +        <property name="patterns">
  +         <list>
  +            <value>.*getPortletEntity.*</value>
  +        </list>
  +       </property>
  +    </bean>
  +    
  +    <bean id="portletEntityRemoveFromCacheAdvisor" 
class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
  +        <property name="advice">
  +             <ref bean="systemRemoveFromCacheInterceptor"/>
  +        </property>
  +        <property name="patterns">
  +         <list>
  +            <value>.*removePortletEntity.*</value>
  +        </list>
  +       </property>
  +    </bean>
  +    
  +    -->
  +    <!--
  +       - PortletEntity business object: OJB implementation, as an inner bean wrapped
  +             - by an outer transactional proxy. The two bean definitions could have 
been separate,
  +             - but this is cleaner as there is no need to ever access the unwrapped 
object.
  +    -->
  +
  +    <bean id="portletEntityAccessImpl" 
class="org.apache.jetspeed.components.portletentity.PersistenceBrokerPortletEntityAccess"
 >
  +     <constructor-arg>
  +             <ref bean="portletRegistry"/>                   
  +     </constructor-arg>
  +    </bean>
  +    
  +
  +     <bean 
id="org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent" 
parent="baseTransactionProxy" 
  +             name="portletEntityAccess" >
  +             <property name="proxyInterfaces">
  +                     
<value>org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent</value>
  +             </property>
  +             <property name="target">
  +                     <ref bean="portletEntityAccessImpl"/>
  +             </property>
  +             <!--
  +             <property name="preInterceptors">
  +                     <list>
  +                             <ref bean="portletEntityCachingAdvisor"/>
  +                             <ref bean="portletEntityRemoveFromCacheAdvisor"/>
  +                     </list>
  +             </property>
  +             -->
  +             <property name="transactionAttributes">
  +                     <props>                         
  +                             <prop key="remove*">PROPAGATION_REQUIRED</prop>
  +                             <prop 
key="store*">PROPAGATION_REQUIRED,-org.apache.jetspeed.components.portletentity.PortletEntityNotStoredException</prop>
  +                             <prop key="*">PROPAGATION_SUPPORTS</prop>
  +                     </props>
  +             </property>
  +     </bean>
     
     <!-- Profiler -->
     <bean id="org.apache.jetspeed.profiler.Profiler" 
  @@ -166,64 +257,155 @@
           <constructor-arg ><ref 
bean="org.apache.jetspeed.components.persistence.store.PersistenceStore"/></constructor-arg>
             
     </bean>
     
  -  <!-- Property Manager -->
  -   <bean id="org.apache.jetspeed.prefs.PropertyManager" 
  +   
  + <!-- Preferences Implementation -->
  +   <bean id="PreferencesProviderImpl" 
  +        class="org.apache.jetspeed.prefs.impl.PersistenceBrokerPreferencesProvider"
  +        init-method="init"
  +   >            
  +        <constructor-arg 
index="0"><value>META-INF/prefs_repository.xml</value></constructor-arg>       
  +        <constructor-arg type="boolean" 
index="1"><value>false</value></constructor-arg>                
  +  </bean>
  +  
  +  
  +  <bean id="org.apache.jetspeed.prefs.PreferencesProvider" 
parent="baseTransactionProxy" 
  +     name="prefsProvider"
  +     >
  +             <property name="proxyInterfaces">
  +                     <value>org.apache.jetspeed.prefs.PreferencesProvider</value>
  +             </property>
  +
  +             <property name="target"> 
  +                     <ref bean="PreferencesProviderImpl"/>
  +             </property>
  +             <property name="transactionAttributes">
  +                     <props>
  +                             <prop key="createNode*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="storeNode*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="removeNode*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="*">PROPAGATION_SUPPORTS</prop>
  +                     </props>
  +             </property>
  +  </bean>
  +  
  +  <!-- PreferencesFaactory implementation -->
  +  
  +  <bean id="java.util.prefs.PreferencesFactory" 
  +     class="org.apache.jetspeed.prefs.impl.PreferencesFactoryImpl"
  +     name="prefsFactory" init-method="init"
  +     >
  +             <property name="prefsProvider"> 
  +                     <ref bean="prefsProvider"/>
  +             </property>     
  +  </bean>
  +  
  +  
  +   <!-- Property Manager -->
  +   <bean id="PropertyManagerImpl" 
           class="org.apache.jetspeed.prefs.impl.PropertyManagerImpl"
     >             
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.components.persistence.store.PersistenceStore"/></constructor-arg>
             
  +      <!-- We don't use the Tx proxied prefs provider so that we can demarcate Txs
  +                exclusively for the PropertyManager -->
  +        <constructor-arg ><ref bean="PreferencesProviderImpl"/></constructor-arg>   
    
     </bean>
     
  -  <!-- Preferences Implementation -->
  -   <bean id="org.apache.jetspeed.prefs.PreferencesProvider" 
  -        class="org.apache.jetspeed.prefs.impl.PreferencesProviderImpl"
  -        init-method="start" destroy-method="stop"
  -  >             
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.components.persistence.store.PersistenceStore"/></constructor-arg>
             
  -        <constructor-arg 
><value>org.apache.jetspeed.prefs.impl.PreferencesFactoryImpl</value></constructor-arg>
  -        <constructor-arg type="boolean"><value>false</value></constructor-arg>      
            
  +  
  +  <bean id="org.apache.jetspeed.prefs.PropertyManager" 
parent="baseTransactionProxy" 
  +          name="propertyManager"
  +          >
  +             <property name="proxyInterfaces">
  +                     <value>org.apache.jetspeed.prefs.PropertyManager</value>
  +             </property>
  +
  +             <property name="target"> 
  +                     <ref bean="PropertyManagerImpl"/>
  +             </property>             
  +             <property name="transactionAttributes">
  +                     <props>                         
  +                             <prop key="add*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="remove*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="update*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="*">PROPAGATION_SUPPORTS</prop>
  +                     </props>
  +             </property>             
     </bean>
     
  -  <!-- ************** Security SPI Handlers ************** -->
  + <!-- ************** Security SPI Handlers ************** -->
     <!-- Security SPI: CommonQueries -->
  -  <bean id="org.apache.jetspeed.security.spi.impl.CommonQueries" 
  -        class="org.apache.jetspeed.security.spi.impl.CommonQueries"
  -  >             
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.components.persistence.store.PersistenceStore"/></constructor-arg>
             
  -  </bean>
  +  <bean id="org.apache.jetspeed.security.spi.impl.SecurityAccessImpl" 
  +        class="org.apache.jetspeed.security.spi.impl.SecurityAccessImpl"
  +        init-method="init"
  +  >             
  +        <constructor-arg 
><value>META-INF/security_repository.xml</value></constructor-arg>             
  +  </bean>
  +  
  +  <bean id="org.apache.jetspeed.security.spi.SecurityAccess" 
parent="baseTransactionProxy" 
  +             name="SecurityCommonQueries" >
  +             <property name="proxyInterfaces">
  +                     <value>org.apache.jetspeed.security.spi.SecurityAccess</value>
  +             </property>
  +             <property name="target">
  +                     <ref 
bean="org.apache.jetspeed.security.spi.impl.SecurityAccessImpl"/>
  +             </property>
  +             <property name="transactionAttributes">
  +                     <props>                         
  +                             <prop key="remove*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="set*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="*">PROPAGATION_SUPPORTS</prop>
  +                     </props>
  +             </property>
  +   </bean>
     
     <!-- Security SPI: CredentialHandler -->
     <bean id="org.apache.jetspeed.security.spi.CredentialHandler" 
           class="org.apache.jetspeed.security.spi.impl.DefaultCredentialHandler"
     >             
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.impl.CommonQueries"/></constructor-arg>         
  
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.SecurityAccess"/></constructor-arg>       
     </bean>
     
     <!-- Security SPI: UserSecurityHandler -->
  -  <bean id="org.apache.jetspeed.security.spi.UserSecurityHandler" 
  +  <!-- The DefaultUSerSecurityHandler uses the raw SecurityAccessImpl so that it
  +        may demarcate its own transactions -->
  +  <bean id="org.apache.jetspeed.security.spi.UserSecurityHandlerImpl" 
           class="org.apache.jetspeed.security.spi.impl.DefaultUserSecurityHandler"
     >             
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.impl.CommonQueries"/></constructor-arg>         
  
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.SecurityAccess"/></constructor-arg>       
     </bean>
     
  +  <bean id="org.apache.jetspeed.security.spi.UserSecurityHandler" 
parent="baseTransactionProxy" 
  +             name="userSecurityHandler" >
  +             <property name="proxyInterfaces">
  +                     
<value>org.apache.jetspeed.security.spi.UserSecurityHandler</value>
  +             </property>
  +             <property name="target">
  +                     <ref 
bean="org.apache.jetspeed.security.spi.UserSecurityHandlerImpl"/>
  +             </property>
  +             <property name="transactionAttributes">
  +                     <props>                         
  +                             <prop key="*">PROPAGATION_REQUIRED</prop>
  +                     </props>
  +             </property>
  +   </bean>
  +  
     <!-- Security SPI: RoleSecurityHandler -->
     <bean id="org.apache.jetspeed.security.spi.RoleSecurityHandler" 
           class="org.apache.jetspeed.security.spi.impl.DefaultRoleSecurityHandler"
     >             
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.impl.CommonQueries"/></constructor-arg>
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.SecurityAccess"/></constructor-arg>
     </bean>
     
     <!-- Security SPI: GroupSecurityHandler -->
     <bean id="org.apache.jetspeed.security.spi.GroupSecurityHandler" 
           class="org.apache.jetspeed.security.spi.impl.DefaultGroupSecurityHandler"
     >             
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.impl.CommonQueries"/></constructor-arg>
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.SecurityAccess"/></constructor-arg>
     </bean>
     
     <!-- Security SPI: SecurityMappingHandler -->
     <bean id="org.apache.jetspeed.security.spi.SecurityMappingHandler" 
           class="org.apache.jetspeed.security.spi.impl.DefaultSecurityMappingHandler"
     >             
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.impl.CommonQueries"/></constructor-arg>
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.spi.SecurityAccess"/></constructor-arg>
           <!-- Default role hierarchy strategy is by generalization.  Add 
contructor-arg to change the strategy. -->
           <!-- Default group hierarchy strategy is by generalization.  Add 
contructor-arg to change the strategy. -->
     </bean>
  @@ -294,11 +476,28 @@
     
     <!-- ************** Authorization ************** -->
     <!-- Security: Permission Manager -->
  -  <bean id="org.apache.jetspeed.security.PermissionManager" 
  -        class="org.apache.jetspeed.security.impl.PermissionManagerImpl"
  -  >             
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.components.persistence.store.PersistenceStore"/></constructor-arg>
             
  -  </bean>
  +  <bean id="org.apache.jetspeed.security.impl.PermissionManagerImpl" 
  +        class="org.apache.jetspeed.security.impl.PermissionManagerImpl"  />
  +  
  +  <bean id="org.apache.jetspeed.security.PermissionManager" 
parent="baseTransactionProxy" 
  +             name="permissionManager" >
  +             <property name="proxyInterfaces">
  +                     <value>org.apache.jetspeed.security.PermissionManager</value>
  +             </property>
  +             <property name="target">
  +                     <ref 
bean="org.apache.jetspeed.security.impl.PermissionManagerImpl"/>
  +             </property>
  +             <property name="transactionAttributes">
  +                     <props>                         
  +                             <prop key="remove*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="grant*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="revoke*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="grant*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="add*">PROPAGATION_REQUIRED</prop>
  +                             <prop key="*">PROPAGATION_SUPPORTS</prop>
  +                     </props>
  +             </property>
  +   </bean>
     
     <!-- Security: RDBMS Policy implementation for JAAS -->
     <bean id="org.apache.jetspeed.security.impl.RdbmsPolicy" 
  @@ -319,7 +518,7 @@
           class="org.apache.jetspeed.userinfo.impl.UserInfoManagerImpl"
     >
        <constructor-arg ><ref 
bean="org.apache.jetspeed.security.UserManager"/></constructor-arg>                 
  -     <constructor-arg ><ref 
bean="org.apache.jetspeed.components.portletregistry.PortletRegistryComponent"/></constructor-arg>
  +     <constructor-arg ><ref 
bean="org.apache.jetspeed.components.portletregistry.PortletRegistry"/></constructor-arg>
   
     </bean>
     
  @@ -451,7 +650,7 @@
           init-method="start" destroy-method="stop"
     >             
           <constructor-arg 
><value>${autodeployment.target.dir}</value></constructor-arg>
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.components.portletregistry.PortletRegistryComponent" 
/></constructor-arg>
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.components.portletregistry.PortletRegistry" 
/></constructor-arg>
           <constructor-arg ><ref 
bean="org.apache.jetspeed.components.portletentity.PortletEntityAccessComponent" 
/></constructor-arg>
           <constructor-arg ><ref 
bean="org.apache.jetspeed.container.window.PortletWindowAccessor" /></constructor-arg>
           <constructor-arg ><ref 
bean="org.apache.jetspeed.tools.pamanager.servletcontainer.ApplicationServerManager" 
/></constructor-arg>
  @@ -469,7 +668,7 @@
     >  
          <constructor-arg 
><value>${autodeployment.staging.dir}</value></constructor-arg>
           <constructor-arg ><ref bean="PAM" /></constructor-arg>
  -        <constructor-arg ><ref 
bean="org.apache.jetspeed.components.portletregistry.PortletRegistryComponent" 
/></constructor-arg>
  +        <constructor-arg ><ref 
bean="org.apache.jetspeed.components.portletregistry.PortletRegistry" 
/></constructor-arg>
           <constructor-arg><ref bean="portletFactory"/></constructor-arg>
     </bean>
     
  
  
  
  1.1                  
jakarta-jetspeed-2/portal/src/webapp/WEB-INF/assembly/transaction.xml
  
  Index: transaction.xml
  ===================================================================
  <?xml version="1.0" encoding="UTF-8"?>
  <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" 
"http://www.springframework.org/dtd/spring-beans.dtd";>
  
  <!--
    - Application context definition for PortletRegistry using Apache OJB.
        -->
  <beans>
    
        <!-- Transaction manager for a single OJB PersistenceBroker (alternative to 
JTA) -->
        <bean id="transactionManager" 
class="org.springframework.orm.ojb.PersistenceBrokerTransactionManager"/>
  
        <!-- Transaction manager that delegates to JTA (for a transactional JNDI 
DataSource) -->
        <!--
        <bean id="transactionManager" 
class="org.springframework.transaction.jta.JtaTransactionManager"/>
        -->
  
  
  
        <!--
                - A parent bean definition which is a base definition for transaction 
proxies.
                - It is markes as abstract, since it is never supposed to be 
instantiated itself.
                - We set shared transaction attributes here, following our naming 
patterns.
                - The attributes can still be overridden in child bean definitions.
                -->
        <bean id="baseTransactionProxy" 
class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
                        abstract="true">
                <property name="transactionManager"><ref 
bean="transactionManager"/></property>
                <property name="transactionAttributes">
                        <props>
                                <prop key="*">PROPAGATION_REQUIRED</prop>
                        </props>
                </property>
        </bean>
        
  </beans>
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to