| 
      
      
      From: <fc...@us...> - 2007-08-30 15:40:20
       | 
| Revision: 412
          http://openutils.svn.sourceforge.net/openutils/?rev=412&view=rev
Author:   fcarone
Date:     2007-08-30 08:40:19 -0700 (Thu, 30 Aug 2007)
Log Message:
-----------
Test app added, but everything is in progress
Modified Paths:
--------------
    trunk/openutils-hibernate-security/pom.xml
    trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java
    trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
Added Paths:
-----------
    trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java
    trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
Removed Paths:
-------------
    trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java
Modified: trunk/openutils-hibernate-security/pom.xml
===================================================================
--- trunk/openutils-hibernate-security/pom.xml	2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/pom.xml	2007-08-30 15:40:19 UTC (rev 412)
@@ -13,8 +13,31 @@
   <name>openutils-hibernate-security</name>
   <version>0.0.1-SNAPSHOT</version>
   <description>Hibernate Security classes</description>
+  <properties>
+    <spring.version>2.0.6</spring.version>
+  </properties>
   <dependencies>
     <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-core</artifactId>
+      <version>${spring.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context</artifactId>
+      <version>${spring.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-dao</artifactId>
+      <version>${spring.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-aop</artifactId>
+      <version>${spring.version}</version>
+    </dependency>
+    <dependency>
       <groupId>net.sourceforge.openutils</groupId>
       <artifactId>openutils-usermanagement</artifactId>
       <version>1.1.1</version>
@@ -69,7 +92,7 @@
     <dependency>
       <groupId>commons-lang</groupId>
       <artifactId>commons-lang</artifactId>
-      <version>2.3</version>
+      <version>2.2</version>
     </dependency>
     <dependency>
       <groupId>org.acegisecurity</groupId>
Copied: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java (from rev 393, trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java)
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java	                        (rev 0)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java	2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,132 @@
+/*
+ * Copyright (c) Openmind.  All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security.aop;
+
+import it.openutils.hibernate.security.dataobject.SecurityRule;
+import it.openutils.hibernate.security.services.SecurityRuleManager;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.acegisecurity.GrantedAuthority;
+import org.acegisecurity.context.SecurityContextHolder;
+import org.aopalliance.intercept.MethodInterceptor;
+import org.aopalliance.intercept.MethodInvocation;
+import org.apache.commons.lang.StringUtils;
+import org.hibernate.Filter;
+import org.hibernate.SessionFactory;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.criterion.Restrictions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * This is a Hibernate Read-Update-Delete security interceptor. This enforces a DENY_ALL default policy.
+ * @author fcarone
+ * @version $Id: $
+ */
+public class HibernateDAOSecurityInterceptor implements MethodInterceptor
+{
+
+    /**
+     * Logger.
+     */
+    private Logger log = LoggerFactory.getLogger(HibernateDAOSecurityInterceptor.class);
+
+    private SecurityRuleManager securityRuleManager;
+
+    private SessionFactory sessionFactory;
+
+    public HibernateDAOSecurityInterceptor()
+    {
+        super();
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public Object invoke(MethodInvocation invocation) throws Throwable
+    {
+        Object[] arguments = invocation.getArguments();
+        Object checkArgument = arguments[arguments.length - 1];
+        if (!StringUtils.equals(invocation.getMethod().getName(), "findFiltered"))
+        {
+            return invocation.proceed();
+        }
+        if (!(checkArgument instanceof List))
+        {
+            return invocation.proceed();
+        }
+
+        String entity = StringUtils.EMPTY;
+        for (int i = 0; i < arguments.length; i++)
+        {
+            Object argument = arguments[i];
+            if (sessionFactory.getClassMetadata(argument.getClass()) != null)
+            {
+                entity = argument.getClass().getCanonicalName();
+                break;
+            }
+        }
+
+        // the current invocation is not about any session managed entity
+        if (StringUtils.isEmpty(entity))
+        {
+            return invocation.proceed();
+        }
+
+        GrantedAuthority[] authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities();
+        List<String> roles = new ArrayList<String>();
+        for (int i = 0; i < authorities.length; i++)
+        {
+            roles.add(authorities[i].getAuthority());
+        }
+        List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, roles);
+
+        if (rules.isEmpty())
+        {
+            String grantedRoles = StringUtils.EMPTY;
+            for (int i = 0; i < authorities.length; i++)
+            {
+                grantedRoles += authorities[i].getAuthority() + " ";
+            }
+            log.error("Access is denied for entity {}, and roles {}", entity, grantedRoles);
+            throw new SecurityException("Access denied");
+        }
+
+        Filter filter = securityRuleManager.getEntityFilterFromRules(entity, rules);
+
+        Criterion sqlCriterion = Restrictions.sqlRestriction(filter.getFilterDefinition().getDefaultFilterCondition());
+
+        if (StringUtils.equals(invocation.getMethod().getName(), "findFiltered"))
+        {
+            Object argument = arguments[arguments.length - 1];
+            ((List) argument).add(sqlCriterion);
+        }
+
+        Object result = invocation.proceed();
+
+        return result;
+    }
+
+    /**
+     * Sets the securityRuleManager.
+     * @param securityRuleManager the securityRuleManager to set
+     */
+    public void setSecurityRuleManager(SecurityRuleManager securityRuleManager)
+    {
+        this.securityRuleManager = securityRuleManager;
+    }
+
+    /**
+     * Sets the sessionFactory.
+     * @param sessionFactory the sessionFactory to set
+     */
+    public void setSessionFactory(SessionFactory sessionFactory)
+    {
+        this.sessionFactory = sessionFactory;
+    }
+
+}
Deleted: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java	2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateRUDSecurityInterceptor.java	2007-08-30 15:40:19 UTC (rev 412)
@@ -1,109 +0,0 @@
-/*
- * Copyright (c) Openmind.  All rights reserved. http://www.openmindonline.it
- */
-package it.openutils.hibernate.security.aop;
-
-import it.openutils.hibernate.security.dataobject.SecurityRule;
-import it.openutils.hibernate.security.services.SecurityRuleManager;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.acegisecurity.GrantedAuthority;
-import org.acegisecurity.context.SecurityContextHolder;
-import org.aopalliance.intercept.MethodInterceptor;
-import org.aopalliance.intercept.MethodInvocation;
-import org.apache.commons.lang.StringUtils;
-import org.hibernate.Filter;
-import org.hibernate.SessionFactory;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * This is a Hibernate Read-Update-Delete security interceptor. This enforces a DENY_ALL default policy.
- * @author fcarone
- * @version $Id: $
- */
-public class HibernateRUDSecurityInterceptor implements MethodInterceptor
-{
-
-    /**
-     * Logger.
-     */
-    private Logger log = LoggerFactory.getLogger(HibernateRUDSecurityInterceptor.class);
-
-    private SecurityRuleManager securityRuleManager;
-
-    private SessionFactory sessionFactory;
-
-    /**
-     * {@inheritDoc}
-     */
-    public Object invoke(MethodInvocation invocation) throws Throwable
-    {
-        Object[] arguments = invocation.getArguments();
-
-        String entity = StringUtils.EMPTY;
-        for (int i = 0; i < arguments.length; i++)
-        {
-            Object argument = arguments[i];
-            if (sessionFactory.getClassMetadata(argument.getClass()) != null)
-            {
-                entity = argument.getClass().getCanonicalName();
-                break;
-            }
-        }
-
-        // the current invocation is not about any session managed entity
-        if (StringUtils.isEmpty(entity))
-        {
-            return invocation.proceed();
-        }
-
-        GrantedAuthority[] authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities();
-        List<String> roles = new ArrayList<String>();
-        for (int i = 0; i < authorities.length; i++)
-        {
-            roles.add(authorities[i].getAuthority());
-        }
-        List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, roles);
-
-        if (rules.isEmpty())
-        {
-            String grantedRoles = StringUtils.EMPTY;
-            for (int i = 0; i < authorities.length; i++)
-            {
-                grantedRoles += authorities[i].getAuthority() + " ";
-            }
-            log.error("Access is denied for entity {}, and roles {}", entity, grantedRoles);
-            throw new SecurityException("Access is denied");
-        }
-
-        Filter filter = securityRuleManager.getEntityFilterFromRules(entity, rules);
-
-        sessionFactory.getCurrentSession().enableFilter(filter.getName());
-        Object result = invocation.proceed();
-        sessionFactory.getCurrentSession().disableFilter(filter.getName());
-        return result;
-    }
-
-    /**
-     * Sets the securityRuleManager.
-     * @param securityRuleManager the securityRuleManager to set
-     */
-    public void setSecurityRuleManager(SecurityRuleManager securityRuleManager)
-    {
-        this.securityRuleManager = securityRuleManager;
-    }
-
-    /**
-     * Sets the sessionFactory.
-     * @param sessionFactory the sessionFactory to set
-     */
-    public void setSessionFactory(SessionFactory sessionFactory)
-    {
-        this.sessionFactory = sessionFactory;
-    }
-
-}
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java	2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/JavaBeanFilter.java	2007-08-30 15:40:19 UTC (rev 412)
@@ -41,6 +41,7 @@
      * @throws SecurityException If the bean class cannot be accessed
      * @throws NoSuchFieldException If the property contained in the security rule refers to a bean non-existent field
      */
+    @SuppressWarnings("unchecked")
     public JavaBeanFilter(String bean, List<SecurityRule> securityRules)
         throws ClassNotFoundException,
         InstantiationException,
@@ -165,6 +166,7 @@
     /**
      * {@inheritDoc}
      */
+    @SuppressWarnings("unchecked")
     public Filter setParameterList(String name, Collection values)
     {
         return this;
Added: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java	                        (rev 0)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java	2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,37 @@
+package it.openutils.hibernate.security;
+
+import it.openutils.hibernate.security.apptest.DummyDAO;
+import it.openutils.hibernate.security.apptest.DummyDataobject;
+import it.openutils.testing.junit.SpringTestCase;
+
+import java.util.List;
+
+import org.junit.Assert;
+import org.junit.Test;
+
+/*
+ * Copyright (c) Openmind.  All rights reserved. http://www.openmindonline.it
+ */
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+public class SecurityIntegrationTest extends SpringTestCase
+{
+
+    private DummyDAO securedObject;
+
+    /**
+     * @throws Exception Any exception
+     */
+    @Test
+    public void testRulesApplication() throws Exception
+    {
+        securedObject = (DummyDAO) ctx.getBean("dummyDAO");
+        DummyDataobject filter = new DummyDataobject();
+        List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+        Assert.assertNotNull(dummyObjects);
+    }
+
+}
Added: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java	                        (rev 0)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDAO.java	2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,16 @@
+/*
+ * Copyright (c) Openmind.  All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security.apptest;
+
+import it.openutils.dao.hibernate.HibernateDAO;
+
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+public interface DummyDAO extends HibernateDAO<DummyDataobject, Long>
+{
+
+}
Added: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java	                        (rev 0)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java	2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,25 @@
+/*
+ * Copyright (c) Openmind.  All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security.apptest;
+
+import it.openutils.dao.hibernate.HibernateDAOImpl;
+
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+public class DummyDaoImpl extends HibernateDAOImpl<DummyDataobject, Long> implements DummyDAO
+{
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected Class<DummyDataobject> getReferenceClass()
+    {
+        return DummyDataobject.class;
+    }
+
+}
Added: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java	                        (rev 0)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java	2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) Openmind.  All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security.apptest;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+public class DummyDataobject
+{
+
+    /**
+     * serial version UID
+     */
+    private static final long serialVersionUID = 1867418705382284287L;
+
+    @Id
+    @Column(name = "ID", precision = 18)
+    private Long id;
+
+    @Column(name = "INTVALUE", precision = 10)
+    private Integer intValue;
+
+    @Column(name = "STRINGVALUE", length = 16)
+    private String stringValue;
+
+
+    /**
+     * Returns the stringValue.
+     * @return the stringValue
+     */
+    public String getStringValue()
+    {
+        return stringValue;
+    }
+
+
+    /**
+     * Sets the stringValue.
+     * @param stringValue the stringValue to set
+     */
+    public void setStringValue(String stringValue)
+    {
+        this.stringValue = stringValue;
+    }
+
+
+
+    /**
+     * Returns the id.
+     * @return the id
+     */
+    public Long getId()
+    {
+        return id;
+    }
+
+
+
+    /**
+     * Sets the id.
+     * @param id the id to set
+     */
+    public void setId(Long id)
+    {
+        this.id = id;
+    }
+
+
+
+    /**
+     * Returns the intValue.
+     * @return the intValue
+     */
+    public Integer getIntValue()
+    {
+        return intValue;
+    }
+
+
+
+    /**
+     * Sets the intValue.
+     * @param intValue the intValue to set
+     */
+    public void setIntValue(Integer intValue)
+    {
+        this.intValue = intValue;
+    }
+
+
+
+}
Modified: trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml	2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml	2007-08-30 15:40:19 UTC (rev 412)
@@ -3,6 +3,7 @@
     "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
 <hibernate-configuration>
   <session-factory>
-    <mapping class="it.openutils.hibernate.security.dataobject.SecurityRule" />
+    <mapping class="it.openutils.hibernate.security.dataobject.SecurityRule" />
+    <mapping class="it.openutils.hibernate.security.apptest.DummyDataobject" />
   </session-factory>
 </hibernate-configuration>
\ No newline at end of file
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml	2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml	2007-08-30 15:40:19 UTC (rev 412)
@@ -4,9 +4,16 @@
 <beans>
   <bean id="securityRuleDAO" parent="txProxyTemplate">
     <property name="target">
-      <bean class="it.openutils.hibernate.security.dao.SecurityRuleDAOImpl">
+      <bean class="it.openutils.hibernate.security.dao.impl.SecurityRuleDAOImpl">
         <property name="sessionFactory" ref="sessionFactory" />
       </bean>
     </property>
+  </bean>
+  <bean id="dummyDAO" parent="txProxyTemplate">
+    <property name="target">
+      <bean class="it.openutils.hibernate.security.apptest.DummyDaoImpl">
+        <property name="sessionFactory" ref="sessionFactory" />
+      </bean>
+    </property>
   </bean>
 </beans>
\ No newline at end of file
Added: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml	                        (rev 0)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml	2007-08-30 15:40:19 UTC (rev 412)
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
+"http://www.springframework.org/dtd/spring-beans.dtd">
+<beans>
+  <bean id="securityInterceptor" class="it.openutils.hibernate.security.aop.HibernateDAOSecurityInterceptor">
+    <property name="securityRuleManager" ref="securityRuleManager" />
+    <property name="sessionFactory" ref="sessionFactory" />
+  </bean>
+  <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
+    <property name="beanNames">
+      <list>
+        <idref bean="dummyDAO" />
+      </list>
+    </property>
+    <property name="interceptorNames">
+      <list>
+        <value>securityInterceptor</value>
+      </list>
+    </property>
+  </bean>
+</beans>
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml	2007-08-14 12:55:10 UTC (rev 411)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml	2007-08-30 15:40:19 UTC (rev 412)
@@ -4,5 +4,8 @@
     <import resource="classpath:spring-database.xml" />
     <import resource="classpath:spring-hibernate.xml" />
     <import resource="classpath:spring-dao.xml" />
-    <import resource="classpath:spring-managers.xml" />
+    <import resource="classpath:spring-managers.xml" />
+    <import resource="classpath:spring-security.xml" />
+
+
 </beans>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <fc...@us...> - 2007-08-31 12:29:38
       | 
| Revision: 425
          http://openutils.svn.sourceforge.net/openutils/?rev=425&view=rev
Author:   fcarone
Date:     2007-08-31 05:29:23 -0700 (Fri, 31 Aug 2007)
Log Message:
-----------
Sample test application works
Modified Paths:
--------------
    trunk/openutils-hibernate-security/pom.xml
    trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java
    trunk/openutils-hibernate-security/src/test/resources/database.properties
    trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
Added Paths:
-----------
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java
    trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
Modified: trunk/openutils-hibernate-security/pom.xml
===================================================================
--- trunk/openutils-hibernate-security/pom.xml	2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/pom.xml	2007-08-31 12:29:23 UTC (rev 425)
@@ -50,12 +50,12 @@
     <dependency>
       <groupId>net.sourceforge.openutils</groupId>
       <artifactId>openutils-bshd5</artifactId>
-      <version>1.0.5</version>
+      <version>1.0.7</version>
     </dependency>
     <dependency>
       <groupId>net.sourceforge.openutils</groupId>
-      <artifactId>openutils-testing</artifactId>
-      <version>1.0</version>
+      <artifactId>openutils-testing-junit</artifactId>
+      <version>1.1.2</version>
       <scope>test</scope>
     </dependency>
     <dependency>
@@ -128,6 +128,12 @@
       <scope>test</scope>
     </dependency>
     <dependency>
+      <groupId>hsqldb</groupId>
+      <artifactId>hsqldb</artifactId>
+      <version>1.8.0.7</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
       <groupId>junit</groupId>
       <artifactId>junit</artifactId>
       <version>4.0</version>
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java	2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java	2007-08-31 12:29:23 UTC (rev 425)
@@ -39,14 +39,10 @@
 
     private SessionFactory sessionFactory;
 
-    public HibernateDAOSecurityInterceptor()
-    {
-        super();
-    }
-
     /**
      * {@inheritDoc}
      */
+    @SuppressWarnings("unchecked")
     public Object invoke(MethodInvocation invocation) throws Throwable
     {
         Object[] arguments = invocation.getArguments();
@@ -77,6 +73,11 @@
             return invocation.proceed();
         }
 
+        if (SecurityContextHolder.getContext().getAuthentication() == null)
+        {
+            throw new SecurityException("Authentication is not valid");
+        }
+
         GrantedAuthority[] authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities();
         List<String> roles = new ArrayList<String>();
         for (int i = 0; i < authorities.length; i++)
@@ -129,4 +130,5 @@
         this.sessionFactory = sessionFactory;
     }
 
+
 }
