Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/config/CacheBehaviour.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/config/CacheBehaviour.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/config/CacheBehaviour.java	(working copy)
@@ -1,46 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  The ASF licenses this file to You
- * 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.apache.jackrabbit.jcr2spi.config;
-
-/**
- * <code>CacheBehaviour</code> defines constants for the various cache
- * maintenance strategies. The effective strategy depends on two factors,
- * whether the repository implementation supports observation and the behaviour
- * provided in the {@link RepositoryConfig}.
- */
-public final class CacheBehaviour {
-
-    /**
-     * Cache maintenance is done by invalidating affected items of an operation
-     * and forcing the jcr2spi implementation to reload the item states when
-     * they are accessed next time. No event listener is used for cache
-     * maintenance even though the repository implementation might support
-     * observation.
-     */
-    public static final CacheBehaviour INVALIDATE = new CacheBehaviour();
-
-    /**
-     * Cache maintenance is done using events from the repository. After an
-     * operation has been executed on the RepositoryService events are retrieved
-     * from the repository and the cache is updated based on the returned
-     * events. This strategy requires that the repository implementation
-     * supports observation.
-     */
-    public static final CacheBehaviour OBSERVATION = new CacheBehaviour();
-
-    private CacheBehaviour() {
-    }
-}
Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/config/RepositoryConfig.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/config/RepositoryConfig.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/config/RepositoryConfig.java	(working copy)
@@ -1,44 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You 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.apache.jackrabbit.jcr2spi.config;
-
-import javax.jcr.RepositoryException;
-
-import org.apache.jackrabbit.spi.RepositoryService;
-
-/**
- * This class bundles the information required by JCR2SPI to
- * bootstrap an SPI implementation.
- * <p>
- * Instances of this class <em>should</em> implement
- * {@link javax.naming.Referenceable} in order to make JCR2SPI's
- * {@link javax.jcr.Repository} itself referenceable.
- */
-public interface RepositoryConfig {
-
-    public RepositoryService getRepositoryService() throws RepositoryException;
-
-    public CacheBehaviour getCacheBehaviour();
-
-    public int getItemCacheSize();
-
-    /**
-     * Specifies an interval used for polling the {@link RepositoryService} for changes.
-     * @return  the poll timeout in milliseconds.
-     */
-    public int getPollTimeout();
-}
Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/factory/CacheBehaviour.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/factory/CacheBehaviour.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/factory/CacheBehaviour.java	(working copy)
@@ -13,7 +13,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.jcr2spi.config;
+package org.apache.jackrabbit.jcr2spi.factory;
 
 /**
  * <code>CacheBehaviour</code> defines constants for the various cache
Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/factory/Jcr2spiRepositoryFactory.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/factory/Jcr2spiRepositoryFactory.java	(revision 0)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/factory/Jcr2spiRepositoryFactory.java	(revision 0)
@@ -0,0 +1,229 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.apache.jackrabbit.jcr2spi.factory;
+
+import java.util.Map;
+
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.RepositoryFactory;
+
+import org.apache.jackrabbit.jcr2spi.RepositoryImpl;
+import org.apache.jackrabbit.spi.RepositoryService;
+import org.apache.jackrabbit.spi.RepositoryServiceFactory;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Jcr2spiRepositoryFactory implements RepositoryFactory {
+    private static final Logger log = LoggerFactory.getLogger(Jcr2spiRepositoryFactory.class);
+
+    private static final String PARAM_REPOSITORY_SERVICE_FACTORY = "org.apache.jackrabbit.spi.RepositoryServiceFactory";
+    private static final String PARAM_REPOSITORY_CONFIG = "org.apache.jackrabbit.jcr2spi.RepositoryConfig";
+
+    private static final String PARAM_CACHE_BEHAVIOR = "org.apache.jackrabbit.jcr2spi.CacheBehaviour";
+    private static final CacheBehaviour DEFAULT_CACHE_BEHAVIOR = CacheBehaviour.INVALIDATE;
+
+    private static final String PARAM_ITEM_CACHE_SIZE = "org.apache.jackrabbit.jcr2spi.ItemCacheSize";
+    private static final int DEFAULT_ITEM_CACHE_SIZE = 5000;
+
+    private static final String PARAM_POLL_TIME_OUT = "org.apache.jackrabbit.jcr2spi.PollTimeOut";
+    private static final int DEFAULT_POLL_TIME_OUT = 3000; // milli seconds
+
+    public Repository getRepository(@SuppressWarnings("unchecked") Map parameters) throws RepositoryException {
+        RepositoryServiceFactory serviceFactory = getServiceFactory(parameters);
+        Object configParam = parameters.get(PARAM_REPOSITORY_CONFIG);
+        RepositoryConfig config = configParam instanceof RepositoryConfig
+            ? (RepositoryConfig) configParam
+            : new RepositoryConfigImpl(serviceFactory, parameters);
+        return RepositoryImpl.create(config);
+    }
+
+    // -----------------------------------------------------< private >---
+
+    private static RepositoryServiceFactory getServiceFactory(Map<?, ?> parameters) throws RepositoryException {
+        Object serviceFactoryParam = parameters.get(PARAM_REPOSITORY_SERVICE_FACTORY);
+        log.debug("Acquiring RepositoryServiceFactory from {}", PARAM_REPOSITORY_SERVICE_FACTORY);
+
+        if (serviceFactoryParam instanceof RepositoryServiceFactory) {
+            log.debug("Found RepositoryServiceFactory {}", serviceFactoryParam);
+            return (RepositoryServiceFactory) serviceFactoryParam;
+        }
+        else if (serviceFactoryParam instanceof String) {
+            String serviceFactoryName = (String)serviceFactoryParam;
+            log.debug("Found RepositoryServiceFactory class name {}", serviceFactoryName);
+            try {
+                Class<?> serviceFactoryClass = Class.forName(serviceFactoryName, true,
+                            Thread.currentThread().getContextClassLoader());
+
+                Object serviceFactory = serviceFactoryClass.newInstance();
+
+                if (serviceFactory instanceof RepositoryServiceFactory) {
+                    log.debug("Found RepositoryServiceFactory {}", serviceFactory);
+                    return (RepositoryServiceFactory) serviceFactory;
+                }
+                else {
+                    String msg = "Error acquiring RepositoryServiceFactory " + serviceFactoryParam;
+                    log.error(msg);
+                    throw new RepositoryException(msg);
+                }
+            }
+            catch (Exception e) {
+                String msg = "Error acquiring RepositoryServiceFactory";
+                log.error(msg, e);
+                throw new RepositoryException(msg, e);
+            }
+        }
+        else {
+            String msg = "Error acquiring RepositoryServiceFactory from " + serviceFactoryParam;
+            log.error(msg);
+            throw new RepositoryException(msg);
+        }
+    }
+
+    private static class RepositoryConfigImpl implements RepositoryConfig {
+        private final RepositoryServiceFactory serviceFactory;
+        private final CacheBehaviour cacheBehaviour;
+        private final int itemCacheSize;
+        private final int pollTimeOut;
+        private final Map<?, ?> parameters;
+
+        public RepositoryConfigImpl(RepositoryServiceFactory serviceFactory, Map<?, ?> parameters)
+                throws RepositoryException {
+
+            super();
+            this.serviceFactory = serviceFactory;
+            this.cacheBehaviour = getCacheBehaviour(parameters);
+            this.itemCacheSize = getItemChacheSize(parameters);
+            this.pollTimeOut = getPollTimeout(parameters);
+            this.parameters = parameters;
+        }
+
+        public CacheBehaviour getCacheBehaviour() {
+            return cacheBehaviour;
+        }
+
+        public int getItemCacheSize() {
+            return itemCacheSize;
+        }
+
+        public int getPollTimeout() {
+            return pollTimeOut;
+        }
+
+        public RepositoryService getRepositoryService() throws RepositoryException {
+            return serviceFactory.createRepositoryService(parameters);
+        }
+
+        // -----------------------------------------------------< private >---
+
+        private static CacheBehaviour getCacheBehaviour(Map<?, ?> parameters) throws RepositoryException {
+            Object paramCacheBehaviour = parameters.get(PARAM_CACHE_BEHAVIOR);
+            log.debug("Setting CacheBehaviour from {}", PARAM_CACHE_BEHAVIOR);
+
+            if (paramCacheBehaviour == null) {
+                log.debug("{} not set, defaulting to {}", PARAM_CACHE_BEHAVIOR, DEFAULT_CACHE_BEHAVIOR);
+                return DEFAULT_CACHE_BEHAVIOR;
+            }
+            else if (paramCacheBehaviour instanceof CacheBehaviour) {
+                log.debug("Setting CacheBehaviour to {}", paramCacheBehaviour);
+                return (CacheBehaviour) paramCacheBehaviour;
+            }
+            else if (paramCacheBehaviour instanceof String) {
+                String cacheBehaviour = (String) paramCacheBehaviour;
+                if ("invalidate".equals(cacheBehaviour)) {
+                    log.debug("Setting CacheBehaviour to {}", CacheBehaviour.INVALIDATE);
+                    return CacheBehaviour.INVALIDATE;
+                }
+                else if ("observation".equals(cacheBehaviour)) {
+                    log.debug("Setting CacheBehaviour to {}", CacheBehaviour.OBSERVATION);
+                    return CacheBehaviour.OBSERVATION;
+                }
+                else {
+                    log.error("Invalid valid for CacheBehaviour: {}", PARAM_CACHE_BEHAVIOR, cacheBehaviour);
+                    throw new RepositoryException("Invalid value for CacheBehaviour: " + cacheBehaviour);
+                }
+            }
+            else {
+                String msg = "Invalid value for CacheBehaviour: " + paramCacheBehaviour;
+                log.error(msg);
+                throw new RepositoryException(msg);
+            }
+        }
+
+        private static int getItemChacheSize(Map<?, ?> parameters) throws RepositoryException {
+            Object paramItemCacheSize = parameters.get(PARAM_ITEM_CACHE_SIZE);
+            log.debug("Setting ItemChacheSize from {}", PARAM_ITEM_CACHE_SIZE);
+
+            if (paramItemCacheSize == null) {
+                log.debug("{} not set, defaulting to {}", PARAM_ITEM_CACHE_SIZE, DEFAULT_ITEM_CACHE_SIZE);
+                return DEFAULT_ITEM_CACHE_SIZE;
+            }
+            else if (paramItemCacheSize instanceof Integer) {
+                log.debug("Setting ItemChacheSize to {}", paramItemCacheSize);
+                return (Integer) paramItemCacheSize;
+            }
+            else if (paramItemCacheSize instanceof String) {
+                try {
+                    log.debug("Setting ItemChacheSize to {}", paramItemCacheSize);
+                    return Integer.parseInt((String) paramItemCacheSize);
+                }
+                catch (NumberFormatException e) {
+                    String msg = "Invalid value for ItemCacheSize: " + paramItemCacheSize;
+                    log.error(msg);
+                    throw new RepositoryException(msg, e);
+                }
+            }
+            else {
+                String msg = "Invalid value for ItemCacheSize: " + paramItemCacheSize;
+                log.error(msg);
+                throw new RepositoryException(msg);
+            }
+        }
+
+        private static int getPollTimeout(Map<?, ?> parameters) throws RepositoryException {
+            Object paramPollTimeOut = parameters.get(PARAM_POLL_TIME_OUT);
+            log.debug("Setting PollTimeout from {}", PARAM_POLL_TIME_OUT);
+
+            if (paramPollTimeOut == null) {
+                log.debug("{} not set, defaulting to {}", PARAM_POLL_TIME_OUT, DEFAULT_POLL_TIME_OUT);
+                return DEFAULT_POLL_TIME_OUT;
+            }
+            else if (paramPollTimeOut instanceof Integer) {
+                log.debug("Setting PollTimeout to {}", paramPollTimeOut);
+                return (Integer) paramPollTimeOut;
+            }
+            else if (paramPollTimeOut instanceof String) {
+                try {
+                    log.debug("Setting PollTimeout to {}", paramPollTimeOut);
+                    return Integer.parseInt((String) paramPollTimeOut);
+                }
+                catch (NumberFormatException e) {
+                    String msg = "Invalid value for PollTimeout: " + paramPollTimeOut;
+                    log.error(msg);
+                    throw new RepositoryException(msg, e);
+                }
+            }
+            else {
+                String msg = "Invalid value for PollTimeout: " + paramPollTimeOut;
+                log.error(msg);
+                throw new RepositoryException(msg);
+            }
+        }
+
+    }
+
+}

Property changes on: jackrabbit-jcr2spi\src\main\java\org\apache\jackrabbit\jcr2spi\factory\Jcr2spiRepositoryFactory.java
___________________________________________________________________
Added: svn:eol-style
   + native

Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/factory/RepositoryConfig.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/factory/RepositoryConfig.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/factory/RepositoryConfig.java	(working copy)
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.jackrabbit.jcr2spi.config;
+package org.apache.jackrabbit.jcr2spi.factory;
 
 import javax.jcr.RepositoryException;
 
Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEventListener.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEventListener.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/hierarchy/HierarchyEventListener.java	(working copy)
@@ -20,7 +20,7 @@
 import org.slf4j.LoggerFactory;
 import org.apache.jackrabbit.jcr2spi.observation.InternalEventListener;
 import org.apache.jackrabbit.jcr2spi.WorkspaceManager;
-import org.apache.jackrabbit.jcr2spi.config.CacheBehaviour;
+import org.apache.jackrabbit.jcr2spi.factory.CacheBehaviour;
 import org.apache.jackrabbit.spi.EventFilter;
 import org.apache.jackrabbit.spi.Event;
 import org.apache.jackrabbit.spi.EventBundle;
Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/ItemImpl.java	(working copy)
@@ -36,7 +36,7 @@
 import javax.jcr.version.VersionException;
 
 import org.apache.commons.collections.map.ReferenceMap;
-import org.apache.jackrabbit.jcr2spi.config.CacheBehaviour;
+import org.apache.jackrabbit.jcr2spi.factory.CacheBehaviour;
 import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntry;
 import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
 import org.apache.jackrabbit.jcr2spi.operation.Operation;
Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java	(working copy)
@@ -19,7 +19,7 @@
 import org.apache.jackrabbit.jcr2spi.ItemManager;
 import org.apache.jackrabbit.jcr2spi.SessionListener;
 import org.apache.jackrabbit.jcr2spi.WorkspaceManager;
-import org.apache.jackrabbit.jcr2spi.config.CacheBehaviour;
+import org.apache.jackrabbit.jcr2spi.factory.CacheBehaviour;
 import org.apache.jackrabbit.jcr2spi.hierarchy.NodeEntry;
 import org.apache.jackrabbit.jcr2spi.operation.LockOperation;
 import org.apache.jackrabbit.jcr2spi.operation.LockRefresh;
Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/RepositoryImpl.java	(working copy)
@@ -40,7 +40,7 @@
 import javax.naming.spi.ObjectFactory;
 
 import org.apache.jackrabbit.commons.AbstractRepository;
-import org.apache.jackrabbit.jcr2spi.config.RepositoryConfig;
+import org.apache.jackrabbit.jcr2spi.factory.RepositoryConfig;
 import org.apache.jackrabbit.spi.SessionInfo;
 import org.apache.jackrabbit.spi.XASessionInfo;
 import org.apache.jackrabbit.spi.QValue;
Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/SessionImpl.java	(working copy)
@@ -52,8 +52,8 @@
 
 import org.apache.commons.collections.map.ReferenceMap;
 import org.apache.jackrabbit.commons.AbstractSession;
-import org.apache.jackrabbit.jcr2spi.config.CacheBehaviour;
-import org.apache.jackrabbit.jcr2spi.config.RepositoryConfig;
+import org.apache.jackrabbit.jcr2spi.factory.CacheBehaviour;
+import org.apache.jackrabbit.jcr2spi.factory.RepositoryConfig;
 import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEntry;
 import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManager;
 import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManagerImpl;
Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceImpl.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceImpl.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceImpl.java	(working copy)
@@ -16,8 +16,8 @@
  */
 package org.apache.jackrabbit.jcr2spi;
 
