[jboss-svn-commits] JBL Code SVN: r36131 - in labs/jbossrules/soa_branches/BRMS-5.1.x: drools-guvnor/src/test/java/org/drools/guvnor/server/repository and 4 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Tue Nov 30 17:14:27 EST 2010


Author: kurt.stam at jboss.com
Date: 2010-11-30 17:14:26 -0500 (Tue, 30 Nov 2010)
New Revision: 36131

Modified:
   labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RepositoryStartupService.java
   labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RulesRepositoryManager.java
   labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/test/java/org/drools/guvnor/server/repository/MockRepositoryConfigurator.java
   labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepositoryConfigurator.java
   labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-api/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java
   labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-jr-impl/src/main/java/org/drools/repository/jackrabbit/JackrabbitRepositoryConfigurator.java
   labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-ms-impl/src/main/java/org/drools/repository/modeshape/ModeShapeRepositoryConfigurator.java
Log:
BRMS-451 reuse an active JAAS session. I've put the login in our JCR API since it seems to be different to do this for JR and MS.

Modified: labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RepositoryStartupService.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RepositoryStartupService.java	2010-11-30 21:18:35 UTC (rev 36130)
+++ labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RepositoryStartupService.java	2010-11-30 22:14:26 UTC (rev 36131)
@@ -44,7 +44,6 @@
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
-import javax.jcr.SimpleCredentials;
 
 import org.drools.repository.*;
 import org.drools.repository.events.StorageEventManager;
@@ -100,11 +99,11 @@
     @Create
     public void create() {
     	repository = getRepositoryInstance();
-    	String username = "admin";
+    	String username = ADMIN;
     	if (properties.containsKey(ADMIN_USER_PROPERTY)) {
     		username = properties.get(ADMIN_USER_PROPERTY);
     	}
-    	String password = "admin";
+    	String password = "password";
     	if (properties.containsKey(ADMIN_PASSWORD_PROPERTY)) {
     		password = properties.get(ADMIN_PASSWORD_PROPERTY);
     		if ("true".equalsIgnoreCase(properties.get(SECURE_PASSWORDS_PROPERTY))) {
@@ -113,7 +112,7 @@
     	} else {
     		log.debug("Could not find property " + ADMIN_PASSWORD_PROPERTY + " for user " + ADMIN);
     	}
-        sessionForSetup = newSession(ADMIN,password);
+        sessionForSetup = newSession(username,password);
         create( sessionForSetup );
         startMailboxService();
         registerCheckinListener();
@@ -134,11 +133,11 @@
 
     /** Start up the mailbox, flush out any messages that were left */
     private void startMailboxService() {
-    	String username = "mailman";
+    	String username = MAILMAN;
     	if (properties.containsKey(MAILMAN_USER_PROPERTY)) {
     		username = properties.get(MAILMAN_USER_PROPERTY);
     	}
-    	String password = "mailman";
+    	String password = "password";
     	if (properties.containsKey(MAILMAN_PASSWORD_PROPERTY)) {
     		password = properties.get(MAILMAN_PASSWORD_PROPERTY);
     		if ("true".equalsIgnoreCase(properties.get(SECURE_PASSWORDS_PROPERTY))) {
@@ -147,7 +146,7 @@
     	} else {
     		log.debug("Could not find property " + MAILMAN_PASSWORD_PROPERTY + " for user " + MAILMAN);
     	}
-        mailmanSession = new RulesRepository(newSession(MAILMAN, password));
+        mailmanSession = new RulesRepository(newSession(username, password));
         MailboxService.getInstance().init(mailmanSession);
         MailboxService.getInstance().wakeUp();
     }
@@ -203,8 +202,23 @@
     		properties.put(RulesRepositoryConfigurator.CONFIGURATOR_CLASS, clazz);
     	}
     }
+    
+    /**
+     * This will create a new Session, based on the current user.
+     * @return
+     */
+    public Session newSession(String userName) {
 
+        try {
+        	return configurator.login(userName);
+        } catch ( LoginException e ) {
+            throw new RulesRepositoryException( "Unable to login to JCR backend." );
+        } catch ( RepositoryException e ) {
+            throw new RulesRepositoryException( e );
+        }
+    }
 
+
     /**
      * This will create a new Session, based on the current user.
      * @return
@@ -212,16 +226,18 @@
     public Session newSession(String userName, String password) {
 
         try {
-            return repository.login( new SimpleCredentials(userName, password.toCharArray()) );
+        	return configurator.login(userName, password);
         } catch ( LoginException e ) {
-            throw new RulesRepositoryException( "Unable to login to JCR backend." );
+            throw new RulesRepositoryException("UserName: [ " + userName + "] Unable to login to JCR backend." ,e);
         } catch ( RepositoryException e ) {
             throw new RulesRepositoryException( e );
         }
     }
     
+   
     
     
+    
     private static String decode(String secret)
     {
     	String decodedPassword = secret;

Modified: labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RulesRepositoryManager.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RulesRepositoryManager.java	2010-11-30 21:18:35 UTC (rev 36130)
+++ labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/main/java/org/drools/guvnor/server/repository/RulesRepositoryManager.java	2010-11-30 22:14:26 UTC (rev 36131)
@@ -31,8 +31,6 @@
  * limitations under the License.
  */
 
-
-
 import org.drools.repository.RulesRepository;
 import org.jboss.seam.ScopeType;
 import org.jboss.seam.annotations.AutoCreate;
@@ -44,6 +42,8 @@
 import org.jboss.seam.annotations.Unwrap;
 import org.jboss.seam.contexts.Contexts;
 import org.jboss.seam.security.Identity;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * This enhances the BRMS repository for lifecycle management.
@@ -54,6 +54,7 @@
 @Name("repository")
 public class RulesRepositoryManager {
 
+	private static final Logger log = LoggerFactory.getLogger(RulesRepositoryManager.class);
     private static String READ_ONLY_USER = "anonymous";
     
     @In
@@ -71,9 +72,7 @@
         if (userName == null) {
             userName = READ_ONLY_USER;
         }
-        //When using JAAS the user is already authenticated, so the password is not looked at.
-        //When not using JAAS JR, will work fine, MS will fail
-        repository = new RulesRepository(repositoryConfiguration.newSession(userName, "password") );
+        repository = new RulesRepository(repositoryConfiguration.newSession(userName) );
     }
     
     @Unwrap

Modified: labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/test/java/org/drools/guvnor/server/repository/MockRepositoryConfigurator.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/test/java/org/drools/guvnor/server/repository/MockRepositoryConfigurator.java	2010-11-30 21:18:35 UTC (rev 36130)
+++ labs/jbossrules/soa_branches/BRMS-5.1.x/drools-guvnor/src/test/java/org/drools/guvnor/server/repository/MockRepositoryConfigurator.java	2010-11-30 22:14:26 UTC (rev 36131)
@@ -35,6 +35,7 @@
 
 import java.util.Properties;
 
+import javax.jcr.LoginException;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
@@ -67,5 +68,12 @@
 		// TODO Auto-generated method stub
 		
 	}
