You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by gk...@apache.org on 2024/02/23 11:29:40 UTC

(turbine-fulcrum-security) branch master updated: Add serializable interface, and transient to userGroupRoleSet, update to parent pom 13-snapshot

This is an automated email from the ASF dual-hosted git repository.

gk pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/turbine-fulcrum-security.git


The following commit(s) were added to refs/heads/master by this push:
     new 69bfa31  Add serializable interface, and transient to userGroupRoleSet, update to parent pom 13-snapshot
69bfa31 is described below

commit 69bfa31ed4b35f4fc4cd5e24f168e6d279f2fc17
Author: Georg Kallidis <gk...@apache.org>
AuthorDate: Fri Feb 23 12:10:56 2024 +0100

    Add serializable interface, and transient to userGroupRoleSet, update to parent pom 13-snapshot
---
 .../turbine/entity/TurbineUserGroupRoleEntity.java |  4 +-
 .../impl/AbstractTurbineSecurityEntityImpl.java    |  2 +-
 .../fulcrum/security/spi/AbstractGroupManager.java |  2 +-
 pom.xml                                            |  2 +-
 .../security/torque/TorqueAbstractRoleManager.java |  2 +-
 ...TorqueAbstractTurbineTurbineSecurityEntity.java |  2 +-
 .../TurbineUserManagerWithDefaultPeerLazyTest.java | 66 ++++++++++++++++++++++
 7 files changed, 74 insertions(+), 6 deletions(-)

diff --git a/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUserGroupRoleEntity.java b/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUserGroupRoleEntity.java
index 98805e0..904a0b4 100644
--- a/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUserGroupRoleEntity.java
+++ b/api/src/java/org/apache/fulcrum/security/model/turbine/entity/TurbineUserGroupRoleEntity.java
@@ -1,5 +1,7 @@
 package org.apache.fulcrum.security.model.turbine.entity;
 
+import java.io.Serializable;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -31,7 +33,7 @@ import org.apache.fulcrum.security.util.DataBackendException;
  * @author <a href="mailto:epugh@upstate.com">Eric Pugh </a>
  * @version $Id: TurbineRole.java 535465 2007-05-05 06:58:06Z tv $
  */