Added: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java	                        (rev 0)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java	2007-08-31 12:29:23 UTC (rev 425)
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) Openmind.  All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security;
+
+import java.sql.Types;
+
+import org.dbunit.dataset.datatype.DataType;
+import org.dbunit.dataset.datatype.DataTypeException;
+import org.dbunit.dataset.datatype.DefaultDataTypeFactory;
+
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+public class HsqlDatatypeFactory extends DefaultDataTypeFactory
+{
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public DataType createDataType(int sqlType, String sqlTypeName) throws DataTypeException
+    {
+        if (sqlType == Types.BOOLEAN)
+        {
+            return DataType.BOOLEAN;
+        }
+        return super.createDataType(sqlType, sqlTypeName);
+    }
+}
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java	2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java	2007-08-31 12:29:23 UTC (rev 425)
@@ -1,14 +1,28 @@
 package it.openutils.hibernate.security;
 
+import it.openutils.hibernate.example.FilterMetadata;
 import it.openutils.hibernate.security.apptest.DummyDAO;
 import it.openutils.hibernate.security.apptest.DummyDataobject;
-import it.openutils.testing.junit.SpringTestCase;
+import it.openutils.testing.junit.DbUnitTestCase;
 
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 
+import org.acegisecurity.Authentication;
+import org.acegisecurity.context.SecurityContextHolder;
+import org.acegisecurity.context.SecurityContextImpl;
+import org.acegisecurity.providers.AuthenticationProvider;
+import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
+import org.dbunit.database.DatabaseConfig;
+import org.dbunit.database.IDatabaseConnection;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.criterion.Order;
 import org.junit.Assert;
 import org.junit.Test;
 
