]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - runtime/org.argeo.slc.repo/src/main/java/org/argeo/slc/repo/RepoUtils.java
+ clean repo model
[gpl/argeo-slc.git] / runtime / org.argeo.slc.repo / src / main / java / org / argeo / slc / repo / RepoUtils.java
index fa4fa0c70cfb03a0424a0c0565c7c541c7339533..b0e65bce51612e757daedc4265c343ad9b620f9e 100644 (file)
@@ -420,14 +420,13 @@ public class RepoUtils implements ArgeoNames, SlcNames {
        /**
         * Shortcut to retrieve a session given variable information: Handle the
         * case where we only have an URI of the repository, that we want to connect
-        * as anonymous or the case of a identified connexion to a local or remote
+        * as anonymous or the case of a identified connection to a local or remote
         * repository.
         * 
         * Callers must close the session once it has been used
         */
-       public static Session getCorrespondingSession(
-                       RepositoryFactory repositoryFactory, Keyring keyring,
-                       Node repoNode, String uri, String workspaceName) {
+       public static Session getRemoteSession(RepositoryFactory repositoryFactory,
+                       Keyring keyring, Node repoNode, String uri, String workspaceName) {
                try {
                        if (repoNode == null && uri == null)
                                throw new SlcException(
@@ -453,6 +452,35 @@ public class RepoUtils implements ArgeoNames, SlcNames {
                }
        }
 
+       /**
+        * Shortcut to retrieve a session on a remote Jrc Repository from
+        * information stored in a local argeo node or from an URI: Handle the case
+        * where we only have an URI of the repository, that we want to connect as
+        * anonymous or the case of a identified connection to a local or remote
+        * repository.
+        * 
+        * Callers must close the session once it has been used
+        */
+       public static Session getRemoteSession(RepositoryFactory repositoryFactory,
+                       Keyring keyring, Repository localRepository, String repoNodePath,
+                       String uri, String workspaceName) {
+               Session localSession = null;
+               Node repoNode = null;
+               try {
+                       localSession = localRepository.login();
+                       if (repoNodePath != null && localSession.nodeExists(repoNodePath))
+                               repoNode = localSession.getNode(repoNodePath);
+
+                       return RepoUtils.getRemoteSession(repositoryFactory, keyring,
+                                       repoNode, uri, workspaceName);
+               } catch (RepositoryException e) {
+                       throw new SlcException("Cannot log to workspace " + workspaceName
+                                       + " for repo defined in " + repoNodePath, e);
+               } finally {
+                       JcrUtils.logoutQuietly(localSession);
+               }
+       }
+
        /**
         * Write group indexes: 'binaries' lists all bundles and their versions,
         * 'sources' list theire sources, and 'sdk' aggregates both.