jackrabbit-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mreut...@apache.org
Subject svn commit: r125509 - /incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryHelper.java /incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryStub.java
Date Tue, 18 Jan 2005 14:25:09 GMT
Author: mreutegg
Date: Tue Jan 18 06:25:08 2005
New Revision: 125509

URL: http://svn.apache.org/viewcvs?view=rev&rev=125509
Log:
Extended helper and stub classes to support multiple instantiation. stub now also supports
configuration on the api level.
Modified:
   incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryHelper.java
   incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryStub.java

Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryHelper.java
Url: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryHelper.java?view=diff&rev=125509&p1=incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryHelper.java&r1=125508&p2=incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryHelper.java&r2=125509
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryHelper.java	(original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryHelper.java	Tue
Jan 18 06:25:08 2005
@@ -19,6 +19,8 @@
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
+import java.util.Map;
+import java.util.HashMap;
 
 /**
  * Utility class to get access to {@link javax.jcr.Session} instances.
@@ -26,14 +28,43 @@
 public class RepositoryHelper {
 
     /**
+     * Repository stub reference.
+     */
+    private RepositoryStub repoStub;
+
+    /**
+     * Overlay configuration.
+     */
+    private Map configuration = new HashMap();
+
+    /**
+     * Creates a repository helper with configuration from
+     * <code>repositoryStubImpl.properties</code> file.
+     */
+    public RepositoryHelper() {
+    }
+
+    /**
+     * Creates a repository helper with additional configuration parameters.
+     *
+     * @param config configuration which overlays the values from the property
+     *   file.
+     */
+    public RepositoryHelper(Map config) {
+        configuration.putAll(config);
+    }
+
+    /**
      * Returns the repository instance to test.
      * @return the repository instance to test.
      * @throws RepositoryException if the repository could not be obtained.
      */
     public Repository getRepository() throws RepositoryException {
         try {
-            RepositoryStub repStub = RepositoryStub.getInstance();
-            return repStub.getRepository();
+            if (repoStub == null) {
+                repoStub = RepositoryStub.getInstance(configuration);
+            }
+            return repoStub.getRepository();
         } catch (RepositoryStubException e) {
             throw new RepositoryException("Failed to get Repository instance.", e);
         }
@@ -58,12 +89,7 @@
      * @throws RepositoryException if login to the repository failed.
      */
     public Session getSuperuserSession(String workspaceName) throws RepositoryException {
-        try {
-            RepositoryStub repStub = RepositoryStub.getInstance();
-            return repStub.getRepository().login(repStub.getSuperuserCredentials(), workspaceName);
-        } catch (RepositoryStubException e) {
-            throw new RepositoryException("Failed to login to Repository.", e);
-        }
+        return getRepository().login(repoStub.getSuperuserCredentials(), workspaceName);
     }
 
     /**
@@ -83,12 +109,7 @@
      * @throws RepositoryException if login to the repository failed.
      */
     public Session getReadWriteSession(String workspaceName) throws RepositoryException {
-        try {
-            RepositoryStub repStub = RepositoryStub.getInstance();
-            return repStub.getRepository().login(repStub.getReadWriteCredentials(), workspaceName);
-        } catch (RepositoryStubException e) {
-            throw new RepositoryException("Failed to login to Repository.", e);
-        }
+        return getRepository().login(repoStub.getReadWriteCredentials(), workspaceName);
     }
 
     /**
@@ -108,12 +129,7 @@
      * @throws RepositoryException if login to the repository failed.
      */
     public Session getReadOnlySession(String workspaceName) throws RepositoryException {
-        try {
-            RepositoryStub repStub = RepositoryStub.getInstance();
-            return repStub.getRepository().login(repStub.getReadOnlyCredentials(), workspaceName);
-        } catch (RepositoryStubException e) {
-            throw new RepositoryException("Failed to login to Repository.", e);
-        }
+        return getRepository().login(repoStub.getReadOnlyCredentials(), workspaceName);
     }
 
     /**
@@ -129,10 +145,8 @@
      * @throws RepositoryException if the configuration file cannot be found.
      */
     public String getProperty(String name) throws RepositoryException {
-        try {
-            return RepositoryStub.getInstance().getProperty(name);
-        } catch (RepositoryStubException e) {
-            throw new RepositoryException("Failed to obtain Repository instance.", e);
-        }
+        // force assignment of repoStub
+        getRepository();
+        return repoStub.getProperty(name);
     }
 }

Modified: incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryStub.java
Url: http://svn.apache.org/viewcvs/incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryStub.java?view=diff&rev=125509&p1=incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryStub.java&r1=125508&p2=incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryStub.java&r2=125509
==============================================================================
--- incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryStub.java	(original)
+++ incubator/jackrabbit/trunk/src/test/org/apache/jackrabbit/test/RepositoryStub.java	Tue
Jan 18 06:25:08 2005
@@ -26,6 +26,7 @@
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.util.Properties;
+import java.util.Map;
 
 /**
  * The <code>RepositoryStub</code> is the entry point to the JCR Repository
@@ -68,8 +69,6 @@
 
     public static final String PROP_WORKSPACE_NAME = "workspacename";
 
-    protected static RepositoryStub instance;
-
     protected final Properties environment;
 
     protected SimpleCredentials superuser;
@@ -107,36 +106,37 @@
      * <li>If the system property <code>-Djavax.jcr.tck.properties</code>
is
      * not set, then the TCK tries to load the file <code>repositoryStubImpl.properties</code>
      * as a resource from the ClassLoader of this <code>RepositryStub</code>
class.</li>
-     * <li>If none of the above is found, a {@link RepositoryStubException} is thrown.
      * </ol>
+     * The properties are then overlayed with the the key / values from
+     * <code>configuration</code> map.
      *
+     * @param configuration a <code>Map</code> of additional configuration entries.
      * @return a <code>RepositoryStub</code> implementation.
      * @throws RepositoryStubException
      */
-    public static synchronized RepositoryStub getInstance() throws RepositoryStubException
{
-        if (instance == null) {
-            Properties props = null;
-            String implProp = System.getProperty(STUB_IMPL_SYS_PROPS);
-            if (implProp != null) {
-                File implPropFile = new File(implProp);
-                if (implPropFile.exists()) {
-                    props = new Properties();
-                    try {
-                        props.load(new FileInputStream(implPropFile));
-                    } catch (IOException e) {
-                        throw new RepositoryStubException("Unable to load config file: "
-                                + implProp + " " + e.toString());
-                    }
-                } else {
-                    throw new RepositoryStubException("File does not exist: " + implProp);
+    static synchronized RepositoryStub getInstance(Map configuration)
+        throws RepositoryStubException {
+        Properties props = null;
+        RepositoryStub stub = null;
+        String implProp = System.getProperty(STUB_IMPL_SYS_PROPS);
+        if (implProp != null) {
+            File implPropFile = new File(implProp);
+            if (implPropFile.exists()) {
+                props = new Properties();
+                try {
+                    props.load(new FileInputStream(implPropFile));
+                } catch (IOException e) {
+                    throw new RepositoryStubException("Unable to load config file: "
+                            + implProp + " " + e.toString());
                 }
+            } else {
+                throw new RepositoryStubException("File does not exist: " + implProp);
             }
+        }
 
-            if (props == null) {
-                InputStream is = RepositoryStub.class.getClassLoader().getResourceAsStream(STUB_IMPL_PROPS);
-                if (is == null) {
-                    throw new RepositoryStubException(STUB_IMPL_PROPS + " not found in classpath!");
-                }
+        if (props == null) {
+            InputStream is = RepositoryStub.class.getClassLoader().getResourceAsStream(STUB_IMPL_PROPS);
+            if (is != null) {
                 try {
                     props = new Properties();
                     props.load(is);
@@ -145,30 +145,34 @@
                             + STUB_IMPL_PROPS + ": " + e.toString());
                 }
             }
+        }
 
-            try {
-                String className = props.getProperty(PROP_STUB_IMPL_CLASS);
-                if (className == null || className.length() == 0) {
-                    throw new RepositoryStubException("Property " + PROP_STUB_IMPL_CLASS
+ " not defined!");
-                }
-                Class stubClass = Class.forName(className);
-                Constructor constr = stubClass.getConstructor(new Class[]{Properties.class});
-                instance = (RepositoryStub) constr.newInstance(new Object[]{props});
-            } catch (ClassCastException e) {
-                throw new RepositoryStubException(e.toString());
-            } catch (NoSuchMethodException e) {
-                throw new RepositoryStubException(e.toString());
-            } catch (ClassNotFoundException e) {
-                throw new RepositoryStubException(e.toString());
-            } catch (InstantiationException e) {
-                throw new RepositoryStubException(e.toString());
-            } catch (IllegalAccessException e) {
-                throw new RepositoryStubException(e.toString());
-            } catch (InvocationTargetException e) {
-                throw new RepositoryStubException(e.toString());
+        // overlay with configuration parameter
+        props.putAll(configuration);
+
+        try {
+            String className = props.getProperty(PROP_STUB_IMPL_CLASS);
+            if (className == null || className.length() == 0) {
+                throw new RepositoryStubException("Property " + PROP_STUB_IMPL_CLASS + "
not defined!");
             }
+            Class stubClass = Class.forName(className);
+            Constructor constr = stubClass.getConstructor(new Class[]{Properties.class});
+            stub = (RepositoryStub) constr.newInstance(new Object[]{props});
+        } catch (ClassCastException e) {
+            throw new RepositoryStubException(e.toString());
+        } catch (NoSuchMethodException e) {
+            throw new RepositoryStubException(e.toString());
+        } catch (ClassNotFoundException e) {
+            throw new RepositoryStubException(e.toString());
+        } catch (InstantiationException e) {
+            throw new RepositoryStubException(e.toString());
+        } catch (IllegalAccessException e) {
+            throw new RepositoryStubException(e.toString());
+        } catch (InvocationTargetException e) {
+            throw new RepositoryStubException(e.toString());
         }
-        return instance;
+
+        return stub;
     }
 
     /**

Mime
View raw message