+
 /*
  * Copyright (c) Openmind.  All rights reserved. http://www.openmindonline.it
  */
@@ -17,20 +31,51 @@
  * @author fcarone
  * @version $Id: $
  */
-public class SecurityIntegrationTest extends SpringTestCase
+public class SecurityIntegrationTest extends DbUnitTestCase
 {
 
     private DummyDAO securedObject;
 
+
+
     /**
+     * {@inheritDoc}
+     */
+    @Override
+    protected IDatabaseConnection createConnection() throws SQLException
+    {
+        IDatabaseConnection connection = super.createConnection();
+        DatabaseConfig config = connection.getConfig();
+        config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new HsqlDatatypeFactory());
+        return connection;
+    }
+
+
+
+    /**
      * @throws Exception Any exception
      */
     @Test
     public void testRulesApplication() throws Exception
     {
+        // emulate authentication
+        AuthenticationProvider authenticationProvider = (AuthenticationProvider) ctx.getBean("authenticationProvider");
+        Authentication authentication = new UsernamePasswordAuthenticationToken("UserUno", "password");
+        authentication = authenticationProvider.authenticate(authentication);
+        SecurityContextImpl sci = new SecurityContextImpl();
+        sci.setAuthentication(authentication);
+        SecurityContextHolder.setContext(sci);
+
+        // test
         securedObject = (DummyDAO) ctx.getBean("dummyDAO");
         DummyDataobject filter = new DummyDataobject();
-        List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+        List<DummyDataobject> dummyObjects = securedObject.findFiltered(
+            filter,
+            new Order[0],
+            new HashMap<String, FilterMetadata>(),
+            500,
+            0,
+            new ArrayList<Criterion>());
         Assert.assertNotNull(dummyObjects);
     }
 
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java	2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDataobject.java	2007-08-31 12:29:23 UTC (rev 425)
@@ -4,13 +4,17 @@
 package it.openutils.hibernate.security.apptest;
 
 import javax.persistence.Column;
+import javax.persistence.Entity;
 import javax.persistence.Id;
+import javax.persistence.Table;
 
 
 /**
  * @author fcarone
  * @version $Id: $
  */