-import org.apache.jackrabbit.jcr2spi.config.CacheBehaviour;
-import org.apache.jackrabbit.jcr2spi.config.RepositoryConfig;
+import org.apache.jackrabbit.jcr2spi.factory.CacheBehaviour;
+import org.apache.jackrabbit.jcr2spi.factory.RepositoryConfig;
 import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManager;
 import org.apache.jackrabbit.jcr2spi.lock.LockManagerImpl;
 import org.apache.jackrabbit.jcr2spi.lock.LockStateManager;
Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/WorkspaceManager.java	(working copy)
@@ -62,7 +62,7 @@
 import org.apache.jackrabbit.jcr2spi.operation.SetPrimaryType;
 import org.apache.jackrabbit.jcr2spi.security.AccessManager;
 import org.apache.jackrabbit.jcr2spi.observation.InternalEventListener;
-import org.apache.jackrabbit.jcr2spi.config.CacheBehaviour;
+import org.apache.jackrabbit.jcr2spi.factory.CacheBehaviour;
 import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyEventListener;
 import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManager;
 import org.apache.jackrabbit.jcr2spi.hierarchy.HierarchyManagerImpl;
Index: jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/XASessionImpl.java
===================================================================
--- jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/XASessionImpl.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/XASessionImpl.java	(working copy)
@@ -19,7 +19,7 @@
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import org.apache.jackrabbit.spi.XASessionInfo;
-import org.apache.jackrabbit.jcr2spi.config.RepositoryConfig;
+import org.apache.jackrabbit.jcr2spi.factory.RepositoryConfig;
 
 import javax.transaction.xa.XAResource;
 
