From: <jbo...@li...> - 2006-01-20 10:54:14
|
Author: mic...@jb... Date: 2006-01-20 05:54:07 -0500 (Fri, 20 Jan 2006) New Revision: 2154 Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryFactory.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManagerImpl.java trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepoProxyHandler.java Log: added Principal to interface Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryFactory.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryFactory.java 2006-01-20 10:39:14 UTC (rev 2153) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryFactory.java 2006-01-20 10:54:07 UTC (rev 2154) @@ -20,9 +20,7 @@ * The default repository. This is stateless, meaning that a continuous connection is not required. */ public static RepositoryManager getRepository() { - RepoProxyHandler handler = new RepoProxyHandler(); - RepositoryManager manager = getProxy( handler ); - return manager; + return getRepo(null, false); } /** @@ -33,10 +31,17 @@ * This version can have performance benefits in some cases. */ public static RepositoryManager getStatefulRepository() { - RepoProxyHandler handler = new RepoProxyHandler(true); - RepositoryManager manager = getProxy( handler ); - return manager; + return getRepo(null, true); } + + /** + * User this factory if you want to have audited, controlled access to the repository. + * @param currentUser the user accessing the repository. + * @param stateful If the session is to be stateful or not (generally false is ideal). + */ + public static RepositoryManager getRepository(Principal currentUser, boolean stateful) { + return getRepo(currentUser, stateful); + } private static RepositoryManager getProxy(RepoProxyHandler handler) { RepositoryManager manager = (RepositoryManager) Proxy.newProxyInstance(RepositoryFactory.class.getClassLoader(), @@ -47,5 +52,11 @@ } + private static RepositoryManager getRepo(Principal user, boolean stateful) { + RepoProxyHandler handler = new RepoProxyHandler(stateful); + handler.setCurrentUser(user); + return getProxy(handler); + } + } Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManagerImpl.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManagerImpl.java 2006-01-20 10:39:14 UTC (rev 2153) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/RepositoryManagerImpl.java 2006-01-20 10:54:07 UTC (rev 2154) @@ -1,5 +1,6 @@ package org.drools.repository; +import java.security.Principal; import java.util.Enumeration; import java.util.Iterator; import java.util.List; @@ -27,6 +28,7 @@ RepositoryManager { private Session session; + private Principal currentUser; /** * Session is injected by the proxy. @@ -245,9 +247,10 @@ } - + /** Sets the current user principal for auditing, and access control purposes */ + public void setCurrentUser(Principal user) { + this.currentUser = user; + } - - } Modified: trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepoProxyHandler.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepoProxyHandler.java 2006-01-20 10:39:14 UTC (rev 2153) +++ trunk/labs/jbossrules/drools-repository/src/main/java/org/drools/repository/db/RepoProxyHandler.java 2006-01-20 10:54:07 UTC (rev 2154) @@ -3,6 +3,7 @@ import java.lang.reflect.InvocationHandler; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.security.Principal; import org.drools.repository.RepositoryException; import org.drools.repository.RepositoryManagerImpl; @@ -152,6 +153,11 @@ return HibernateUtil.getSessionFactory().getCurrentSession(); } } + + /** Pass through the current user for auditing and control purposes. */ + public void setCurrentUser(Principal user) { + this.repoImpl.setCurrentUser(user); + } } |