+@Entity
+@Table(name = "DUMMYDATAOBJECT")
 public class DummyDataobject
 {
 
Added: trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml	                        (rev 0)
+++ trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml	2007-08-31 12:29:23 UTC (rev 425)
@@ -0,0 +1,127 @@
+<!DOCTYPE dataset SYSTEM "dataset.dtd">
+<dataset>
+    <table name="APP_USER">
+        <column>ID_USER</column>
+        <column>PASSWORD</column>
+        <column>ENABLED</column>
+        <column>NAME</column>
+        <column>SURNAME</column>
+        <column>EMAIL</column>
+        <row>
+            <value>UserUno</value>
+            <value>5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8</value>
+            <value>1</value>
+            <value>Gino</value>
+            <value>Rossi</value>
+            <value>ro...@ba...</value>
+        </row>
+        <row>
+            <value>UserDue</value>
+            <value>password</value>
+            <value>1</value>
+            <value>Mario</value>
+            <value>Verdi</value>
+            <value>ve...@ba...</value>
+        </row>
+    </table>
+    <table name="APP_GROUP">
+        <column>ID_GROUP</column>
+        <column>DESCRIPTION</column>
+        <column>ENABLED</column>
+        <row>
+            <value>GRUPPOUNO</value>
+            <value>descrizione</value>
+            <value>1</value>
+        </row>
+        <row>
+            <value>GRUPPODUE</value>
+            <value>descrizione</value>
+            <value>1</value>
+        </row>
+    </table>
+    <table name="APP_ROLE">
+        <column>ID_ROLE</column>
+        <column>DESCRIPTION</column>
+        <row>
+            <value>RoleUno</value>
+            <value>descr</value>
+        </row>
+        <row>
+            <value>RoleDue</value>
+            <value>descr2</value>
+        </row>
+        <row>
+            <value>RoleTre</value>
+            <value>descr3</value>
+        </row>
+    </table>
+    <table name="APP_USER_GROUP">
+        <column>ID_USER</column>
+        <column>ID_GROUP</column>
+        <row>
+            <value>UserUno</value>
+            <value>GRUPPOUNO</value>
+        </row>
+        <row>
+            <value>UserUno</value>
+            <value>GRUPPODUE</value>
+        </row>
+    </table>
+    <table name="APP_GROUP_ROLE">
+        <column>ID_GROUP</column>
+        <column>ID_ROLE</column>
+        <row>
+            <value>GRUPPOUNO</value>
+            <value>RoleUno</value>
+        </row>
+        <row>
+            <value>GRUPPOUNO</value>
+            <value>RoleDue</value>
+        </row>
+        <row>
+            <value>GRUPPODUE</value>
+            <value>RoleTre</value>
+        </row>
+    </table>
+
+    <table name="SECURITY_RULE">
+        <column>ID_SECURITY_RULE</column>
+        <column>ROLE</column>
+        <column>ENTITY</column>
+        <column>PROPERTY</column>
+        <column>VALUE</column>
+        <column>MODIFIER</column>
+        <row>
+            <value>1</value>
+            <value>RoleUno</value>
+            <value>it.openutils.hibernate.security.apptest.DummyDataobject</value>
+            <value>intValue</value>
+            <value>1</value>
+            <value>EQUALS</value>
+        </row>
+    </table>
+    <table name="SECRULE_PERMISSION">
+        <column>ID_SECURITY_RULE</column>
+        <column>PERMISSION</column>
+        <row>
+            <value>1</value>
+            <value>LOAD</value>
+        </row>
+    </table>
+    <table name="DUMMYDATAOBJECT">
+        <column>ID</column>
+        <column>INTVALUE</column>
+        <column>STRINGVALUE</column>
+        <row>
+            <value>0</value>
+            <value>0</value>
+            <value>ABC</value>
+        </row>
+        <row>
+            <value>1</value>
+            <value>1</value>
+            <value>DEF</value>
+        </row>
+    </table>
+</dataset>
+
Modified: trunk/openutils-hibernate-security/src/test/resources/database.properties
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/database.properties	2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/database.properties	2007-08-31 12:29:23 UTC (rev 425)
@@ -2,10 +2,11 @@
 # i file per la configurazione del db utilizzati dall'applicazione web sono in
 # src/main/web-app/WEB-INF
 
-hibernate.connection.driver=org.apache.derby.jdbc.EmbeddedDriver
-hibernate.dialect=org.hibernate.dialect.DerbyDialect
-hibernate.connection.username=ikam
+#hibernate.connection.driver=org.apache.derby.jdbc.EmbeddedDriver
+#hibernate.dialect=org.hibernate.dialect.DerbyDialect
+hibernate.connection.driver=org.hsqldb.jdbcDriver
+hibernate.dialect=org.hibernate.dialect.HSQLDialect
+hibernate.connection.username=sa
 hibernate.connection.password=
-hibernate.connection.url=jdbc:derby:target/db/openutils-usermanagement-db-test;create=true
-hibernate.hbm2ddl.auto=update
-
+hibernate.connection.url=jdbc:hsqldb:mem:hibernate-security
+hibernate.hbm2ddl.auto=create-drop
Modified: trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml	2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/hibernate.cfg.xml	2007-08-31 12:29:23 UTC (rev 425)
@@ -4,6 +4,9 @@
 <hibernate-configuration>
   <session-factory>
     <mapping class="it.openutils.hibernate.security.dataobject.SecurityRule" />
-    <mapping class="it.openutils.hibernate.security.apptest.DummyDataobject" />
+    <mapping class="it.openutils.hibernate.security.apptest.DummyDataobject" />
+    <mapping class="it.openutils.usermanagement.dataobjects.User" />
+    <mapping class="it.openutils.usermanagement.dataobjects.Group" />
+    <mapping class="it.openutils.usermanagement.dataobjects.Role" />
   </session-factory>
 </hibernate-configuration>
\ No newline at end of file
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml	2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml	2007-08-31 12:29:23 UTC (rev 425)
@@ -1,7 +1,14 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
 "http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
+<beans>
+  <bean id="userDAO" parent="txProxyTemplate">
+    <property name="target">
+      <bean class="it.openutils.usermanagement.dao.UserDAOImpl">
+        <property name="sessionFactory" ref="sessionFactory" />
+      </bean>
+    </property>
+  </bean>
   <bean id="securityRuleDAO" parent="txProxyTemplate">
     <property name="target">
       <bean class="it.openutils.hibernate.security.dao.impl.SecurityRuleDAOImpl">
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml	2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml	2007-08-31 12:29:23 UTC (rev 425)
@@ -19,7 +19,7 @@
                 <prop key="hibernate.generate_statistics">false</prop>
                 <prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>
                 <prop key="hibernate.show_sql">false</prop>
-                <prop key="hibernate.use_sql_comments">false</prop>
+                <prop key="hibernate.use_sql_comments">true</prop>
                 <prop key="hibernate.hbm2ddl.auto">${hibernate.hbm2ddl.auto}</prop>
             </props>
         </property>
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml	2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml	2007-08-31 12:29:23 UTC (rev 425)
@@ -17,5 +17,28 @@
         <value>securityInterceptor</value>
       </list>
     </property>
-  </bean>
+  </bean>
+
+  <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.ShaPasswordEncoder" />
+  <bean id="userDetailsService" class="it.openutils.usermanagement.acegi.HibernateUserDetailsServiceImpl"
+    autowire="byType">
+    <property name="userDao" ref="userDAO" />
+  </bean>
+  <bean id="authenticationProvider" class="org.springframework.aop.framework.ProxyFactoryBean" lazy-init="true">
+    <property name="targetName" value="authenticationProviderDB" />
+  </bean>
+  <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter" />
+  <bean id="accessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased">
+    <property name="allowIfAllAbstainDecisions" value="false" />
+    <property name="decisionVoters">
+      <list>
+        <ref bean="roleVoter" />
+      </list>
+    </property>
+  </bean>
+  <bean id="authenticationProviderDB" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"
+    lazy-init="true">
+    <property name="userDetailsService" ref="userDetailsService" />
+    <property name="passwordEncoder" ref="passwordEncoder" />
+  </bean>
 </beans>
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml	2007-08-31 12:28:50 UTC (rev 424)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml	2007-08-31 12:29:23 UTC (rev 425)
@@ -6,6 +6,4 @@
     <import resource="classpath:spring-dao.xml" />
     <import resource="classpath:spring-managers.xml" />
     <import resource="classpath:spring-security.xml" />
-
-
 </beans>
\ No newline at end of file
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <fc...@us...> - 2007-08-31 17:03:28
       | 
| Revision: 426
          http://openutils.svn.sourceforge.net/openutils/?rev=426&view=rev
Author:   fcarone
Date:     2007-08-31 10:03:23 -0700 (Fri, 31 Aug 2007)
Log Message:
-----------
Trying to inject security with an aop advice
Modified Paths:
--------------
    trunk/openutils-hibernate-security/pom.xml
    trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
    trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
    trunk/openutils-hibernate-security/src/test/resources/database.properties
    trunk/openutils-hibernate-security/src/test/resources/log4j.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
Added Paths:
-----------
    trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
Modified: trunk/openutils-hibernate-security/pom.xml
===================================================================
--- trunk/openutils-hibernate-security/pom.xml	2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/pom.xml	2007-08-31 17:03:23 UTC (rev 426)
@@ -1,20 +1,20 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
+<?xml version="1.0"?>
+<project>
   <parent>
+    <artifactId>openutils</artifactId>
     <groupId>net.sourceforge.openutils</groupId>
-    <artifactId>openutils</artifactId>
     <version>3</version>
     <relativePath>..</relativePath>
   </parent>
+  <modelVersion>4.0.0</modelVersion>
   <groupId>net.sourceforge.openutils</groupId>
   <artifactId>openutils-hibernate-security</artifactId>
-  <packaging>jar</packaging>
   <name>openutils-hibernate-security</name>
   <version>0.0.1-SNAPSHOT</version>
   <description>Hibernate Security classes</description>
   <properties>
     <spring.version>2.0.6</spring.version>
+    <aspectj.version>1.5.3</aspectj.version>
   </properties>
   <dependencies>
     <dependency>
@@ -38,6 +38,48 @@
       <version>${spring.version}</version>
     </dependency>
     <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-hibernate3</artifactId>
+      <version>${spring.version}</version>
+      <exclusions>
+        <exclusion>
+          <!-- already imported cglib-nodep by spring -->
+          <groupId>cglib</groupId>
+          <artifactId>cglib</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>aspectj</groupId>
+      <artifactId>aspectjrt</artifactId>
+      <version>${aspectj.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>aspectj</groupId>
+      <artifactId>aspectjweaver</artifactId>
+      <version>${aspectj.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>cglib</groupId>
+      <artifactId>cglib-nodep</artifactId>
+      <version>2.1_3</version>
+    </dependency>
+    <dependency>
+      <groupId>asm</groupId>
+      <artifactId>asm</artifactId>
+      <version>2.2.3</version>
+    </dependency>
+    <dependency>
+      <groupId>asm</groupId>
+      <artifactId>asm-attrs</artifactId>
+      <version>2.2.3</version>
+    </dependency>
+    <dependency>
+      <groupId>asm</groupId>
+      <artifactId>asm-commons</artifactId>
+      <version>2.2.3</version>
+    </dependency>
+    <dependency>
       <groupId>net.sourceforge.openutils</groupId>
       <artifactId>openutils-usermanagement</artifactId>
       <version>1.1.1</version>
@@ -67,11 +109,25 @@
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate</artifactId>
       <version>3.2.3.ga</version>
+      <exclusions>
+        <exclusion>
+          <!-- already imported cglib-nodep by spring -->
+          <groupId>cglib</groupId>
+          <artifactId>cglib</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate-annotations</artifactId>
       <version>3.2.1.ga</version>
+      <exclusions>
+        <exclusion>
+          <!-- already imported cglib-nodep by spring -->
+          <groupId>cglib</groupId>
+          <artifactId>cglib</artifactId>
+        </exclusion>
+      </exclusions>
     </dependency>
     <dependency>
       <groupId>commons-dbcp</groupId>
@@ -100,34 +156,28 @@
       <version>1.0.3</version>
       <exclusions>
         <exclusion>
+          <artifactId>spring-remoting</artifactId>
           <groupId>org.springframework</groupId>
-          <artifactId>spring-remoting</artifactId>
         </exclusion>
         <exclusion>
+          <artifactId>spring-jdbc</artifactId>
           <groupId>org.springframework</groupId>
-          <artifactId>spring-jdbc</artifactId>
         </exclusion>
         <exclusion>
+          <artifactId>spring-support</artifactId>
           <groupId>org.springframework</groupId>
-          <artifactId>spring-support</artifactId>
         </exclusion>
         <exclusion>
+          <artifactId>logkit</artifactId>
           <groupId>logkit</groupId>
-          <artifactId>logkit</artifactId>
         </exclusion>
         <exclusion>
+          <artifactId>avalon-framework</artifactId>
           <groupId>avalon-framework</groupId>
-          <artifactId>avalon-framework</artifactId>
         </exclusion>
       </exclusions>
     </dependency>
     <dependency>
-      <groupId>org.apache.derby</groupId>
-      <artifactId>derby</artifactId>
-      <version>10.2.2.0</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
       <groupId>hsqldb</groupId>
       <artifactId>hsqldb</artifactId>
       <version>1.8.0.7</version>
Added: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java	                        (rev 0)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java	2007-08-31 17:03:23 UTC (rev 426)
@@ -0,0 +1,49 @@
+/*
+ * Copyright (c) Openmind.  All rights reserved. http://www.openmindonline.it
+ */
+package it.openutils.hibernate.security.aop;
+
+import java.util.List;
+
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.hibernate.criterion.Criterion;
+import org.hibernate.criterion.Restrictions;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * @author fcarone
+ * @version $Id: $
+ */
+@Aspect
+public class AOPSecurity
+{
+
+    /**
+     * Logger.
+     */
+    private Logger log = LoggerFactory.getLogger(AOPSecurity.class);
+
+    /**
+     * @param pjp The proceeding joinpoint
+     * @param filter The entity we are going to filter
+     * @param additionalCriteria The additional criteria list
+     * @return The execution invocation result
+     * @throws Throwable Any exception occurring in the invoked method
+     */
+//    @Around("execution(* findFiltered(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && " + //
+//        " args(filter, .., additionalCriteria)")
+  @Around("execution(* it.openutils.dao.hibernate.*.*(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && " + //
+  " args(filter, .., additionalCriteria)")
+  public Object applySecurityRules(ProceedingJoinPoint pjp, Object filter, List<Criterion> additionalCriteria)
+        throws Throwable
+    {
+        log.debug("applying rules for {} with criteria {}", filter.toString(), additionalCriteria);
+        additionalCriteria.add(Restrictions.sqlRestriction("INTVALUE = 1"));
+        Object result = pjp.proceed();
+        return result;
+    }
+}
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java	2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java	2007-08-31 17:03:23 UTC (rev 426)
@@ -45,6 +45,7 @@
     @SuppressWarnings("unchecked")
     public Object invoke(MethodInvocation invocation) throws Throwable
     {
+        log.debug("Applying security rules");
         Object[] arguments = invocation.getArguments();
         Object checkArgument = arguments[arguments.length - 1];
         if (!StringUtils.equals(invocation.getMethod().getName(), "findFiltered"))
@@ -93,7 +94,12 @@
             {
                 grantedRoles += authorities[i].getAuthority() + " ";
             }
-            log.error("Access is denied for entity {}, and roles {}", entity, grantedRoles);
+            log.warn("Access is denied on " + entity + ", for user {} with roles {}", SecurityContextHolder
+                .getContext()
+                .getAuthentication()
+                .getPrincipal()
+                .toString(), grantedRoles);
+
             throw new SecurityException("Access denied");
         }
 
@@ -130,5 +136,4 @@
         this.sessionFactory = sessionFactory;
     }
 
-
 }
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java	2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java	2007-08-31 17:03:23 UTC (rev 426)
@@ -50,21 +50,24 @@
         return connection;
     }
 
+    private void authenticate(String username, String password)
+    {
+        AuthenticationProvider authenticationProvider = (AuthenticationProvider) ctx.getBean("authenticationProvider");
+        Authentication authentication = new UsernamePasswordAuthenticationToken(username, password);
+        authentication = authenticationProvider.authenticate(authentication);
+        SecurityContextImpl sci = new SecurityContextImpl();
+        sci.setAuthentication(authentication);
+        SecurityContextHolder.setContext(sci);
+    }
 
-
     /**
      * @throws Exception Any exception
      */
     @Test