Index: jackrabbit-jcr2spi/src/main/resources/META-INF/services/javax.jcr.RepositoryFactory
===================================================================
--- jackrabbit-jcr2spi/src/main/resources/META-INF/services/javax.jcr.RepositoryFactory	(revision 0)
+++ jackrabbit-jcr2spi/src/main/resources/META-INF/services/javax.jcr.RepositoryFactory	(revision 0)
@@ -0,0 +1,17 @@
+#  Licensed to the Apache Software Foundation (ASF) under one or more
+#  contributor license agreements.  See the NOTICE file distributed with
+#  this work for additional information regarding copyright ownership.
+#  The ASF licenses this file to You 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.
+
+org.apache.jackrabbit.jcr2spi.factory.Jcr2spiRepositoryFactory
+
Index: jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AbstractJCR2SPITest.java
===================================================================
--- jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AbstractJCR2SPITest.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AbstractJCR2SPITest.java	(working copy)
@@ -38,7 +38,7 @@
 import junit.framework.TestCase;
 
 import org.apache.jackrabbit.commons.cnd.ParseException;
-import org.apache.jackrabbit.jcr2spi.config.RepositoryConfig;
+import org.apache.jackrabbit.jcr2spi.factory.RepositoryConfig;
 import org.apache.jackrabbit.spi.Batch;
 import org.apache.jackrabbit.spi.ChildInfo;
 import org.apache.jackrabbit.spi.EventBundle;
