Implement remote browsing
authorMathieu Baudier <mbaudier@argeo.org>
Mon, 20 Aug 2012 17:13:25 +0000 (17:13 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Mon, 20 Aug 2012 17:13:25 +0000 (17:13 +0000)
git-svn-id: https://svn.argeo.org/slc/trunk@5521 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

plugins/org.argeo.slc.client.ui.dist/META-INF/spring/osgi.xml
plugins/org.argeo.slc.client.ui.dist/META-INF/spring/views.xml
plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/views/DistributionsView.java

index 04e4e225f67213e9c2d7a63030f9c1b4f520acf8..c938de8de2204e7652c764dc19183fa740daf43a 100644 (file)
@@ -10,4 +10,6 @@
 \r
        <reference id="javaRepository" interface="javax.jcr.Repository"\r
                filter="(argeo.jcr.repository.alias=java)" />\r
+\r
+       <reference id="repositoryFactory" interface="javax.jcr.RepositoryFactory" />\r
 </beans:beans>
\ No newline at end of file
index 7540fe21a84f6e94abbe82ca3da21b7d6bc67981..cfbbf2443b013c50a315e9cb7b061182ec44de1b 100644 (file)
@@ -46,5 +46,6 @@
        <bean id="distributionsView" class="org.argeo.slc.client.ui.dist.views.DistributionsView"
                scope="prototype">
                <property name="repository" ref="javaRepository" />
+               <property name="repositoryFactory" ref="repositoryFactory" />
        </bean>
 </beans>
index c401bb1113562217c9fd207affa22ca8e01cb2f2..c143fb2e0dd19cae8afa6647a84c51b408acf6ae 100644 (file)
@@ -22,7 +22,9 @@ import java.util.Map;
 
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
+import javax.jcr.RepositoryFactory;
 import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -67,6 +69,7 @@ public class DistributionsView extends ViewPart implements SlcNames {
        public final static String ID = DistPlugin.ID + ".distributionsView";
 
        private Repository repository;
+       private RepositoryFactory repositoryFactory;
 
        private TreeViewer viewer;
 
@@ -107,7 +110,17 @@ public class DistributionsView extends ViewPart implements SlcNames {
 
                // Initializes repositories
                // TODO make it more generic, with remote repositories etc.
-               repositories.add(new RepositoryElem("java", repository));
+               repositories.add(new RepositoryElem("java", repository, false));
+
+               // Remote
+               /*
+               String uri = "http://localhost:7070/org.argeo.jcr.webapp/remoting/java";
+               //String uri = "http://dev.argeo.org/org.argeo.jcr.webapp/pub/java";
+               Repository remoteRepository = JcrUtils.getRepositoryByUri(
+                               repositoryFactory, uri);
+               repositories.add(new RepositoryElem("java@dev.argeo.org",
+                               remoteRepository, true));
+               */
 
                viewer.setInput(getSite());
 
@@ -129,6 +142,10 @@ public class DistributionsView extends ViewPart implements SlcNames {
                this.repository = repository;
        }
 
+       public void setRepositoryFactory(RepositoryFactory repositoryFactory) {
+               this.repositoryFactory = repositoryFactory;
+       }
+
        /** Programatically configure the context menu */
        protected void contextMenuAboutToShow(IMenuManager menuManager) {
                IWorkbenchWindow window = DistPlugin.getDefault().getWorkbench()
@@ -200,15 +217,25 @@ public class DistributionsView extends ViewPart implements SlcNames {
 
        }
 
+       /** Wraps a repository **/
        private static class RepositoryElem extends TreeParent {
                // private final Repository repository;
                private Session defaultSession;
+               private final Boolean isRemote;
 
-               public RepositoryElem(String name, Repository repository) {
+               public RepositoryElem(String name, Repository repository,
+                               Boolean isRemote) {
                        super(name);
                        // this.repository = repository;
+                       this.isRemote = isRemote;
                        try {
-                               defaultSession = repository.login();
+                               if (isRemote) {
+                                       SimpleCredentials sc = new SimpleCredentials("root",
+                                                       "demo".toCharArray());
+                                       defaultSession = repository.login(sc);
+                               } else {
+                                       defaultSession = repository.login();
+                               }
                                String[] workspaceNames = defaultSession.getWorkspace()
                                                .getAccessibleWorkspaceNames();
                                for (String workspace : workspaceNames)