-    public void testRulesApplication() throws Exception
+    public void testFindFiltered() throws Exception
     {
         // emulate authentication
-        AuthenticationProvider authenticationProvider = (AuthenticationProvider) ctx.getBean("authenticationProvider");
-        Authentication authentication = new UsernamePasswordAuthenticationToken("UserUno", "password");
-        authentication = authenticationProvider.authenticate(authentication);
-        SecurityContextImpl sci = new SecurityContextImpl();
-        sci.setAuthentication(authentication);
-        SecurityContextHolder.setContext(sci);
+        authenticate("UserUno", "password");
 
         // test
         securedObject = (DummyDAO) ctx.getBean("dummyDAO");
@@ -77,6 +80,12 @@
             0,
             new ArrayList<Criterion>());
         Assert.assertNotNull(dummyObjects);
+        Assert.assertEquals(1, dummyObjects.size());
+
+        dummyObjects = securedObject.findFiltered(filter);
+        Assert.assertNotNull(dummyObjects);
+        Assert.assertEquals(1, dummyObjects.size());
+
     }
 
 }
Modified: trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml	2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml	2007-08-31 17:03:23 UTC (rev 426)
@@ -9,6 +9,7 @@
         <column>EMAIL</column>
         <row>
             <value>UserUno</value>
+            <!-- sha1 for 'password' -->
             <value>5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8</value>
             <value>1</value>
             <value>Gino</value>
@@ -17,7 +18,8 @@
         </row>
         <row>
             <value>UserDue</value>
-            <value>password</value>
+            <!-- sha1 for 'password' -->
+            <value>5baa61e4c9b93f3f0682250b6cf8331b7ee68fd8</value>
             <value>1</value>
             <value>Mario</value>
             <value>Verdi</value>
Modified: trunk/openutils-hibernate-security/src/test/resources/database.properties
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/database.properties	2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/test/resources/database.properties	2007-08-31 17:03:23 UTC (rev 426)
@@ -10,3 +10,4 @@
 hibernate.connection.password=
 hibernate.connection.url=jdbc:hsqldb:mem:hibernate-security
 hibernate.hbm2ddl.auto=create-drop
+hibernate.show_sql=true
Modified: trunk/openutils-hibernate-security/src/test/resources/log4j.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/log4j.xml	2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/test/resources/log4j.xml	2007-08-31 17:03:23 UTC (rev 426)
@@ -37,6 +37,9 @@
     </category>
     <category name="it.openutils.dbupdate.DbSetupManagerImpl">
         <priority value="INFO" />
+    </category>
+    <category name="it.openutils.hibernate.security.aop">
+        <priority value="DEBUG" />
     </category>
     <root>
         <priority value="debug" />
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml	2007-08-31 12:29:23 UTC (rev 425)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml	2007-08-31 17:03:23 UTC (rev 426)
@@ -1,25 +1,33 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
-"http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
-  <bean id="securityInterceptor" class="it.openutils.hibernate.security.aop.HibernateDAOSecurityInterceptor">
-    <property name="securityRuleManager" ref="securityRuleManager" />
-    <property name="sessionFactory" ref="sessionFactory" />
-  </bean>
-  <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
-    <property name="beanNames">
-      <list>
-        <idref bean="dummyDAO" />
-      </list>
-    </property>
-    <property name="interceptorNames">
-      <list>
-        <value>securityInterceptor</value>
-      </list>
-    </property>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:aop="http://www.springframework.org/schema/aop"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
+
+  <aop:aspectj-autoproxy/>
+
+  <bean id="securityAspect" class="it.openutils.hibernate.security.aop.AOPSecurity" />
+
+  <bean id="securityInterceptor" class="it.openutils.hibernate.security.aop.HibernateDAOSecurityInterceptor">
+    <property name="securityRuleManager" ref="securityRuleManager" />
+    <property name="sessionFactory" ref="sessionFactory" />
   </bean>
-
-  <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.ShaPasswordEncoder" />
+
+<!--
+  <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
+    <property name="beanNames">
+      <list>
+        <idref bean="dummyDAO" />
+      </list>
+    </property>
+    <property name="interceptorNames">
+      <list>
+        <value>securityInterceptor</value>
+      </list>
+    </property>
+  </bean>
+ -->
+
+  <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.ShaPasswordEncoder" />
   <bean id="userDetailsService" class="it.openutils.usermanagement.acegi.HibernateUserDetailsServiceImpl"
     autowire="byType">
     <property name="userDao" ref="userDAO" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <fc...@us...> - 2007-09-03 09:00:57
       | 
| Revision: 429
          http://openutils.svn.sourceforge.net/openutils/?rev=429&view=rev
Author:   fcarone
Date:     2007-09-03 01:31:00 -0700 (Mon, 03 Sep 2007)
Log Message:
-----------
AOP security sample application works
Modified Paths:
--------------
    trunk/openutils-hibernate-security/pom.xml
    trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java
    trunk/openutils-hibernate-security/src/test/resources/spring-database.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
Removed Paths:
-------------
    trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
Modified: trunk/openutils-hibernate-security/pom.xml
===================================================================
--- trunk/openutils-hibernate-security/pom.xml	2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/pom.xml	2007-09-03 08:31:00 UTC (rev 429)
@@ -92,7 +92,7 @@
     <dependency>
       <groupId>net.sourceforge.openutils</groupId>
       <artifactId>openutils-bshd5</artifactId>
-      <version>1.0.7</version>
+      <version>1.0.8-SNAPSHOT</version>
     </dependency>
     <dependency>
       <groupId>net.sourceforge.openutils</groupId>
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java	2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java	2007-09-03 08:31:00 UTC (rev 429)
@@ -3,11 +3,20 @@
  */
 package it.openutils.hibernate.security.aop;
 
+import it.openutils.hibernate.security.dataobject.SecurityRule;
+import it.openutils.hibernate.security.services.SecurityRuleManager;
+
+import java.util.ArrayList;
 import java.util.List;
 
+import org.acegisecurity.Authentication;
+import org.acegisecurity.GrantedAuthority;
+import org.acegisecurity.context.SecurityContextHolder;
+import org.apache.commons.lang.StringUtils;
 import org.aspectj.lang.ProceedingJoinPoint;
 import org.aspectj.lang.annotation.Around;
 import org.aspectj.lang.annotation.Aspect;
+import org.hibernate.Filter;
 import org.hibernate.criterion.Criterion;
 import org.hibernate.criterion.Restrictions;
 import org.slf4j.Logger;
@@ -27,23 +36,107 @@
      */
     private Logger log = LoggerFactory.getLogger(AOPSecurity.class);
 
+    private SecurityRuleManager securityRuleManager;
+
+    private List<String> securedDAOs;
+
+    private boolean enabled;
+
     /**
      * @param pjp The proceeding joinpoint
      * @param filter The entity we are going to filter
-     * @param additionalCriteria The additional criteria list
+     * @param additionalCriteria The additional criteria list, cannot be null
      * @return The execution invocation result
      * @throws Throwable Any exception occurring in the invoked method
      */
-//    @Around("execution(* findFiltered(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && " + //
-//        " args(filter, .., additionalCriteria)")
-  @Around("execution(* it.openutils.dao.hibernate.*.*(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && " + //
-  " args(filter, .., additionalCriteria)")
-  public Object applySecurityRules(ProceedingJoinPoint pjp, Object filter, List<Criterion> additionalCriteria)
+    @Around("execution(* it.openutils.dao.hibernate.*.*(Object, .., java.util.List<org.hibernate.criterion.Criterion>)) && "
+        + //
+        " args(filter, .., additionalCriteria)")
+    public Object applySecurityRules(ProceedingJoinPoint pjp, Object filter, List<Criterion> additionalCriteria)
         throws Throwable
     {
-        log.debug("applying rules for {} with criteria {}", filter.toString(), additionalCriteria);
-        additionalCriteria.add(Restrictions.sqlRestriction("INTVALUE = 1"));
+        if (!enabled)
+        {
+            log.debug("DAO security disabled, proceeding.");
+            return pjp.proceed();
+        }
+
+        if (!securedDAOs.contains(pjp.getTarget().getClass().getCanonicalName()))
+        {
+            log.debug("The intercepted DAO {} is not secured, proceeding.", pjp.getTarget().toString());
+            return pjp.proceed();
+        }
+
+        log.debug("applying security rules for {} with criteria {}", filter.toString(), additionalCriteria);
+        Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
+        if (authentication == null)
+        {
+            throw new SecurityException("Authentication is not valid");
+        }
+        GrantedAuthority[] authorities = authentication.getAuthorities();
+        List<String> roles = new ArrayList<String>();
+        for (int i = 0; i < authorities.length; i++)
+        {
+            roles.add(authorities[i].getAuthority());
+        }
+
+        String entity = filter.getClass().getCanonicalName();
+        List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, roles);
+
+        if (rules.isEmpty())
+        {
+            String grantedRoles = StringUtils.EMPTY;
+            for (int i = 0; i < authorities.length; i++)
+            {
+                grantedRoles += authorities[i].getAuthority() + " ";
+            }
+            log.warn("Access is denied on " + entity + ", for user {} with roles {}", SecurityContextHolder
+                .getContext()
+                .getAuthentication()
+                .getPrincipal()
+                .toString(), grantedRoles);
+
+            throw new SecurityException("Access denied");
+        }
+
+        Filter hibernateFilter = securityRuleManager.getEntityFilterFromRules(entity, rules);
+
+        Criterion sqlCriterion = Restrictions.sqlRestriction(hibernateFilter
+            .getFilterDefinition()
+            .getDefaultFilterCondition());
+
+        log.debug("Adding sql restriction: {}", sqlCriterion.toString());
+        additionalCriteria.add(sqlCriterion);
+
         Object result = pjp.proceed();
         return result;
     }
