From: <jbo...@li...> - 2005-12-23 08:03:34
|
Author: mic...@jb... Date: 2005-12-23 02:55:06 -0500 (Fri, 23 Dec 2005) New Revision: 1927 Added: trunk/labs/jbossrules/drools-repository/doc/ trunk/labs/jbossrules/drools-repository/doc/RepositorySpec.odt trunk/labs/jbossrules/drools-repository/doc/model.vsd trunk/labs/jbossrules/drools-repository/lib/ trunk/labs/jbossrules/drools-repository/lib/commons-collections-3.1.jar trunk/labs/jbossrules/drools-repository/lib/concurrent-1.3.4.jar trunk/labs/jbossrules/drools-repository/lib/derby-10.1.1.0.jar trunk/labs/jbossrules/drools-repository/lib/geronimo-spec-jta-1.0-M1.jar trunk/labs/jbossrules/drools-repository/lib/jackrabbit-1.0-SNAPSHOT.jar trunk/labs/jbossrules/drools-repository/lib/jcr-1.0.jar trunk/labs/jbossrules/drools-repository/lib/junit-3.8.1.jar trunk/labs/jbossrules/drools-repository/lib/log4j-1.2.8.jar trunk/labs/jbossrules/drools-repository/lib/lucene-1.4.3.jar trunk/labs/jbossrules/drools-repository/lib/xercesImpl-2.6.2.jar trunk/labs/jbossrules/drools-repository/lib/xmlParserAPIs-2.0.2.jar trunk/labs/jbossrules/drools-repository/repotest/ trunk/labs/jbossrules/drools-repository/repotest/jaas.config trunk/labs/jbossrules/drools-repository/repotest/repository.xml trunk/labs/jbossrules/drools-repository/src/ trunk/labs/jbossrules/drools-repository/src/main/ trunk/labs/jbossrules/drools-repository/src/main/org/ trunk/labs/jbossrules/drools-repository/src/main/org/drools/ trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/ trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/Asset.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/DRLSourceFile.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/Rule.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleBase.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSet.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSetConfig.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSetFile.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/VersionInfo.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/ trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RepositoryService.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RepositoryServiceFactory.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RuleRepositoryException.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/jcr/ trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/jcr/JCRSessionUtil.java trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/jcr/RepositoryServiceImpl.java trunk/labs/jbossrules/drools-repository/src/test/ trunk/labs/jbossrules/drools-repository/src/test/org/ trunk/labs/jbossrules/drools-repository/src/test/org/drools/ trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/ trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jackrabbit/ trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jackrabbit/JCRTest.java trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jcr/ trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jcr/RepositoryServiceImplTest.java Log: initial pre-christmas version Added: trunk/labs/jbossrules/drools-repository/doc/RepositorySpec.odt =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/doc/RepositorySpec.odt ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/doc/model.vsd =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/doc/model.vsd ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/lib/commons-collections-3.1.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/lib/commons-collections-3.1.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/lib/concurrent-1.3.4.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/lib/concurrent-1.3.4.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/lib/derby-10.1.1.0.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/lib/derby-10.1.1.0.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/lib/geronimo-spec-jta-1.0-M1.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/lib/geronimo-spec-jta-1.0-M1.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/lib/jackrabbit-1.0-SNAPSHOT.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/lib/jackrabbit-1.0-SNAPSHOT.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/lib/jcr-1.0.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/lib/jcr-1.0.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/lib/junit-3.8.1.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/lib/junit-3.8.1.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/lib/log4j-1.2.8.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/lib/log4j-1.2.8.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/lib/lucene-1.4.3.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/lib/lucene-1.4.3.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/lib/xercesImpl-2.6.2.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/lib/xercesImpl-2.6.2.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/lib/xmlParserAPIs-2.0.2.jar =================================================================== (Binary files differ) Property changes on: trunk/labs/jbossrules/drools-repository/lib/xmlParserAPIs-2.0.2.jar ___________________________________________________________________ Name: svn:mime-type + application/octet-stream Added: trunk/labs/jbossrules/drools-repository/repotest/jaas.config =================================================================== --- trunk/labs/jbossrules/drools-repository/repotest/jaas.config 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/repotest/jaas.config 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,3 @@ +Jackrabbit { + org.apache.jackrabbit.core.security.SimpleLoginModule required anonymousId="anonymous"; +}; \ No newline at end of file Property changes on: trunk/labs/jbossrules/drools-repository/repotest/jaas.config ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/repotest/repository.xml =================================================================== --- trunk/labs/jbossrules/drools-repository/repotest/repository.xml 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/repotest/repository.xml 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,25 @@ +<?xml version="1.0" encoding="ISO-8859-1"?> +<Repository> + <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> + <param name="path" value="${rep.home}/repository"/> + </FileSystem> + <Security appName="Jackrabbit"> + <AccessManager class="org.apache.jackrabbit.core.security.SimpleAccessManager"/> + </Security> + <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default" /> + <Workspace name="${wsp.name}"> + <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> + <param name="path" value="${wsp.home}"/> + </FileSystem> + <PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" /> + <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"> + <param name="path" value="${wsp.home}/index"/> + </SearchIndex> + </Workspace> + <Versioning rootPath="${rep.home}/versions"> + <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> + <param name="path" value="${rep.home}/versions"/> + </FileSystem> + <PersistenceManager class="org.apache.jackrabbit.core.state.xml.XMLPersistenceManager" /> + </Versioning> +</Repository> \ No newline at end of file Property changes on: trunk/labs/jbossrules/drools-repository/repotest/repository.xml ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/Asset.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/Asset.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/Asset.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,32 @@ +package org.drools.metamodel; + +import java.io.Serializable; + +/** + * This is the superclass for all metamodel repository classes. + * They are all assets. Some just have more assets then others. + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + */ +public class Asset implements Serializable +{ + /* + * This is based on the <a href="http://dublincore.org/documents/dces/"> Dublin Core</a> + * specification, plus a little bit more, and a little bit less. Not all of these fields will be used. + */ + public String name; + public String creator; + public String subject; + public String description; + public String publisher; + public String contributor; + public java.util.Date dateCreated; + public String format; + public String source; + public String language; + public String relation; + public String coverage; + public String rights; + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/Asset.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/DRLSourceFile.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/DRLSourceFile.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/DRLSourceFile.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,32 @@ +package org.drools.metamodel; + +/** + * This represents the content for a ruleset which is managed as one unit. + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + * + */ +public class DRLSourceFile extends RuleSetFile +{ + + private String content; + + + public DRLSourceFile(String content, String name) { + super.name = name; + this.content = content; + + } + + public String getContent() + { + return content; + } + + public void setContent(String content) + { + this.content = content; + } + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/DRLSourceFile.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/Rule.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/Rule.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/Rule.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,10 @@ +package org.drools.metamodel; + +import java.util.Properties; + +public class Rule extends Asset +{ + private Properties properties; + private VersionInfo versionInfo; + private String fragment; +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/Rule.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleBase.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleBase.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleBase.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,38 @@ +package org.drools.metamodel; + +import java.util.ArrayList; +import java.util.Collection; + +/** + * A rulebase view of the repository. + * + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + * + */ +public class RuleBase extends Asset +{ + + protected Collection ruleSets; + protected Collection ruleSetFiles; + + public RuleBase(String name) { + super.name = name; + ruleSets = new ArrayList(); + ruleSetFiles = new ArrayList(); + } + + public void addRuleSet(RuleSet rs) { + ruleSets.add(rs); + } + + public void addRuleSetFile(RuleSetFile rs) { + ruleSetFiles.add(rs); + } + + + + + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleBase.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSet.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSet.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSet.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,12 @@ +package org.drools.metamodel; + +import java.util.List; + +public class RuleSet extends Asset +{ + private RuleSetConfig config; + private List rules; + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSet.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSetConfig.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSetConfig.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSetConfig.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,16 @@ +package org.drools.metamodel; + +import java.util.Properties; + +public class RuleSetConfig extends Asset +{ + private Properties imports; + private String functions; + private Properties applicationData; + private VersionInfo versionInfo; + + + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSetConfig.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSetFile.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSetFile.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSetFile.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,11 @@ +package org.drools.metamodel; + +public class RuleSetFile extends Asset +{ + + private VersionInfo versionInfo; + + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/RuleSetFile.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/VersionInfo.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/VersionInfo.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/VersionInfo.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,43 @@ +package org.drools.metamodel; + +/** + * This represents some information about the version, as it was checked in. + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + */ +public class VersionInfo extends Asset +{ + private String comment; + private long versionNumber; + private String status; + + public VersionInfo(String comment, long versionNumber, String status) { + this.comment = comment; + this.versionNumber = versionNumber; + this.status = status; + } + + public VersionInfo nextVersion(String comment) { + return new VersionInfo(comment, versionNumber + 1, this.status); + } + public VersionInfo nextVersion(String comment, String newStatus) { + return new VersionInfo(comment, versionNumber + 1, newStatus); + } + + + + public String getComment() + { + return comment; + } + public String getStatus() + { + return status; + } + public long getVersionNumber() + { + return versionNumber; + } + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/metamodel/VersionInfo.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RepositoryService.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RepositoryService.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RepositoryService.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,111 @@ +package org.drools.repo; + +import java.util.List; +import java.util.Properties; + +import org.drools.metamodel.Asset; +import org.drools.metamodel.Rule; +import org.drools.metamodel.RuleBase; +import org.drools.metamodel.RuleSet; +import org.drools.metamodel.RuleSetConfig; +import org.drools.metamodel.RuleSetFile; +import org.drools.metamodel.VersionInfo; + + +public interface RepositoryService +{ + /** + * Nodes are represented with a "drools:..." prefix to prevent namespace collisions for people + * using a shared repository (shared with a CMS for instance). + */ + public static final String RULE_NAMESPACE_PREFIX = "drools"; + public static final String RULE_NAMESPACE = "http://www.drools.org/repo"; + + + /** + * This will mark the asset as checked out by the current user. + * + * The idea is to prevent anyone else working on it at the same time. + * Assets needs to be checked out, so when they are checked in their versions are updated. + * This may also lock the asset, not sure... + * Can provide seperate explicit lock methods if needed. + */ + public RuleSetFile checkoutFile(String ruleBaseName, String ruleSetName); + public RuleSetConfig checkoutRuleSetConfig(String ruleBaseName, String ruleSetName); + public Rule checkoutRule(String ruleBaseName, String ruleSetName, String ruleName); + + + /** + * These methods add brand new assets to the repository. + * Exceptions thrown if you don't fill out the right stuff etc. + * The names must be unique of course, or exceptions will be thrown. + */ + public RuleSetFile addNewFile(String ruleBaseName, RuleSetFile file); + public RuleSet addNewRuleSet(String ruleBaseName, RuleSet ruleSet); + public Rule addNewRule(String ruleBaseName, String ruleSetName, Rule rule); + + + /** + * This method updates the asset in the repository, and + * increment the version number etc. + * If someone else beat you to it, it will chuck a wobbly. Whereby you + * can tell the poor user, they are going to have to find out who it was, + * and throw a phone at their heads, russle crowe style. + * Of course, with checkouts, it should stop anyone else checking it out. + */ + public VersionInfo checkin(Asset asset, String comment); + + /** + * This will change the status flag on the latest version of the asset. + * It will make sure that your version is up to date before allowing it. + */ + public VersionInfo changeStatus(Asset asset, String newStatus); + + + /** + * Returns a list of rulebase names in the repository. + */ + public List listRuleBaseName(); + + + /** + * This returns a list of rule-set names for a given rulebase. + */ + public List listRuleSetNames(String ruleBase); + + + /** + * This will deeply load the whole RuleSet. + */ + public RuleSet retrieveRuleSet(String ruleBaseName, String ruleSetName); + + + /** + * This will load a RuleSetFile. + */ + public RuleSetFile retrieveRuleSetFile(String ruleBaseName, String ruleSetName); + + + /** + * Haven't really defined how to search for things, + * but will be on most fields. + * Can return a list of assets that match, which could be rules, rulesets etc... + * Probably need some canned queries, as well as some XPath ones. + * Can do things like search for rules modified on a certain date, in various states etc. + * TODO: get a list of basic functionality to support. + */ + public List searchRules(Properties searchProperties); + + + + /** + * Sets up a virgin repository. Only needs to be called once. + */ + public void createNewRepo(); + + + + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RepositoryService.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RepositoryServiceFactory.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RepositoryServiceFactory.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RepositoryServiceFactory.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,31 @@ +package org.drools.repo; + +import javax.jcr.RepositoryException; +import javax.naming.NamingException; + +import org.drools.repo.jcr.JCRSessionUtil; +import org.drools.repo.jcr.RepositoryServiceImpl; + +public class RepositoryServiceFactory +{ + + public static RepositoryService getRepositoryService() { + JCRSessionUtil factory = new JCRSessionUtil(); + RepositoryService service = null; + try + { + service = new RepositoryServiceImpl(factory.getSession()); + } + catch ( NamingException e ) + { + throw new RuleRepositoryException(e); + } + catch ( RepositoryException e ) + { + throw new RuleRepositoryException(e); + } + return service; + } + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RepositoryServiceFactory.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RuleRepositoryException.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RuleRepositoryException.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RuleRepositoryException.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,17 @@ +package org.drools.repo; + +public class RuleRepositoryException extends RuntimeException +{ + public RuleRepositoryException(Throwable cause) { + super(cause); + } + + public RuleRepositoryException(String message, Throwable cause) { + super(message, cause); + } + + public RuleRepositoryException(String message) { + super(message); + } + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/RuleRepositoryException.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/jcr/JCRSessionUtil.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/jcr/JCRSessionUtil.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/jcr/JCRSessionUtil.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,53 @@ +package org.drools.repo.jcr; + +import java.util.Hashtable; + +import javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.jcr.Session; +import javax.jcr.SimpleCredentials; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +import org.apache.jackrabbit.core.jndi.RegistryHelper; + +/** + * This is a dirty hack of a class while I get the hang of using JCR in and + * outside of containers. + * @author <a href="mailto:mic...@gm..."> Michael Neale</a> + * + */ +public class JCRSessionUtil +{ + + public Session getSession() throws NamingException, RepositoryException { + + System.setProperty("java.security.auth.login.config", "c:/jaas.config"); + String configFile = "repotest/repository.xml"; + String repHomeDir = "repotest"; + + Hashtable env = new Hashtable( ); + env.put( Context.INITIAL_CONTEXT_FACTORY, + "org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory" ); + env.put( Context.PROVIDER_URL, + "localhost" ); + + InitialContext ctx = new InitialContext( env ); + + //configure repo, if its not already + RegistryHelper.registerRepository( ctx, + "repo", + configFile, + repHomeDir, + true ); + Repository r = (Repository) ctx.lookup( "repo" ); + + Session session = r.login( new SimpleCredentials( "userid", + "".toCharArray( ) ), + null ); + return session; + + } + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/jcr/JCRSessionUtil.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/jcr/RepositoryServiceImpl.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/jcr/RepositoryServiceImpl.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/jcr/RepositoryServiceImpl.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,295 @@ +package org.drools.repo.jcr; + +import java.util.ArrayList; +import java.util.List; +import java.util.Properties; + +import javax.jcr.NamespaceRegistry; +import javax.jcr.Node; +import javax.jcr.NodeIterator; +import javax.jcr.PathNotFoundException; +import javax.jcr.RepositoryException; +import javax.jcr.Session; + +import org.drools.metamodel.Asset; +import org.drools.metamodel.DRLSourceFile; +import org.drools.metamodel.Rule; +import org.drools.metamodel.RuleSet; +import org.drools.metamodel.RuleSetConfig; +import org.drools.metamodel.RuleSetFile; +import org.drools.metamodel.VersionInfo; +import org.drools.repo.RepositoryService; +import org.drools.repo.RuleRepositoryException; + +public class RepositoryServiceImpl + implements + RepositoryService +{ + private Session session; + + public RepositoryServiceImpl(Session session) + { + this.session = session; + + } + + public void createNamespace() + { + try + { + NamespaceRegistry reg = this.session.getWorkspace( ).getNamespaceRegistry( ); + if ( nameSpaceExists( reg ) ) + { + return; + } + else + { + log( "Registering new Namespace" ); + reg.registerNamespace( RepositoryService.RULE_NAMESPACE_PREFIX, + RepositoryService.RULE_NAMESPACE ); + } + } + catch ( RepositoryException e ) + { + throw new RuleRepositoryException( e ); + } + + } + + public void createNewRepo() + { + createNamespace( ); + createRuleRepoNode( ); + + + } + + private void createRuleRepoNode() + { + try + { + Node rn = this.session.getRootNode( ); + if ( !rn.hasNode( nodeNameOf( "repository" ) ) ) + { + this.session.getRootNode( ).addNode( nodeNameOf( "repository" ) ); + } + } + catch ( Exception e ) + { + throw new RuleRepositoryException( "Unable to create new repository root node.", + e ); + } + } + + private String nodeNameOf(String string) + { + return RepositoryService.RULE_NAMESPACE_PREFIX + ":" + string; + } + + private void log(String string) + { + System.out.println( "REPO:" + string ); + } + + private boolean nameSpaceExists(NamespaceRegistry registry) throws RepositoryException + { + String[] uris = registry.getURIs( ); + for ( int i = 0; i < uris.length; i++ ) + { + if ( uris[i].equals( RepositoryService.RULE_NAMESPACE ) ) + { + log( "Name space already exists." ); + return true; + } + } + return false; + + } + + public void xxxxsaveNewRuleset(String name, + String content) + { + Node repo = getRepository( ); + try + { + Node ruleset = repo.addNode(nodeNameOf("ruleset")); + ruleset.setProperty("content", content); + ruleset.setProperty("ruleset-name", name); + save(); + } + catch ( Exception e ) { + throw new RuleRepositoryException("Unable to add a new Ruleset called: " + name, e); + } + } + + private Node getRepository() + { + try + { + return session.getRootNode().getNode(nodeNameOf("repository")); + } + catch ( PathNotFoundException e ) + { + throw new RuleRepositoryException("Unable to find repository root node. Repository may not have been setup correctly.", e); + } + catch ( RepositoryException e ) + { + throw new RuleRepositoryException(e); + } + } + + public List xxxxfindAllRuleSetDRL() + { + List rulesets = new ArrayList(); + Node repo = getRepository(); + try + { + NodeIterator nodeIt = repo.getNodes(); + while(nodeIt.hasNext()) { + Node rulesetNode = nodeIt.nextNode(); + String content = rulesetNode.getProperty("content").getString(); + String name = rulesetNode.getProperty("ruleset-name").getString(); + DRLSourceFile drl = new DRLSourceFile(content, name); + rulesets.add(drl); + } + } + catch ( RepositoryException e ) + { + throw new RuleRepositoryException("Unable to list rulesets.", e); + } + return rulesets; + } + + public void save() { + try + { + session.save( ); + } + catch ( Exception e ) + { + throw new RuleRepositoryException( "Unable to save session.", + e ); + } + } + + public void xxxxeraseAllRuleSetDRL() + { + + Node repo = this.getRepository(); + NodeIterator it; + try + { + it = repo.getNodes(); + while (it.hasNext()) { + it.nextNode().remove(); + } + save(); + } + catch ( RepositoryException e ) + { + throw new RuleRepositoryException("Unable to delete DRL nodes.", e); + } + } + + + + public RuleSetFile addNewRulesetFile(RuleSetFile file, + String initialComment) + { + // TODO Auto-generated method stub + return null; + } + + public RuleSetFile checkoutFile(String ruleBaseName, + String ruleSetName) + { + // TODO Auto-generated method stub + return null; + } + + public RuleSetConfig checkoutRuleSetConfig(String ruleBaseName, + String ruleSetName) + { + // TODO Auto-generated method stub + return null; + } + + public Rule checkoutRule(String ruleBaseName, + String ruleSetName, + String ruleName) + { + // TODO Auto-generated method stub + return null; + } + + public RuleSetFile addNewFile(String ruleBaseName, + RuleSetFile file) + { + // TODO Auto-generated method stub + return null; + } + + public RuleSet addNewRuleSet(String ruleBaseName, + RuleSet ruleSet) + { + // TODO Auto-generated method stub + return null; + } + + public Rule addNewRule(String ruleBaseName, + String ruleSetName, + Rule rule) + { + // TODO Auto-generated method stub + return null; + } + + public VersionInfo checkin(Asset asset, + String comment) + { + // TODO Auto-generated method stub + return null; + } + + public VersionInfo changeStatus(Asset asset, + String newStatus) + { + // TODO Auto-generated method stub + return null; + } + + public List listRuleBaseName() + { + // TODO Auto-generated method stub + return null; + } + + public List listRuleSetNames(String ruleBase) + { + // TODO Auto-generated method stub + return null; + } + + public RuleSet retrieveRuleSet(String ruleBaseName, + String ruleSetName) + { + // TODO Auto-generated method stub + return null; + } + + public RuleSetFile retrieveRuleSetFile(String ruleBaseName, + String ruleSetName) + { + // TODO Auto-generated method stub + return null; + } + + public List searchRules(Properties searchProperties) + { + // TODO Auto-generated method stub + return null; + } + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/main/org/drools/repo/jcr/RepositoryServiceImpl.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jackrabbit/JCRTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jackrabbit/JCRTest.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jackrabbit/JCRTest.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,102 @@ +package org.drools.repo.jackrabbit; + +import junit.framework.TestCase; + +import java.util.Hashtable; + +import javax.jcr.*; + +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +import org.apache.jackrabbit.core.jndi.RegistryHelper; + +public class JCRTest extends TestCase +{ + + public void testInitial() throws Exception + { + setupJAAS( ); + Session session = getSession( ); + String[] uris = session.getWorkspace().getNamespaceRegistry().getURIs(); // .registerNamespace("drools", "https://www.drools.org/repo"); + basicCase( session ); + + addSomething( session); + } + + private static void addSomething(Session session) throws Exception { + + Node node = session.getRootNode(); + + node.setProperty("drools:rules", "yeah"); + node.save(); + + session.save(); + + } + + private static void basicCase(Session session) + { + try + { + + + + Node rn = session.getRootNode( ); + + System.out.println( rn.getPrimaryNodeType( ).getName( ) ); + + } + catch ( Exception e ) + { + System.err.println( e ); + } + } + + private static Session getSession() throws NamingException, + RepositoryException, + LoginException, + NoSuchWorkspaceException + { + String configFile = "repotest/repository.xml"; + String repHomeDir = "repotest"; + + Hashtable env = new Hashtable( ); + env.put( Context.INITIAL_CONTEXT_FACTORY, + "org.apache.jackrabbit.core.jndi.provider.DummyInitialContextFactory" ); + env.put( Context.PROVIDER_URL, + "localhost" ); + InitialContext ctx = new InitialContext( env ); + + registerRepo( configFile, + repHomeDir, + ctx ); + Repository r = (Repository) ctx.lookup( "repo" ); + + Session session = r.login( new SimpleCredentials( "userid", + "".toCharArray( ) ), + null ); + return session; + } + + private static void registerRepo(String configFile, + String repHomeDir, + InitialContext ctx) throws NamingException, + RepositoryException + { + RegistryHelper.registerRepository( ctx, + "repo", + configFile, + repHomeDir, + true ); + } + + private static void setupJAAS() + { + System.setProperty("java.security.auth.login.config", "c:/jaas.config"); + } + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jackrabbit/JCRTest.java ___________________________________________________________________ Name: svn:eol-style + native Added: trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jcr/RepositoryServiceImplTest.java =================================================================== --- trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jcr/RepositoryServiceImplTest.java 2005-12-23 07:52:33 UTC (rev 1926) +++ trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jcr/RepositoryServiceImplTest.java 2005-12-23 07:55:06 UTC (rev 1927) @@ -0,0 +1,31 @@ +package org.drools.repo.jcr; + +import java.util.List; + +import junit.framework.TestCase; + +import org.drools.repo.RepositoryServiceFactory; + +public class RepositoryServiceImplTest extends TestCase +{ + + + public void testCreateNewAndDelete() { + RepositoryServiceImpl repo = (RepositoryServiceImpl) RepositoryServiceFactory.getRepositoryService(); + repo.createNewRepo(); + + repo.xxxxeraseAllRuleSetDRL(); + + repo.xxxxsaveNewRuleset("My Ruleset", "vkahijkhfhdsjkfhdsh"); + + List rulesets = repo.xxxxfindAllRuleSetDRL(); + + System.out.println(rulesets.size()); + + + } + + + + +} Property changes on: trunk/labs/jbossrules/drools-repository/src/test/org/drools/repo/jcr/RepositoryServiceImplTest.java ___________________________________________________________________ Name: svn:eol-style + native |