+
+	@Override
+	public Session login(String userName) throws LoginException,
+			RepositoryException {
+		// TODO Auto-generated method stub
+		return null;
+	}
     
 }
\ No newline at end of file

Modified: labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepositoryConfigurator.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepositoryConfigurator.java	2010-11-30 21:18:35 UTC (rev 36130)
+++ labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepositoryConfigurator.java	2010-11-30 22:14:26 UTC (rev 36131)
@@ -82,75 +82,83 @@
 		return rulesRepositoryConfigurator;
 	}
 	
+	public Session login(String userName, String password) throws RepositoryException {
+		return jcrRepositoryConfigurator.login(userName, password);
+	}
+	
+	public Session login(String userName) throws RepositoryException {
+		return jcrRepositoryConfigurator.login(userName);
+	}
+	
 
-/**
- * Attempts to setup the repository. If the work that it tries to do has already been done, it will return without modifying
- * the repository. This will register any node types, and setup bootstrap nodes as needed. This will not erase any data.
- * 
- * @throws RepositoryException
- */
-public void setupRepository(Session session) throws RepositoryException {
-	log.info("Setting up the repository, registering node types etc.");
-	try {
-		Node root = session.getRootNode();
-		Workspace ws = session.getWorkspace();
-
-		//no need to set it up again, skip it if it has.
-		boolean registered = RulesRepositoryAdministrator.isNamespaceRegistered( session );
- 
-		if (!registered) {
-			ws.getNamespaceRegistry().registerNamespace("drools", RulesRepository.DROOLS_URI);
-
-			//Note, the order in which they are registered actually does matter !
-			jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/tag_node_type.cnd", session, ws);
-			jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/state_node_type.cnd", session, ws);
-			jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/versionable_node_type.cnd", session, ws);
-			jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/versionable_asset_folder_node_type.cnd", session, ws);
-
-			jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/rule_node_type.cnd", session, ws);
-			jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/rulepackage_node_type.cnd", session, ws);
+	/**
+	 * Attempts to setup the repository. If the work that it tries to do has already been done, it will return without modifying
+	 * the repository. This will register any node types, and setup bootstrap nodes as needed. This will not erase any data.
+	 * 
+	 * @throws RepositoryException
+	 */
+	public void setupRepository(Session session) throws RepositoryException {
+		log.info("Setting up the repository, registering node types etc.");
+		try {
+			Node root = session.getRootNode();
+			Workspace ws = session.getWorkspace();
+	
+			//no need to set it up again, skip it if it has.
+			boolean registered = RulesRepositoryAdministrator.isNamespaceRegistered( session );
+	 
+			if (!registered) {
+				ws.getNamespaceRegistry().registerNamespace("drools", RulesRepository.DROOLS_URI);
+	
+				//Note, the order in which they are registered actually does matter !
+				jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/tag_node_type.cnd", session, ws);
+				jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/state_node_type.cnd", session, ws);
+				jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/versionable_node_type.cnd", session, ws);
+				jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/versionable_asset_folder_node_type.cnd", session, ws);
+	
+				jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/rule_node_type.cnd", session, ws);
+				jcrRepositoryConfigurator.registerNodeTypesFromCndFile("/node_type_definitions/rulepackage_node_type.cnd", session, ws);
+			}
+	
+			// Setup the rule repository node
+			Node repositoryNode = RulesRepository.addNodeIfNew(root, RulesRepository.RULES_REPOSITORY_NAME, "nt:folder");
+	
+	
+	
+			// Setup the RulePackageItem area        
+			Node packageAreaNode = RulesRepository.addNodeIfNew(repositoryNode, RulesRepository.RULE_PACKAGE_AREA, "nt:folder");
+	
+			// Setup the global area        
+			if(!packageAreaNode.hasNode(RulesRepository.RULE_GLOBAL_AREA)){
+				Node globalAreaNode = RulesRepository.addNodeIfNew(packageAreaNode, RulesRepository.RULE_GLOBAL_AREA, PackageItem.RULE_PACKAGE_TYPE_NAME);
+				globalAreaNode.addNode( PackageItem.ASSET_FOLDER_NAME,  "drools:versionableAssetFolder" );
+				globalAreaNode.setProperty( PackageItem.TITLE_PROPERTY_NAME,  RulesRepository.RULE_GLOBAL_AREA);
+				globalAreaNode.setProperty( AssetItem.DESCRIPTION_PROPERTY_NAME, "the global area that holds sharable assets");         
+				globalAreaNode.setProperty(AssetItem.FORMAT_PROPERTY_NAME,	PackageItem.PACKAGE_FORMAT);
+				globalAreaNode.setProperty(PackageItem.CREATOR_PROPERTY_NAME, session.getUserID());
+				Calendar lastModified = Calendar.getInstance();
+				globalAreaNode.setProperty(PackageItem.LAST_MODIFIED_PROPERTY_NAME,	lastModified);
+			}
+	
+			// Setup the Snapshot area        
+			RulesRepository.addNodeIfNew(repositoryNode, RulesRepository.PACKAGE_SNAPSHOT_AREA, "nt:folder");
+	
+			//Setup the Category area                
+			RulesRepository.addNodeIfNew(repositoryNode, RulesRepository.TAG_AREA, "nt:folder");
+	
+			//Setup the State area                
+			RulesRepository.addNodeIfNew(repositoryNode, RulesRepository.STATE_AREA, "nt:folder");
+	
+			//and we need the "Draft" state
+			RulesRepository.addNodeIfNew( repositoryNode.getNode( RulesRepository.STATE_AREA ), StateItem.DRAFT_STATE_NAME, StateItem.STATE_NODE_TYPE_NAME );
+	
+			session.save();                        
 		}
-
-		// Setup the rule repository node
-		Node repositoryNode = RulesRepository.addNodeIfNew(root, RulesRepository.RULES_REPOSITORY_NAME, "nt:folder");
-
-
-
-		// Setup the RulePackageItem area        
-		Node packageAreaNode = RulesRepository.addNodeIfNew(repositoryNode, RulesRepository.RULE_PACKAGE_AREA, "nt:folder");
-
-		// Setup the global area        
-		if(!packageAreaNode.hasNode(RulesRepository.RULE_GLOBAL_AREA)){
-			Node globalAreaNode = RulesRepository.addNodeIfNew(packageAreaNode, RulesRepository.RULE_GLOBAL_AREA, PackageItem.RULE_PACKAGE_TYPE_NAME);
-			globalAreaNode.addNode( PackageItem.ASSET_FOLDER_NAME,  "drools:versionableAssetFolder" );
-			globalAreaNode.setProperty( PackageItem.TITLE_PROPERTY_NAME,  RulesRepository.RULE_GLOBAL_AREA);
-			globalAreaNode.setProperty( AssetItem.DESCRIPTION_PROPERTY_NAME, "the global area that holds sharable assets");         
-			globalAreaNode.setProperty(AssetItem.FORMAT_PROPERTY_NAME,	PackageItem.PACKAGE_FORMAT);
-			globalAreaNode.setProperty(PackageItem.CREATOR_PROPERTY_NAME, session.getUserID());
-			Calendar lastModified = Calendar.getInstance();
-			globalAreaNode.setProperty(PackageItem.LAST_MODIFIED_PROPERTY_NAME,	lastModified);
+		catch(Exception e) {
+			log.error("Caught Exception", e);
+			System.err.println(e.getMessage());
+			throw new RepositoryException(e);
 		}
-
-		// Setup the Snapshot area        
-		RulesRepository.addNodeIfNew(repositoryNode, RulesRepository.PACKAGE_SNAPSHOT_AREA, "nt:folder");
-
-		//Setup the Category area                
-		RulesRepository.addNodeIfNew(repositoryNode, RulesRepository.TAG_AREA, "nt:folder");
-
-		//Setup the State area                
-		RulesRepository.addNodeIfNew(repositoryNode, RulesRepository.STATE_AREA, "nt:folder");
-
-		//and we need the "Draft" state
-		RulesRepository.addNodeIfNew( repositoryNode.getNode( RulesRepository.STATE_AREA ), StateItem.DRAFT_STATE_NAME, StateItem.STATE_NODE_TYPE_NAME );
-
-		session.save();                        
 	}
-	catch(Exception e) {
-		log.error("Caught Exception", e);
-		System.err.println(e.getMessage());
-		throw new RepositoryException(e);
-	}
-}
 
 	public void shutdown() {
 		jcrRepositoryConfigurator.shutdown();

Modified: labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-api/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-api/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java	2010-11-30 21:18:35 UTC (rev 36130)
+++ labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-api/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java	2010-11-30 22:14:26 UTC (rev 36131)
@@ -18,10 +18,13 @@
 
 import java.util.Properties;
 
+import javax.jcr.Credentials;
+import javax.jcr.LoginException;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.RepositoryFactory;
 import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
 import javax.jcr.Workspace;
 
 import org.drools.repository.util.ClassUtil;
@@ -39,6 +42,7 @@
 public abstract class JCRRepositoryConfigurator {
 
 	protected RepositoryFactory factory;
+	protected Repository repository;
 
 	public static final String JCR_IMPL_CLASS            = "org.drools.repository.jcr.impl";
 	protected static String defaultJCRImplClass = null;
@@ -71,11 +75,11 @@
 //					}
 //				}
 			 
-			Class jcrFactory = ClassUtil.forName(jcrImplementationClass, this.getClass());
+			Class<?> jcrFactory = ClassUtil.forName(jcrImplementationClass, this.getClass());
 			RepositoryFactory factory = (RepositoryFactory) jcrFactory.newInstance();
-			Repository repo = factory.getRepository(properties);
+			repository = factory.getRepository(properties);
 			this.factory = factory;
-			return repo;
+			return repository;
 				
 		} catch (Exception re) {
 			throw new RepositoryException(re);
@@ -84,6 +88,13 @@
 //		String msg = "Unable to find an appropriate JCR 2.0 RepositoryFactory; check the 'drools_repository.properties' configuration file.";
 //		throw new RepositoryException(msg);
 	}
+	
+	public abstract Session login(String userName) throws LoginException,RepositoryException;
+	
+	public Session login (String userName, String password) throws RepositoryException {
+		Credentials credentials = new SimpleCredentials(userName, password.toCharArray());
+        return repository.login( credentials );
+	}
 
 	public abstract void registerNodeTypesFromCndFile(String cndFileName, Session session, Workspace workspace) throws RepositoryException;
 

Modified: labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-jr-impl/src/main/java/org/drools/repository/jackrabbit/JackrabbitRepositoryConfigurator.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-jr-impl/src/main/java/org/drools/repository/jackrabbit/JackrabbitRepositoryConfigurator.java	2010-11-30 21:18:35 UTC (rev 36130)
+++ labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-jr-impl/src/main/java/org/drools/repository/jackrabbit/JackrabbitRepositoryConfigurator.java	2010-11-30 22:14:26 UTC (rev 36131)
@@ -20,9 +20,12 @@
 import java.io.Reader;
 import java.util.Properties;
 
+import javax.jcr.Credentials;
+import javax.jcr.LoginException;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
 import javax.jcr.Workspace;
 
 import org.apache.jackrabbit.commons.cnd.CndImporter;
@@ -40,7 +43,6 @@
 
 	
     private static final Logger log = LoggerFactory.getLogger(JackrabbitRepositoryConfigurator.class);
-    private static TransientRepository transientRepository = null;
     
     public JackrabbitRepositoryConfigurator() {
 		super();
@@ -52,13 +54,18 @@
 
     	String repoRootDir = properties.getProperty(REPOSITORY_ROOT_DIRECTORY);
         if (repoRootDir == null) {
-        	transientRepository = new TransientRepository();
+        	repository = new TransientRepository();
         } else { 
-        	transientRepository =  new TransientRepository(repoRootDir + "/repository.xml", repoRootDir);
+        	repository =  new TransientRepository(repoRootDir + "/repository.xml", repoRootDir);
         }
-        return transientRepository;
+        return repository;
 
     }
+	
+	public Session login (String userName) throws LoginException,RepositoryException {
+		Credentials credentials = new SimpleCredentials(userName, "password".toCharArray());
+        return repository.login( credentials );
+	}
     
     public void registerNodeTypesFromCndFile(String cndFileName, Session session, Workspace workspace) throws RepositoryException {
         try {
@@ -78,7 +85,9 @@
      * @see org.drools.repository.JCRRepositoryConfigurator#shutdown()
      */
     public void shutdown() {
-        transientRepository.shutdown();
+    	if (repository instanceof TransientRepository) {
+            ((TransientRepository)repository).shutdown();
+        }
     }
     
 }

Modified: labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-ms-impl/src/main/java/org/drools/repository/modeshape/ModeShapeRepositoryConfigurator.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-ms-impl/src/main/java/org/drools/repository/modeshape/ModeShapeRepositoryConfigurator.java	2010-11-30 21:18:35 UTC (rev 36130)
+++ labs/jbossrules/soa_branches/BRMS-5.1.x/drools-repo/jcr-ms-impl/src/main/java/org/drools/repository/modeshape/ModeShapeRepositoryConfigurator.java	2010-11-30 22:14:26 UTC (rev 36131)
@@ -1,5 +1,10 @@
 package org.drools.repository.modeshape;
 
+import java.security.AccessController;
+import java.security.PrivilegedActionException;
+import java.security.PrivilegedExceptionAction;
+
+import javax.jcr.LoginException;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.Workspace;
@@ -28,8 +33,22 @@
 		}
 		
 	}
+
+	public Session login(String userName) throws LoginException,RepositoryException {
+		Session session = null;
+		try {
+	        session = AccessController.doPrivileged( new PrivilegedExceptionAction<Session>() {
+	            public Session run() throws Exception {
+	                return repository.login();
+	            }
+	        });
+		} catch (PrivilegedActionException pae) {
+			throw new RepositoryException(pae.getMessage(),pae);
+		}
+		return session;
+	}
 	
-    public void shutdown() {
+	public void shutdown() {
         if (factory instanceof org.modeshape.jcr.api.RepositoryFactory) {
             ((org.modeshape.jcr.api.RepositoryFactory)factory).shutdown();
         }



More information about the jboss-svn-commits mailing list