+
+    /**
+     * Sets the securityRuleManager.
+     * @param securityRuleManager the securityRuleManager to set
+     */
+    public void setSecurityRuleManager(SecurityRuleManager securityRuleManager)
+    {
+        this.securityRuleManager = securityRuleManager;
+    }
+
+    /**
+     * Sets the securedDAOs.
+     * @param securedDAOs the securedDAOs to set
+     */
+    public void setSecuredDAOs(List securedDAOs)
+    {
+        this.securedDAOs = securedDAOs;
+    }
+
+
+    /**
+     * Sets the enabled.
+     * @param enabled the enabled to set
+     */
+    public void setEnabled(boolean enabled)
+    {
+        this.enabled = enabled;
+    }
 }
Deleted: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java	2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/HibernateDAOSecurityInterceptor.java	2007-09-03 08:31:00 UTC (rev 429)
@@ -1,139 +0,0 @@
-/*
- * Copyright (c) Openmind.  All rights reserved. http://www.openmindonline.it
- */
-package it.openutils.hibernate.security.aop;
-
-import it.openutils.hibernate.security.dataobject.SecurityRule;
-import it.openutils.hibernate.security.services.SecurityRuleManager;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.acegisecurity.GrantedAuthority;
-import org.acegisecurity.context.SecurityContextHolder;
-import org.aopalliance.intercept.MethodInterceptor;
-import org.aopalliance.intercept.MethodInvocation;
-import org.apache.commons.lang.StringUtils;
-import org.hibernate.Filter;
-import org.hibernate.SessionFactory;
-import org.hibernate.criterion.Criterion;
-import org.hibernate.criterion.Restrictions;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-/**
- * This is a Hibernate Read-Update-Delete security interceptor. This enforces a DENY_ALL default policy.
- * @author fcarone
- * @version $Id: $
- */
-public class HibernateDAOSecurityInterceptor implements MethodInterceptor
-{
-
-    /**
-     * Logger.
-     */
-    private Logger log = LoggerFactory.getLogger(HibernateDAOSecurityInterceptor.class);
-
-    private SecurityRuleManager securityRuleManager;
-
-    private SessionFactory sessionFactory;
-
-    /**
-     * {@inheritDoc}
-     */
-    @SuppressWarnings("unchecked")
-    public Object invoke(MethodInvocation invocation) throws Throwable
-    {
-        log.debug("Applying security rules");
-        Object[] arguments = invocation.getArguments();
-        Object checkArgument = arguments[arguments.length - 1];
-        if (!StringUtils.equals(invocation.getMethod().getName(), "findFiltered"))
-        {
-            return invocation.proceed();
-        }
-        if (!(checkArgument instanceof List))
-        {
-            return invocation.proceed();
-        }
-
-        String entity = StringUtils.EMPTY;
-        for (int i = 0; i < arguments.length; i++)
-        {
-            Object argument = arguments[i];
-            if (sessionFactory.getClassMetadata(argument.getClass()) != null)
-            {
-                entity = argument.getClass().getCanonicalName();
-                break;
-            }
-        }
-
-        // the current invocation is not about any session managed entity
-        if (StringUtils.isEmpty(entity))
-        {
-            return invocation.proceed();
-        }
-
-        if (SecurityContextHolder.getContext().getAuthentication() == null)
-        {
-            throw new SecurityException("Authentication is not valid");
-        }
-
-        GrantedAuthority[] authorities = SecurityContextHolder.getContext().getAuthentication().getAuthorities();
-        List<String> roles = new ArrayList<String>();
-        for (int i = 0; i < authorities.length; i++)
-        {
-            roles.add(authorities[i].getAuthority());
-        }
-        List<SecurityRule> rules = securityRuleManager.getRulesForRoles(entity, roles);
-
-        if (rules.isEmpty())
-        {
-            String grantedRoles = StringUtils.EMPTY;
-            for (int i = 0; i < authorities.length; i++)
-            {
-                grantedRoles += authorities[i].getAuthority() + " ";
-            }
-            log.warn("Access is denied on " + entity + ", for user {} with roles {}", SecurityContextHolder
-                .getContext()
-                .getAuthentication()
-                .getPrincipal()
-                .toString(), grantedRoles);
-
-            throw new SecurityException("Access denied");
-        }
-
-        Filter filter = securityRuleManager.getEntityFilterFromRules(entity, rules);
-
-        Criterion sqlCriterion = Restrictions.sqlRestriction(filter.getFilterDefinition().getDefaultFilterCondition());
-
-        if (StringUtils.equals(invocation.getMethod().getName(), "findFiltered"))
-        {
-            Object argument = arguments[arguments.length - 1];
-            ((List) argument).add(sqlCriterion);
-        }
-
-        Object result = invocation.proceed();
-
-        return result;
-    }
-
-    /**
-     * Sets the securityRuleManager.
-     * @param securityRuleManager the securityRuleManager to set
-     */
-    public void setSecurityRuleManager(SecurityRuleManager securityRuleManager)
-    {
-        this.securityRuleManager = securityRuleManager;
-    }
-
-    /**
-     * Sets the sessionFactory.
-     * @param sessionFactory the sessionFactory to set
-     */
-    public void setSessionFactory(SessionFactory sessionFactory)
-    {
-        this.sessionFactory = sessionFactory;
-    }
-
-}
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java	2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/HsqlDatatypeFactory.java	2007-09-03 08:31:00 UTC (rev 429)
@@ -19,6 +19,7 @@
 
     /**
      * {@inheritDoc}
+     * Needed to fix Boolean type recognition for HSQLDB
      */
     @Override
     public DataType createDataType(int sqlType, String sqlTypeName) throws DataTypeException
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java	2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/apptest/DummyDaoImpl.java	2007-09-03 08:31:00 UTC (rev 429)
@@ -20,6 +20,6 @@
     protected Class<DummyDataobject> getReferenceClass()
     {
         return DummyDataobject.class;
+
     }
-
 }
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-database.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-database.xml	2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-database.xml	2007-09-03 08:31:00 UTC (rev 429)
@@ -1,10 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
-<!--
-    # ATTENZIONE: queste proprietà sono utilizzate solo per gli unit tests
-    # i file per la configurazione del db utilizzati dall'applicazione web sono in
-    # src/main/web-app/WEB-INF
--->
+
 <beans>
     <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
         <property name="location">
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml	2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml	2007-09-03 08:31:00 UTC (rev 429)
@@ -42,6 +42,7 @@
                 <prop key="clean*">PROPAGATION_REQUIRED</prop>
                 <prop key="*">PROPAGATION_REQUIRED,readOnly</prop>
             </props>
-        </property>
+        </property>
+        <property name="exposeProxy" value="true" />
     </bean>
 </beans>
\ No newline at end of file
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml	2007-09-03 08:24:39 UTC (rev 428)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml	2007-09-03 08:31:00 UTC (rev 429)
@@ -2,31 +2,16 @@
 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:aop="http://www.springframework.org/schema/aop"
   xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
-
-  <aop:aspectj-autoproxy/>
-
-  <bean id="securityAspect" class="it.openutils.hibernate.security.aop.AOPSecurity" />
-
-  <bean id="securityInterceptor" class="it.openutils.hibernate.security.aop.HibernateDAOSecurityInterceptor">
+  <aop:aspectj-autoproxy />
+  <bean id="securityAspect" class="it.openutils.hibernate.security.aop.AOPSecurity">
     <property name="securityRuleManager" ref="securityRuleManager" />
-    <property name="sessionFactory" ref="sessionFactory" />
-  </bean>
-
-<!--
-  <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
-    <property name="beanNames">
+    <property name="enabled" value="true" />
+    <property name="securedDAOs">
       <list>
-        <idref bean="dummyDAO" />
+        <value>it.openutils.hibernate.security.apptest.DummyDaoImpl</value>
       </list>
     </property>
-    <property name="interceptorNames">
-      <list>
-        <value>securityInterceptor</value>
-      </list>
-    </property>
   </bean>
- -->
-
   <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.ShaPasswordEncoder" />
   <bean id="userDetailsService" class="it.openutils.usermanagement.acegi.HibernateUserDetailsServiceImpl"
     autowire="byType">
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <fc...@us...> - 2007-11-14 14:16:37
       | 
| Revision: 506
          http://openutils.svn.sourceforge.net/openutils/?rev=506&view=rev
Author:   fcarone
Date:     2007-11-14 06:16:35 -0800 (Wed, 14 Nov 2007)
Log Message:
-----------
update to latest junit testing package
Modified Paths:
--------------
    trunk/openutils-hibernate-security/pom.xml
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
Modified: trunk/openutils-hibernate-security/pom.xml
===================================================================
--- trunk/openutils-hibernate-security/pom.xml	2007-11-12 15:19:27 UTC (rev 505)
+++ trunk/openutils-hibernate-security/pom.xml	2007-11-14 14:16:35 UTC (rev 506)
@@ -97,7 +97,7 @@
     <dependency>
       <groupId>net.sourceforge.openutils</groupId>
       <artifactId>openutils-testing-junit</artifactId>
-      <version>1.1.2</version>
+      <version>1.1.3</version>
       <scope>test</scope>
     </dependency>
     <dependency>
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java	2007-11-12 15:19:27 UTC (rev 505)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java	2007-11-14 14:16:35 UTC (rev 506)
@@ -80,7 +80,7 @@
             0,
             new ArrayList<Criterion>());
         Assert.assertNotNull(dummyObjects);
-        Assert.assertEquals(1, dummyObjects.size());
+//        Assert.assertEquals(1, dummyObjects.size());
 
         dummyObjects = securedObject.findFiltered(filter);
         Assert.assertNotNull(dummyObjects);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 | 
| 
      
      
      From: <fc...@us...> - 2008-02-19 15:37:09
       | 
| Revision: 640
          http://openutils.svn.sourceforge.net/openutils/?rev=640&view=rev
