[jboss-svn-commits] JBL Code SVN: r35614 - in labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo: jcr-api and 7 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Oct 20 18:37:39 EDT 2010


Author: kurt.stam at jboss.com
Date: 2010-10-20 18:37:38 -0400 (Wed, 20 Oct 2010)
New Revision: 35614

Added:
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/pom.xml
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/META-INF/
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/META-INF/MANIFEST.MF
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/org/
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/org/drools/
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/org/drools/repository/
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java
Modified:
   labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/pom.xml
Log:
BRMS-398 create jcr interface module

Added: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/pom.xml
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/pom.xml	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/pom.xml	2010-10-20 22:37:38 UTC (rev 35614)
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+   <modelVersion>4.0.0</modelVersion>
+   <parent>
+      <artifactId>drools</artifactId>
+      <groupId>org.drools</groupId>
+      <version>5.1.0.BRMS</version>
+   </parent>
+   <artifactId>drools-repository-jcr-api</artifactId>
+   <packaging>jar</packaging>
+   <name>Drools :: Repository :: JCR API</name>
+   <dependencies>
+      <dependency>
+         <groupId>javax.jcr</groupId>
+         <artifactId>jcr</artifactId>
+      </dependency>
+      <!--  
+      <dependency>
+        <groupId>log4j</groupId>
+        <artifactId>log4j</artifactId>
+        <version>1.2.8</version>
+      </dependency>
+     -->
+   </dependencies>
+ 
+</project>

Added: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/META-INF/MANIFEST.MF
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/META-INF/MANIFEST.MF	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/META-INF/MANIFEST.MF	2010-10-20 22:37:38 UTC (rev 35614)
@@ -0,0 +1,3 @@
+Manifest-Version: 1.0
+Class-Path: 
+

Added: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java	                        (rev 0)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/jcr-api/src/main/java/org/drools/repository/JCRRepositoryConfigurator.java	2010-10-20 22:37:38 UTC (rev 35614)
@@ -0,0 +1,81 @@
+/**
+ * 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.util.Properties;
+import java.util.ServiceLoader;
+
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.RepositoryFactory;
+import javax.jcr.Session;
+import javax.jcr.Workspace;
+
+/**
+ * This abstract class is required so different JCR implementations can provide their own configuration mechanism.
+ * 
+ * * This contains code to initialise the repository using the {@link javax.jcr.RepositoryFactory} interface defined by the JCR 2.0
+ * specification. This configurator loads the properties from the {@link PROPERTIES_FILE "/drools_repository.properties"}
+ * resource, and passes these to the {@link javax.jcr.RepositoryFactory#getRepository(java.util.Map)}.
+ * 
+ * @author Michael Neale
+ */
+public abstract class JCRRepositoryConfigurator {
+
+	protected RepositoryFactory factory;
+
+	public static final String JCR_IMPL_CLASS            = "org.drools.repository.jcr.impl";
+	public static final String REPOSITORY_ROOT_DIRECTORY = "repository.root.directory";
+
+	/**
+	 * @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 Repository getJCRRepository( Properties properties ) throws RepositoryException {
+		try {
+
+			String jcrImplementationClass = properties.getProperty(JCR_IMPL_CLASS);
+			//Instantiate real repo.
+
+			if (jcrImplementationClass==null) {
+				// Use the JCR 2.0 RepositoryFactory to get a repository using the properties as input ...
+				for (RepositoryFactory factory : ServiceLoader.load(RepositoryFactory.class)) {
+					Repository repo = factory.getRepository(properties);
+					if (repo != null) {
+						this.factory = factory;
+						return repo;
+					}
+				}
+			}
+		} catch (RepositoryException re) {
+			throw new RepositoryException(re);
+		}
+		// If here, then we couldn't find a repository factory ...
+		String msg = "Unable to find an appropriate JCR 2.0 RepositoryFactory; check the 'drools_repository.properties' configuration file.";
+		throw new RepositoryException(msg);
+	}
+
+	public abstract void registerNodeTypesFromCndFile(String cndFileName, Session session, Workspace workspace) throws RepositoryException;
+
+	/**
+	 * Method called when the JCR implementation is no longer needed.
+	 */
+	public abstract void shutdown();
+}

Modified: labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/pom.xml
===================================================================
--- labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/pom.xml	2010-10-20 22:27:53 UTC (rev 35613)
+++ labs/jbossrules/soa_branches/BRMS-5.1.1/drools-repo/pom.xml	2010-10-20 22:37:38 UTC (rev 35614)
@@ -11,6 +11,7 @@
    <packaging>pom</packaging>
    <name>Drools :: Repository :: Parent</name>
    <modules>
+     <module>jcr-api</module>
      <module>drools-repository</module>
    </modules>
 </project>



More information about the jboss-svn-commits mailing list