Index: topia-security/src/java/org/codelutin/topia/security/TopiaSecurityManagerImpl.java diff -u topia-security/src/java/org/codelutin/topia/security/TopiaSecurityManagerImpl.java:1.4 topia-security/src/java/org/codelutin/topia/security/TopiaSecurityManagerImpl.java:1.5 --- topia-security/src/java/org/codelutin/topia/security/TopiaSecurityManagerImpl.java:1.4 Mon Sep 18 15:49:25 2006 +++ topia-security/src/java/org/codelutin/topia/security/TopiaSecurityManagerImpl.java Mon Sep 25 13:24:40 2006 @@ -20,7 +20,7 @@ package org.codelutin.topia.security; -import static org.codelutin.topia.security.TopiaSecurityUtil.TOPIA_SECURITY_PERSISTENCE_CLASSES; +import static org.codelutin.topia.security.util.TopiaSecurityUtil.TOPIA_SECURITY_PERSISTENCE_CLASSES; import javax.security.auth.login.Configuration; @@ -34,16 +34,35 @@ import org.codelutin.topia.security.entities.authorization.TopiaLinkAuthorizationDAO; import org.codelutin.topia.security.entities.user.TopiaGroupDAO; import org.codelutin.topia.security.entities.user.TopiaUserDAO; - - +import org.codelutin.topia.security.listener.PropertyReadListener; +import org.codelutin.topia.security.listener.PropertyWriteListener; +import org.codelutin.topia.security.listener.VetoableEntityListener; +import org.codelutin.topia.security.listener.VetoablePropertyListener; + +/** + * Implantation du manager pour la sécurité. C'est le point d'accès à l'ensemble + * des fonctionnalités de la sécurité. + * @author ruchaud + */ public class TopiaSecurityManagerImpl implements TopiaSecurityManager { /** to use log facility, just put in your code: log.info(\"...\"); */ static private Log log = LogFactory.getLog(TopiaSecurityManagerImpl.class); + /* Context ToPIA */ private TopiaContext rootContext; private TopiaContext securityContext; + /* Listeners */ + private VetoableEntityListener entityListener = new VetoableEntityListener(); + private PropertyReadListener readListener = new PropertyReadListener(); + private PropertyWriteListener writeListener = new PropertyWriteListener(); + private VetoablePropertyListener propertyListener = new VetoablePropertyListener(readListener, writeListener); + + /** + * Constructeur. Initialise la sécurité à partir du contexte passer en paramètre + * @param context contexte root de la sécurité + */ public TopiaSecurityManagerImpl(TopiaContext context) { this.rootContext = context; this.securityContext = null; @@ -54,9 +73,9 @@ * @see org.codelutin.topia.security.TopiaSecurityManager#init() */ public void init() { - TopiaSecurityVetoableListener securityListener = new TopiaSecurityVetoableListener(); - rootContext.addVetoableListener(securityListener); - rootContext.addVetoableLoadListener(securityListener); + rootContext.addVetoableListener(entityListener); + rootContext.addTopiaEntityLoadListener(propertyListener); + rootContext.addTopiaEntityListener(propertyListener); org.codelutin.topia.security.jaas.TopiaPolicy policy = new org.codelutin.topia.security.jaas.TopiaPolicy(this); policy.installPolicy(); Configuration.setConfiguration(new org.codelutin.topia.security.jaas.TopiaConfiguration("topia", this)); @@ -81,6 +100,10 @@ return TOPIA_SECURITY_PERSISTENCE_CLASSES; } + /** + * Permet de récupérer le DAO dans le contexte de sécurité. + * @return DAO du TopiaUser + */ public TopiaUserDAO getTopiaUserDAO() { try { return TopiaSecurityDAOHelper.getTopiaUserDAO(getSecurityContext()); @@ -90,6 +113,10 @@ return null; } + /** + * Permet de récupérer le DAO dans le contexte de sécurité. + * @return DAO du TopiaGroup + */ public TopiaGroupDAO getTopiaGroupDAO() { try { return TopiaSecurityDAOHelper.getTopiaGroupDAO(getSecurityContext()); @@ -99,6 +126,10 @@ return null; } + /** + * Permet de récupérer le DAO dans le contexte de sécurité. + * @return DAO du TopiaAuthorization + */ public TopiaAuthorizationDAO getTopiaAuthorizationDAO() { try { return TopiaSecurityDAOHelper.getTopiaAuthorizationDAO(getSecurityContext()); @@ -108,6 +139,10 @@ return null; } + /** + * Permet de récupérer le DAO dans le contexte de sécurité. + * @return DAO du TopiaEntityAuthorization + */ public TopiaEntityAuthorizationDAO getTopiaEntityAuthorizationDAO() { try { return TopiaSecurityDAOHelper.getTopiaEntityAuthorizationDAO(getSecurityContext()); @@ -117,6 +152,10 @@ return null; } + /** + * Permet de récupérer le DAO dans le contexte de sécurité. + * @return DAO du TopiaLinkAuthorization + */ public TopiaLinkAuthorizationDAO getTopiaLinkAuthorizationDAO() { try { return TopiaSecurityDAOHelper.getTopiaLinkAuthorizationDAO(getSecurityContext()); @@ -126,6 +165,10 @@ return null; } + /** + * Permet de récupérer le DAO dans le contexte de sécurité. + * @return DAO du TopiaAssociationAuthorization + */ public TopiaAssociationAuthorizationDAO getTopiaAssociationAuthorizationDAO() { try { return TopiaSecurityDAOHelper.getTopiaAssociationAuthorizationDAO(getSecurityContext());