[jboss-svn-commits] JBL Code SVN: r35620 - in labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo: drools-repository/src/main/java/org/drools/repository and 6 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Oct 20 20:16:07 EDT 2010


Author: kurt.stam at jboss.com
Date: 2010-10-20 20:16:06 -0400 (Wed, 20 Oct 2010)
New Revision: 35620

Added:
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/ClassUtil.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepositoryConfigurator.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/resources/drools_repository.properties
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/RepositoryTestCase.java
Removed:
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/JackrabbitRepositoryConfigurator.java
Modified:
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/pom.xml
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/AssetItem.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/CategorisableItem.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ArchiveItemTest.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/CategoryItemTest.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ShareableAssetItemTest.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/events/StorageEventManagerTest.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/migration/MigrateDroolsPackageTest.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/scm/jcr/JcrActionFactoryTest.java
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-jr-impl/pom.xml
Log:
BRMS-402 switching drools-repository to use jcr-api using the jr-impl.


Property changes on: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository
___________________________________________________________________
Name: svn:ignore
   - target
local

.metadata
.settings
.wtpmodules

nbproject

*.ipr
*.iws
*.iml


repository
repository.xml
derby.log


.classpath
.project

   + target
local
.metadata
.settings
.wtpmodules
nbproject
*.ipr
*.iws
*.iml
repository
repository.xml
derby.log
.classpath
.project
scalabilityTestRepo


Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/pom.xml
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/pom.xml	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/pom.xml	2010-10-21 00:16:06 UTC (rev 35620)
@@ -35,11 +35,24 @@
       <!-- Internal dependencies -->
       <!-- External dependencies -->
       <!-- first the deps for the repo API itself (Jackrabbit based) -->
+       <dependency>
+	      <artifactId>drools-repository-jcr-api</artifactId>
+	      <groupId>org.drools</groupId>
+	      <version>5.1.0.BRMS</version>
+      </dependency>
       <dependency>
-         <groupId>org.apache.jackrabbit</groupId>
-         <artifactId>jackrabbit-core</artifactId>
+	      <artifactId>drools-repository-jcr-jr-impl</artifactId>
+	      <groupId>org.drools</groupId>
+	      <version>5.1.0.BRMS</version>
       </dependency>
+      <!--  comment out the jr-impl and use the jcr-ms-impl
       <dependency>