-public interface TurbineUserGroupRoleEntity {
+public interface TurbineUserGroupRoleEntity extends Serializable {
 
 	/**
 	 * Get the User/Group/Role set associated with this entity
diff --git a/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/AbstractTurbineSecurityEntityImpl.java b/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/AbstractTurbineSecurityEntityImpl.java
index 99fc4c3..0999825 100644
--- a/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/AbstractTurbineSecurityEntityImpl.java
+++ b/api/src/java/org/apache/fulcrum/security/model/turbine/entity/impl/AbstractTurbineSecurityEntityImpl.java
@@ -40,7 +40,7 @@ public abstract class AbstractTurbineSecurityEntityImpl extends SecurityEntityIm
      * 
      */
     private static final long serialVersionUID = 1L;
-    private Set<? extends TurbineUserGroupRole> userGroupRoleSet = new HashSet<TurbineUserGroupRole>();
+    private transient Set<? extends TurbineUserGroupRole> userGroupRoleSet = new HashSet<TurbineUserGroupRole>();
 
     /**
      * Get the User/Group/Role set associated with this entity
diff --git a/api/src/java/org/apache/fulcrum/security/spi/AbstractGroupManager.java b/api/src/java/org/apache/fulcrum/security/spi/AbstractGroupManager.java
index 19ce6ee..7ef962e 100644
--- a/api/src/java/org/apache/fulcrum/security/spi/AbstractGroupManager.java
+++ b/api/src/java/org/apache/fulcrum/security/spi/AbstractGroupManager.java
@@ -57,7 +57,7 @@ public abstract class AbstractGroupManager extends AbstractEntityManager impleme
         try
         {
             @SuppressWarnings("unchecked")
-			T group = (T) Class.forName(getClassName()).newInstance();
+			T group = (T) Class.forName(getClassName()).getConstructor( null ).newInstance();
             return group;
         }
         catch (Exception e)
diff --git a/pom.xml b/pom.xml
index 2df0c53..28eb0b1 100644
--- a/pom.xml
+++ b/pom.xml
@@ -21,7 +21,7 @@
    <parent>
        <artifactId>turbine-parent</artifactId>
        <groupId>org.apache.turbine</groupId>
-       <version>12</version>
+       <version>13-SNAPSHOT</version>
        <relativePath />
    </parent>
     <modelVersion>4.0.0</modelVersion>
diff --git a/torque/src/java/org/apache/fulcrum/security/torque/TorqueAbstractRoleManager.java b/torque/src/java/org/apache/fulcrum/security/torque/TorqueAbstractRoleManager.java
index 52e1153..e0abf3e 100644
--- a/torque/src/java/org/apache/fulcrum/security/torque/TorqueAbstractRoleManager.java
+++ b/torque/src/java/org/apache/fulcrum/security/torque/TorqueAbstractRoleManager.java
@@ -366,7 +366,7 @@ public abstract class TorqueAbstractRoleManager extends AbstractRoleManager impl
         }
         catch (NoRowsException e)
         {
-            throw new UnknownEntityException("Could not find role" + name);
+            throw new UnknownEntityException("Could not find role " + name);
         }
         catch (TooManyRowsException e)
         {
diff --git a/torque/src/java/org/apache/fulcrum/security/torque/security/turbine/TorqueAbstractTurbineTurbineSecurityEntity.java b/torque/src/java/org/apache/fulcrum/security/torque/security/turbine/TorqueAbstractTurbineTurbineSecurityEntity.java
index ac9c637..8b3d6f8 100644
--- a/torque/src/java/org/apache/fulcrum/security/torque/security/turbine/TorqueAbstractTurbineTurbineSecurityEntity.java
+++ b/torque/src/java/org/apache/fulcrum/security/torque/security/turbine/TorqueAbstractTurbineTurbineSecurityEntity.java
@@ -39,7 +39,7 @@ public abstract class TorqueAbstractTurbineTurbineSecurityEntity extends TorqueA
 	private static final long serialVersionUID = -6230312046016785990L;
 
 	/** a cache of user_group_role objects */
-    private Set<? extends TurbineUserGroupRole> userGroupRoleSet = null;
+    private transient Set<? extends TurbineUserGroupRole> userGroupRoleSet = null;
     
     /* (non-Javadoc)
      * @see org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRoleEntity#addUserGroupRole(org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole)
diff --git a/torque/src/test/org/apache/fulcrum/security/torque/turbine/TurbineUserManagerWithDefaultPeerLazyTest.java b/torque/src/test/org/apache/fulcrum/security/torque/turbine/TurbineUserManagerWithDefaultPeerLazyTest.java
index 1900dff..f36433f 100644
--- a/torque/src/test/org/apache/fulcrum/security/torque/turbine/TurbineUserManagerWithDefaultPeerLazyTest.java
+++ b/torque/src/test/org/apache/fulcrum/security/torque/turbine/TurbineUserManagerWithDefaultPeerLazyTest.java
@@ -26,9 +26,19 @@ import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertTrue;
 import static org.junit.jupiter.api.Assertions.fail;
 
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+import java.io.PrintWriter;
+import java.io.Serializable;
 import java.sql.Connection;
 import java.sql.SQLException;
+import java.util.Set;
 
+import org.apache.commons.lang3.SerializationUtils;
 import org.apache.fulcrum.security.SecurityService;
 import org.apache.fulcrum.security.UserManager;
 import org.apache.fulcrum.security.acl.AccessControlList;
@@ -38,11 +48,14 @@ import org.apache.fulcrum.security.entity.User;
 import org.apache.fulcrum.security.model.test.AbstractUserManagerTest;
 import org.apache.fulcrum.security.model.turbine.TurbineAccessControlList;
 import org.apache.fulcrum.security.model.turbine.TurbineModelManager;
+import org.apache.fulcrum.security.model.turbine.entity.TurbineGroup;
 import org.apache.fulcrum.security.model.turbine.entity.TurbineUser;
 import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRole;
+import org.apache.fulcrum.security.model.turbine.entity.TurbineUserGroupRoleEntity;
 import org.apache.fulcrum.security.torque.HsqlDB;
 import org.apache.fulcrum.security.torque.om.TurbineGroupPeer;
 import org.apache.fulcrum.security.torque.om.TurbinePermissionPeer;
+import org.apache.fulcrum.security.torque.om.TurbineRole;
 import org.apache.fulcrum.security.torque.om.TurbineRolePeer;
 import org.apache.fulcrum.security.torque.om.TurbineRolePermissionPeer;
 import org.apache.fulcrum.security.torque.om.TurbineUserPeer;
@@ -404,8 +417,61 @@ public class TurbineUserManagerWithDefaultPeerLazyTest
         acl = userManager.getACL( user );
 
         assertTrue( ( (TurbineAccessControlList) acl ).hasRole( testRole ) );
+        
+        TurbineAccessControlList dacl = (TurbineAccessControlList) acl;
+        Serializable serDeSer1 = SerializationUtils.roundtrip(dacl.getPermissions()); 
+        Serializable serDeSer3 = SerializationUtils.roundtrip(dacl.getAllGroups());
+        
+        Set<TurbineUserGroupRole> tugrs_group = ((TurbineGroup) dacl.getGroupSet().getByName( TEST_GROUP )).getUserGroupRoleSet();
+        assertTrue(tugrs_group.size()>0);
+        assertTrue(tugrs_group instanceof Serializable, "Expected Set of TurbineUserGroupRole is serializable: " + tugrs_group.getClass());
+
+        TurbineUserGroupRole tugr_group = tugrs_group.iterator().next();
+        assertTrue(tugr_group instanceof Serializable, "Expected TurbineUserGroupRole is serializable: " + tugr_group.getClass());
+        
+        Serializable serDeSer0001 = SerializationUtils.roundtrip((Serializable) tugr_group);
+
+        Serializable serDeSer0002 = SerializationUtils.roundtrip(tugr_group.getUser());
+        // lower limit class check
+        TurbineRole tr = new TurbineRole();
+        Serializable serDeSer0003 = SerializationUtils.roundtrip(tr);
+        
+        Serializable serDeSer00031 = SerializationUtils.roundtrip(tugr_group.getRole());
+        Serializable serDeSer0004 = SerializationUtils.roundtrip(tugr_group.getGroup());
+        Serializable serDeSer0005 = SerializationUtils.roundtrip(dacl.getGroupSet().getByName( TEST_GROUP ));
+        
+        Set<TurbineUserGroupRole> tugrs_role = ((TurbineRole) dacl.getRoles().getByName( TEST_ROLE )).getUserGroupRoleSet();
+        assertTrue(tugrs_role instanceof Serializable, "Expected TurbineUserGroupRole is serializable: " + tugrs_role.getClass());
+        TurbineUserGroupRole tugr_role = tugrs_role.iterator().next();
+        assertTrue(tugr_role instanceof Serializable, "Expected TurbineUserGroupRole is serializable: " + tugr_role.getClass());
+        
+        System.out.println( "tugr.getUser():" + tugr_role.getUser().getClass() );
+        System.out.println( "tugr.getGroup():" + tugr_role.getGroup().getClass() );
+        System.out.println( "tugr.getRole():" + tugr_role.getRole().getClass() );
+        System.out.println( "set role tugr has next:" + tugrs_role.iterator().hasNext() );
+        
+        Serializable serDeSer010 = SerializationUtils.roundtrip(tugr_role.getUser());
+        ((org.apache.fulcrum.security.torque.om.TurbineGroup)tugr_role.getGroup()).resetTurbineUserGroupRole();
+        Serializable serDeSer0011 = SerializationUtils.roundtrip(tugr_role.getGroup());
+        
+//        ((org.apache.fulcrum.security.torque.om.TurbineRole)tugr_role.getRole()).resetTurbineUserGroupRole();
+//        ((org.apache.fulcrum.security.torque.om.TurbineRole)tugr_role.getRole()).resetTurbineRolePermission();
+//        ((org.apache.fulcrum.security.torque.om.TurbineRole)tugr_role.getRole()).setUserGroupRoleSet( null );
+//        // this will as role.lastTurbineRolePermissionCriteria and lastTurbineUserGroupRoleCriteria not serializable
+//        Serializable serDeSer0012 = SerializationUtils.roundtrip(tugr_role.getRole());
+//        Serializable serDeSer0013 = SerializationUtils.roundtrip((Serializable) tugr_role);
+//        Serializable serDeSer0014 = SerializationUtils.roundtrip(dacl.getRoles().getByName( TEST_ROLE ));
+//        Serializable serDeSer0015 = SerializationUtils.roundtrip(dacl.getRoles());
+
+        Serializable serDeSer020 = SerializationUtils.roundtrip(dacl.getGroupSet());
+        
+        // this will fail as role fails
+//        Serializable serDeSer = SerializationUtils.roundtrip(acl);
+//        assertTrue( ((TurbineAccessControlList)serDeSer).getRoles().toString().equals(dacl.getRoles().toString()),
+//                "Expected RoleSet: ... GroupSet: ..");
     }
 
+
     @Test
     public void testRemoveUser()
         throws Exception