Index: jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AbstractRepositoryConfig.java
===================================================================
--- jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AbstractRepositoryConfig.java	(revision 814611)
+++ jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/AbstractRepositoryConfig.java	(working copy)
@@ -18,8 +18,8 @@
 
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
-import org.apache.jackrabbit.jcr2spi.config.RepositoryConfig;
-import org.apache.jackrabbit.jcr2spi.config.CacheBehaviour;
+import org.apache.jackrabbit.jcr2spi.factory.CacheBehaviour;
+import org.apache.jackrabbit.jcr2spi.factory.RepositoryConfig;
 
 /**
  * <code>AbstractRepositoryConfig</code>...
Index: jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryServiceFactory.java
===================================================================
--- jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryServiceFactory.java	(revision 0)
+++ jackrabbit-spi/src/main/java/org/apache/jackrabbit/spi/RepositoryServiceFactory.java	(revision 0)
@@ -0,0 +1,7 @@
+package org.apache.jackrabbit.spi;
+
+import java.util.Map;
+
+public interface RepositoryServiceFactory {
+    public RepositoryService createRepositoryService(Map<?, ?> parameters);
+}

Property changes on: jackrabbit-spi\src\main\java\org\apache\jackrabbit\spi\RepositoryServiceFactory.java
___________________________________________________________________
Added: svn:eol-style
   + native