+	      <artifactId>drools-repository-jcr-ms-impl</artifactId>
+	      <groupId>org.drools</groupId>
+	      <version>5.1.0.BRMS</version>
+      </dependency>
+      -->
+      <dependency>
          <groupId>javax.jcr</groupId>
          <artifactId>jcr</artifactId>
       </dependency>

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/AssetItem.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/AssetItem.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/AssetItem.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -306,8 +306,10 @@
 		checkIsUpdateable();
 		checkout();
 		try {
-			this.node.setProperty(DATE_EFFECTIVE_PROPERTY_NAME,
+			if (newDateEffective!=null || this.node.hasProperty(DATE_EFFECTIVE_PROPERTY_NAME)) {
+				this.node.setProperty(DATE_EFFECTIVE_PROPERTY_NAME,
 					newDateEffective);
+			}
 		} catch (RepositoryException e) {
 			log.error("Caught Exception", e);
 			throw new RulesRepositoryException(e);
@@ -367,7 +369,9 @@
 		checkout();
 
 		try {
-			this.node.setProperty(DATE_EXPIRED_PROPERTY_NAME, newDateExpired);
+			if (newDateExpired!=null || this.node.hasProperty(DATE_EXPIRED_PROPERTY_NAME)) {
+				this.node.setProperty(DATE_EXPIRED_PROPERTY_NAME, newDateExpired);
+			}
 		} catch (Exception e) {
 			log.error("Caught Exception", e);
 			throw new RulesRepositoryException(e);

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/CategorisableItem.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/CategorisableItem.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/CategorisableItem.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -149,18 +149,14 @@
             Node ruleNode = getVersionContentNode();
             try {
                 Property tagReferenceProperty = ruleNode.getProperty( CATEGORY_PROPERTY_NAME );
-                Value[] tagValues = tagReferenceProperty.getValues();
-                for ( int i = 0; i < tagValues.length; i++ ) {
-                    try {
-                        Node tagNode = this.node.getSession().getNodeByIdentifier( tagValues[i].getString() );
-                        CategoryItem tagItem = new CategoryItem( this.rulesRepository,
-                                                                 tagNode );
-                        ac.add(tagItem);
-
-                    } catch (ItemNotFoundException e) {
-                        //ignore
-                        log.debug( "Was unable to load a category by UUID - must have been removed." );
-                    }
+                if (tagReferenceProperty.isMultiple()) {
+	                Value[] tagValues = tagReferenceProperty.getValues();
+	                for ( int i = 0; i < tagValues.length; i++ ) {
+	                	addTag(ac, tagValues[i].getString());
+	                }
+                } else {
+                	Value tagValue = tagReferenceProperty.getValue();
+                	addTag(ac, tagValue.getString());
                 }
             } catch ( PathNotFoundException e ) {
                 //the property doesn't even exist yet, so just return nothing
@@ -170,7 +166,20 @@
             throw new RulesRepositoryException( e );
         }
 	}
+	
+	private void addTag(Accum ac, String tag) throws RepositoryException {
+		try {
+            Node tagNode = this.node.getSession().getNodeByIdentifier( tag );
+            CategoryItem tagItem = new CategoryItem( this.rulesRepository,
+                                                     tagNode );
+            ac.add(tagItem);
 
+        } catch (ItemNotFoundException e) {
+            //ignore
+            log.debug( "Was unable to load a category by UUID - must have been removed." );
+        }
+	}
+
     /**
      * This will show a summary list of categories.
      */

Copied: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/ClassUtil.java (from rev 35609, labs/jbossrules/branches/kstam_guvnor_modeshape/drools-repository/src/main/java/org/drools/repository/ClassUtil.java)
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/ClassUtil.java	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/ClassUtil.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -0,0 +1,363 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.drools.repository;
+
+
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.lang.reflect.Proxy;
+import java.net.URISyntaxException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+
+import org.apache.log4j.Logger;
+
+/**
+ * Utility methods to aid in class/resource loading.
+ * 
+ * @author kevin
+ */
+public class ClassUtil
+{
+	private static Logger logger = Logger.getLogger(ClassUtil.class);
+
+	/**
+	 * Load the specified class.
+	 * @param className The name of the class to load.
+	 * @param caller The class of the caller.
+	 * @return The specified class.
+	 * @throws ClassNotFoundException If the class cannot be found.
+	 */
+	public static Class forName(final String className, final Class caller)
+	throws ClassNotFoundException
+	{
+		final ClassLoader threadClassLoader = Thread.currentThread().getContextClassLoader() ;
+		if (threadClassLoader != null)
+		{
+			try
+			{
+				return Class.forName(className, true, threadClassLoader) ;
+			}
+			catch (final ClassNotFoundException cnfe)
+			{
+				if (cnfe.getException() != null)
+				{
+					throw cnfe ;
+				}
+			}
+		}
+
+
+		final ClassLoader classLoader = caller.getClassLoader() ;
+		if (classLoader != null)
+		{
+			try
+			{
+				return Class.forName(className, true, classLoader) ;
+			}
+			catch (final ClassNotFoundException cnfe)
+			{
+				if (cnfe.getException() != null)
+				{
+					throw cnfe ;
+				}
+			}
+		}
+
+		return Class.forName(className, true, ClassLoader.getSystemClassLoader()) ;
+	}
+
+	/**
+	 * Resolve a proxy for the specified interfaces.
+	 * @param interfaces The interfaces associated with the proxy.
+	 * @param caller The class of the caller.
+	 * @return The specified proxy class.
+	 * @throws ClassNotFoundException If the class cannot be found.
+	 */
+	public static Class resolveProxy(final String[] interfaces, final Class caller)
+	throws ClassNotFoundException
+	{
+		final int numInterfaces = (interfaces == null ? 0 : interfaces.length) ;
+		if (numInterfaces == 0)
+		{
+			throw new ClassNotFoundException("Cannot generate proxy with no interfaces") ;
+		}
+
+		final Class[] interfaceClasses = new Class[numInterfaces] ;
+		for(int count = 0 ; count < numInterfaces ; count++)
+		{
+			interfaceClasses[count] = forName(interfaces[count], caller) ;
+		}
+
+		final ClassLoader proxyClassLoader ;
+		final ClassLoader threadClassLoader = Thread.currentThread().getContextClassLoader() ;
+		if (threadClassLoader != null)
+		{
+			proxyClassLoader = threadClassLoader ;
+		}
+		else
+		{
+			final ClassLoader classLoader = caller.getClassLoader() ;
+			if (classLoader != null)
+			{
+				proxyClassLoader = classLoader ;
+			}
+			else
+			{
+				proxyClassLoader = ClassLoader.getSystemClassLoader() ;
+			}
+		}
+
+		return Proxy.getProxyClass(proxyClassLoader, interfaceClasses) ;
+	}
+
+	/**
+	 * Get the specified resource as a stream.
+	 * @param resourceName The name of the class to load.
+	 * @param caller The class of the caller.
+	 * @return The input stream for the resource or null if not found.
+	 */
+	public static InputStream getResourceAsStream(final String resourceName, final Class caller)
+	{
+		final String resource ;
+		if (resourceName.startsWith("/"))
+		{
+			resource = resourceName.substring(1) ;
+		}
+		else
+		{
+			final Package callerPackage = caller.getPackage() ;
+			if (callerPackage != null)
+			{
+				resource = callerPackage.getName().replace('.', '/') + '/' + resourceName ;
+			}
+			else
+			{
+				resource = resourceName ;
+			}
+		}
+		final ClassLoader threadClassLoader = Thread.currentThread().getContextClassLoader() ;
+		if (threadClassLoader != null)
+		{
+			final InputStream is = threadClassLoader.getResourceAsStream(resource) ;
+			if (is != null)
+			{
+				return is ;
+			}
+		}
+
+		final ClassLoader classLoader = caller.getClassLoader() ;
+		if (classLoader != null)
+		{
+			final InputStream is = classLoader.getResourceAsStream(resource) ;
+			if (is != null)
+			{
+				return is ;
+			}
+		}
+
+		return ClassLoader.getSystemResourceAsStream(resource) ;
+	}
+
+	public static URL getResource(final String resourceName, final Class<?> caller)
+	{
+		final String resource ;
+		if (resourceName.startsWith("/"))
+		{
+			resource = resourceName.substring(1) ;
+		}
+		else
+		{
+			final Package callerPackage = caller.getPackage() ;
+			if (callerPackage != null)
+			{
+				resource = callerPackage.getName().replace('.', '/') + '/' + resourceName ;
+			}
+			else
+			{
+				resource = resourceName ;
+			}
+		}
+		final ClassLoader threadClassLoader = Thread.currentThread().getContextClassLoader() ;
+		if (threadClassLoader != null)
+		{
+			final URL url = threadClassLoader.getResource(resource) ;
+			if (url != null)
+			{
+				return url ;
+			}
+		}
+
+		final ClassLoader classLoader = caller.getClassLoader() ;
+		if (classLoader != null)
+		{
+			final URL url = classLoader.getResource(resource) ;
+			if (url != null)
+			{
+				return url ;
+			}
+		}
+
+		return ClassLoader.getSystemResource(resource) ;
+	}
+
+
+	public static List<URL> getResources(String resourcePath, Class<?> caller) throws IOException {
+		ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+
+		if(resourcePath.startsWith("/")) {
+			resourcePath = resourcePath.substring(1);
+		}
+
+		if (classLoader != null) {
+			return toList(classLoader.getResources(resourcePath));
+		}
+
+		classLoader = caller.getClassLoader();
+		if (classLoader != null) {
+			return toList(classLoader.getResources(resourcePath));
+		}
+
+		return new ArrayList<URL>();
+	}
+
+	private static <T> List<T> toList(Enumeration<T> objects) {
+		List<T> theList = new ArrayList<T>();
+		while(objects.hasMoreElements()) {
+			theList.add(objects.nextElement());
+		}        
+		return theList;
+	}
+
+	/**
+	 * Get a package name and convert it to a path value, so it can be used
+	 * in calls to methods like {@link #getResourceAsStream}.
+	 * <p/>
+	 * Adds a '/' prefix and converts all '." characters to '/'.  Doesn't add a
+	 * trailing slash.
+	 *
+	 * @param packageObj The package.
+	 * @return The package path.
+	 */
+	public static String getPath(Package packageObj) {
+		return "/" + packageObj.getName().replace('.', '/');
+	}
+
+	public static List<String> getResourceList(String regex, Class caller) {
+		ClasspathResourceFilter filter = new ClasspathResourceFilter(regex);
+		ClassLoader classLoader;
+
+		classLoader = Thread.currentThread().getContextClassLoader();
+		if(classLoader instanceof URLClassLoader) {
+			filter.filter((URLClassLoader) classLoader);
+		}
+		classLoader = caller.getClassLoader();
+		if(classLoader instanceof URLClassLoader) {
+			filter.filter((URLClassLoader) classLoader);
+		}
+
+		return filter.getResourceList();
+	}
+
+	private static class ClasspathResourceFilter {
+
+		private List<String> resourceList = new ArrayList<String>();
+		private Pattern pattern;
+
+		private ClasspathResourceFilter(String regex) {
+			pattern = Pattern.compile(regex);
+		}
+
+		private void filter(URLClassLoader classLoader) {
+			URL[] cpUrls = classLoader.getURLs();
+
+			for (int i = 0; i < cpUrls.length; i++) {
+				try {
+					File file = new File(cpUrls[i].toURI());
+					if(file.isDirectory()) {
+						searchClasspathDirTree(file, "");
+					} else {
+						searchArchive(file);
+					}
+				} catch (URISyntaxException e) {
+					logger.warn("Error searching classpath resource URL '" + cpUrls[i] + "' for resource '" + pattern.pattern() + "': " + e.getMessage());
+				} catch (IOException e) {
+					logger.warn("Error searching classpath resource URL '" + cpUrls[i] + "' for resource '" + pattern.pattern() + "': " + e.getMessage());
+				}
+			}
+		}
+
+		private void searchClasspathDirTree(File rootDir, String subDir) {
+			File currentDir = new File(rootDir, subDir);
+			File[] contents = currentDir.listFiles();
+
+			for(File file: contents) {
+				if(file.isDirectory()) {
+					String subSubDir = subDir + "/" + file.getName();
+					searchClasspathDirTree(rootDir, subSubDir);
+				} else {
+					String resClasspathPath = file.toURI().toString().substring(rootDir.toURI().toString().length() - 1);
+					if(isToBeAdded(resClasspathPath)) {
+						resourceList.add(resClasspathPath);
+					}
+				}
+			}
+		}
+
+		private void searchArchive(File archiveFile) throws IOException {
+			ZipFile zip = new ZipFile(archiveFile);
+			Enumeration<? extends ZipEntry> entries = zip.entries();
+
+			while (entries.hasMoreElements()) {
+				ZipEntry entry = entries.nextElement();
+				String resClasspathPath = "/" + entry.getName();
+				if(isToBeAdded(resClasspathPath)) {
+					resourceList.add(resClasspathPath);
+				}
+			}
+		}
+
+		private boolean isToBeAdded(String resClasspathPath) {
+			if(resourceList.contains(resClasspathPath)) {
+				// Already in the list e.g. same resource in different archives...
+				return false;
+			}
+
+			Matcher matcher = pattern.matcher(resClasspathPath);
+			return matcher.matches();
+		}
+
+		private List<String> getResourceList() {
+			return resourceList;
+		}
+	}
+}
+

Deleted: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -1,51 +0,0 @@
-/**
- * Copyright 2010 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.repository;
-
-import javax.jcr.Repository;
-import javax.jcr.Session;
-
-/**
- * This interface is required so different JCR implementations can provide their own configuration mechanism.
- * 
- * @author Michael Neale
- *
- */
-public interface JCRRepositoryConfigurator {
-
-    /** 
-     * @return a new Repository instance. 
-     * There should only be one instance of this in an application.
-     * Generally, one repository (which may be binded to JNDI) can spawn multiple sessions
-     * for each user as needed.
-     * Typically this would be created on application startup.
-     * @param repositoryRootDirectory The directory where the data is stored. If empty, the repository will be generated 
-     * there the first time it is used. If it is null, then a default location will be used (it won't fail).
-     */
-    public abstract Repository getJCRRepository(String repositoryRootDirectory);
-
-    /**
-     * 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 RulesRepositoryException     
-     */
-    public abstract void setupRulesRepository(Session session) throws RulesRepositoryException;
-
-}
\ No newline at end of file

Deleted: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/JackrabbitRepositoryConfigurator.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/JackrabbitRepositoryConfigurator.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/JackrabbitRepositoryConfigurator.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -1,136 +0,0 @@
-/**
- * Copyright 2010 JBoss Inc
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.drools.repository;
-
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.Calendar;
-
-import javax.jcr.Node;
-import javax.jcr.Repository;
-import javax.jcr.Session;
-import javax.jcr.Workspace;
-
-import org.apache.jackrabbit.commons.cnd.CndImporter;
-import org.apache.jackrabbit.core.TransientRepository;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/** 
- * 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 JackrabbitRepositoryConfigurator implements JCRRepositoryConfigurator {
-
-    private static final Logger log = LoggerFactory.getLogger(JackrabbitRepositoryConfigurator.class);        
-    
-    /* (non-Javadoc)
-     * @see org.drools.repository.RepositoryConfigurator#getJCRRepository()
-     */
-    public Repository getJCRRepository(String repoRootDir) {
-
-            if (repoRootDir == null) {
-                return new TransientRepository();
-            } else { 
-                return new TransientRepository(repoRootDir + "/repository.xml", repoRootDir);
-            }
-
-    }
-    
-  
-    
-    /* (non-Javadoc)
-     * @see org.drools.repository.RepositoryConfigurator#setupRulesRepository(javax.jcr.Session)
-     */
-    public void setupRulesRepository(Session session) throws RulesRepositoryException {
-        System.out.println("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 !
-                this.registerNodeTypesFromCndFile("/node_type_definitions/tag_node_type.cnd", session);
-                this.registerNodeTypesFromCndFile("/node_type_definitions/state_node_type.cnd", session);
-                this.registerNodeTypesFromCndFile("/node_type_definitions/versionable_node_type.cnd", session);
-                this.registerNodeTypesFromCndFile("/node_type_definitions/versionable_asset_folder_node_type.cnd", session);
-                
-                this.registerNodeTypesFromCndFile("/node_type_definitions/rule_node_type.cnd", session);
-                this.registerNodeTypesFromCndFile("/node_type_definitions/rulepackage_node_type.cnd", session);
-             
-            }
-            
-            // 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();                        
-        }
-        catch(Exception e) {
-            log.error("Caught Exception", e);
-            System.err.println(e.getMessage());
-            throw new RulesRepositoryException(e);
-        }
-    }
-    
-    private void registerNodeTypesFromCndFile(String cndFileName, Session session) throws RulesRepositoryException {
-        try {
-            //Read in the CND file
-            Reader in = new InputStreamReader(this.getClass().getResourceAsStream( cndFileName ));
-            CndImporter.registerNodeTypes(in, session);            
-
-        } catch(Exception e) {
-            log.error("Caught Exception", e);
-            throw new RulesRepositoryException(e);
-        }
-    }    
-    
-}

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RepositorySessionUtil.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -17,30 +17,30 @@
 package org.drools.repository;
 
 import java.io.File;
-
+import javax.jcr.LoginException;
 import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.SimpleCredentials;
-import javax.jcr.LoginException;
-import javax.jcr.RepositoryException;
 
 /**
  * This is a utility to simulate session behavior for the test suite.
+ * 
  * @author Michael Neale
- *
  */
 public class RepositorySessionUtil {
 
     private static ThreadLocal<RulesRepository> repo = new ThreadLocal<RulesRepository>();
     private static Repository multiThreadedRepository;
+    private static Session session = null;
 
-//    private static final Logger log = Logger.getLogger( RepositorySessionUtil.class );
+    // private static final Logger log = Logger.getLogger( RepositorySessionUtil.class );
 
-    public static boolean deleteDir(File dir) {
+    public static boolean deleteDir( File dir ) {
 
         if (dir.isDirectory()) {
             String[] children = dir.list();
-            for (int i=0; i<children.length; i++) {
+            for (int i = 0; i < children.length; i++) {
                 if (!deleteDir(new File(dir, children[i]))) {
                     return false;
                 }
@@ -51,42 +51,44 @@
         return dir.delete();
     }
 
-
     public static RulesRepository getRepository() throws RulesRepositoryException {
-    	RulesRepository repoInstance = repo.get();
-    	//System.out.println("----------getRepository");
-        if ( repoInstance == null ) {
-        	
-        	//System.out.println("----------repoInstance == null");
+        RulesRepository repoInstance = repo.get();
+        // System.out.println("----------getRepository");
+        if (repoInstance == null) {
 
-            File dir = new File( "repository" );
-            System.out.println( "DELETING test repo: " + dir.getAbsolutePath() );
-            deleteDir( dir );
-            System.out.println( "TEST repo was deleted." );
+            // System.out.println("----------repoInstance == null");
 
-            JCRRepositoryConfigurator config = new JackrabbitRepositoryConfigurator();
+            System.out.println("----------repoInstance == null");
 
-            //create a repo instance (startup)
-            multiThreadedRepository = config.getJCRRepository(null);
+            File dir = new File("repository");
+            System.out.println("DELETING test repo: " + dir.getAbsolutePath());
+            deleteDir(dir);
+            System.out.println("TEST repo was deleted.");
 
-            //create a session
-            Session session;
             try {
+            	//configurator = new JackrabbitRepository
+            	// create a repo instance (startup)
+            
+	            multiThreadedRepository = RulesRepositoryConfigurator.getInstance(null).getJCRRepository();
+	
+	            // create a session
+	            //Session session;
+            
                 session = multiThreadedRepository.login(new SimpleCredentials("alan_parsons", "password".toCharArray()));
                 RulesRepositoryAdministrator admin = new RulesRepositoryAdministrator(session);
 
-                //clear out and setup
+                // clear out and setup
                 if (admin.isRepositoryInitialized()) {
                     admin.clearRulesRepository();
                 }
-                config.setupRulesRepository( session );
-                repoInstance = new RulesRepository( session );
+                RulesRepositoryConfigurator.getInstance(null).setupRepository(session);
+                repoInstance = new RulesRepository(session);
 
                 multiThreadedRepository.login(new SimpleCredentials("ADMINISTRATOR", "password".toCharArray()));
-                //loonie hack
-                //DroolsRepositoryAccessManager.adminThreadlocal.set(  adminSession );
-                repo.set( repoInstance );
-            } catch ( Exception e) {
+                // loonie hack
+                // DroolsRepositoryAccessManager.adminThreadlocal.set( adminSession );
+                repo.set(repoInstance);
+            } catch (Exception e) {
                 throw new RulesRepositoryException(e);
             }
         }
@@ -94,53 +96,53 @@
         return repoInstance;
     }
 
-   public static synchronized RulesRepository getMultiThreadedRepository() throws RulesRepositoryException {
-       if ( multiThreadedRepository == null ) {
-                     //System.out.println("----------repoInstance == null");
+    public static synchronized RulesRepository getMultiThreadedRepository() throws RulesRepositoryException {
+        if (multiThreadedRepository == null) {
+            // System.out.println("----------repoInstance == null");
 
-           File dir = new File( "repository" );
-           System.out.println( "DELETING test repo: " + dir.getAbsolutePath() );
-           deleteDir( dir );
-           System.out.println( "TEST repo was deleted." );
+            File dir = new File("repository");
+            System.out.println("DELETING test repo: " + dir.getAbsolutePath());
+            deleteDir(dir);
+            System.out.println("TEST repo was deleted.");
 
-           JCRRepositoryConfigurator config = new JackrabbitRepositoryConfigurator();
+            try {
+            	// create a repo instance (startup)
+            	multiThreadedRepository = RulesRepositoryConfigurator.getInstance(null).getJCRRepository();
 
-           //create a repo instance (startup)
-           multiThreadedRepository = config.getJCRRepository(null);
+                // create a session to config repo
+                Session session = multiThreadedRepository.login(new SimpleCredentials("alan_parsons", "password".toCharArray()));
+                RulesRepositoryAdministrator admin = new RulesRepositoryAdministrator(session);
 
-           //create a session to config repo
-           Session session;
-           try {
-               session = multiThreadedRepository.login(new SimpleCredentials("alan_parsons", "password".toCharArray()));
-               RulesRepositoryAdministrator admin = new RulesRepositoryAdministrator(session);
+                // clear out and setup
+                if (admin.isRepositoryInitialized()) {
+                    admin.clearRulesRepository();
+                }
+                RulesRepositoryConfigurator.getInstance(null).setupRepository( session);
+            } catch (Exception e) {
+                throw new RulesRepositoryException(e);
+            }
+        }
 
-               //clear out and setup
-               if (admin.isRepositoryInitialized()) {
-                   admin.clearRulesRepository();
-               }
-               config.setupRulesRepository( session );
-           } catch ( Exception e) {
-               throw new RulesRepositoryException(e);
-           }
-       }
+        // associate this repo instance with thread specific sessions every time.
+        Session session;
+        try {
+            session = multiThreadedRepository.login(new SimpleCredentials("alan_parsons", "password".toCharArray()));
+            RulesRepository threadLocalRepo = new RulesRepository(session);
+            return threadLocalRepo;
+        } catch (LoginException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        } catch (RepositoryException e) {
+            // TODO Auto-generated catch block
+            e.printStackTrace();
+        }
+        return null;
+    }
 
+    public static void shutdown() throws RepositoryException {
+    	RulesRepositoryConfigurator.getInstance(null).shutdown();
+        repo.set(null);
+        multiThreadedRepository = null;
+    }
 
-       //associate this repo instance with thread specific sessions every time.
-       Session session;
-       try {
-           session = multiThreadedRepository.login(new SimpleCredentials("alan_parsons", "password".toCharArray()));
-           RulesRepository threadLocalRepo = new RulesRepository( session );
-           return threadLocalRepo;
-       } catch (LoginException e) {
-           // TODO Auto-generated catch block
-           e.printStackTrace();
-       } catch (RepositoryException e) {
-           // TODO Auto-generated catch block
-           e.printStackTrace();
-       }
-             return null;
-   }
-
-
-
 }

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepository.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepository.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepository.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -116,7 +116,7 @@
 
     private Session             session;
 
-    static boolean              initialized           = false;
+    boolean              initialized           = false;
 
     /**
      * This requires a JCR session be setup, and the repository be configured.
@@ -126,7 +126,7 @@
         checkForDataMigration( this );
     }
 
-    private synchronized static void checkForDataMigration(RulesRepository self) {
+    private synchronized  void checkForDataMigration(RulesRepository self) {
         if ( initialized ) return;
         if ( self.session.getUserID().equals( "anonymous" ) ) return;
         try {

Copied: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepositoryConfigurator.java (from rev 35609, labs/jbossrules/branches/kstam_guvnor_modeshape/drools-repository/src/main/java/org/drools/repository/RulesRepositoryConfigurator.java)
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepositoryConfigurator.java	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/java/org/drools/repository/RulesRepositoryConfigurator.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -0,0 +1,157 @@
+package org.drools.repository;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.Calendar;
+import java.util.Properties;
+
+import javax.jcr.Node;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.Workspace;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class RulesRepositoryConfigurator {
+
+	private static final Logger log = LoggerFactory.getLogger(RulesRepositoryConfigurator.class);
+	/**
+	 * The classpath resource from which the RepositoryFactory properties are loaded. Currently, this is {@value} .
+	 */
+	public static final String PROPERTIES_FILE = "/drools_repository.properties";
+	public static final String CONFIGURATOR_CLASS = "org.drools.repository.configurator";
+	private static JCRRepositoryConfigurator jcrRepositoryConfigurator = null;
+	private static Repository jcrRepository = null;
+	private static RulesRepositoryConfigurator rulesRepositoryConfigurator = null;
+
+	private RulesRepositoryConfigurator() {}
+
+	public Repository getJCRRepository() throws RepositoryException 
+	{
+		getInstance(null);
+		return jcrRepository;
+	}
+
+	public synchronized static RulesRepositoryConfigurator getInstance(Properties properties) throws RepositoryException 
+	{
+		if (rulesRepositoryConfigurator == null ) {
+			System.out.println("******* RULES CONFIG ");
+			rulesRepositoryConfigurator = new RulesRepositoryConfigurator();
+			if (properties==null) properties = new Properties();
+			Properties fileProperties = new Properties();
+			// Load the properties file ...
+			InputStream propStream = ClassUtil.getResourceAsStream(PROPERTIES_FILE, rulesRepositoryConfigurator.getClass());
+			if (propStream != null) {
+				try {
+					fileProperties.load(propStream);
+					for (Object key : fileProperties.keySet()) {
+						if (!properties.containsKey(key)) {
+							properties.put(key, fileProperties.get(key));
+						}
+					}
+				} catch (IOException ioe) {
+					throw new RepositoryException (ioe);
+				} finally {
+					try {
+						propStream.close();
+					} catch (IOException ioe) {
+						throw new RepositoryException (ioe);
+					}
+				}
+			} else {
+				throw new RepositoryException ("Cannot load properties from " + PROPERTIES_FILE);
+			}
+				
+			try {
+				String configuratorClazz = properties.getProperty(CONFIGURATOR_CLASS);
+				if (configuratorClazz==null) throw new RepositoryException("User must define a '" + 
+						CONFIGURATOR_CLASS + "' property.");
+				Class clazz = ClassUtil.forName(configuratorClazz, rulesRepositoryConfigurator.getClass());
+				jcrRepositoryConfigurator = (JCRRepositoryConfigurator) clazz.newInstance();
+				jcrRepository = jcrRepositoryConfigurator.getJCRRepository(properties);
+			} catch (Exception ex) {
+				throw new RepositoryException (ex);
+			} 
+			
+		}
+		return rulesRepositoryConfigurator;
+	}
+	
+
+/**
+ * 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 {
+	System.out.println("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();                        
+	}
+	catch(Exception e) {
+		log.error("Caught Exception", e);
+		System.err.println(e.getMessage());
+		throw new RepositoryException(e);
+	}
+}
+
+	public void shutdown() {
+		jcrRepositoryConfigurator.shutdown();
+		System.out.println("SHUTDOWN RULES CONFIG");
+		rulesRepositoryConfigurator = null;
+	}
+}

Copied: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/resources/drools_repository.properties (from rev 35609, labs/jbossrules/branches/kstam_guvnor_modeshape/drools-repository/src/main/resources/drools_repository.properties)
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/resources/drools_repository.properties	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/main/resources/drools_repository.properties	2010-10-21 00:16:06 UTC (rev 35620)
@@ -0,0 +1,16 @@
+# This file is used to load the properties passed to the JCR 2.0 RepositoryFactory.
+#
+#
+# JACKRABBIT
+org.drools.repository.configurator = org.drools.repository.jackrabbit.JackrabbitRepositoryConfigurator
+# 
+org.drools.repository.jcr.impl = org.apache.jackrabbit.core.RepositoryFactoryImpl
+#
+
+# MODESHAPE
+
+# Currently, these properties will be used to load ModeShape from the specified configuration file.
+#
+#org.drools.repository.configurator = org.drools.repository.modeshape.ModeShapeRepositoryConfigurator
+# 
+#org.modeshape.jcr.URL = file:src/test/resources/modeshape/configuration.xml
\ No newline at end of file

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ArchiveItemTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ArchiveItemTest.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ArchiveItemTest.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -20,18 +20,15 @@
 import java.util.Iterator;
 import java.util.List;
 
-import junit.framework.TestCase;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
 
-public class ArchiveItemTest extends TestCase {
+public class ArchiveItemTest extends RepositoryTestCase {
 
-    private RulesRepository getRepo() {
-        return RepositorySessionUtil.getRepository();
-    }
-
-    private PackageItem getDefaultPackage() {
-        return getRepo().loadDefaultPackage();
-    }
-
+	@Test
     public void testFindArchivedAssets() throws Exception {
         RulesRepository repo = RepositorySessionUtil.getRepository();
 
@@ -66,6 +63,7 @@
         assertTrue( item.isArchived() );
     }
 
+	@Test
     public void testArchiveBooleanFlag() throws Exception {
         AssetItem item = RepositorySessionUtil.getRepository().loadDefaultPackage().addAsset( "testArchiveBooleanFlag",
                                                                                               "yeah" );
@@ -78,12 +76,18 @@
         item.checkin( "lalalala" );
     }
 
-    public void testLoadArchivedAsset() throws Exception {
+	@Test
+	public void testLoadArchivedAsset() throws Exception {
+		AssetItem itemAdd = RepositorySessionUtil.getRepository().loadDefaultPackage().addAsset( "testArchiveBooleanFlag",
+        "yeah" );
+		itemAdd.archiveItem( true );
+		
         AssetItem item = RepositorySessionUtil.getRepository().loadDefaultPackage().loadAsset( "testArchiveBooleanFlag" );
         System.out.println( item );
         assertTrue( item.isArchived() );
     }
 
+	@Test
     public void testFindArchivedAssetsByCategory() {
         getRepo().loadCategory( "/" ).addCategory( "testFindRulesByCatArchive",
                                                    "yeah" );
@@ -120,6 +124,7 @@
         return list;
     }
 
+    @Test
     public void testLoadPackages() {
         RulesRepository repo = getRepo();
         PackageItem item = repo.createPackage( "testListPackagesblah",
@@ -154,6 +159,7 @@
                       list.size() );
     }
 
+    @Test
     public void testFindRulesByNameArchived() throws Exception {
         RulesRepository repo = RepositorySessionUtil.getRepository();
 
@@ -224,6 +230,7 @@
 
     }
 
+    @Test
     public void testlistbyformatArchived() {
 
     }

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/AssetItemTest.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -25,19 +25,16 @@
 import javax.jcr.version.Version;
 import javax.jcr.version.VersionIterator;
 
-import junit.framework.TestCase;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
 
-public class AssetItemTest extends TestCase {
+public class AssetItemTest extends RepositoryTestCase {
 
-
-    private RulesRepository getRepo() {
-        return RepositorySessionUtil.getRepository();
-    }
-
-    private PackageItem getDefaultPackage() {
-        return getRepo().loadDefaultPackage();
-    }
-
+	@Test
     public void testAssetItemCreation() throws Exception {
 
             Calendar now = Calendar.getInstance();
@@ -76,6 +73,7 @@
         }
     }
 
+	@Test
     public void testGetContentLength() throws Exception {
         RulesRepository repo = getRepo();
         PackageItem pkg = repo.loadDefaultPackage();
@@ -94,6 +92,7 @@
 
     }
 
+	@Test
     public void testGetPackageItem() throws Exception {
         RulesRepository repo = getRepo();
         PackageItem def = repo.loadDefaultPackage();
@@ -104,7 +103,7 @@
 
     }
 
-
+	@Test
     public void testUpdateStringProperty() throws Exception {
         RulesRepository repo = getRepo();
         PackageItem def = repo.loadDefaultPackage();
@@ -136,7 +135,7 @@
         
     }
 
-
+	@Test
     public void testGetPackageItemHistorical() throws Exception {
         RulesRepository repo = getRepo();
         PackageItem pkg = repo.createPackage("testGetPackageItemHistorical", "");
@@ -172,6 +171,7 @@
         }
     }
 
+	@Test
     public void testGetAssetNameFromFileName() {
     	String[] asset = AssetItem.getAssetNameFromFileName("foo.bar");
     	assertEquals("foo", asset[0]);
@@ -221,7 +221,7 @@
 
     }
 
-
+	@Test
     public void testGetContent() {
 
             AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset("testGetContent", "test content");
@@ -241,7 +241,7 @@
             assertNotNull(content);        
     }
 
-
+	@Test
     public void testUpdateContent() throws Exception {
             AssetItem ruleItem1 = getDefaultPackage().addAsset("testUpdateContent", "test description");
 
@@ -285,7 +285,7 @@
             }
     }
 
-
+	@Test
     public void testCategoriesPagination() {
     		PackageItem pkg = getRepo().createPackage("testPagination", "");
     		getRepo().loadCategory( "/" ).addCategory( "testPagedTag", "description" );
@@ -344,6 +344,7 @@
 
     }
 
+	@Test
     public void testCategories() {
         AssetItem ruleItem1 = getDefaultPackage().addAsset("testAddTag", "test content");
 
@@ -392,7 +393,7 @@
 
     }
 
-
+	@Test
     public void testUpdateCategories() {
         getRepo().loadCategory( "/" ).addCategory( "testUpdateCategoriesOnAsset", "la" );
         getRepo().loadCategory( "/" ).addCategory( "testUpdateCategoriesOnAsset2", "la" );
@@ -413,6 +414,7 @@
 
     }
 
+	@Test
     public void testFindRulesByCategory() throws Exception {
 
         getRepo().loadCategory( "/" ).addCategory( "testFindRulesByCat", "yeah" );
@@ -443,7 +445,7 @@
 
     }
 
-
+	@Test
     public void testRemoveTag() {
             AssetItem ruleItem1 = getDefaultPackage().addAsset("testRemoveTag", "test content");
 
@@ -467,6 +469,7 @@
 
     }
 
+	@Test
     public void testGetTags() {
             AssetItem ruleItem1 = getDefaultPackage().addAsset("testGetTags", "test content");
 
@@ -483,6 +486,7 @@
 
     }
 
+	@Test
     public void testSetStateString() {
             AssetItem ruleItem1 = getDefaultPackage().addAsset("testSetStateString", "test content");
 
@@ -512,15 +516,15 @@
 
     }
 
-
+	@Test
     public void testStatusStuff() {
             AssetItem ruleItem1 = getDefaultPackage().addAsset("testGetState", "test content");
 
             StateItem stateItem1 = ruleItem1.getState();
             assertEquals(StateItem.DRAFT_STATE_NAME, stateItem1.getName());
 
+            getRepo().createState( "TestState1" );
 
-
             ruleItem1.updateState("TestState1");
             assertNotNull(ruleItem1.getState());
             assertEquals("TestState1", ruleItem1.getState().getName());
@@ -530,11 +534,13 @@
             assertEquals(getRepo().getState( StateItem.DRAFT_STATE_NAME ), ruleItem1.getState());
     }
 
+	@Test
     public void testToString() {
             AssetItem ruleItem1 = getDefaultPackage().addAsset("testToString", "test content");
             assertNotNull(ruleItem1.toString());
     }
 
+	@Test
     public void testGetLastModifiedOnCheckin() throws Exception  {
             AssetItem ruleItem1 = getDefaultPackage().addAsset("testGetLastModified", "test content");
 
@@ -557,6 +563,7 @@
 
     }
 
+	@Test
     public void testGetDateEffective() {
 
             AssetItem ruleItem1 = getDefaultPackage().addAsset("testGetDateEffective", "test content");
@@ -572,6 +579,7 @@
             assertEquals(cal, cal2);
     }
 
+	@Test
     public void testGetDateExpired() {
         try {
             AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset("testGetDateExpired", "test content");
@@ -591,7 +599,7 @@
         }
     }
 
-
+	@Test
     public void testSaveAndCheckinDescriptionAndTitle() throws Exception {
             AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset("testGetDescription", "");
             ruleItem1.checkin( "version0" );
@@ -627,6 +635,7 @@
 
     }
 
+	@Test
     public void testGetPrecedingVersionAndRestore() throws Exception {
             getRepo().loadCategory( "/" ).addCategory( "foo", "ka" );
             AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset("testGetPrecedingVersion", "descr");
@@ -699,6 +708,7 @@
             assertFalse(oldVersionNumber ==  restored.getVersionNumber() );
     }
 
+	@Test
     public void testGetSucceedingVersion() {
             AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset("testGetSucceedingVersion", "test description");
             ruleItem1.checkin( "version0" );
@@ -720,6 +730,7 @@
             assertEquals(ruleItem1.getContent(), succeedingRuleItem.getContent());
     }
 
+	@Test
     public void testGetSuccessorVersionsIterator() {
         try {
             AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset("testGetSuccessorVersionsIterator", "test content");
@@ -762,6 +773,7 @@
         }
     }
 
+	@Test
     public void testGetPredecessorVersionsIterator() {
             AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset("testGetPredecessorVersionsIterator", "test description");
             ruleItem1.checkin( "version0" );
@@ -805,6 +817,7 @@
 
     }
 
+	@Test
     public void testHistoryIterator() throws Exception {
         AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset("testHistoryIterator", "test description");
         ruleItem1.checkin( "version0" );
@@ -825,12 +838,14 @@
 
     }
 
+	@Test
     public void testGetTitle() {
             AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset("testGetTitle", "test content");
 
             assertEquals("testGetTitle", ruleItem1.getTitle());
     }
 
+	@Test
     public void testDublinCoreProperties() {
         PackageItem pkg = getRepo().createPackage( "testDublinCore", "wa" );
 
@@ -850,6 +865,7 @@
 
     }
 
+	@Test
     public void testGetFormat() throws Exception {
             AssetItem ruleItem1 = getRepo().loadDefaultPackage().addAsset("testGetFormat", "test content");
             ruleItem1.updateContent( "la" );
@@ -862,6 +878,7 @@
             assertEquals("blah", ruleItem1.getFormat());
     }
 
+	@Test
     public void testAnonymousProperties() {
         AssetItem item = getRepo().loadDefaultPackage().addAsset( "anonymousproperty", "lalalalala" );
         item.updateUserProperty( "fooBar", "value");
@@ -881,6 +898,7 @@
 
     }
 
+	@Test
     public void testBinaryAsset() throws Exception {
         AssetItem item = getRepo().loadDefaultPackage().addAsset( "testBinaryAsset", "yeah" );
         String data = "abc 123";

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/CategoryItemTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/CategoryItemTest.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/CategoryItemTest.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -16,184 +16,257 @@
 
 package org.drools.repository;
 
+import java.util.Calendar;
+import java.util.Date;
 import java.util.Iterator;
 import java.util.List;
 
-import javax.jcr.ItemNotFoundException;
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.PropertyIterator;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
+import javax.jcr.Value;
+import javax.jcr.Workspace;
 
-import org.drools.repository.RulesRepository;
-import org.drools.repository.CategoryItem;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 
-import junit.framework.TestCase;
+public class CategoryItemTest extends RepositoryTestCase {
 
-public class CategoryItemTest extends TestCase {
-
-
-
+	
+	
+	@Test
     public void testTagItem() throws Exception {
 
-            final CategoryItem root = getRepo().loadCategory( "/" );
+        final CategoryItem root = getRepo().loadCategory("/");
 
-            root.addCategory( "TestTag", "nothing to see" );
+        root.addCategory("TestTag", "nothing to see");
 
+        CategoryItem tagItem1 = getRepo().loadCategory("TestTag");
+        assertNotNull(tagItem1);
+        assertEquals("TestTag", tagItem1.getName());
 
+        CategoryItem tagItem2 = getRepo().loadCategory("TestTag");
+        assertNotNull(tagItem2);
+        assertEquals("TestTag", tagItem2.getName());
+        assertEquals(tagItem1, tagItem2);
 
-            CategoryItem tagItem1 = getRepo().loadCategory("TestTag");
-            assertNotNull(tagItem1);
-            assertEquals("TestTag", tagItem1.getName());
+        List originalCats = getRepo().loadCategory("/").getChildTags(); // listCategoryNames();
+        assertTrue(originalCats.size() > 0);
 
-            CategoryItem tagItem2 = getRepo().loadCategory("TestTag");
-            assertNotNull(tagItem2);
-            assertEquals("TestTag", tagItem2.getName());
-            assertEquals(tagItem1, tagItem2);
+        CategoryItem rootCat = (CategoryItem)originalCats.get(0);
+        assertNotNull(rootCat.getName());
+        assertNotNull(rootCat.getFullPath());
 
-            List originalCats = getRepo().loadCategory( "/" ).getChildTags(); //listCategoryNames();
-            assertTrue(originalCats.size() > 0);
+        root.addCategory("FootestTagItem", "nothing");
 
-            CategoryItem rootCat = (CategoryItem) originalCats.get( 0 );
-            assertNotNull(rootCat.getName());
-            assertNotNull(rootCat.getFullPath());
+        List cats = root.getChildTags();
+        assertEquals(originalCats.size() + 1, cats.size());
 
-            root.addCategory( "FootestTagItem", "nothing" );
-
-            List cats = root.getChildTags();
-            assertEquals(originalCats.size() + 1, cats.size());
-
-            boolean found = false;
-            for ( Iterator iter = cats.iterator(); iter.hasNext(); ) {
-                CategoryItem element = (CategoryItem) iter.next();
-                if (element.getName().equals( "FootestTagItem" )) {
-                    found = true; break;
-                }
+        boolean found = false;
+        for (Iterator iter = cats.iterator(); iter.hasNext();) {
+            CategoryItem element = (CategoryItem)iter.next();
+            if (element.getName().equals("FootestTagItem")) {
+                found = true;
+                break;
             }
+        }
 
-            assertTrue(found);
+        assertTrue(found);
 
     }
 
+	@Test
     public void testCreateCateories() throws Exception {
         RulesRepository repo = getRepo();
 
-        //load the root
-        CategoryItem root = repo.loadCategory( "/" );
+        // load the root
+        CategoryItem root = repo.loadCategory("/");
 
         CategoryItem item = root.addCategory("testCreateCategories", "this is a top level one");
         assertEquals("testCreateCategories", item.getName());
         assertEquals("testCreateCategories", item.getFullPath());
 
-        item = repo.loadCategory( "testCreateCategories" );
+        item = repo.loadCategory("testCreateCategories");
         assertEquals("testCreateCategories", item.getName());
 
         item.remove();
         repo.save();
 
         try {
-            repo.loadCategory( "testCreateCategories" );
+            repo.loadCategory("testCreateCategories");
             fail("this should not exist");
         } catch (RulesRepositoryException e) {
             assertNotNull(e.getCause());
         }
     }
 
+	@Test
     public void testGetChildTags() {
-            CategoryItem tagItem1 = getRepo().loadCategory("TestTag");
-            assertNotNull(tagItem1);
-            assertEquals("TestTag", tagItem1.getName());
+		
+		final CategoryItem root = getRepo().loadCategory("/");
 
-            List childTags = tagItem1.getChildTags();
-            assertNotNull(childTags);
-            assertEquals(0, childTags.size());
+        root.addCategory("TestTag", "nothing to see");
+        
+        CategoryItem tagItem1 = getRepo().loadCategory("TestTag");
+        assertNotNull(tagItem1);
+        assertEquals("TestTag", tagItem1.getName());
 
-            tagItem1.addCategory( "TestChildTag1", "description" );
+        List childTags = tagItem1.getChildTags();
+        assertNotNull(childTags);
+        assertEquals(0, childTags.size());
 
-            childTags = tagItem1.getChildTags();
-            assertNotNull(childTags);
-            assertEquals(1, childTags.size());
-            assertEquals("TestChildTag1", ((CategoryItem)childTags.get(0)).getName());
+        tagItem1.addCategory("TestChildTag1", "description");
 
-            tagItem1.addCategory( "AnotherChild", "ignore me" );
+        childTags = tagItem1.getChildTags();
+        assertNotNull(childTags);
+        assertEquals(1, childTags.size());
+        assertEquals("TestChildTag1", ((CategoryItem)childTags.get(0)).getName());
 
-            childTags = tagItem1.getChildTags();
-            assertNotNull(childTags);
-            assertEquals(2, childTags.size());
+        tagItem1.addCategory("AnotherChild", "ignore me");
+
+        childTags = tagItem1.getChildTags();
+        assertNotNull(childTags);
+        assertEquals(2, childTags.size());
     }
 
+	@Test
     public void testGetChildTag() {
-            CategoryItem root = getRepo().loadCategory( "/" );
-            CategoryItem tagItem1 = root.addCategory("testGetChildTag", "yeah");
-            assertNotNull(tagItem1);
-            assertEquals("testGetChildTag", tagItem1.getName());
+        CategoryItem root = getRepo().loadCategory("/");
+        CategoryItem tagItem1 = root.addCategory("testGetChildTag", "yeah");
+        assertNotNull(tagItem1);
+        assertEquals("testGetChildTag", tagItem1.getName());
 
-            //test that child is added if not already in existence
-            List childTags = tagItem1.getChildTags();
-            assertNotNull(childTags);
-            assertEquals(0, childTags.size());
+        // test that child is added if not already in existence
+        List childTags = tagItem1.getChildTags();
+        assertNotNull(childTags);
+        assertEquals(0, childTags.size());
 
-            CategoryItem childTagItem1 = tagItem1.addCategory("TestChildTag1", "woo");
-            assertNotNull(childTagItem1);
-            assertEquals("TestChildTag1", childTagItem1.getName());
+        CategoryItem childTagItem1 = tagItem1.addCategory("TestChildTag1", "woo");
+        assertNotNull(childTagItem1);
+        assertEquals("TestChildTag1", childTagItem1.getName());
 
-            //test that if already there, it is returned
-            CategoryItem childTagItem2 = getRepo().loadCategory( "testGetChildTag/TestChildTag1");
-            assertNotNull(childTagItem2);
-            assertEquals("TestChildTag1", childTagItem2.getName());
-            assertEquals(childTagItem1, childTagItem2);
+        // test that if already there, it is returned
+        CategoryItem childTagItem2 = getRepo().loadCategory("testGetChildTag/TestChildTag1");
+        assertNotNull(childTagItem2);
+        assertEquals("TestChildTag1", childTagItem2.getName());
+        assertEquals(childTagItem1, childTagItem2);
     }
 
+	@Test
     public void testGetFullPath() {
 
-            CategoryItem root = getRepo().loadCategory( "/" );
+        CategoryItem root = getRepo().loadCategory("/");
 
-            CategoryItem tagItem1 = root.addCategory("testGetFullPath", "foo");
-            assertNotNull(tagItem1);
-            assertEquals("testGetFullPath", tagItem1.getFullPath());
+        CategoryItem tagItem1 = root.addCategory("testGetFullPath", "foo");
+        assertNotNull(tagItem1);
+        assertEquals("testGetFullPath", tagItem1.getFullPath());
 
-            CategoryItem childTagItem1 = tagItem1.addCategory("TestChildTag1", "foo");
-            assertNotNull(childTagItem1);
-            assertEquals("testGetFullPath/TestChildTag1", childTagItem1.getFullPath());
+        CategoryItem childTagItem1 = tagItem1.addCategory("TestChildTag1", "foo");
+        assertNotNull(childTagItem1);
+        assertEquals("testGetFullPath/TestChildTag1", childTagItem1.getFullPath());
 
-            CategoryItem childTagItem2 = childTagItem1.addCategory("TestChildTag2", "wee");
-            assertNotNull(childTagItem2);
-            assertEquals("testGetFullPath/TestChildTag1/TestChildTag2", childTagItem2.getFullPath());
+        CategoryItem childTagItem2 = childTagItem1.addCategory("TestChildTag2", "wee");
+        assertNotNull(childTagItem2);
+        assertEquals("testGetFullPath/TestChildTag1/TestChildTag2", childTagItem2.getFullPath());
 
-
-
     }
 
+	@Test
     public void testRemoveCategoryUneeded() {
         RulesRepository repo = getRepo();
-        repo.loadCategory( "/" ).addCategory( "testRemoveCat", "a" );
-        AssetItem as = repo.loadDefaultPackage().addAsset( "testRemoveCategory", "a", "testRemoveCat", "drl" );
-        as.checkin( "a" );
-        as.updateCategoryList( new String[] {} );
+        repo.loadCategory("/").addCategory("testRemoveCat", "a");
+        AssetItem as = repo.loadDefaultPackage().addAsset("testRemoveCategory", "a", "testRemoveCat", "drl");
+        as.checkin("a");
+        as.updateCategoryList(new String[] {});
 
-        as.checkin( "a" );
+        as.checkin("a");
 
-        as = repo.loadDefaultPackage().loadAsset( "testRemoveCategory" );
+        as = repo.loadDefaultPackage().loadAsset("testRemoveCategory");
         assertEquals(0, as.getCategories().size());
 
-
-        repo.loadCategory( "testRemoveCat" ).remove();
+        repo.loadCategory("testRemoveCat").remove();
         repo.save();
 
     }
 
-
+	@Test
     public void testRemoveCategoryLinkedWithArchived() {
         RulesRepository repo = getRepo();
-        repo.loadCategory( "/" ).addCategory( "testRemoveCategoryWithArchivedCat", "a" );
-        AssetItem as = repo.loadDefaultPackage().addAsset( "testRemoveCategoryWithArchivedAsset", "a", "testRemoveCategoryWithArchivedCat", "drl" );
-        as.checkin( "a" );
+        repo.loadCategory("/").addCategory("testRemoveCategoryWithArchivedCat", "a");
+        AssetItem as = repo.loadDefaultPackage().addAsset("testRemoveCategoryWithArchivedAsset",
+                                                          "a",
+                                                          "testRemoveCategoryWithArchivedCat",
+                                                          "drl");
+        as.checkin("a");
 
         as.archiveItem(true);
 
-        repo.loadCategory( "testRemoveCategoryWithArchivedCat" ).remove();
+        repo.loadCategory("testRemoveCategoryWithArchivedCat").remove();
+        
         repo.save();
 
-//        as.remove();
+        as.remove();
     }
+	/**
+	 * This removed the complexity of testRemoveCategoryLinkedWithArchived, and
+	 * was added to show a problem in ModeShape: https://jira.jboss.org/browse/MODE-877
+	 */
+	@Test 
+	public void simpleRemoveCategoryLinkedWithArchived() {
+		try {
+			RulesRepository repo = getRepo();	
+			Session session = repo.getSession();
 
-    private RulesRepository getRepo() {
-        return RepositorySessionUtil.getRepository();
-    }
+			Node rn = session.getRootNode();
+			Node asset = rn.addNode("asset","drools:assetNodeType");
+			//Adding some required properties
+			asset.setProperty("drools:packageName", "one");
+			asset.setProperty("drools:title", "title");
+			asset.setProperty("drools:format", "format");
+			asset.setProperty("drools:description", "description");
+			Calendar lastModified = Calendar.getInstance();
+			asset.setProperty("drools:lastModified", lastModified);
+            //Adding a category
+			Node category = rn.addNode("category","drools:categoryNodeType");
+			//adding the category to the asset
+			Value[] newTagValues = new Value[1];
+            newTagValues[0] = asset.getSession().getValueFactory().createValue( category );
+            asset.setProperty( "drools:categoryReference",
+                    newTagValues );
+            //save the session
+			session.save();
+			//checking that is there.
+			PropertyIterator pi = category.getReferences();
+			while (pi.hasNext()) {
+				Property property = pi.nextProperty();
+				String name = property.getName();
+				System.out.println("Name=" + name);
+				assertEquals("drools:categoryReference", name);
+			}
+			//removing the category from the asset
+			Value[] updatedTagValues = new Value[1];
+			updatedTagValues[0] = null;
+			asset.setProperty( "drools:categoryReference",
+					updatedTagValues );
+			//session.save();
+			//removing the category itself
+			category.remove();
+	        //saving the session, leads to a Referential Integrity Exception on ModeShape: 
+			//https://jira.jboss.org/browse/MODE-877
+			session.save();
+
+		} catch (RepositoryException e) {
+			// TODO Auto-generated catch block
+			e.printStackTrace();
+			fail();
+		}
+	}
 }

Copied: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/RepositoryTestCase.java (from rev 35609, labs/jbossrules/branches/kstam_guvnor_modeshape/drools-repository/src/test/java/org/drools/repository/RepositoryTestCase.java)
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/RepositoryTestCase.java	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/RepositoryTestCase.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -0,0 +1,44 @@
+/*
+ * ModeShape (http://www.modeshape.org)
+ * See the COPYRIGHT.txt file distributed with this work for information
+ * regarding copyright ownership.  Some portions may be licensed
+ * to Red Hat, Inc. under one or more contributor license agreements.
+ * See the AUTHORS.txt file in the distribution for a full listing of 
+ * individual contributors.
+ *
+ * ModeShape is free software. Unless otherwise indicated, all code in ModeShape
+ * is licensed to you under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ * 
+ * ModeShape is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.drools.repository;
+
+import org.junit.After;
+import org.junit.AfterClass;
+
+public abstract class RepositoryTestCase {
+
+    @After
+    public  void tearDown() throws Exception {
+        RepositorySessionUtil.shutdown();
+    }
+
+    protected RulesRepository getRepo() {
+        return RepositorySessionUtil.getRepository();
+    }
+
+    protected PackageItem getDefaultPackage() {
+        return getRepo().loadDefaultPackage();
+    }
+
+}

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/RulesRepositoryTest.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -18,8 +18,8 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.File;
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
-import java.io.ByteArrayOutputStream;
 import java.util.ArrayList;
 import java.util.Calendar;
 import java.util.HashMap;
@@ -27,30 +27,32 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
 
-import javax.jcr.LoginException;
 import javax.jcr.Node;
 import javax.jcr.NodeIterator;
 import javax.jcr.PathNotFoundException;
-import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 import javax.jcr.SimpleCredentials;
 import javax.jcr.Workspace;
 
-import org.apache.jackrabbit.core.TransientRepository;
 import org.drools.repository.RulesRepository.DateQuery;
 import org.drools.repository.migration.MigrateDroolsPackage;
 
-import junit.framework.TestCase;
+import org.junit.Ignore;
+import org.junit.Test;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
 
-public class RulesRepositoryTest extends TestCase {
+public class RulesRepositoryTest extends RepositoryTestCase {
 	int running = 0;
 
+	@Test
     public void testDefaultPackage() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
 
         Iterator it = repo.listPackages();
         boolean foundDefault = false;
@@ -76,9 +78,10 @@
         assertTrue( repo.initialized );
 
     }
-
+	
+	@Test
     public void testCategoryRename() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
 
         CategoryItem root = repo.loadCategory( "/" );
         root.addCategory( "testCatRename",
@@ -123,8 +126,9 @@
 
     }
 
+	@Test
     public void testAddVersionARule() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         PackageItem pack = repo.createPackage( "testAddVersionARule",
                                                "description" );
         repo.save();
@@ -161,8 +165,9 @@
 
     }
 
+	@Test
     public void testFindByState() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         PackageItem pkg = repo.createPackage( "testFindByStatePackage",
                                               "heheheh" );
         AssetItem asset1 = pkg.addAsset( "asset1",
@@ -185,8 +190,9 @@
 
     }
 
+	@Test
     public void testFindRulesByName() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
 
         repo.loadDefaultPackage().addAsset( "findRulesByNamex1",
                                             "X" );
@@ -225,8 +231,9 @@
 
     }
 
+	@Test
     public void testQueryText() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         PackageItem pkg = repo.createPackage( "testQueryTest",
                                               "" );
         AssetItem asset = pkg.addAsset( "asset1",
@@ -274,8 +281,9 @@
 
     }
 
+	@Test
     public void testQuery() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
 
         AssetItem asset = repo.loadDefaultPackage().addAsset( "testQuery",
                                                               "wanklerotaryengine1cc" );
@@ -421,8 +429,9 @@
 
     }
 
+	@Test
     public void testLoadRuleByUUIDWithConcurrentSessions() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
 
         PackageItem rulePackageItem = repo.loadDefaultPackage();
         AssetItem rule = rulePackageItem.addAsset( "testLoadRuleByUUID",
@@ -492,8 +501,9 @@
                       asset2.getContent() );
     }
 
+	@Test
     public void testAddRuleCalendarWithDates() {
-        RulesRepository rulesRepository = RepositorySessionUtil.getRepository();
+        RulesRepository rulesRepository = getRepo();
 
         Calendar effectiveDate = Calendar.getInstance();
         Calendar expiredDate = Calendar.getInstance();
@@ -513,8 +523,9 @@
         ruleItem1.checkin( "ho " );
     }
 
+	@Test
     public void testGetState() {
-        RulesRepository rulesRepository = RepositorySessionUtil.getRepository();
+        RulesRepository rulesRepository = getRepo();
 
         StateItem state0 = rulesRepository.createState( "testGetState" );
         assertNotNull( state0 );
@@ -533,8 +544,9 @@
                       stateItem2 );
     }
 
+	@Test
     public void testGetTag() {
-        RulesRepository rulesRepository = RepositorySessionUtil.getRepository();
+        RulesRepository rulesRepository = getRepo();
 
         CategoryItem root = rulesRepository.loadCategory( "/" );
         CategoryItem tagItem1 = root.addCategory( "testGetTag",
@@ -562,8 +574,9 @@
                       tagItem3.getFullPath() );
     }
 
+	@Test
     public void testListPackages() {
-        RulesRepository rulesRepository = RepositorySessionUtil.getRepository();
+        RulesRepository rulesRepository = getRepo();
         rulesRepository.createPackage( "testListPackages",
                                        "desc" );
 
@@ -590,8 +603,9 @@
         assertFalse( foundGlobalArea );
     }
 
+	@Test
     public void testFindAssetsByState() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         repo.loadCategory( "/" ).addCategory( "testFindAssetsByStateCat",
                                               "X" );
 
@@ -631,8 +645,9 @@
                       ((AssetItem) apl.assets.get( 0 )).getName() );
     }
 
+	@Test
     public void testFindAssetsByCategory() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         repo.loadCategory( "/" ).addCategory( "testFindAssetsByCategoryUsingFilterCat",
                                               "X" );
 
@@ -763,6 +778,7 @@
 
     }
 
+	@Test
     public void testFunnyOrdering() throws Exception {
 
     }
@@ -770,8 +786,9 @@
     /**
      * Here we are testing to make sure that category links don't pick up stuff in snapshots area.
      */
+	@Test
     public void testCategoriesAndSnapshots() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         repo.loadCategory( "/" ).addCategory( "testCategoriesAndSnapshots",
                                               "X" );
 
@@ -811,8 +828,9 @@
 
     }
 
+	@Test
     public void testMoveRulePackage() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         PackageItem pkg = repo.createPackage( "testMove",
                                               "description" );
         AssetItem r = pkg.addAsset( "testMove",
@@ -857,9 +875,10 @@
         assertEquals( uuid,
                       r.getUUID() );
     }
-
+	
+	@Test
     public void testCopyAsset() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         repo.createPackage( "testCopyAsset",
                             "asset" );
         AssetItem item = repo.loadDefaultPackage().addAsset( "testCopyAssetSource",
@@ -886,8 +905,9 @@
                       dest.getVersionNumber() );
     }
 
+	@Test
     public void testRenameAsset() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         repo.createPackage( "testRenameAsset",
                             "asset" );
         AssetItem item = repo.loadPackage( "testRenameAsset" ).addAsset( "testRenameAssetSource",
@@ -914,8 +934,9 @@
 
     }
 
+	@Test
     public void testRenamePackage() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         PackageItem original = repo.createPackage( "testRenamePackage",
                                                    "asset" );
         List packagesOriginal = iteratorToList( repo.listPackages() );
@@ -948,8 +969,9 @@
 
     }
 
+	@Test
     public void testCopyPackage() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         PackageItem source = repo.createPackage( "testCopyPackage",
                                                  "asset" );
         AssetItem item = source.addAsset( "testCopyPackage",
@@ -990,8 +1012,9 @@
 
     }
 
+	@Test
     public void testListStates() {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         StateItem[] items = repo.listStates();
         assertTrue( items.length > 0 );
 
@@ -1002,8 +1025,9 @@
                       items2.length );
     }
 
+	@Test
     public void testRenameState() {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         StateItem[] items = repo.listStates();
         assertTrue( items.length > 0 );
 
@@ -1031,8 +1055,9 @@
         assertNotNull( repo.loadState( newName ) );
     }
 
+	@Test
     public void testRemoveState() {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         StateItem[] items = repo.listStates();
         assertTrue( items.length > 0 );
 
@@ -1057,9 +1082,27 @@
         }
 
     }