Author:   fcarone
Date:     2008-02-19 07:36:46 -0800 (Tue, 19 Feb 2008)
Log Message:
-----------
SecurityIntegrationTest updated
Modified Paths:
--------------
    trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
    trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java
    trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
    trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
    trunk/openutils-hibernate-security/src/test/resources/log4j.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-database.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-managers.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
    trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
Property Changed:
----------------
    trunk/openutils-hibernate-security/
Property changes on: trunk/openutils-hibernate-security
___________________________________________________________________
Name: svn:ignore
   - target
.settings
.checkstyle
.classpath
.project
derby.log
   + target
.settings
.checkstyle
.classpath
.project
derby.log
test-output
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java	2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/aop/AOPSecurity.java	2008-02-19 15:36:46 UTC (rev 640)
@@ -1,5 +1,17 @@
 /*
- * Copyright (c) Openmind.  All rights reserved. http://www.openmindonline.it
+ * Copyright Openmind http://www.openmindonline.it
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 package it.openutils.hibernate.security.aop;
 
Modified: trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java
===================================================================
--- trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java	2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/main/java/it/openutils/hibernate/security/filter/SecurityRuleAccessDecisionVoter.java	2008-02-19 15:36:46 UTC (rev 640)
@@ -32,7 +32,6 @@
 import org.acegisecurity.vote.AccessDecisionVoter;
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.enums.EnumUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.aop.framework.ReflectiveMethodInvocation;
Modified: trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java
===================================================================
--- trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java	2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/java/it/openutils/hibernate/security/SecurityIntegrationTest.java	2008-02-19 15:36:46 UTC (rev 640)
@@ -3,24 +3,31 @@
 import it.openutils.hibernate.example.FilterMetadata;
 import it.openutils.hibernate.security.apptest.DummyDAO;
 import it.openutils.hibernate.security.apptest.DummyDataobject;
-import it.openutils.testing.junit.DbUnitTestCase;
+import it.openutils.hibernate.security.apptest.DummyObjectManager;
+import it.openutils.testing.DbUnitExecution;
+import it.openutils.testing.junit.AbstractDbUnitJunitSpringContextTests;
 
-import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 
+import org.acegisecurity.AccessDeniedException;
 import org.acegisecurity.Authentication;
 import org.acegisecurity.context.SecurityContextHolder;
 import org.acegisecurity.context.SecurityContextImpl;
 import org.acegisecurity.providers.AuthenticationProvider;
 import org.acegisecurity.providers.UsernamePasswordAuthenticationToken;
-import org.dbunit.database.DatabaseConfig;
-import org.dbunit.database.IDatabaseConnection;
+import org.dbunit.operation.InsertOperation;
 import org.hibernate.criterion.Criterion;
 import org.hibernate.criterion.Order;
 import org.junit.Assert;
 import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.test.context.ContextConfiguration;
+import org.springframework.test.context.TestExecutionListeners;
+import org.springframework.test.context.transaction.TransactionConfiguration;
+import org.springframework.test.context.transaction.TransactionalTestExecutionListener;
+import org.springframework.transaction.annotation.Transactional;
 
 
 /*
@@ -31,28 +38,27 @@
  * @author fcarone
  * @version $Id: $
  */
-public class SecurityIntegrationTest extends DbUnitTestCase
+@ContextConfiguration(locations = {"/spring-tests.xml" })
+@DbUnitExecution(datasets = {"/SecurityIntegrationTest-load.xml" }, dataSource = "dataSource", //
+    dataTypeFactory = HsqlDatatypeFactory.class,
+    insertOperation = InsertOperation.class)
+@TestExecutionListeners({TransactionalTestExecutionListener.class })
+@Transactional
+@TransactionConfiguration(transactionManager = "transactionManager")
+public class SecurityIntegrationTest extends AbstractDbUnitJunitSpringContextTests
 {
 
+    @Autowired
     private DummyDAO securedObject;
 
+    @Autowired
+    private AuthenticationProvider authenticationProvider;
 
+    @Autowired
+    private DummyObjectManager dummyObjectManager;
 
-    /**
-     * {@inheritDoc}
-     */
-    @Override
-    protected IDatabaseConnection createConnection() throws SQLException
-    {
-        IDatabaseConnection connection = super.createConnection();
-        DatabaseConfig config = connection.getConfig();
-        config.setProperty(DatabaseConfig.PROPERTY_DATATYPE_FACTORY, new HsqlDatatypeFactory());
-        return connection;
-    }
-
     private void authenticate(String username, String password)
     {
-        AuthenticationProvider authenticationProvider = (AuthenticationProvider) ctx.getBean("authenticationProvider");
         Authentication authentication = new UsernamePasswordAuthenticationToken(username, password);
         authentication = authenticationProvider.authenticate(authentication);
         SecurityContextImpl sci = new SecurityContextImpl();
@@ -70,7 +76,6 @@
         authenticate("UserUno", "password");
 
         // test
-        securedObject = (DummyDAO) ctx.getBean("dummyDAO");
         DummyDataobject filter = new DummyDataobject();
         List<DummyDataobject> dummyObjects = securedObject.findFiltered(
             filter,
@@ -80,11 +85,134 @@
             0,
             new ArrayList<Criterion>());
         Assert.assertNotNull(dummyObjects);
+        Assert.assertEquals(1, dummyObjects.size());
 
         dummyObjects = securedObject.findFiltered(filter);
         Assert.assertNotNull(dummyObjects);
         Assert.assertEquals(1, dummyObjects.size());
+    }
 
+    /**
+     * @throws Exception Any exception
+     */
+    @Test
+    public void testUpdateOK() throws Exception
+    {
+        authenticate("UserUno", "password");
+        DummyDataobject filter = new DummyDataobject();
+        List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+        Assert.assertNotNull(dummyObjects);
+        DummyDataobject ddo = dummyObjects.get(0);
+
+        ddo.setStringValue("ModifiedValue");
+
+        dummyObjectManager.update(ddo);
     }
 
+    /**
+     * @throws Exception Any exception
+     */
+    @Test(expected = AccessDeniedException.class)
+    public void testUpdateNoGo() throws Exception
+    {
+        authenticate("UserDue", "password");
+        DummyDataobject filter = new DummyDataobject();
+        List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+        Assert.assertNotNull(dummyObjects);
+        DummyDataobject ddo = dummyObjects.get(0);
+
+        ddo.setStringValue("ModifiedValue");
+
+        dummyObjectManager.update(ddo);
+    }
+
+    /**
+     * @throws Exception Any exception
+     */
+    @Test
+    public void testDeleteOk() throws Exception
+    {
+        authenticate("UserUno", "password");
+        DummyDataobject filter = new DummyDataobject();
+        List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+        Assert.assertNotNull(dummyObjects);
+        DummyDataobject ddo = dummyObjects.get(0);
+
+        dummyObjectManager.delete(ddo);
+    }
+
+    /**
+     * @throws Exception Any exception
+     */
+    @Test(expected = AccessDeniedException.class)
+    public void testDeleteNoGo() throws Exception
+    {
+        authenticate("UserDue", "password");
+        DummyDataobject filter = new DummyDataobject();
+        List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+        Assert.assertNotNull(dummyObjects);
+        DummyDataobject ddo = dummyObjects.get(0);
+
+        dummyObjectManager.delete(ddo);
+    }
+
+    /**
+     * @throws Exception Any exception
+     */
+    @Test(expected = AccessDeniedException.class)
+    public void testCreateNoGo() throws Exception
+    {
+        authenticate("UserUno", "password");
+        DummyDataobject filter = new DummyDataobject();
+        List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+        Assert.assertNotNull(dummyObjects);
+        DummyDataobject ddo = dummyObjects.get(0);
+
+        dummyObjectManager.create(ddo);
+    }
+
+    /**
+     * @throws Exception Any exception
+     */
+    @Test
+    public void testCreateOk() throws Exception
+    {
+        authenticate("UserDue", "password");
+        DummyDataobject filter = new DummyDataobject();
+        List<DummyDataobject> dummyObjects = securedObject.findFiltered(filter);
+        Assert.assertNotNull(dummyObjects);
+        DummyDataobject ddo = dummyObjects.get(0);
+
+        dummyObjectManager.create(ddo);
+    }
+
+    /**
+     * Sets the securedObject.
+     * @param securedObject the securedObject to set
+     */
+    public void setSecuredObject(DummyDAO securedObject)
+    {
+        this.securedObject = securedObject;
+    }
+
+
+    /**
+     * Sets the authenticationProvider.
+     * @param authenticationProvider the authenticationProvider to set
+     */
+    public void setAuthenticationProvider(AuthenticationProvider authenticationProvider)
+    {
+        this.authenticationProvider = authenticationProvider;
+    }
+
+
+    /**
+     * Sets the dummyObjectManager.
+     * @param dummyObjectManager the dummyObjectManager to set
+     */
+    public void setDummyObjectManager(DummyObjectManager dummyObjectManager)
+    {
+        this.dummyObjectManager = dummyObjectManager;
+    }
+
 }
Modified: trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml	2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/SecurityIntegrationTest-load.xml	2008-02-19 15:36:46 UTC (rev 640)
@@ -65,7 +65,7 @@
             <value>GRUPPOUNO</value>
         </row>
         <row>
-            <value>UserUno</value>
+            <value>UserDue</value>
             <value>GRUPPODUE</value>
         </row>
     </table>
@@ -101,6 +101,22 @@
             <value>1</value>
             <value>EQUALS</value>
         </row>
