[dna-commits] DNA SVN: r926 - trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn.

dna-commits at lists.jboss.org dna-commits at lists.jboss.org
Fri May 22 09:19:21 EDT 2009


Author: spagop
Date: 2009-05-22 09:19:21 -0400 (Fri, 22 May 2009)
New Revision: 926

Modified:
   trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositoryConnection.java
Log:
changes made to support workspace features

Modified: trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositoryConnection.java
===================================================================
--- trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositoryConnection.java	2009-05-22 13:14:08 UTC (rev 925)
+++ trunk/extensions/dna-connector-svn/src/main/java/org/jboss/dna/connector/svn/SVNRepositoryConnection.java	2009-05-22 13:19:21 UTC (rev 926)
@@ -23,6 +23,7 @@
  */
 package org.jboss.dna.connector.svn;
 
+import java.util.Set;
 import java.util.concurrent.TimeUnit;
 import javax.transaction.xa.XAResource;
 import org.jboss.dna.common.util.CheckArg;
@@ -30,8 +31,6 @@
 import org.jboss.dna.graph.cache.CachePolicy;
 import org.jboss.dna.graph.connector.RepositoryConnection;
 import org.jboss.dna.graph.connector.RepositorySourceException;
-import org.jboss.dna.graph.property.PathFactory;
-import org.jboss.dna.graph.property.PropertyFactory;
 import org.jboss.dna.graph.request.Request;
 import org.jboss.dna.graph.request.processor.RequestProcessor;
 import org.tmatesoft.svn.core.SVNErrorCode;
@@ -41,7 +40,7 @@
 import org.tmatesoft.svn.core.io.SVNRepository;
 
 /**
- * The repository connection to a SVN Repository instance.
+ * The defaultRepository connection to a SVN Repository instance.
  * 
  * @author Serge Pagop
  */
@@ -49,33 +48,54 @@
 
     private final String sourceName;
     private final CachePolicy cachePolicy;
-    private final SVNRepository repository;
+    private final SVNRepository defaultWorkspace;
     private final boolean updatesAllowed;
-
+    private final Set<String> availableWorkspaceNames;
+    private final boolean creatingWorkspacesAllowed;
+    private final RepositoryAccessData accessData;
+    
+    /**
+     * default workspace must can be a root repository or any folders from the root directory.
+     * available workspace names must consist of URLs from repository folders.
+     * 
+     * @param sourceName
+     * @param defaultWorkspace
+     * @param availableWorkspaceNames
+     * @param creatingWorkspacesAllowed
+     * @param cachePolicy
+     * @param updatesAllowed
+     * @param accessData
+     */
     public SVNRepositoryConnection( String sourceName,
+                                    SVNRepository defaultWorkspace,
+                                    Set<String> availableWorkspaceNames,
+                                    boolean creatingWorkspacesAllowed,
                                     CachePolicy cachePolicy,
-                                    boolean updatesAllowed,
-                                    SVNRepository repository ) {
-        CheckArg.isNotNull(repository, "repository");
-        CheckArg.isNotNull(sourceName, "sourceName");
+                                    boolean updatesAllowed, RepositoryAccessData accessData ) {
 
+        CheckArg.isNotNull(defaultWorkspace, "defaultWorkspace");
+        CheckArg.isNotEmpty(sourceName, "sourceName");
+        assert availableWorkspaceNames != null;
+        assert accessData != null;
+        
+        // Check if the default workspace is a folder.
         SVNNodeKind nodeKind = null;
         try {
-            nodeKind = repository.checkPath("", -1);
+            nodeKind = defaultWorkspace.checkPath("", -1);
             if (nodeKind == SVNNodeKind.NONE) {
                 SVNErrorMessage error = SVNErrorMessage.create(SVNErrorCode.UNKNOWN,
                                                                "No entry at URL ''{0}''",
-                                                               repository.getLocation().getPath());
+                                                               defaultWorkspace.getLocation().getPath());
                 throw new SVNException(error);
             } else if (nodeKind == SVNNodeKind.UNKNOWN) {
                 SVNErrorMessage error = SVNErrorMessage.create(SVNErrorCode.UNKNOWN,
                                                                "Entry at URL ''{0}'' is a file while directory was expected",
-                                                               repository.getLocation().getPath());
+                                                               defaultWorkspace.getLocation().getPath());
                 throw new SVNException(error);
             } else if (nodeKind == SVNNodeKind.FILE) {
                 SVNErrorMessage error = SVNErrorMessage.create(SVNErrorCode.UNKNOWN,
                                                                "Entry at URL ''{0}'' is a file while directory was expected",
-                                                               repository.getLocation().getPath());
+                                                               defaultWorkspace.getLocation().getPath());
                 throw new SVNException(error);
             }
         } catch (SVNException e) {
@@ -85,12 +105,15 @@
 
         this.sourceName = sourceName;
         this.cachePolicy = cachePolicy;
-        this.repository = repository;
+        this.defaultWorkspace = defaultWorkspace;
         this.updatesAllowed = updatesAllowed;
+        this.availableWorkspaceNames = availableWorkspaceNames;
+        this.creatingWorkspacesAllowed = creatingWorkspacesAllowed;
+        this.accessData = accessData;
     }
 
-    SVNRepository getRepository() {
-        return repository;
+    SVNRepository getDefaultWorkspace() {
+        return defaultWorkspace;
     }
 
     /**
@@ -120,7 +143,7 @@
     public boolean ping( long time,
                          TimeUnit unit ) {
         try {
-            this.repository.getRepositoryRoot(true);
+            this.defaultWorkspace.getRepositoryRoot(true);
         } catch (SVNException e) {
             return false;
         }
@@ -142,18 +165,24 @@
      * @see org.jboss.dna.graph.connector.RepositoryConnection#execute(org.jboss.dna.graph.ExecutionContext,
      *      org.jboss.dna.graph.request.Request)
      */
-    @SuppressWarnings( "unused" )
     public void execute( final ExecutionContext context,
                          final Request request ) throws RepositorySourceException {
 
-        final PathFactory pathFactory = context.getValueFactories().getPathFactory();
-        final PropertyFactory propertyFactory = context.getPropertyFactory();
 
-        RequestProcessor processor = new SVNRepositoryRequestProcessor(getSourceName(), context, repository, updatesAllowed);
+        RequestProcessor processor = new SVNRepositoryRequestProcessor(sourceName, defaultWorkspace,
+                                                                       availableWorkspaceNames, creatingWorkspacesAllowed,
+                                                                       context, updatesAllowed, accessData);
         try {
             processor.process(request);
         } finally {
             processor.close();
         }
     }
+
+    /**
+     * @return the accessData
+     */
+    public RepositoryAccessData getAccessData() {
+        return accessData;
+    }
 }




More information about the dna-commits mailing list