+	/*
+	 * http://jira.jboss.org/browse/MODE-882
+	 */
+	@Test
+    public void testSimpleImportExport() throws PathNotFoundException, IOException, RepositoryException {
+		RulesRepository repo = getRepo();
+	
+		byte[] repository_backup;
 
-    public void xtestImportExport() {
-		RulesRepository repo = RepositorySessionUtil.getRepository();
+		ByteArrayOutputStream bout = new ByteArrayOutputStream();
+		Session session = getRepo().getSession();
+		session.refresh( false );
+        session.exportSystemView( "/" + "drools:repository", bout, false, false );
+		repository_backup = bout.toByteArray();
+		repo.importRulesRepositoryFromStream(new ByteArrayInputStream(
+				repository_backup));
+	}
+
+	@Test
+    public void testImportExport() {
+		RulesRepository repo = getRepo();
 		byte[] repository_unitest;
 		byte[] repository_backup;
 
@@ -1086,9 +1129,43 @@
 		repo.importRepository(new ByteArrayInputStream(repository_unitest));
 		assertTrue(repo.containsPackage("testImportExport"));
 	}
+	
+	 /*
+     * https://jira.jboss.org/browse/MODE-883
+     */
+    @Test
+    public void testSimpleShareableNodes() throws Exception {
+        
+    	Node node = getRepo().getSession().getNode("/drools:repository/drools:package_area/globalArea/");
+    	Node assetNode = node.getNode("assets").addNode("testKurt","drools:assetNodeType");
+    	//Adding some required properties
+    	assetNode.setProperty("drools:packageName", "one");
+    	assetNode.setProperty("drools:title", "title");
+    	assetNode.setProperty("drools:format", "format");
+    	assetNode.setProperty("drools:description", "description");
+		Calendar lastModified = Calendar.getInstance();
+		assetNode.setProperty("drools:lastModified", lastModified);
+    	getRepo().getSession().save();
+    	assetNode.checkin();
+    	
+    	
+    	//Creating a shared Node
+		assetNode.checkout();
+		assetNode.addMixin("mix:shareable");
+		getRepo().getSession().save();
+		assetNode.checkin();
+    	Workspace workspace = getRepo().getSession().getWorkspace();
+    	String srcPath   = "/drools:repository/drools:package_area/globalArea/assets/testKurt";
+    	String path    = "/drools:repository/drools:package_area/defaultPackage/assets/testKurt";
+    	workspace.clone(workspace.getName(), srcPath, path, false);	
+    	
+    	assetNode.remove();
+       
+    }
 
+	@Test
 	public void testShareableNodes() throws Exception {
-		RulesRepository repo = RepositorySessionUtil.getRepository();
+		RulesRepository repo = getRepo();
 		AssetItem item = repo.loadDefaultPackage().addAsset("testShareableNodeOriginal", "desc");
 		item.updateContent("la");
 		item.getNode().addMixin("mix:shareable");
@@ -1112,8 +1189,9 @@
 	    originalItem.remove();
 	}
 	
+	@Test
 	public void testShareableNodesWithQuery() throws Exception {
-		RulesRepository repo = RepositorySessionUtil.getRepository();
+		RulesRepository repo = getRepo();
 		AssetItem item = repo.loadGlobalArea().addAsset("testShareableNodesWithQueryOriginal", "desc");
 		item.updateFormat("xyz");
 		item.getNode().addMixin("mix:shareable");
@@ -1146,19 +1224,20 @@
         assertTrue(list.get( 0 ) instanceof AssetItem);
 	}	
 	
+	@Test @Ignore
 	public void xtestImportExportWithShareableNodes() throws Exception {
-		RulesRepository repo = RepositorySessionUtil.getRepository();
-		AssetItem item = repo.loadDefaultPackage().addAsset("testShareableNodeOriginal", "desc");
+		RulesRepository repo = getRepo();
+		AssetItem item = repo.loadDefaultPackage().addAsset("testImportExportShareableNodeOriginal", "desc");
 		item.updateContent("la");
 		item.getNode().addMixin("mix:shareable");
-		PackageItem source = repo.createPackage("testShareableNodesPackage", "desc");
+		PackageItem source = repo.createPackage("testImportExportShareableNodesPackage", "desc");
 		repo.save();
 
 		source.checkout();
 		
 		Session session = repo.getSession();
 		Workspace workspace = session.getWorkspace();
-		String path = "/drools:repository/drools:package_area/testShareableNodesPackage/assets/testShareableNodeShared";
+		String path = "/drools:repository/drools:package_area/testImportExportShareableNodesPackage/assets/testImportExportShareableNodeShared";
 		workspace.clone(workspace.getName(), item.getNode().getPath(), path, false);		
 		repo.save();
 		
@@ -1171,16 +1250,17 @@
 
 		repo.importRulesRepositoryFromStream(new ByteArrayInputStream(
 				repository_backup));
-		assertTrue(repo.containsPackage("testShareableNodesPackage"));
-		assertTrue(repo.loadPackage("testShareableNodesPackage").containsAsset("testShareableNodeOriginal"));
+		assertTrue(repo.containsPackage("testImportExportShareableNodesPackage"));
+		assertTrue(repo.loadPackage("testImportExportShareableNodesPackage").containsAsset("testImportExportShareableNodeOriginal"));
 	}
 	
 	//In this test case we expect an ItemExistException from the second thread,
-        //other than ending up with two packages with same name.
+    //other than ending up with two packages with same name.
 	//https://jira.jboss.org/jira/browse/GUVNOR-346
+	@Test
     public void testConcurrentCopyPackage() throws Exception {
        // set up testing data               
-       RulesRepository repo = RepositorySessionUtil.getMultiThreadedRepository();
+	   RulesRepository repo = RepositorySessionUtil.getMultiThreadedRepository();
        PackageItem source = repo.createPackage("testConcurrentCopyPackage",
                "asset");
        AssetItem item = source.addAsset("testCopyPackage", "desc");
@@ -1190,9 +1270,9 @@
 
        int NUM_ITERATIONS = 40;
        int NUM_SESSIONS = 2;
-              for (int n = 0; n < NUM_ITERATIONS; n++) {
+       for (int n = 0; n < NUM_ITERATIONS; n++) {
            Node folderNode = repo.getAreaNode(RulesRepository.RULE_PACKAGE_AREA);
-                      // cleanup
+           // cleanup
            while (folderNode.hasNode("testConcurrentCopyPackage2")) {
                folderNode.getNode("testConcurrentCopyPackage2").remove();
                repo.save();
@@ -1210,8 +1290,9 @@
            for (int i = 0; i < threads.length; i++) {
                threads[i].join();
            }
-
+           
            //Node folderNode = repo.getAreaNode(RulesRepository.RULE_PACKAGE_AREA);
+           folderNode.refresh(true);
            NodeIterator results = folderNode.getNodes("testConcurrentCopyPackage2");
            assertEquals(1, results.getSize());
        }        }
@@ -1220,7 +1301,7 @@
        String identity;
        Random r;
        RulesRepository localRepo;
-              ConcurrentCopySession(String identity) {
+       ConcurrentCopySession(String identity) {
            this.identity = identity;
            r = new Random();
            localRepo = RepositorySessionUtil.getMultiThreadedRepository();
@@ -1239,11 +1320,12 @@
                //This returns different repository instances for different threads
                localRepo.copyPackage("testConcurrentCopyPackage",
                        "testConcurrentCopyPackage2");
-               PackageItem dest = localRepo
-                       .loadPackage("testConcurrentCopyPackage2");
+               PackageItem dest = localRepo.loadPackage("testConcurrentCopyPackage2");
                assertNotNull(dest);
-               randomSleep();                       } catch (RulesRepositoryException rre) {
+               randomSleep();                       
+           } catch (RulesRepositoryException rre) {
                //expected
+        	   System.out.println("Expected");
            } finally {
            }
        }

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ScalabilityTest.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -20,6 +20,7 @@
 import java.util.Calendar;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Properties;
 
 import javax.jcr.Node;
 import javax.jcr.Repository;
@@ -27,11 +28,12 @@
 import javax.jcr.SimpleCredentials;
 import javax.jcr.UnsupportedRepositoryOperationException;
 
-import org.apache.jackrabbit.core.TransientRepository;
 import org.drools.repository.AssetItem;
 import org.drools.repository.RulesRepository;
 import org.drools.repository.RulesRepositoryException;
 import org.drools.repository.VersionableItem;
+import org.junit.Ignore;
+import org.junit.Test;
 
 import junit.framework.TestCase;
 
@@ -42,26 +44,28 @@
  * It will take a LONG time to add these nodes, and does it in batches.
  *
  */
-public class ScalabilityTest extends TestCase {
+public class ScalabilityTest extends RepositoryTestCase {
 
     private static final int NUM = 5000;
     private RulesRepository repo;
 
+    @Test
     public void testDummy() {
 
     }
 
+    @Test @Ignore
     public void xxtestRun() throws Exception {
-        JCRRepositoryConfigurator config = new JackrabbitRepositoryConfigurator();
-
-        Session session = config.getJCRRepository("./scalabilityTestRepo").login(
+    	Properties properties = new Properties();
+    	properties.put(JCRRepositoryConfigurator.REPOSITORY_ROOT_DIRECTORY, "./scalabilityTestRepo");
+        RulesRepositoryConfigurator config = RulesRepositoryConfigurator.getInstance(properties);
+        Session session = config.getJCRRepository().login(
                                            new SimpleCredentials("alan_parsons", "password".toCharArray()));
-
-
+        config.setupRepository(session);
         repo = new RulesRepository(session);
 
         long start = System.currentTimeMillis();
-        //setupData( repo );
+        setupData( repo );
         System.out.println("time to add, version and tag 5000: " + (System.currentTimeMillis() - start));
         List list = listACat(repo);
         System.out.println("list size is: " + list.size());

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ShareableAssetItemTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ShareableAssetItemTest.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/ShareableAssetItemTest.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -23,768 +23,812 @@
 import java.util.Iterator;
 import java.util.List;
 
+import javax.jcr.Node;
+import javax.jcr.PathNotFoundException;
+import javax.jcr.RepositoryException;
+import javax.jcr.ValueFormatException;
+import javax.jcr.Workspace;
 import javax.jcr.version.Version;
 import javax.jcr.version.VersionIterator;
 
-import junit.framework.TestCase;
-import org.drools.repository.events.StorageEventManager;
+import org.junit.Ignore;
+import org.junit.Test;
 
-public class ShareableAssetItemTest extends TestCase {
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.fail;
 
-	private RulesRepository getRepo() {
-		return RepositorySessionUtil.getRepository();
-	}
+public class ShareableAssetItemTest extends RepositoryTestCase {
 
-	private PackageItem loadGlobalArea() {
-		return getRepo().loadGlobalArea();
-	}
+    private PackageItem loadGlobalArea() {
+        return getRepo().loadGlobalArea();
+    }
 
-	private PackageItem getDefaultPackage() {
-		return getRepo().loadDefaultPackage();
-	}
-	
-	
-	public void testCreateShareableAsset() throws Exception {
-		Calendar now = Calendar.getInstance();
-		Thread.sleep(500); // MN: need this sleep to get the correct date
+    @Test
+    public void testCreateShareableAsset() throws Exception {
+        Calendar now = Calendar.getInstance();
+        Thread.sleep(500); // MN: need this sleep to get the correct date
 
-		AssetItem ruleItem = loadGlobalArea().addAsset("testCreateShareableAssetAsset",
-				"desc");
-		ruleItem.updateContent("la");
-		ruleItem.checkin("initial");
-		
-		AssetItem linkedRuleItem = getDefaultPackage().addAssetImportedFromGlobalArea(ruleItem.getName());
-		linkedRuleItem.updateContent("laa");
-		linkedRuleItem.checkin("second");
-		
-		//Test name
-		assertEquals("testCreateShareableAssetAsset", linkedRuleItem.getName());
-		assertEquals("testCreateShareableAssetAsset", ruleItem.getName());
+        AssetItem ruleItem = loadGlobalArea().addAsset("testCreateShareableAssetAsset", "desc");
+        ruleItem.updateContent("la");
+        ruleItem.checkin("initial");
 
-		//Test Date
-		assertNotNull(ruleItem.getCreatedDate());
-		assertNotNull(linkedRuleItem.getCreatedDate());
-		assertTrue(now.before(ruleItem.getCreatedDate()));
-		assertTrue(now.before(linkedRuleItem.getCreatedDate()));
+        AssetItem linkedRuleItem = getDefaultPackage().addAssetImportedFromGlobalArea(ruleItem.getName());
+        linkedRuleItem.updateContent("laa");
+        linkedRuleItem.checkin("second");
 
-		//Test package name
-		assertEquals("globalArea", ruleItem.getPackageName());
-		//NOTE: For the asset that links to the shared asset, its package name is always "globalArea".
-		assertEquals("globalArea", linkedRuleItem.getPackageName());
-		assertEquals(loadGlobalArea().getUUID(), ruleItem.getPackage().getUUID());
-		
-		//REVISIT: getPackage mess. 
-		//assertEquals(loadGlobalArea().getUUID(), linkedRuleItem.getPackage().getUUID());		
-		assertEquals("laa", linkedRuleItem.getContent());
-		assertEquals("laa", ruleItem.getContent());
+        // Test name
+        assertEquals("testCreateShareableAssetAsset", linkedRuleItem.getName());
+        assertEquals("testCreateShareableAssetAsset", ruleItem.getName());
 
-		//Test UUID
-		assertNotNull(ruleItem.getUUID());
-		assertNotNull(linkedRuleItem.getUUID());
-		//NOTE: They are same nodes. So same UUID! 
-		assertTrue(linkedRuleItem.getUUID().equals(linkedRuleItem.getUUID()));
-	}
-	
-	public void testRemoveShareableAsset() throws Exception {
-		AssetItem asset = loadGlobalArea().addAsset("testRemoveShareableAssetAsset",
-				"desc");
-		asset.updateContent("la");
-		asset.checkin("initial");
-		
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
-		linkedAsset.updateContent("laa");
-		linkedAsset.checkin("second");
-		
-		//REVISIT: the shared asset can not be removed unless no asset refers to it. 
-		//asset.remove();
-		
-		linkedAsset.remove();
-		
-		try {
-			AssetItem linkedAsset1 = getDefaultPackage().loadAsset(
-					"testRemoveShareableAssetAsset");
-			fail("Did not get expected exception");
-		} catch (RulesRepositoryException e) {
+        // Test Date
+        assertNotNull(ruleItem.getCreatedDate());
+        assertNotNull(linkedRuleItem.getCreatedDate());
+        assertTrue(now.before(ruleItem.getCreatedDate()));
+        assertTrue(now.before(linkedRuleItem.getCreatedDate()));
 
-		}
-		
-		AssetItem asset1 = loadGlobalArea().loadAsset(
-		"testRemoveShareableAssetAsset");
-		assertTrue(asset.getUUID().equals(asset1.getUUID()));
-	}
-	
-	public void testGetContentLengthForShareableAsset() throws Exception {
-		AssetItem ruleItem = loadGlobalArea().addAsset("testGetContentLengthForShareableAsset", "desc");
-		ruleItem.checkin("initial");
-		AssetItem linkedRuleItem = getDefaultPackage().addAssetImportedFromGlobalArea(ruleItem.getName());
-		
-		assertEquals(0, ruleItem.getContentLength());
-		assertEquals(0, linkedRuleItem.getContentLength());
-		ruleItem.updateContent("boo");
-		ruleItem.checkin("");
-		assertEquals("boo".getBytes().length, ruleItem.getContentLength());
-		assertEquals("boo".getBytes().length, linkedRuleItem.getContentLength());
-		
-		linkedRuleItem.updateContent("booo");
-		linkedRuleItem.checkin("");
-		assertEquals("booo".getBytes().length, ruleItem.getContentLength());
-		assertEquals("booo".getBytes().length, linkedRuleItem.getContentLength());
-		
-		
-		ruleItem = loadGlobalArea().addAsset("testGetContentLengthForShareableAsset2", "");
-		ruleItem.checkin("initial");
-		linkedRuleItem = getDefaultPackage().addAssetImportedFromGlobalArea(ruleItem.getName());
+        // Test package name
+        assertEquals("globalArea", ruleItem.getPackageName());
+        // NOTE: For the asset that links to the shared asset, its package name is always "globalArea".
+        assertEquals("globalArea", linkedRuleItem.getPackageName());
+        assertEquals(loadGlobalArea().getUUID(), ruleItem.getPackage().getUUID());
 
-		assertEquals(0, ruleItem.getContentLength());
-		assertEquals(0, linkedRuleItem.getContentLength());		
-		linkedRuleItem.updateBinaryContentAttachment(new ByteArrayInputStream("foobar"
-				.getBytes()));
-		linkedRuleItem.checkin("");
-		assertEquals("foobar".getBytes().length, ruleItem.getContentLength());
-		assertEquals("foobar".getBytes().length, linkedRuleItem.getContentLength());
-		
-		ruleItem.updateBinaryContentAttachment(new ByteArrayInputStream("foobarr"
-				.getBytes()));
-		ruleItem.checkin("");
-		assertEquals("foobarr".getBytes().length, ruleItem.getContentLength());
-		assertEquals("foobarr".getBytes().length, linkedRuleItem.getContentLength());
-	}
+        // REVISIT: getPackage mess.
+        // assertEquals(loadGlobalArea().getUUID(), linkedRuleItem.getPackage().getUUID());
+        assertEquals("laa", linkedRuleItem.getContent());
+        assertEquals("laa", ruleItem.getContent());
 
-	public void testUpdateStringPropertyForShareableAsset() throws Exception {
-		AssetItem asset = loadGlobalArea().addAsset(
-				"testUpdateStringPropertyForShareableAsset", "desc");
-		asset.checkin("initial");
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());		
-		linkedAsset.updateContent("new content");
-		linkedAsset.checkin("");
+        // Test UUID
+        assertNotNull(ruleItem.getUUID());
+        assertNotNull(linkedRuleItem.getUUID());
+        // NOTE: They are same nodes. So same UUID!
+        assertTrue(linkedRuleItem.getUUID().equals(linkedRuleItem.getUUID()));
+    }
 
-		linkedAsset.updateStringProperty("Anything", "AField");
-		assertEquals("Anything", linkedAsset.getStringProperty("AField"));
-		assertEquals("Anything", asset.getStringProperty("AField"));
+    @Test
+    public void testRemoveShareableAsset() throws Exception {
+        AssetItem asset = loadGlobalArea().addAsset("testRemoveShareableAssetAsset", "desc");
+        asset.updateContent("la");
+        asset.checkin("initial");
 
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+        linkedAsset.updateContent("laa");
+        linkedAsset.checkin("second");
 
-		asset.updateStringProperty("More", "AField", false);		
-		asset.updateContent("more content");
-		asset.checkin("");
+        // REVISIT: the shared asset can not be removed unless no asset refers to it.
+        // asset.remove();
 
-		asset = getRepo().loadAssetByUUID(asset.getUUID());
-		assertEquals("More", asset.getStringProperty("AField"));
-		assertEquals("more content", asset.getContent());		
-		linkedAsset = getRepo().loadAssetByUUID(linkedAsset.getUUID());
-		assertEquals("More", linkedAsset.getStringProperty("AField"));
-		assertEquals("more content", asset.getContent());
-	}
+        linkedAsset.remove();
 
-	public void testGetPackageItemHistoricalForShareableAsset() throws Exception {
-		AssetItem asset = loadGlobalArea().addAsset("testGetPackageItemHistoricalForShareableAsset", "test content");
-		//Version 1, created by the original asset
-		asset.checkin("initial");		
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());		
+        try {
+            AssetItem linkedAsset1 = getDefaultPackage().loadAsset("testRemoveShareableAssetAsset");
+            fail("Did not get expected exception");
+        } catch (RulesRepositoryException e) {
 
-		//Test package snapshot
-		getRepo().createPackageSnapshot(getDefaultPackage().getName(), "SNAP");
+        }
 
-		PackageItem pkgSnap = getRepo().loadPackageSnapshot(getDefaultPackage().getName(), "SNAP");
-		AssetItem assetSnap = pkgSnap.loadAsset("testGetPackageItemHistoricalForShareableAsset");
-		PackageItem pkgSnap1 = assetSnap.getPackage();
-		assertTrue(pkgSnap1.isSnapshot());
-		assertTrue(pkgSnap.isSnapshot());
-		assertFalse(getDefaultPackage().isSnapshot());
-		assertEquals(getDefaultPackage().getName(), pkgSnap1.getName());
-		
-		AssetItem linkedAsset1 = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset");
-		PackageItem linkedPkg = linkedAsset1.getPackage();
-		assertFalse(linkedPkg.isSnapshot());
-		assertFalse(getDefaultPackage().isSnapshot());
-		assertEquals(getDefaultPackage().getName(), linkedPkg.getName());
-		
-		linkedAsset.updateDescription("yeah !");
-		
-		//Version 3, created by LinkedAssetItem
-		linkedAsset.checkin("new");
+        AssetItem asset1 = loadGlobalArea().loadAsset("testRemoveShareableAssetAsset");
+        assertTrue(asset.getUUID().equals(asset1.getUUID()));
+    }
 
-		linkedAsset = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset");
-		assertNotNull(linkedAsset.getPackage());
+    @Test
+    public void testGetContentLengthForShareableAsset() throws Exception {
+        AssetItem ruleItem = loadGlobalArea().addAsset("testGetContentLengthForShareableAsset", "desc");
+        ruleItem.checkin("initial");
+        AssetItem linkedRuleItem = getDefaultPackage().addAssetImportedFromGlobalArea(ruleItem.getName());
 
-		AssetHistoryIterator linkedIt = linkedAsset.getHistory();
-		assertEquals(4, iteratorToList(linkedIt).size());		
-		
-		asset = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset");
-		AssetHistoryIterator it = asset.getHistory();
-		assertEquals(4, iteratorToList(it).size());		
-	}
-	
-    List iteratorToList(Iterator it) {
+        assertEquals(0, ruleItem.getContentLength());
+        assertEquals(0, linkedRuleItem.getContentLength());
+        ruleItem.updateContent("boo");
+        ruleItem.checkin("");
+        assertEquals("boo".getBytes().length, ruleItem.getContentLength());
+        assertEquals("boo".getBytes().length, linkedRuleItem.getContentLength());
+
+        linkedRuleItem.updateContent("booo");
+        linkedRuleItem.checkin("");
+        assertEquals("booo".getBytes().length, ruleItem.getContentLength());
+        assertEquals("booo".getBytes().length, linkedRuleItem.getContentLength());
+
+        ruleItem = loadGlobalArea().addAsset("testGetContentLengthForShareableAsset2", "");
+        ruleItem.checkin("initial");
+        linkedRuleItem = getDefaultPackage().addAssetImportedFromGlobalArea(ruleItem.getName());
+
+        assertEquals(0, ruleItem.getContentLength());
+        assertEquals(0, linkedRuleItem.getContentLength());
+        linkedRuleItem.updateBinaryContentAttachment(new ByteArrayInputStream("foobar".getBytes()));
+        linkedRuleItem.checkin("");
+        assertEquals("foobar".getBytes().length, ruleItem.getContentLength());
+        assertEquals("foobar".getBytes().length, linkedRuleItem.getContentLength());
+
+        ruleItem.updateBinaryContentAttachment(new ByteArrayInputStream("foobarr".getBytes()));
+        ruleItem.checkin("");
+        assertEquals("foobarr".getBytes().length, ruleItem.getContentLength());
+        assertEquals("foobarr".getBytes().length, linkedRuleItem.getContentLength());
+    }
+
+    @Test
+    public void testUpdateStringPropertyForShareableAsset() throws Exception {
+        AssetItem asset = loadGlobalArea().addAsset("testUpdateStringPropertyForShareableAsset", "desc");
+        asset.checkin("initial");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+        linkedAsset.updateContent("new content");
+        linkedAsset.checkin("");
+
+        linkedAsset.updateStringProperty("Anything", "AField");
+        assertEquals("Anything", linkedAsset.getStringProperty("AField"));
+        assertEquals("Anything", asset.getStringProperty("AField"));
+
+        asset.updateStringProperty("More", "AField", false);
+        asset.updateContent("more content");
+        asset.checkin("");
+
+        asset = getRepo().loadAssetByUUID(asset.getUUID());
+        assertEquals("More", asset.getStringProperty("AField"));
+        assertEquals("more content", asset.getContent());
+        linkedAsset = getRepo().loadAssetByUUID(linkedAsset.getUUID());
+        assertEquals("More", linkedAsset.getStringProperty("AField"));
+        assertEquals("more content", asset.getContent());
+    }
+    /*
+     * https://jira.jboss.org/browse/MODE-879
+     */
+    @Test
+    public void testSimpleGetPackageItemHistoricalForShareableAsset() throws Exception {
+        
+    	Node node = getRepo().getSession().getNode("/drools:repository/drools:package_area/globalArea/");
+    	Node assetNode = node.getNode("assets").addNode("testKurt","drools:assetNodeType");
+    	//Adding some required properties
+    	assetNode.setProperty("drools:packageName", "one");
+    	assetNode.setProperty("drools:title", "title");
+    	assetNode.setProperty("drools:format", "format");
+    	assetNode.setProperty("drools:description", "description");
+		Calendar lastModified = Calendar.getInstance();
+		assetNode.setProperty("drools:lastModified", lastModified);
+    	getRepo().getSession().save();
+    	assetNode.checkin();
+    	findAndPrintNodeName(assetNode);
+    	
+    	//Creating a shared Node
+		assetNode.checkout();
+		assetNode.addMixin("mix:shareable");
+		getRepo().getSession().save();
+		assetNode.checkin();
+    	Workspace workspace = getRepo().getSession().getWorkspace();
+    	String srcPath   = "/drools:repository/drools:package_area/globalArea/assets/testKurt";
+    	String path    = "/drools:repository/drools:package_area/defaultPackage/assets/testKurt";
+    	workspace.clone(workspace.getName(), srcPath, path, false);	
+    	
+        findAndPrintNodeName(assetNode);
+        
+        // Test package snapshot
+        String packageName = getDefaultPackage().getName();
+        try {
+            Node snaps = getRepo().getAreaNode( "drools:packagesnapshot_area" );
+            if ( !snaps.hasNode( packageName ) ) {
+                snaps.addNode( packageName,
+                               "nt:folder" );
+                getRepo().save();
+            }
+            
+            String source = "/drools:repository/drools:package_area/defaultPackage";
+            String newName = "/drools:repository/drools:packagesnapshot_area/defaultPackage/SNAP";
+            getRepo().getSession().getWorkspace().copy( source, newName );
+        } catch ( Exception e ) {
+            fail();
+        }
+        findAndPrintNodeName(assetNode);
+        //asset.updateDescription("yeah !");
+    }
+    
+    private void findAndPrintNodeName(Node node) throws ValueFormatException, PathNotFoundException, RepositoryException {
+    	String UUID = node.getProperty("jcr:baseVersion").getString();
+        Node nodeFound = getRepo().getSession().getNodeByUUID(UUID);
+        System.out.println("Node:" + nodeFound.getName());
+    }
+
+    @Test
+    public void testGetPackageItemHistoricalForShareableAsset() throws Exception {
+        AssetItem asset = loadGlobalArea().addAsset("testGetPackageItemHistoricalForShareableAsset", "test content");
+        // Version 1, created by the original asset
+        asset.checkin("initial");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+
+        // Test package snapshot
+        String name = getDefaultPackage().getName();
+        getRepo().createPackageSnapshot(getDefaultPackage().getName(), "SNAP");
+
+        PackageItem pkgSnap = getRepo().loadPackageSnapshot(getDefaultPackage().getName(), "SNAP");
+        AssetItem assetSnap = pkgSnap.loadAsset("testGetPackageItemHistoricalForShareableAsset");
+        PackageItem pkgSnap1 = assetSnap.getPackage();
+        assertTrue(pkgSnap1.isSnapshot());
+        assertTrue(pkgSnap.isSnapshot());
+        assertFalse(getDefaultPackage().isSnapshot());
+        assertEquals(getDefaultPackage().getName(), pkgSnap1.getName());
+
+        AssetItem linkedAsset1 = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset");
+        PackageItem linkedPkg = linkedAsset1.getPackage();
+        assertFalse(linkedPkg.isSnapshot());
+        assertFalse(getDefaultPackage().isSnapshot());
+        assertEquals(getDefaultPackage().getName(), linkedPkg.getName());
+
+        linkedAsset.updateDescription("yeah !");
+
+        // Version 3, created by LinkedAssetItem
+        linkedAsset.checkin("new");
+
+        linkedAsset = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset");
+        assertNotNull(linkedAsset.getPackage());
+
+        AssetHistoryIterator linkedIt = linkedAsset.getHistory();
+        assertEquals(4, iteratorToList(linkedIt).size());
+
+        asset = getDefaultPackage().loadAsset("testGetPackageItemHistoricalForShareableAsset");
+        AssetHistoryIterator it = asset.getHistory();
+        assertEquals(4, iteratorToList(it).size());
+    }
+
+    List iteratorToList( Iterator it ) {
         List list = new ArrayList();
-        while(it.hasNext()) {
-            list.add( it.next() );
+        while (it.hasNext()) {
+            list.add(it.next());
         }
         return list;
     }
 
-	public void testGetContentForShareableAsset() {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset(
-				"testGetContentForShareableAsset", "test content");
-		AssetItem linkedAsset = getRepo().loadDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
-		
-		linkedAsset.updateContent("test content");
-		linkedAsset.updateFormat("drl");
+    @Test
+    public void testGetContentForShareableAsset() {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetContentForShareableAsset", "test content");
+        AssetItem linkedAsset = getRepo().loadDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		assertNotNull(linkedAsset.getNode());
-		assertEquals("test content", linkedAsset.getContent());
-		assertEquals("test content", asset.getContent());
+        linkedAsset.updateContent("test content");
+        linkedAsset.updateFormat("drl");
 
-		assertFalse(linkedAsset.isBinary());
-		assertFalse(asset.isBinary());
+        assertNotNull(linkedAsset.getNode());
+        assertEquals("test content", linkedAsset.getContent());
+        assertEquals("test content", asset.getContent());
 
-		assertNotNull(linkedAsset.getBinaryContentAsBytes());
-		assertNotNull(linkedAsset.getBinaryContentAttachment());
-		String content = new String(linkedAsset.getBinaryContentAsBytes());
-		assertNotNull(content);
-		content = new String(asset.getBinaryContentAsBytes());
-		assertNotNull(content);	
-	}
+        assertFalse(linkedAsset.isBinary());
+        assertFalse(asset.isBinary());
 
-	public void testUpdateContentForShareableAsset() throws Exception {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset(
-				"testUpdateContentForShareableAsset", "test content");
-		AssetItem linkedAsset = getRepo().loadDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+        assertNotNull(linkedAsset.getBinaryContentAsBytes());
+        assertNotNull(linkedAsset.getBinaryContentAttachment());
+        String content = new String(linkedAsset.getBinaryContentAsBytes());
+        assertNotNull(content);
+        content = new String(asset.getBinaryContentAsBytes());
+        assertNotNull(content);
+    }
 
-		assertFalse(asset.getCreator().equals(""));
-		assertFalse(linkedAsset.getCreator().equals(""));
-		linkedAsset.updateContent("test content");
-		linkedAsset.checkin("yeah");
+    @Test
+    public void testUpdateContentForShareableAsset() throws Exception {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testUpdateContentForShareableAsset", "test content");
+        AssetItem linkedAsset = getRepo().loadDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		assertFalse(linkedAsset.getLastContributor().equals(""));
-		assertFalse(asset.getLastContributor().equals(""));
+        assertFalse(asset.getCreator().equals(""));
+        assertFalse(linkedAsset.getCreator().equals(""));
+        linkedAsset.updateContent("test content");
+        linkedAsset.checkin("yeah");
 
-		linkedAsset.updateContent("new rule content");
+        assertFalse(linkedAsset.getLastContributor().equals(""));
+        assertFalse(asset.getLastContributor().equals(""));
 
-		assertEquals("new rule content", linkedAsset.getContent());
+        linkedAsset.updateContent("new rule content");
 
-		assertTrue(linkedAsset.getNode().getSession().hasPendingChanges());
-		assertTrue(asset.getNode().getSession().hasPendingChanges());
+        assertEquals("new rule content", linkedAsset.getContent());
 
-		asset.checkin("yeah !");
-		assertFalse(asset.getNode().getSession().hasPendingChanges());
-		assertEquals("yeah !", asset.getCheckinComment());
-		
-		try {
-		    linkedAsset.checkin("yeah linked !");
-		    fail("Did not get expected exception: Unable to checkin");
-		} catch (RulesRepositoryException e) {
-			
-		}
+        assertTrue(linkedAsset.getNode().getSession().hasPendingChanges());
+        assertTrue(asset.getNode().getSession().hasPendingChanges());
 
-		AssetItem prev = (AssetItem) asset.getPrecedingVersion();
-		assertEquals("test content", prev.getContent());
-		assertFalse("yeah !".equals(prev.getCheckinComment()));
+        asset.checkin("yeah !");
+        assertFalse(asset.getNode().getSession().hasPendingChanges());
+        assertEquals("yeah !", asset.getCheckinComment());
 
-		asset = getDefaultPackage().loadAsset("testUpdateContentForShareableAsset");
-		VersionIterator it = asset.getNode().getVersionHistory()
-				.getAllVersions();
+        try {
+            linkedAsset.checkin("yeah linked !");
+            fail("Did not get expected exception: Unable to checkin");
+        } catch (RulesRepositoryException e) {
 
-		// and this shows using a version iterator.
-		// perhaps migrate to using this rather then next/prev methods.
-		// this way, we can skip.
-		assertTrue(it.hasNext());
-		while (it.hasNext()) {
-			Version n = it.nextVersion();
-			AssetItem item = new AssetItem(asset.getRulesRepository(), n);
-			assertNotNull(item);
-		}
-	}
+        }
 
-	public void testCategoriesForShareableAsset() {
-		getRepo().loadCategory("/").addCategory("testCategoriesTag",	"description");
-		getRepo().loadCategory("/").addCategory("testCategoriesTag2", "description");		
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testCategoriesForShareableAsset", "desc");	
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+        AssetItem prev = (AssetItem)asset.getPrecedingVersion();
+        assertEquals("test content", prev.getContent());
+        assertFalse("yeah !".equals(prev.getCheckinComment()));
 
-		linkedAsset.addCategory("testCategoriesTag");
-		List tags = linkedAsset.getCategories();
-		assertEquals(1, tags.size());
-		assertEquals("testCategoriesTag", ((CategoryItem) tags.get(0)).getName());
+        asset = getDefaultPackage().loadAsset("testUpdateContentForShareableAsset");
+        VersionIterator it = asset.getNode().getVersionHistory().getAllVersions();
 
-		linkedAsset.addCategory("testCategoriesTag2");
-		tags = linkedAsset.getCategories();
-		assertEquals(2, tags.size());
+        // and this shows using a version iterator.
+        // perhaps migrate to using this rather then next/prev methods.
+        // this way, we can skip.
+        assertTrue(it.hasNext());
+        while (it.hasNext()) {
+            Version n = it.nextVersion();
+            AssetItem item = new AssetItem(asset.getRulesRepository(), n);
+            assertNotNull(item);
+        }
+    }
 
-		linkedAsset.checkin("woot");
+    @Test
+    public void testCategoriesForShareableAsset() {
+        getRepo().loadCategory("/").addCategory("testCategoriesTag", "description");
+        getRepo().loadCategory("/").addCategory("testCategoriesTag2", "description");
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testCategoriesForShareableAsset", "desc");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		// now test retrieve by tags
-		List result = getRepo().findAssetsByCategory("testCategoriesTag", 0, -1).assets;
-		assertEquals(1, result.size());
-		AssetItem retItem = (AssetItem) result.get(0);
-		assertEquals("testCategoriesForShareableAsset", retItem.getName());
+        linkedAsset.addCategory("testCategoriesTag");
+        List tags = linkedAsset.getCategories();
+        assertEquals(1, tags.size());
+        assertEquals("testCategoriesTag", ((CategoryItem)tags.get(0)).getName());
 
-		asset.updateContent("foo");
-		asset.checkin("latest");
+        linkedAsset.addCategory("testCategoriesTag2");
+        tags = linkedAsset.getCategories();
+        assertEquals(2, tags.size());
 
-		assertTrue(asset.getCategories().size() > 0);
-		assertNotNull(asset.getCategorySummary());
-		assertEquals("testCategoriesTag testCategoriesTag2 ", asset
-				.getCategorySummary());
+        linkedAsset.checkin("woot");
 
-		result = getRepo().findAssetsByCategory("testCategoriesTag2", 0, -1).assets;
+        // now test retrieve by tags
+        List result = getRepo().findAssetsByCategory("testCategoriesTag", 0, -1).assets;
+        assertEquals(1, result.size());
+        AssetItem retItem = (AssetItem)result.get(0);
+        assertEquals("testCategoriesForShareableAsset", retItem.getName());
 
-		assertEquals(1, result.size());
-		asset = (AssetItem) result.get(0);
-		assertEquals(2, asset.getCategories().size());
-	}
+        asset.updateContent("foo");
+        asset.checkin("latest");
 
-	public void testUpdateCategoriesForShareableAsset() {
-		getRepo().loadCategory("/").addCategory("testUpdateCategoriesForShareableAssetTag1", "la");
-		getRepo().loadCategory("/").addCategory("testUpdateCategoriesForShareableAssetTag2", "la");
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testUpdateCategoriesForShareableAsset", "desc");	
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
-		
-		String[] cats = new String[] { "testUpdateCategoriesForShareableAssetTag1",
-				"testUpdateCategoriesForShareableAssetTag2" };
-		linkedAsset.updateCategoryList(cats);
+        assertTrue(asset.getCategories().size() > 0);
+        assertNotNull(asset.getCategorySummary());
+        assertEquals("testCategoriesTag testCategoriesTag2 ", asset.getCategorySummary());
 
-		linkedAsset.checkin("aaa");
+        result = getRepo().findAssetsByCategory("testCategoriesTag2", 0, -1).assets;
 
-		asset = getRepo().loadGlobalArea().loadAsset("testUpdateCategoriesForShareableAsset");
-		assertEquals(2, asset.getCategories().size());
+        assertEquals(1, result.size());
+        asset = (AssetItem)result.get(0);
+        assertEquals(2, asset.getCategories().size());
+    }
 
-		for (Iterator iter = asset.getCategories().iterator(); iter.hasNext();) {
-			CategoryItem cat = (CategoryItem) iter.next();
-			assertTrue(cat.getName().startsWith("testUpdateCategoriesForShareableAssetTag"));
-		}
-	}
+    @Test
+    public void testUpdateCategoriesForShareableAsset() {
+        getRepo().loadCategory("/").addCategory("testUpdateCategoriesForShareableAssetTag1", "la");
+        getRepo().loadCategory("/").addCategory("testUpdateCategoriesForShareableAssetTag2", "la");
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testUpdateCategoriesForShareableAsset", "desc");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-	public void testRemoveTagForShareableAsset() {
-		getRepo().loadCategory("/").addCategory("testRemoveTagForShareableAssetTag1", "la");
-		getRepo().loadCategory("/").addCategory("testRemoveTagForShareableAssetTag2", "description");
-		getRepo().loadCategory("/").addCategory("testRemoveTagForShareableAssetTag3", "description");	
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testRemoveTagForShareableAsset", "desc");	
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+        String[] cats = new String[] {"testUpdateCategoriesForShareableAssetTag1", "testUpdateCategoriesForShareableAssetTag2"};
+        linkedAsset.updateCategoryList(cats);
 
-		linkedAsset.addCategory("testRemoveTagForShareableAssetTag1");
-		List tags = linkedAsset.getCategories();
-		assertEquals(1, tags.size());
-		linkedAsset.removeCategory("testRemoveTagForShareableAssetTag1");
-		tags = linkedAsset.getCategories();
-		assertEquals(0, tags.size());
+        linkedAsset.checkin("aaa");
 
-		linkedAsset.addCategory("testRemoveTagForShareableAssetTag2");
-		linkedAsset.addCategory("testRemoveTagForShareableAssetTag3");
-		linkedAsset.checkin("aaa");
+        asset = getRepo().loadGlobalArea().loadAsset("testUpdateCategoriesForShareableAsset");
+        assertEquals(2, asset.getCategories().size());
 
-		linkedAsset.removeCategory("testRemoveTagForShareableAssetTag3");
-		linkedAsset.checkin("aaa");
-		getRepo().save();
+        for (Iterator iter = asset.getCategories().iterator(); iter.hasNext();) {
+            CategoryItem cat = (CategoryItem)iter.next();
+            assertTrue(cat.getName().startsWith("testUpdateCategoriesForShareableAssetTag"));
+        }
+    }
 
-		tags = linkedAsset.getCategories();
-		assertEquals(1, tags.size());
-		assertEquals("testRemoveTagForShareableAssetTag2", ((CategoryItem) tags.get(0))
-				.getName());
-		
-		try {
-			getRepo().loadCategory("testRemoveTagForShareableAssetTag2").remove();
-			fail("should not be able to remove");
-		} catch (RulesRepositoryException e) {
-			assertNotNull(e.getMessage());
-		}
-		
-		//REVISIT:
-/*		try {
-			getRepo().loadCategory("testRemoveTagForShareableAssetTag3").remove();
-			fail("should not reach here. Should have been removed");
-		} catch (RulesRepositoryException e) {
-			assertNotNull(e.getMessage());
-		}*/
-	}
+    @Test
+    public void testRemoveTagForShareableAsset() {
+        getRepo().loadCategory("/").addCategory("testRemoveTagForShareableAssetTag1", "la");
+        getRepo().loadCategory("/").addCategory("testRemoveTagForShareableAssetTag2", "description");
+        getRepo().loadCategory("/").addCategory("testRemoveTagForShareableAssetTag3", "description");
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testRemoveTagForShareableAsset", "desc");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-	public void testStatusStufftestRemoveTagForShareableAsset() {
-		getRepo().createState("testStatusStufftestRemoveTagForShareableAssetStatus");
+        linkedAsset.addCategory("testRemoveTagForShareableAssetTag1");
+        List tags = linkedAsset.getCategories();
+        assertEquals(1, tags.size());
+        linkedAsset.removeCategory("testRemoveTagForShareableAssetTag1");
+        tags = linkedAsset.getCategories();
+        assertEquals(0, tags.size());
 
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testStatusStufftestRemoveTagForShareableAsset", "desc");	
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
-		
-		StateItem stateItem1 = linkedAsset.getState();
-		assertEquals(StateItem.DRAFT_STATE_NAME, stateItem1.getName());
-		assertEquals(getRepo().getState(StateItem.DRAFT_STATE_NAME), linkedAsset.getState());
-		assertEquals(StateItem.DRAFT_STATE_NAME, linkedAsset.getStateDescription());
-		
-		linkedAsset.updateState("testStatusStufftestRemoveTagForShareableAssetStatus");
-		assertEquals("testStatusStufftestRemoveTagForShareableAssetStatus", linkedAsset.getState().getName());
-	}
+        linkedAsset.addCategory("testRemoveTagForShareableAssetTag2");
+        linkedAsset.addCategory("testRemoveTagForShareableAssetTag3");
+        linkedAsset.checkin("aaa");
 
-	public void testGetDateEffectiveForShareableAsset() {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetDateEffectiveForShareableAsset", "desc");	
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+        linkedAsset.removeCategory("testRemoveTagForShareableAssetTag3");
+        linkedAsset.checkin("aaa");
+        getRepo().save();
 
-		// it should be initialized to null
-		assertTrue(linkedAsset.getDateEffective() == null);
+        tags = linkedAsset.getCategories();
+        assertEquals(1, tags.size());
+        assertEquals("testRemoveTagForShareableAssetTag2", ((CategoryItem)tags.get(0)).getName());
 
-		// now try setting it, then retrieving it
-		Calendar cal = Calendar.getInstance();
-		linkedAsset.updateDateEffective(cal);
-		Calendar cal2 = linkedAsset.getDateEffective();
+        try {
+            getRepo().loadCategory("testRemoveTagForShareableAssetTag2").remove();
+            fail("should not be able to remove");
+        } catch (RulesRepositoryException e) {
+            assertNotNull(e.getMessage());
+        }
 
-		assertEquals(cal, cal2);
-	}
+        // REVISIT:
+        /*		try {
+        			getRepo().loadCategory("testRemoveTagForShareableAssetTag3").remove();
+        			fail("should not reach here. Should have been removed");
+        		} catch (RulesRepositoryException e) {
+        			assertNotNull(e.getMessage());
+        		}*/
+    }
 
-	public void testGetDateExpiredForShareableAsset() {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset(
-				"testGetDateExpiredForShareableAsset", "desc");
-		AssetItem linkedAsset = getDefaultPackage()
-				.addAssetImportedFromGlobalArea(asset.getName());
+    @Test
+    public void testStatusStufftestRemoveTagForShareableAsset() {
+        getRepo().createState("testStatusStufftestRemoveTagForShareableAssetStatus");
 
-		// it should be initialized to null
-		assertTrue(linkedAsset.getDateExpired() == null);
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testStatusStufftestRemoveTagForShareableAsset", "desc");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		// now try setting it, then retrieving it
-		Calendar cal = Calendar.getInstance();
-		linkedAsset.updateDateExpired(cal);
-		Calendar cal2 = linkedAsset.getDateExpired();
+        StateItem stateItem1 = linkedAsset.getState();
+        assertEquals(StateItem.DRAFT_STATE_NAME, stateItem1.getName());
+        assertEquals(getRepo().getState(StateItem.DRAFT_STATE_NAME), linkedAsset.getState());
+        assertEquals(StateItem.DRAFT_STATE_NAME, linkedAsset.getStateDescription());
 
-		assertEquals(cal, cal2);
-	}
+        linkedAsset.updateState("testStatusStufftestRemoveTagForShareableAssetStatus");
+        assertEquals("testStatusStufftestRemoveTagForShareableAssetStatus", linkedAsset.getState().getName());
+    }
 
-	public void testSaveAndCheckinDescriptionAndTitleForShareableAsset() throws Exception {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testSaveAndCheckinDescriptionAndTitleForShareableAsset", "desc");
-		asset.checkin("version0");
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+    @Test
+    public void testGetDateEffectiveForShareableAsset() {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetDateEffectiveForShareableAsset", "desc");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		// it should be "" to begin with
-		assertEquals("desc", linkedAsset.getDescription());
+        // it should be initialized to null
+        assertTrue(linkedAsset.getDateEffective() == null);
 
-		linkedAsset.updateDescription("test description");
-		assertEquals("test description", linkedAsset.getDescription());
+        // now try setting it, then retrieving it
+        Calendar cal = Calendar.getInstance();
+        linkedAsset.updateDateEffective(cal);
+        Calendar cal2 = linkedAsset.getDateEffective();
 
-		assertTrue(getRepo().getSession().hasPendingChanges());
+        assertEquals(cal, cal2);
+    }
 
-		linkedAsset.updateTitle("This is a title");
-		assertTrue(getRepo().getSession().hasPendingChanges());
-		linkedAsset.checkin("ya");
+    @Test
+    public void testGetDateExpiredForShareableAsset() {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetDateExpiredForShareableAsset", "desc");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		// we can save without a checkin
-		getRepo().getSession().save();
+        // it should be initialized to null
+        assertTrue(linkedAsset.getDateExpired() == null);
 
-		assertFalse(getRepo().getSession().hasPendingChanges());
+        // now try setting it, then retrieving it
+        Calendar cal = Calendar.getInstance();
+        linkedAsset.updateDateExpired(cal);
+        Calendar cal2 = linkedAsset.getDateExpired();
 
-		try {
-			linkedAsset.getPrecedingVersion().updateTitle("baaad");
-			fail("should not be able to do this");
-		} catch (RulesRepositoryException e) {
-			assertNotNull(e.getMessage());
-		}
-	}
+        assertEquals(cal, cal2);
+    }
 
-	public void testGetPrecedingVersionAndRestoreForShareableAsset() throws Exception {
-		getRepo().loadCategory("/").addCategory("testGetPrecedingVersionAndRestoreCat", "ka");
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetPrecedingVersionAndRestoreForShareableAsset", "desc");
-		asset.checkin("version0");
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+    @Test
+    public void testSaveAndCheckinDescriptionAndTitleForShareableAsset() throws Exception {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testSaveAndCheckinDescriptionAndTitleForShareableAsset", "desc");
+        asset.checkin("version0");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		//assertTrue(asset.getPrecedingVersion() == null);
-		assertNotNull(asset.getPrecedingVersion());
-		assertNotNull(linkedAsset.getPrecedingVersion());
+        // it should be "" to begin with
+        assertEquals("desc", linkedAsset.getDescription());
 
-		linkedAsset.addCategory("testGetPrecedingVersionAndRestoreCat");
-		linkedAsset.updateContent("test content");
-		linkedAsset.updateDescription("descr2");
-		Thread.sleep(100);
-		linkedAsset.checkin("boo");
+        linkedAsset.updateDescription("test description");
+        assertEquals("test description", linkedAsset.getDescription());
 
-		AssetItem predecessorRuleItem = (AssetItem)linkedAsset.getPrecedingVersion();
-		assertNotNull(predecessorRuleItem);
+        assertTrue(getRepo().getSession().hasPendingChanges());
 
-		// check version handling
-		assertNotNull(predecessorRuleItem.getVersionSnapshotUUID());
-		assertFalse(predecessorRuleItem.getVersionSnapshotUUID().equals(
-				asset.getUUID()));
+        linkedAsset.updateTitle("This is a title");
+        assertTrue(getRepo().getSession().hasPendingChanges());
+        linkedAsset.checkin("ya");
 
-		// assertEquals(predecessorRuleItem.getCreatedDate().getTimeInMillis(),
-		// ruleItem1.getCreatedDate().getTimeInMillis());
+        // we can save without a checkin
+        getRepo().getSession().save();
 
-		assertEquals(asset.getState().getName(), predecessorRuleItem
-				.getState().getName());
-		// assertEquals(ruleItem1.getName(), predecessorRuleItem.getName());
+        assertFalse(getRepo().getSession().hasPendingChanges());
 
-		AssetItem loadedHistorical = getRepo().loadAssetByUUID(
-				predecessorRuleItem.getVersionSnapshotUUID());
-		assertTrue(loadedHistorical.isHistoricalVersion());
-		assertFalse(asset.getVersionNumber() == loadedHistorical
-				.getVersionNumber());
+        try {
+            linkedAsset.getPrecedingVersion().updateTitle("baaad");
+            fail("should not be able to do this");
+        } catch (RulesRepositoryException e) {
+            assertNotNull(e.getMessage());
+        }
+    }
 
-		linkedAsset.updateContent("new content");
-		linkedAsset.checkin("two changes");
+    @Test
+    public void testGetPrecedingVersionAndRestoreForShareableAsset() throws Exception {
+        getRepo().loadCategory("/").addCategory("testGetPrecedingVersionAndRestoreCat", "ka");
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetPrecedingVersionAndRestoreForShareableAsset", "desc");
+        asset.checkin("version0");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		predecessorRuleItem = (AssetItem) linkedAsset.getPrecedingVersion();
-		assertNotNull(predecessorRuleItem);
-		assertEquals(1, predecessorRuleItem.getCategories().size());
-		CategoryItem cat = (CategoryItem) predecessorRuleItem.getCategories()
-				.get(0);
-		assertEquals("testGetPrecedingVersionAndRestoreCat", cat.getName());
+        // assertTrue(asset.getPrecedingVersion() == null);
+        assertNotNull(asset.getPrecedingVersion());
+        assertNotNull(linkedAsset.getPrecedingVersion());
 
-		assertEquals("test content", predecessorRuleItem.getContent());
+        linkedAsset.addCategory("testGetPrecedingVersionAndRestoreCat");
+        linkedAsset.updateContent("test content");
+        linkedAsset.updateDescription("descr2");
+        Thread.sleep(100);
+        linkedAsset.checkin("boo");
 
-		assertEquals(getRepo().loadGlobalArea().getName(), predecessorRuleItem
-				.getPackageName());
+        AssetItem predecessorRuleItem = (AssetItem)linkedAsset.getPrecedingVersion();
+        assertNotNull(predecessorRuleItem);
 
-		linkedAsset.updateContent("newer lhs");
-		linkedAsset.checkin("another");
+        // check version handling
+        assertNotNull(predecessorRuleItem.getVersionSnapshotUUID());
+        assertFalse(predecessorRuleItem.getVersionSnapshotUUID().equals(asset.getUUID()));
 
-		predecessorRuleItem = (AssetItem) linkedAsset.getPrecedingVersion();
-		assertNotNull(predecessorRuleItem);
-		assertEquals("new content", predecessorRuleItem.getContent());
-		predecessorRuleItem = (AssetItem) predecessorRuleItem
-				.getPrecedingVersion();
-		assertNotNull(predecessorRuleItem);
-		assertEquals("test content", predecessorRuleItem.getContent());
+        // assertEquals(predecessorRuleItem.getCreatedDate().getTimeInMillis(),
+        // ruleItem1.getCreatedDate().getTimeInMillis());
 
-		// now try restoring
-		long oldVersionNumber = asset.getVersionNumber();
+        assertEquals(asset.getState().getName(), predecessorRuleItem.getState().getName());
+        // assertEquals(ruleItem1.getName(), predecessorRuleItem.getName());
 
-		AssetItem toRestore = getRepo().loadAssetByUUID(
-				predecessorRuleItem.getVersionSnapshotUUID());
+        AssetItem loadedHistorical = getRepo().loadAssetByUUID(predecessorRuleItem.getVersionSnapshotUUID());
+        assertTrue(loadedHistorical.isHistoricalVersion());
+        assertFalse(asset.getVersionNumber() == loadedHistorical.getVersionNumber());
 
-		getRepo().restoreHistoricalAsset(toRestore, linkedAsset,
-				"cause I want to");
+        linkedAsset.updateContent("new content");
+        linkedAsset.checkin("two changes");
 
-		AssetItem restored = getRepo().loadDefaultPackage().loadAsset(
-				"testGetPrecedingVersionAndRestoreForShareableAsset");
+        predecessorRuleItem = (AssetItem)linkedAsset.getPrecedingVersion();
+        assertNotNull(predecessorRuleItem);
+        assertEquals(1, predecessorRuleItem.getCategories().size());
+        CategoryItem cat = (CategoryItem)predecessorRuleItem.getCategories().get(0);
+        assertEquals("testGetPrecedingVersionAndRestoreCat", cat.getName());
 
-		// assertEquals( predecessorRuleItem.getCheckinComment(),
-		// restored.getCheckinComment());
-		assertEquals(predecessorRuleItem.getDescription(), restored
-				.getDescription());
-		assertEquals("cause I want to", restored.getCheckinComment());
-		assertEquals(6, restored.getVersionNumber());
-		assertFalse(oldVersionNumber == restored.getVersionNumber());
-	}
+        assertEquals("test content", predecessorRuleItem.getContent());
 
-	public void testGetSucceedingVersionForShareableAsset() {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetSucceedingVersionForShareableAsset", "desc");
-		asset.checkin("version0");
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+        assertEquals(getRepo().loadGlobalArea().getName(), predecessorRuleItem.getPackageName());
 
-		//Making the assset sharable creates the version 2. 
-		assertEquals(2, asset.getVersionNumber());
-		linkedAsset.updateContent("new content1");
-		linkedAsset.checkin("la");
-		
-		AssetItem succeedingRuleItem = (AssetItem) linkedAsset.getSucceedingVersion();
-		assertTrue(succeedingRuleItem == null);
+        linkedAsset.updateContent("newer lhs");
+        linkedAsset.checkin("another");
 
-		linkedAsset.updateContent("new content2");
-		linkedAsset.checkin("la");
+        predecessorRuleItem = (AssetItem)linkedAsset.getPrecedingVersion();
+        assertNotNull(predecessorRuleItem);
+        assertEquals("new content", predecessorRuleItem.getContent());
+        predecessorRuleItem = (AssetItem)predecessorRuleItem.getPrecedingVersion();
+        assertNotNull(predecessorRuleItem);
+        assertEquals("test content", predecessorRuleItem.getContent());
 
-		assertEquals(4, linkedAsset.getVersionNumber());
+        // now try restoring
+        long oldVersionNumber = asset.getVersionNumber();
 
-		AssetItem predecessorRuleItem = (AssetItem) linkedAsset
-				.getPrecedingVersion();
-		assertEquals("new content1", predecessorRuleItem.getContent());
-		succeedingRuleItem = (AssetItem) predecessorRuleItem
-				.getSucceedingVersion();
-		assertNotNull(succeedingRuleItem);
-		assertEquals(linkedAsset.getContent(), succeedingRuleItem.getContent());
-	}
+        AssetItem toRestore = getRepo().loadAssetByUUID(predecessorRuleItem.getVersionSnapshotUUID());
 
-	public void testGetSuccessorVersionsIteratorForShareableAsset() {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset(
-				"testGetSuccessorVersionsIteratorForShareableAsset", "desc");
-		asset.checkin("version0");
-		AssetItem linkedAsset = getDefaultPackage()
-				.addAssetImportedFromGlobalArea(asset.getName());
+        getRepo().restoreHistoricalAsset(toRestore, linkedAsset, "cause I want to");
 
-		Iterator iterator = linkedAsset.getSuccessorVersionsIterator();
-		assertNotNull(iterator);
-		assertFalse(iterator.hasNext());
+        AssetItem restored = getRepo().loadDefaultPackage().loadAsset("testGetPrecedingVersionAndRestoreForShareableAsset");
 
-		linkedAsset.updateContent("new content").checkin("ya");
+        // assertEquals( predecessorRuleItem.getCheckinComment(),
+        // restored.getCheckinComment());
+        assertEquals(predecessorRuleItem.getDescription(), restored.getDescription());
+        assertEquals("cause I want to", restored.getCheckinComment());
+        assertEquals(6, restored.getVersionNumber());
+        assertFalse(oldVersionNumber == restored.getVersionNumber());
+    }
 
-		iterator = linkedAsset.getSuccessorVersionsIterator();
-		assertNotNull(iterator);
-		assertFalse(iterator.hasNext());
+    @Test
+    public void testGetSucceedingVersionForShareableAsset() {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetSucceedingVersionForShareableAsset", "desc");
+        asset.checkin("version0");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		AssetItem predecessorRuleItem = (AssetItem) linkedAsset
-				.getPrecedingVersion();
-		iterator = predecessorRuleItem.getSuccessorVersionsIterator();
-		assertNotNull(iterator);
-		assertTrue(iterator.hasNext());
-		AssetItem nextRuleItem = (AssetItem) iterator.next();
-		assertEquals("new content", nextRuleItem.getContent());
-		assertFalse(iterator.hasNext());
+        // Making the assset sharable creates the version 2.
+        assertEquals(2, asset.getVersionNumber());
+        linkedAsset.updateContent("new content1");
+        linkedAsset.checkin("la");
 
-		linkedAsset.updateContent("newer content");
-		linkedAsset.checkin("boo");
+        AssetItem succeedingRuleItem = (AssetItem)linkedAsset.getSucceedingVersion();
+        assertTrue(succeedingRuleItem == null);
 
-		iterator = predecessorRuleItem.getSuccessorVersionsIterator();
-		assertNotNull(iterator);
-		assertTrue(iterator.hasNext());
-		nextRuleItem = (AssetItem) iterator.next();
-		assertEquals("new content", nextRuleItem.getContent());
-		assertTrue(iterator.hasNext());
-		nextRuleItem = (AssetItem) iterator.next();
-		assertEquals("newer content", nextRuleItem.getContent());
-		assertFalse(iterator.hasNext());
-	}
+        linkedAsset.updateContent("new content2");
+        linkedAsset.checkin("la");
 
-	public void testGetPredecessorVersionsIteratorForShareableAsset() {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset(
-				"testGetPredecessorVersionsIteratorForShareableAsset", "desc");
-		asset.checkin("version0");
-		AssetItem linkedAsset = getDefaultPackage()
-				.addAssetImportedFromGlobalArea(asset.getName());
+        assertEquals(4, linkedAsset.getVersionNumber());
 
-		linkedAsset.updateContent("test content");
-		linkedAsset.checkin("lalalalala");
+        AssetItem predecessorRuleItem = (AssetItem)linkedAsset.getPrecedingVersion();
+        assertEquals("new content1", predecessorRuleItem.getContent());
+        succeedingRuleItem = (AssetItem)predecessorRuleItem.getSucceedingVersion();
+        assertNotNull(succeedingRuleItem);
+        assertEquals(linkedAsset.getContent(), succeedingRuleItem.getContent());
+    }
 
-		Iterator iterator = linkedAsset.getPredecessorVersionsIterator();
-		assertNotNull(iterator);
-		assertTrue(iterator.hasNext());
+    @Test
+    public void testGetSuccessorVersionsIteratorForShareableAsset() {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetSuccessorVersionsIteratorForShareableAsset", "desc");
+        asset.checkin("version0");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		asset.updateContent("new content");
-		asset.checkin("boo");
+        Iterator iterator = linkedAsset.getSuccessorVersionsIterator();
+        assertNotNull(iterator);
+        assertFalse(iterator.hasNext());
 
-		iterator = linkedAsset.getPredecessorVersionsIterator();
-		assertNotNull(iterator);
-		assertTrue(iterator.hasNext());
-		AssetItem nextRuleItem = (AssetItem) iterator.next();
+        linkedAsset.updateContent("new content").checkin("ya");
 
-		assertEquals("test content", nextRuleItem.getContent());
+        iterator = linkedAsset.getSuccessorVersionsIterator();
+        assertNotNull(iterator);
+        assertFalse(iterator.hasNext());
 
-		asset.updateContent("newer content");
-		asset.checkin("wee");
+        AssetItem predecessorRuleItem = (AssetItem)linkedAsset.getPrecedingVersion();
+        iterator = predecessorRuleItem.getSuccessorVersionsIterator();
+        assertNotNull(iterator);
+        assertTrue(iterator.hasNext());
+        AssetItem nextRuleItem = (AssetItem)iterator.next();
+        assertEquals("new content", nextRuleItem.getContent());
+        assertFalse(iterator.hasNext());
 
-		iterator = linkedAsset.getPredecessorVersionsIterator();
-		assertNotNull(iterator);
-		assertTrue(iterator.hasNext());
-		nextRuleItem = (AssetItem) iterator.next();
-		assertTrue(iterator.hasNext());
-		assertEquals("new content", nextRuleItem.getContent());
-		nextRuleItem = (AssetItem) iterator.next();
+        linkedAsset.updateContent("newer content");
+        linkedAsset.checkin("boo");
 
-		assertEquals("test content", nextRuleItem.getContent());
+        iterator = predecessorRuleItem.getSuccessorVersionsIterator();
+        assertNotNull(iterator);
+        assertTrue(iterator.hasNext());
+        nextRuleItem = (AssetItem)iterator.next();
+        assertEquals("new content", nextRuleItem.getContent());
+        assertTrue(iterator.hasNext());
+        nextRuleItem = (AssetItem)iterator.next();
+        assertEquals("newer content", nextRuleItem.getContent());
+        assertFalse(iterator.hasNext());
+    }
 
-		assertEquals("", ((AssetItem) iterator.next()).getContent());
-	}
+    @Test
+    public void testGetPredecessorVersionsIteratorForShareableAsset() {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetPredecessorVersionsIteratorForShareableAsset", "desc");
+        asset.checkin("version0");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-	public void testHistoryIteratorForShareableAsset() throws Exception {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testHistoryIteratorForShareableAsset", "desc");
-		asset.checkin("version0");
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+        linkedAsset.updateContent("test content");
+        linkedAsset.checkin("lalalalala");
 
-		linkedAsset = getRepo().loadAssetByUUID(linkedAsset.getUUID());
-		linkedAsset.updateContent("wo");
-		linkedAsset.checkin("version2");
+        Iterator iterator = linkedAsset.getPredecessorVersionsIterator();
+        assertNotNull(iterator);
+        assertTrue(iterator.hasNext());
 
-		asset = getRepo().loadAssetByUUID(asset.getUUID());
-		asset.updateContent("ya");
-		asset.checkin("version3");
+        asset.updateContent("new content");
+        asset.checkin("boo");
 
-		Iterator it = asset.getHistory();
-		for (int i = 0; i < 3; i++) {
-			assertTrue(it.hasNext());
-			it.next();
-		}
-	}
+        iterator = linkedAsset.getPredecessorVersionsIterator();
+        assertNotNull(iterator);
+        assertTrue(iterator.hasNext());
+        AssetItem nextRuleItem = (AssetItem)iterator.next();
 
-	public void testGetTitleForShareableAsset() {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetTitleForShareableAsset", "desc");
-		asset.checkin("version0");
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+        assertEquals("test content", nextRuleItem.getContent());
 
-		assertEquals("testGetTitleForShareableAsset", linkedAsset.getName());
-		assertEquals("testGetTitleForShareableAsset", asset.getName());
-		//NOTE: Linked AssetItem does not have its own Title property.
-		assertEquals("testGetTitleForShareableAsset", linkedAsset.getTitle());
-		assertEquals("testGetTitleForShareableAsset", asset.getTitle());
-	}
+        asset.updateContent("newer content");
+        asset.checkin("wee");
 
-	public void testDublinCorePropertiesForShareableAsset() {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testDublinCorePropertiesForShareableAsset", "desc");
-		asset.checkin("version0");
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+        iterator = linkedAsset.getPredecessorVersionsIterator();
+        assertNotNull(iterator);
+        assertTrue(iterator.hasNext());
+        nextRuleItem = (AssetItem)iterator.next();
+        assertTrue(iterator.hasNext());
+        assertEquals("new content", nextRuleItem.getContent());
+        nextRuleItem = (AssetItem)iterator.next();
 
-		linkedAsset.updateCoverage("b");
-		assertEquals("b", linkedAsset.getCoverage());
-		linkedAsset.checkin("woo");
+        assertEquals("test content", nextRuleItem.getContent());
 
-		linkedAsset = getDefaultPackage().loadAsset("testDublinCorePropertiesForShareableAsset");
-		assertEquals("b", linkedAsset.getCoverage());
-		assertEquals("", linkedAsset.getExternalRelation());
-		assertEquals("", linkedAsset.getExternalSource());
-		
-		linkedAsset = getRepo().loadGlobalArea().loadAsset("testDublinCorePropertiesForShareableAsset");
-		assertEquals("b", linkedAsset.getCoverage());
-		assertEquals("", linkedAsset.getExternalRelation());
-		assertEquals("", linkedAsset.getExternalSource());
-	}
+        assertEquals("", ((AssetItem)iterator.next()).getContent());
+    }
 
-	public void testGetFormatForShareableAsset() throws Exception {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetFormatForShareableAsset", "desc");
-		asset.checkin("version0");
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+    @Test
+    public void testHistoryIteratorForShareableAsset() throws Exception {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testHistoryIteratorForShareableAsset", "desc");
+        asset.checkin("version0");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		
-		linkedAsset.updateContent("la");
-		assertEquals(AssetItem.DEFAULT_CONTENT_FORMAT, linkedAsset.getFormat());
+        linkedAsset = getRepo().loadAssetByUUID(linkedAsset.getUUID());
+        linkedAsset.updateContent("wo");
+        linkedAsset.checkin("version2");
 
-		assertTrue(linkedAsset.getNode().hasProperty(
-				AssetItem.CONTENT_PROPERTY_NAME));
-		assertFalse(linkedAsset.getNode().hasProperty(
-				AssetItem.CONTENT_PROPERTY_BINARY_NAME));
+        asset = getRepo().loadAssetByUUID(asset.getUUID());
+        asset.updateContent("ya");
+        asset.checkin("version3");
 
-		linkedAsset.updateFormat("blah");
-		assertEquals("blah", linkedAsset.getFormat());
-	}
+        Iterator it = asset.getHistory();
+        for (int i = 0; i < 3; i++) {
+            assertTrue(it.hasNext());
+            it.next();
+        }
+    }
 
-	public void testAnonymousPropertiesForShareableAsset() {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testAnonymousPropertiesForShareableAsset", "desc");
-		asset.checkin("version0");
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+    @Test
+    public void testGetTitleForShareableAsset() {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetTitleForShareableAsset", "desc");
+        asset.checkin("version0");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		linkedAsset.updateUserProperty("fooBar", "value");
-		assertEquals("value", linkedAsset.getUserProperty("fooBar"));
+        assertEquals("testGetTitleForShareableAsset", linkedAsset.getName());
+        assertEquals("testGetTitleForShareableAsset", asset.getName());
+        // NOTE: Linked AssetItem does not have its own Title property.
+        assertEquals("testGetTitleForShareableAsset", linkedAsset.getTitle());
+        assertEquals("testGetTitleForShareableAsset", asset.getTitle());
+    }
 
-		linkedAsset.checkin("lalalala");
-		try {
-			linkedAsset.updateUserProperty("drools:content", "whee");
-			fail("should not be able to set built in properties this way.");
-		} catch (IllegalArgumentException e) {
-			assertNotNull(e.getMessage());
-		}
-	}
+    @Test
+    public void testDublinCorePropertiesForShareableAsset() {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testDublinCorePropertiesForShareableAsset", "desc");
+        asset.checkin("version0");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-	public void testBinaryAssetForShareableAsset() throws Exception {
-		AssetItem asset = getRepo().loadGlobalArea().addAsset("testBinaryAssetForShareableAsset", "desc");
-		asset.checkin("version0");
-		AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
-		
-		String data = "abc 123";
-		ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes());
-		linkedAsset.updateBinaryContentAttachment(in);
-		linkedAsset.updateBinaryContentAttachmentFileName("x.x");
-		in.close();
+        linkedAsset.updateCoverage("b");
+        assertEquals("b", linkedAsset.getCoverage());
+        linkedAsset.checkin("woo");
 
-		assertEquals(data, linkedAsset.getContent());
+        linkedAsset = getDefaultPackage().loadAsset("testDublinCorePropertiesForShareableAsset");
+        assertEquals("b", linkedAsset.getCoverage());
+        assertEquals("", linkedAsset.getExternalRelation());
+        assertEquals("", linkedAsset.getExternalSource());
 
-		assertFalse(linkedAsset.getNode().hasProperty(AssetItem.CONTENT_PROPERTY_NAME));
-		assertTrue(linkedAsset.getNode().hasProperty(
-				AssetItem.CONTENT_PROPERTY_BINARY_NAME));
-		linkedAsset.checkin("lalalala");
+        linkedAsset = getRepo().loadGlobalArea().loadAsset("testDublinCorePropertiesForShareableAsset");
+        assertEquals("b", linkedAsset.getCoverage());
+        assertEquals("", linkedAsset.getExternalRelation());
+        assertEquals("", linkedAsset.getExternalSource());
+    }
 
-		assertTrue(linkedAsset.isBinary());
+    @Test
+    public void testGetFormatForShareableAsset() throws Exception {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testGetFormatForShareableAsset", "desc");
+        asset.checkin("version0");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
 
-		asset = getRepo().loadGlobalArea().loadAsset("testBinaryAssetForShareableAsset");
-		InputStream in2 = asset.getBinaryContentAttachment();
-		assertNotNull(in2);
+        linkedAsset.updateContent("la");
+        assertEquals(AssetItem.DEFAULT_CONTENT_FORMAT, linkedAsset.getFormat());
 
-		byte[] data2 = asset.getBinaryContentAsBytes();
-		assertEquals(data, new String(data2));
-		assertEquals("x.x", asset.getBinaryContentAttachmentFileName());
-		assertTrue(asset.isBinary());
+        assertTrue(linkedAsset.getNode().hasProperty(AssetItem.CONTENT_PROPERTY_NAME));
+        assertFalse(linkedAsset.getNode().hasProperty(AssetItem.CONTENT_PROPERTY_BINARY_NAME));
 
-		linkedAsset.updateContent("qed");
-		linkedAsset.checkin("");
-		linkedAsset = getRepo().loadAssetByUUID(linkedAsset.getUUID());
-		assertEquals("qed", linkedAsset.getContent());
-	}
+        linkedAsset.updateFormat("blah");
+        assertEquals("blah", linkedAsset.getFormat());
+    }
 
+    @Test
+    public void testAnonymousPropertiesForShareableAsset() {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testAnonymousPropertiesForShareableAsset", "desc");
+        asset.checkin("version0");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+
+        linkedAsset.updateUserProperty("fooBar", "value");
+        assertEquals("value", linkedAsset.getUserProperty("fooBar"));
+
+        linkedAsset.checkin("lalalala");
+        try {
+            linkedAsset.updateUserProperty("drools:content", "whee");
+            fail("should not be able to set built in properties this way.");
+        } catch (IllegalArgumentException e) {
+            assertNotNull(e.getMessage());
+        }
+    }
+
+    @Test
+    public void testBinaryAssetForShareableAsset() throws Exception {
+        AssetItem asset = getRepo().loadGlobalArea().addAsset("testBinaryAssetForShareableAsset", "desc");
+        asset.checkin("version0");
+        AssetItem linkedAsset = getDefaultPackage().addAssetImportedFromGlobalArea(asset.getName());
+
+        String data = "abc 123";
+        ByteArrayInputStream in = new ByteArrayInputStream(data.getBytes());
+        linkedAsset.updateBinaryContentAttachment(in);
+        linkedAsset.updateBinaryContentAttachmentFileName("x.x");
+        in.close();
+
+        assertEquals(data, linkedAsset.getContent());
+
+        assertFalse(linkedAsset.getNode().hasProperty(AssetItem.CONTENT_PROPERTY_NAME));
+        assertTrue(linkedAsset.getNode().hasProperty(AssetItem.CONTENT_PROPERTY_BINARY_NAME));
+        linkedAsset.checkin("lalalala");
+
+        assertTrue(linkedAsset.isBinary());
+
+        asset = getRepo().loadGlobalArea().loadAsset("testBinaryAssetForShareableAsset");
+        InputStream in2 = asset.getBinaryContentAttachment();
+        assertNotNull(in2);
+
+        byte[] data2 = asset.getBinaryContentAsBytes();
+        assertEquals(data, new String(data2));
+        assertEquals("x.x", asset.getBinaryContentAttachmentFileName());
+        assertTrue(asset.isBinary());
+
+        linkedAsset.updateContent("qed");
+        linkedAsset.checkin("");
+        linkedAsset = getRepo().loadAssetByUUID(linkedAsset.getUUID());
+        assertEquals("qed", linkedAsset.getContent());
+    }
+
 }

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/events/StorageEventManagerTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/events/StorageEventManagerTest.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/events/StorageEventManagerTest.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -16,26 +16,33 @@
 
 package org.drools.repository.events;
 
-import junit.framework.TestCase;
+import org.drools.repository.RepositoryTestCase;
 import org.drools.repository.RulesRepository;
 import org.drools.repository.PackageItem;
 import org.drools.repository.AssetItem;
-import org.drools.repository.RepositorySessionUtil;
+import org.junit.After;
+import org.junit.Test;
 
-import java.io.ByteArrayInputStream;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertFalse;
 
 /**
  * @author Michael Neale
  */
-public class StorageEventManagerTest extends TestCase {
+public class StorageEventManagerTest extends RepositoryTestCase {
 
-    @Override
-    protected void tearDown() throws Exception {
+    @After
+    public void tearDownLocal() throws Exception {
+        //super.tearDown();
         StorageEventManager.le = null;
         StorageEventManager.se = null;
     }
 
-
+    @Test
     public void testLoadEvent() {
         System.setProperty("guvnor.loadEventListener", "org.drools.repository.events.MockLoadEvent");
         LoadEvent le = StorageEventManager.loadEvent();
@@ -56,7 +63,7 @@
 
     }
 
-
+    @Test
     public void testSaveEvent() {
         System.setProperty("guvnor.saveEventListener", "org.drools.repository.events.MockSaveEvent");
         SaveEvent le = StorageEventManager.saveEvent();
@@ -76,7 +83,7 @@
 
     }
 
-
+    @Test
     public void testAssetContentCallbacks() {
 
         StorageEventManager.le = null;
@@ -101,6 +108,7 @@
 
     }
 
+    @Test
     public void testCheckinListener() throws Exception {
         StorageEventManager.le = null;
         StorageEventManager.se = null;
@@ -125,10 +133,4 @@
 
 
     }
-
-
-    private RulesRepository getRepo() {
-        return RepositorySessionUtil.getRepository();
-    }
-
 }

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/migration/MigrateDroolsPackageTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/migration/MigrateDroolsPackageTest.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/repository/migration/MigrateDroolsPackageTest.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -20,15 +20,20 @@
 
 import org.drools.repository.AssetItem;
 import org.drools.repository.PackageItem;
-import org.drools.repository.RepositorySessionUtil;
+import org.drools.repository.RepositoryTestCase;
 import org.drools.repository.RulesRepository;
 
-import junit.framework.TestCase;
+import org.junit.Test;
 
-public class MigrateDroolsPackageTest extends TestCase {
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
 
+public class MigrateDroolsPackageTest extends RepositoryTestCase {
+
+	@Test
 	public void testMigrate() throws Exception {
-		RulesRepository repo = RepositorySessionUtil.getRepository();
+		RulesRepository repo = getRepo();
 		Session sess = repo.getSession();
 		sess.getRootNode().getNode(RulesRepository.RULES_REPOSITORY_NAME).getNode("drools.package.migrated").remove();
 		sess.save();

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/scm/jcr/JcrActionFactoryTest.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/scm/jcr/JcrActionFactoryTest.java	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/drools-repository/src/test/java/org/drools/scm/jcr/JcrActionFactoryTest.java	2010-10-21 00:16:06 UTC (rev 35620)
@@ -22,19 +22,23 @@
 
 import org.drools.repository.AssetItem;
 import org.drools.repository.PackageItem;
-import org.drools.repository.RepositorySessionUtil;
+import org.drools.repository.RepositoryTestCase;
 import org.drools.repository.RulesRepository;
 import org.drools.scm.CompositeScmAction;
 import org.drools.scm.ScmAction;
 import org.drools.scm.ScmActionFactory;
 import org.drools.scm.ScmEntry;
-import org.drools.scm.jcr.JcrActionFactory.AddFile;
 import org.drools.scm.jcr.JcrActionFactory.AddDirectory;
 
-import junit.framework.TestCase;
+import org.junit.Test;
 
-public class JcrActionFactoryTest extends TestCase {
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.assertFalse;
 
+public class JcrActionFactoryTest extends RepositoryTestCase {
+
+	@Test
     public void testMapPathNameToPackage() {
         JcrActionFactory fact = new JcrActionFactory( null );
         assertEquals( "org.foo.bar",
@@ -50,8 +54,9 @@
                       fact.toDirectoryName( "foo" ) );
     }
 
+	@Test
     public void testAddDirectories() throws Exception {
-        ScmActionFactory svn = new JcrActionFactory( RepositorySessionUtil.getRepository() );
+        ScmActionFactory svn = new JcrActionFactory( getRepo() );
 
         CompositeScmAction actions = new CompositeScmAction();
 
@@ -101,8 +106,9 @@
         assertTrue( list.contains( "folder3/folder3_1/folder3_1_1/folder3_1_1_1" ) );
     }
 
+	@Test
     public void testAddFiles() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
 
         repo.createPackage( "testAddFiles.package",
                             "just for testing" );
@@ -130,8 +136,9 @@
                       asset.getStateDescription() );
     }
 
+	@Test
     public void testUpdateFiles() throws Exception {
-        RulesRepository repo = RepositorySessionUtil.getRepository();
+        RulesRepository repo = getRepo();
         PackageItem pkg = repo.loadDefaultPackage();
         AssetItem asset = pkg.addAsset( "testUpdateFilesSVN",
                                         "something" );

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-jr-impl/pom.xml
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-jr-impl/pom.xml	2010-10-20 23:17:28 UTC (rev 35619)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-jr-impl/pom.xml	2010-10-21 00:16:06 UTC (rev 35620)
@@ -7,7 +7,7 @@
       <groupId>org.drools</groupId>
       <version>5.1.0.BRMS</version>
    </parent>
-   <artifactId>jcr-jr-impl</artifactId>
+   <artifactId>drools-repository-jcr-jr-impl</artifactId>
    <packaging>jar</packaging>
    <name>Drools :: Repository :: JR</name>
    



More information about the jboss-svn-commits mailing list