+        <row>
+            <value>2</value>
+            <value>RoleDue</value>
+            <value>it.openutils.hibernate.security.apptest.DummyDataobject</value>
+            <value>intValue</value>
+            <value>1</value>
+            <value>EQUALS</value>
+        </row>
+        <row>
+            <value>3</value>
+            <value>RoleTre</value>
+            <value>it.openutils.hibernate.security.apptest.DummyDataobject</value>
+            <value>intValue</value>
+            <value>1</value>
+            <value>EQUALS</value>
+        </row>
     </table>
     <table name="SECRULE_PERMISSION">
         <column>ID_SECURITY_RULE</column>
@@ -109,6 +125,22 @@
             <value>1</value>
             <value>LOAD</value>
         </row>
+        <row>
+            <value>1</value>
+            <value>MODIFY</value>
+        </row>
+        <row>
+            <value>2</value>
+            <value>DELETE</value>
+        </row>
+        <row>
+            <value>3</value>
+            <value>LOAD</value>
+        </row>
+        <row>
+            <value>3</value>
+            <value>CREATE</value>
+        </row>
     </table>
     <table name="DUMMYDATAOBJECT">
         <column>ID</column>
Modified: trunk/openutils-hibernate-security/src/test/resources/log4j.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/log4j.xml	2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/log4j.xml	2008-02-19 15:36:46 UTC (rev 640)
@@ -38,9 +38,12 @@
     <category name="it.openutils.dbupdate.DbSetupManagerImpl">
         <priority value="INFO" />
     </category>
-    <category name="it.openutils.hibernate.security.aop">
+    <category name="it.openutils.hibernate.security">
         <priority value="DEBUG" />
     </category>
+    <category name="org.acegisecurity">
+        <priority value="DEBUG" />
+    </category>
     <root>
         <priority value="debug" />
         <appender-ref ref="test-appender" />
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml	2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-dao.xml	2008-02-19 15:36:46 UTC (rev 640)
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
-"http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:util="http://www.springframework.org/schema/util"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
   <bean id="userDAO" parent="txProxyTemplate">
     <property name="target">
       <bean class="it.openutils.usermanagement.dao.UserDAOImpl">
@@ -9,18 +9,19 @@
       </bean>
     </property>
   </bean>
-  <bean id="securityRuleDAO" parent="txProxyTemplate">
-    <property name="target">
-      <bean class="it.openutils.hibernate.security.dao.impl.SecurityRuleDAOImpl">
-        <property name="sessionFactory" ref="sessionFactory" />
-      </bean>
-    </property>
+  <bean id="securityRuleDAO" parent="txProxyTemplate">
+    <property name="target">
+      <bean class="it.openutils.hibernate.security.dao.impl.SecurityRuleDAOImpl">
+        <property name="sessionFactory" ref="sessionFactory" />
+      </bean>
+    </property>
   </bean>
   <bean id="dummyDAO" parent="txProxyTemplate">
     <property name="target">
       <bean class="it.openutils.hibernate.security.apptest.DummyDaoImpl">
         <property name="sessionFactory" ref="sessionFactory" />
+        <property name="aopenabled" value="true" />
       </bean>
     </property>
-  </bean>
+  </bean>
 </beans>
\ No newline at end of file
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-database.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-database.xml	2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-database.xml	2008-02-19 15:36:46 UTC (rev 640)
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
-
-<beans>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:util="http://www.springframework.org/schema/util"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
     <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
         <property name="location">
             <value>classpath:database.properties</value>
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml	2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-hibernate.xml	2008-02-19 15:36:46 UTC (rev 640)
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"
-"http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:util="http://www.springframework.org/schema/util"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
 
     <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
         <property name="dataSource">
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-managers.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-managers.xml	2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-managers.xml	2008-02-19 15:36:46 UTC (rev 640)
@@ -1,17 +1,49 @@
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
-  <bean id="securityRuleManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean"
-    autowire="byType">
-    <property name="transactionManager">
-      <ref bean="transactionManager" />
-    </property>
-    <property name="transactionAttributes">
-      <props>
-        <prop key="*">PROPAGATION_REQUIRED</prop>
-      </props>
-    </property>
-    <property name="target">
-      <bean class="it.openutils.hibernate.security.services.impl.SecurityRuleManagerImpl" autowire="byType"></bean>
-    </property>
-  </bean>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:util="http://www.springframework.org/schema/util"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
+  <bean id="securityRuleManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
+    <property name="transactionManager">
+      <ref bean="transactionManager" />
+    </property>
+    <property name="transactionAttributes">
+      <props>
+        <prop key="*">PROPAGATION_REQUIRED</prop>
+      </props>
+    </property>
+    <property name="target">
+      <bean class="it.openutils.hibernate.security.services.impl.SecurityRuleManagerImpl" autowire="byType"></bean>
+    </property>
+  </bean>
+  <bean id="dummyObjectManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
+    <property name="transactionManager">
+      <ref bean="transactionManager" />
+    </property>
+    <property name="transactionAttributes">
+      <props>
+        <prop key="*">PROPAGATION_REQUIRED</prop>
+      </props>
+    </property>
+    <property name="target">
+      <bean class="it.openutils.hibernate.security.apptest.DummyObjectManagerImpl">
+        <property name="dummyDAO" ref="dummyDAO" />
+      </bean>
+    </property>
+  </bean>
+  <bean id="userManager" class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
+    <property name="transactionManager">
+      <ref bean="transactionManager" />
+    </property>
+    <property name="transactionAttributes">
+      <props>
+        <prop key="*">PROPAGATION_REQUIRED</prop>
+      </props>
+    </property>
+    <property name="target">
+      <bean class="it.openutils.usermanagement.manager.UserManagerImpl">
+        <property name="passwordEncoder" ref="passwordEncoder" />
+        <property name="userDAO" ref="userDAO" />
+      </bean>
+    </property>
+  </bean>
 </beans>
\ No newline at end of file
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-security.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-security.xml	2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-security.xml	2008-02-19 15:36:46 UTC (rev 640)
@@ -1,8 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
 <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xmlns:aop="http://www.springframework.org/schema/aop"
-  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
+  xmlns:util="http://www.springframework.org/schema/util" xmlns:aop="http://www.springframework.org/schema/aop"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
+     http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">
+
   <aop:aspectj-autoproxy />
+
   <bean id="securityAspect" class="it.openutils.hibernate.security.aop.AOPSecurity">
     <property name="securityRuleManager" ref="securityRuleManager" />
     <property name="enabled" value="true" />
@@ -12,26 +15,60 @@
       </list>
     </property>
   </bean>
+
   <bean id="passwordEncoder" class="org.acegisecurity.providers.encoding.ShaPasswordEncoder" />
+
   <bean id="userDetailsService" class="it.openutils.usermanagement.acegi.HibernateUserDetailsServiceImpl"
     autowire="byType">
     <property name="userDao" ref="userDAO" />
   </bean>
-  <bean id="authenticationProvider" class="org.springframework.aop.framework.ProxyFactoryBean" lazy-init="true">
-    <property name="targetName" value="authenticationProviderDB" />
+
+  <bean id="authenticationProviderDB" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"
+    lazy-init="true">
+    <property name="userDetailsService" ref="userDetailsService" />
+    <property name="passwordEncoder" ref="passwordEncoder" />
   </bean>
+
+  <bean id="authenticationManager" class="org.acegisecurity.MockAuthenticationManager" />
+
   <bean id="roleVoter" class="org.acegisecurity.vote.RoleVoter" />
-  <bean id="accessDecisionManager" class="org.acegisecurity.vote.AffirmativeBased">
+
+  <bean id="securityRuleVoter" class="it.openutils.hibernate.security.filter.SecurityRuleAccessDecisionVoter">
+    <property name="securityRuleManager" ref="securityRuleManager" />
+  </bean>
+
+  <bean id="accessDecisionManager" class="org.acegisecurity.vote.UnanimousBased">
     <property name="allowIfAllAbstainDecisions" value="false" />
     <property name="decisionVoters">
       <list>
         <ref bean="roleVoter" />
+        <ref bean="securityRuleVoter" />
       </list>
     </property>
   </bean>
-  <bean id="authenticationProviderDB" class="org.acegisecurity.providers.dao.DaoAuthenticationProvider"
-    lazy-init="true">
-    <property name="userDetailsService" ref="userDetailsService" />
-    <property name="passwordEncoder" ref="passwordEncoder" />
+
+  <bean id="securityInterceptor" class="org.acegisecurity.intercept.method.aopalliance.MethodSecurityInterceptor">
+    <property name="authenticationManager" ref="authenticationManager" />
+    <property name="accessDecisionManager" ref="accessDecisionManager" />
+    <property name="objectDefinitionSource">
+      <value>
+        it.openutils.hibernate.security.apptest.DummyObjectManager.update=MODIFY
+        it.openutils.hibernate.security.apptest.DummyObjectManager.create=CREATE
+        it.openutils.hibernate.security.apptest.DummyObjectManager.delete=DELETE
+      </value>
+    </property>
   </bean>
+
+  <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
+    <property name="beanNames">
+      <list>
+        <idref bean="dummyObjectManager" />
+      </list>
+    </property>
+    <property name="interceptorNames">
+      <list>
+        <value>securityInterceptor</value>
+      </list>
+    </property>
+  </bean>
 </beans>
Modified: trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml
===================================================================
--- trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml	2008-02-19 15:34:28 UTC (rev 639)
+++ trunk/openutils-hibernate-security/src/test/resources/spring-tests.xml	2008-02-19 15:36:46 UTC (rev 640)
@@ -1,6 +1,8 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN" "http://www.springframework.org/dtd/spring-beans.dtd">
-<beans>
+<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xmlns:util="http://www.springframework.org/schema/util"
+  xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
+     http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd">
+
     <import resource="classpath:spring-database.xml" />
     <import resource="classpath:spring-hibernate.xml" />
     <import resource="classpath:spring-dao.xml" />
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |