[jboss-svn-commits] JBL Code SVN: r6142 - in labs/jbossrules/trunk/drools-repository/src: main/java/org/drools/repository test/java/org/drools/repository
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Mon Sep 11 11:43:33 EDT 2006
Author: michael.neale at jboss.com
Date: 2006-09-11 11:43:26 -0400 (Mon, 11 Sep 2006)
New Revision: 6142
Modified:
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java
labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RepositorySession.java
labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java
Log:
refactoring
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java 2006-09-11 15:37:51 UTC (rev 6141)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RepositoryConfigurator.java 2006-09-11 15:43:26 UTC (rev 6142)
@@ -1,5 +1,6 @@
package org.drools.repository;
+import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.util.Iterator;
@@ -22,41 +23,33 @@
import org.apache.jackrabbit.core.nodetype.compact.CompactNodeTypeDefReader;
import org.apache.log4j.Logger;
-/** This contains code to initialise the repository for jackrabbit */
+/**
+ * This contains code to initialise the repository for jackrabbit.
+ * This is mostly a collection of utilities.
+ * Any jackrabbit specific code needs to go in here.
+ */
public class RepositoryConfigurator {
private static final Logger log = Logger.getLogger(RepositoryConfigurator.class);
- private Repository repository;
-
- /**
- * This will create a new repository (or clear an existing one)
- * @param clearRepository True if you want it to wipe the contents and set it up.
+ /**
+ * @return a new Repository instance.
+ * There should only be one instance of this in an application.
+ * Generally, one repository (which may be bineded to JNDI) can spawn multiple sessions
+ * for each user as needed.
+ * Typically this would be created on application startup.
*/
- public RepositoryConfigurator(boolean clearRepository) {
+ public Repository createRepository() {
try {
-
- repository = new TransientRepository();
-
- if(clearRepository) {
- Session session = login();
- this.clearRepository(session);
- this.setupRepository(session);
- }
-
-
+ return new TransientRepository();
+ } catch ( IOException e ) {
+ throw new RulesRepositoryException("Unable to create a Repository instance.", e);
}
- catch (Exception e) {
- log.error("Caught Exception", e);
- }
}
- public RepositoryConfigurator() {
- this(false);
- }
-
- /** Create a new user session */
- public Session login() throws LoginException,
+
+ /** Create a new user session for the given repository instance. */
+ public Session login(Repository repository) throws LoginException,
RepositoryException {
Session session = repository.login(
new SimpleCredentials("username", "password".toCharArray()));
@@ -71,7 +64,7 @@
/**
* Clears out the entire tree below the rules repository node of the JCR repository.
*/
- public void clearRepository(Session session) {
+ public void clearRulesRepository(Session session) {
try {
if (session.getRootNode().hasNode( RulesRepository.RULES_REPOSITORY_NAME )) {
@@ -92,11 +85,12 @@
/**
* Attempts to setup the repository. If the work that it tries to do has already been done, it
- * will return with modifying the repository.
+ * will return without modifying the repository.
+ * This will not erase any data.
*
* @throws RulesRepositoryException
*/
- protected void setupRepository(Session session) throws RulesRepositoryException {
+ public void setupRulesRepository(Session session) throws RulesRepositoryException {
System.out.println("Setting up the repository, registering node types etc.");
try {
Node root = session.getRootNode();
Modified: labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2006-09-11 15:37:51 UTC (rev 6141)
+++ labs/jbossrules/trunk/drools-repository/src/main/java/org/drools/repository/RulesRepository.java 2006-09-11 15:43:26 UTC (rev 6142)
@@ -54,6 +54,7 @@
* @author Ben Truitt
*/
public class RulesRepository {
+
public static final String DROOLS_URI = "http://www.jboss.org/drools-repository/1.0";
private static final Logger log = Logger.getLogger(RulesRepository.class);
@@ -678,7 +679,7 @@
public StateItem getState(String name) throws RulesRepositoryException {
try {
Node folderNode = this.getAreaNode(STATE_AREA);
- Node stateNode = this.addNodeIfNew(folderNode, name, StateItem.STATE_NODE_TYPE_NAME);
+ Node stateNode = RulesRepository.addNodeIfNew(folderNode, name, StateItem.STATE_NODE_TYPE_NAME);
return new StateItem(this, stateNode);
}
catch(Exception e) {
@@ -699,6 +700,9 @@
* @throws RulesRepositoryException
*/
public CategoryItem getOrCreateCategory(String tagName) throws RulesRepositoryException {
+ if (tagName == null || "".equals( tagName )) {
+ throw new RuntimeException("Empty category name not permitted.");
+ }
log.debug("getting tag with name: " + tagName);
try {
@@ -709,7 +713,7 @@
while(tok.hasMoreTokens()) {
String currentTagName = tok.nextToken();
- tagNode = this.addNodeIfNew(folderNode, currentTagName, CategoryItem.TAG_NODE_TYPE_NAME);
+ tagNode = RulesRepository.addNodeIfNew(folderNode, currentTagName, CategoryItem.TAG_NODE_TYPE_NAME);
folderNode = tagNode;
}
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RepositorySession.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RepositorySession.java 2006-09-11 15:37:51 UTC (rev 6141)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/RepositorySession.java 2006-09-11 15:43:26 UTC (rev 6142)
@@ -1,12 +1,12 @@
package org.drools.repository;
import javax.jcr.LoginException;
+import javax.jcr.Repository;
import javax.jcr.RepositoryException;
+import javax.jcr.Session;
import junit.framework.Assert;
-import org.drools.repository.RulesRepository;
-
public class RepositorySession {
private static ThreadLocal repo = new ThreadLocal();
@@ -14,17 +14,29 @@
public static RulesRepository getRepository() {
Object repoInstance = repo.get();
if ( repoInstance == null ) {
- RepositoryConfigurator config = new RepositoryConfigurator(true);
+ RepositoryConfigurator config = new RepositoryConfigurator();
+ //create a repo instance (startup)
+ Repository repository = config.createRepository();
+
+ //create a session
+ Session session;
try {
- repoInstance = new RulesRepository( config.login() );
- } catch ( LoginException e ) {
- Assert.fail( "Unable to login " + e.getMessage() );
- } catch ( RepositoryException e ) {
- Assert.fail("Repo exception when logging in: " + e.getMessage());
+ session = config.login( repository );
+ //clear out and setup
+ config.clearRulesRepository( session );
+ config.setupRulesRepository( session );
+
+
+ repoInstance = new RulesRepository( session );
+
+ repo.set( repoInstance );
+ } catch ( Exception e) {
+ Assert.fail("Unable to initialise repository :" + e.getMessage());
}
- repo.set( repoInstance );
+
+
}
return (RulesRepository) repoInstance;
}
Modified: labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java
===================================================================
--- labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java 2006-09-11 15:37:51 UTC (rev 6141)
+++ labs/jbossrules/trunk/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java 2006-09-11 15:43:26 UTC (rev 6142)
@@ -36,9 +36,10 @@
}
public void xxtestRun() throws Exception {
- RepositoryConfigurator config = new RepositoryConfigurator(false);
- repo = new RulesRepository(config.login());
+ RepositoryConfigurator config = new RepositoryConfigurator();
+ repo = new RulesRepository(config.login(config.createRepository()));
+
long start = System.currentTimeMillis();
//setupData( repo );
System.out.println("time to add, version and tag 5000: " + (System.currentTimeMillis() - start));
More information about the jboss-svn-commits
mailing list