You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2014/06/12 10:17:42 UTC

svn commit: r1602091 - in /sling/trunk/tooling/ide: api/src/org/apache/sling/ide/serialization/ api/src/org/apache/sling/ide/transport/ eclipse-core/src/org/apache/sling/ide/eclipse/core/ eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ ecl...

Author: stefanegli
Date: Thu Jun 12 08:17:41 2014
New Revision: 1602091

URL: http://svn.apache.org/r1602091
Log:
SLING-3660 : refine repository connect/disconnect states together with allowing getNodeTypeRegistry to return null (when never loaded) - and caching of the nodeTypeRegistry properly

Modified:
    sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java
    sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java
    sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/RepositoryFactory.java
    sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java
    sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ExportWizard.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java
    sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java
    sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java
    sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java

Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java Thu Jun 12 08:17:41 2014
@@ -41,13 +41,17 @@ public class SerializationKindManager {
     public void init(Repository repository) throws RepositoryException {
 
         // first pass, init the mappings
-        List<NodeType> nodeTypes = repository.getNodeTypeRegistry().getNodeTypes();
+        final NodeTypeRegistry nodeTypeRegistry = repository.getNodeTypeRegistry();
+        if (nodeTypeRegistry==null) {
+            throw new IllegalStateException("nodeTypeRegistry must not be null here");
+        }
+        final List<NodeType> nodeTypes = nodeTypeRegistry.getNodeTypes();
 
         // detect node types which have an nt:file or nt:folder parent in the hierarchy
         for (Iterator<NodeType> it = nodeTypes.iterator(); it.hasNext();) {
             final NodeType nt = it.next();
             final String nodeType = nt.getName();
-            SerializationKind serializationKind = getSerializationKind(nodeType, repository.getNodeTypeRegistry());
+            SerializationKind serializationKind = getSerializationKind(nodeType, nodeTypeRegistry);
             if (serializationKind == null) {
                 // don't care
                 continue;

Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.java Thu Jun 12 08:17:41 2014
@@ -99,5 +99,12 @@ public interface Repository {
 
 	Command<byte[]> newGetNodeCommand(String path);
 	
+	/**
+	 * Returns the node type registry - when the underlying server is started -
+	 * or null when the server is not started at the moment.
+	 * @return the node type registry - when the underlying server is started -
+     * or null when the server is not started at the moment
+	 */
 	NodeTypeRegistry getNodeTypeRegistry();
+
 }

Modified: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/RepositoryFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/RepositoryFactory.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/RepositoryFactory.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/RepositoryFactory.java Thu Jun 12 08:17:41 2014
@@ -26,6 +26,8 @@ package org.apache.sling.ide.transport;
  */
 public interface RepositoryFactory {
 
+    public Repository getRepository(RepositoryInfo repositoryInfo, boolean acceptsDisconnectedRepository) throws RepositoryException;
+
     /**
      * Returns a <tt>Repository</tt> instance for the specified <tt>repositoryInfo</tt>
      * 
@@ -37,7 +39,7 @@ public interface RepositoryFactory {
      * @return
      * @throws RepositoryException
      */
-    Repository getRepository(RepositoryInfo repositoryInfo) throws RepositoryException;
+    Repository connectRepository(RepositoryInfo repositoryInfo) throws RepositoryException;
 
-    void stopRepository(RepositoryInfo repositoryInfo);
+    void disconnectRepository(RepositoryInfo repositoryInfo);
 }

Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServerUtil.java Thu Jun 12 08:17:41 2014
@@ -55,7 +55,17 @@ public abstract class ServerUtil {
             return null;
         }
         try {
-            return getRepository(server, new NullProgressMonitor());
+            RepositoryFactory repository = Activator.getDefault().getRepositoryFactory();
+            try {
+                RepositoryInfo repositoryInfo = getRepositoryInfo(server, new NullProgressMonitor());
+                return repository.getRepository(repositoryInfo, true);
+            } catch (URISyntaxException e) {
+                throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
+            } catch (RuntimeException e) {
+                throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
+            } catch (RepositoryException e) {
+                throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
+            }
         } catch (CoreException e) {
             Activator.getDefault().getPluginLogger().warn("Failed getting a repository for " + project, e);
             return null;
@@ -117,11 +127,28 @@ public abstract class ServerUtil {
         return result;
     }
 
-    public static Repository getRepository(IServer server, IProgressMonitor monitor) throws CoreException {
+    public static Repository getConnectedRepository(IServer server, IProgressMonitor monitor) throws CoreException {
+        if (server.getServerState()!=IServer.STATE_STARTED) {
+            throw new CoreException(new Status(Status.WARNING, Activator.PLUGIN_ID, "Server not started, please start server first."));
+        }
+        RepositoryFactory repository = Activator.getDefault().getRepositoryFactory();
+        try {
+            RepositoryInfo repositoryInfo = getRepositoryInfo(server, monitor);
+            return repository.getRepository(repositoryInfo, false);
+        } catch (URISyntaxException e) {
+            throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
+        } catch (RuntimeException e) {
+            throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
+        } catch (RepositoryException e) {
+            throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
+        }
+    }
+
+    public static Repository connectRepository(IServer server, IProgressMonitor monitor) throws CoreException {
         RepositoryFactory repository = Activator.getDefault().getRepositoryFactory();
         try {
             RepositoryInfo repositoryInfo = getRepositoryInfo(server, monitor);
-            return repository.getRepository(repositoryInfo);
+            return repository.connectRepository(repositoryInfo);
         } catch (URISyntaxException e) {
             throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
         } catch (RuntimeException e) {
@@ -135,7 +162,7 @@ public abstract class ServerUtil {
         RepositoryFactory repository = Activator.getDefault().getRepositoryFactory();
         try {
             RepositoryInfo repositoryInfo = getRepositoryInfo(server, monitor);
-            repository.stopRepository(repositoryInfo);
+            repository.disconnectRepository(repositoryInfo);
         } catch (URISyntaxException e) {
             throw new CoreException(new Status(Status.ERROR, Activator.PLUGIN_ID, e.getMessage(), e));
         } catch (RuntimeException e) {

Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java Thu Jun 12 08:17:41 2014
@@ -85,7 +85,7 @@ public class SlingLaunchpadBehaviour ext
 
             Repository repository;
             try {
-                repository = ServerUtil.getRepository(getServer(), monitor);
+                repository = ServerUtil.connectRepository(getServer(), monitor);
             } catch (CoreException e) {
                 setServerState(IServer.STATE_STOPPED);
                 throw e;
@@ -320,7 +320,7 @@ public class SlingLaunchpadBehaviour ext
 
         PluginLogger logger = Activator.getDefault().getPluginLogger();
 
-		Repository repository = ServerUtil.getRepository(getServer(), monitor);
+		Repository repository = ServerUtil.getConnectedRepository(getServer(), monitor);
         
         // TODO it would be more efficient to have a module -> filter mapping
         // it would be simpler to implement this in SlingContentModuleAdapter, but

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java Thu Jun 12 08:17:41 2014
@@ -54,12 +54,12 @@ public class JcrNewNodeAction implements
             return;
         }
         Repository repository = ServerUtil.getDefaultRepository(node.getProject());
-        if (repository == null) {
+        NodeTypeRegistry ntManager = (repository==null) ? null : repository.getNodeTypeRegistry();
+        if (ntManager == null) {
             MessageDialog.openWarning(null, "Unable to create a new node", "Unable to create a new node since project "
                     + node.getProject().getName() + " is not associated with a server or the server is not started.");
             return;
         }
-        NodeTypeRegistry ntManager = repository.getNodeTypeRegistry();
         final NodeType nodeType = node.getNodeType();
         if (nodeType!=null && nodeType.getName()!=null && nodeType.getName().equals("nt:file")) {
             MessageDialog.openInformation(shell, "Cannot create node", "Node of type nt:file cannot have children");

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ExportWizard.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ExportWizard.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ExportWizard.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ExportWizard.java Thu Jun 12 08:17:41 2014
@@ -69,7 +69,7 @@ public class ExportWizard extends Wizard
                         @Override
                         public void run() {
                             try {
-                                selectedServer[0] = ServerUtil.getRepository(exportPage.getServer(), monitor);
+                                selectedServer[0] = ServerUtil.getConnectedRepository(exportPage.getServer(), monitor);
                             } catch (CoreException e) {
                                 throw new RuntimeException(e);
                             }

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java Thu Jun 12 08:17:41 2014
@@ -87,7 +87,7 @@ public class ImportRepositoryContentActi
             SerializationException, CoreException {
         Repository repository;
         try {
-            repository = ServerUtil.getRepository(server, monitor);
+            repository = ServerUtil.getConnectedRepository(server, monitor);
         } catch (CoreException e) {
             throw new InvocationTargetException(e);
         }

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/nav/model/JcrNode.java Thu Jun 12 08:17:41 2014
@@ -1125,12 +1125,12 @@ public class JcrNode implements IAdaptab
 
     void changePrimaryType(String newPrimaryType) {
         Repository repository = ServerUtil.getDefaultRepository(getProject());
-        if (repository == null) {
+        NodeTypeRegistry ntManager = (repository==null) ? null : repository.getNodeTypeRegistry();
+        if (ntManager == null) {
             MessageDialog.openWarning(null, "Unable to change primary type", "Unable to change primary type since project "
                     + getProject().getName() + " is not associated with a server or the server is not started.");
             return;
         }
-        NodeTypeRegistry ntManager = repository.getNodeTypeRegistry();
         
         try {
             if (!ntManager.isAllowedPrimaryChildNodeType(getParent().getPrimaryType(), newPrimaryType)) {
@@ -1205,10 +1205,10 @@ public class JcrNode implements IAdaptab
 
     public NodeType getNodeType() {
         Repository repository = ServerUtil.getDefaultRepository(getProject());
-        if (repository==null) {
+        NodeTypeRegistry ntManager = (repository==null) ? null : repository.getNodeTypeRegistry();
+        if (ntManager==null) {
             return null;
         }
-        NodeTypeRegistry ntManager = repository.getNodeTypeRegistry();
         return ntManager.getNodeType(getPrimaryType());
     }
 

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/JcrEditingSupport.java Thu Jun 12 08:17:41 2014
@@ -342,10 +342,10 @@ public class JcrEditingSupport extends E
                     protected Control createControl(Composite parent) {
                         Text text = (Text) super.createControl(parent);
                         Repository repository = ServerUtil.getDefaultRepository(getNode().getProject());
-                        if (repository == null) {
+                        NodeTypeRegistry ntManager = (repository==null) ? null : repository.getNodeTypeRegistry();
+                        if (ntManager == null) {
                             return text;
                         }
-                        NodeTypeRegistry ntManager = repository.getNodeTypeRegistry();
                         try {
                             Collection<String> types = ntManager.getAllowedPrimaryChildNodeTypes(getNode().getParent().getPrimaryType());
                             SimpleContentProposalProvider proposalProvider = new SimpleContentProposalProvider(types.toArray(new String[0]));

Modified: sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java (original)
+++ sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java Thu Jun 12 08:17:41 2014
@@ -31,13 +31,20 @@ public class RepositoryFactoryImpl imple
     private EventAdmin eventAdmin;
 
     @Override
-    public Repository getRepository(RepositoryInfo repositoryInfo) throws RepositoryException {
+    public Repository connectRepository(RepositoryInfo repositoryInfo) throws RepositoryException {
         //TODO: currently not doing repository-caching
         return new RepositoryImpl(repositoryInfo, eventAdmin);
     }
     
     @Override
-    public void stopRepository(RepositoryInfo repositoryInfo) {
+    public Repository getRepository(RepositoryInfo repositoryInfo,
+            boolean acceptsDisconnectedRepository) throws RepositoryException {
+        //TODO: currently not doing repository-caching
+        return new RepositoryImpl(repositoryInfo, eventAdmin);
+    }
+    
+    @Override
+    public void disconnectRepository(RepositoryInfo repositoryInfo) {
         //TODO: not yet implemented
     }
 

Modified: sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java (original)
+++ sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java Thu Jun 12 08:17:41 2014
@@ -25,34 +25,43 @@ public class VltRepository implements Re
 
     private javax.jcr.Repository jcrRepo;
     private Credentials credentials;
-    private boolean markedStopped = false;
+    private boolean disconnected = false;
 
     public VltRepository(RepositoryInfo repositoryInfo, EventAdmin eventAdmin) {
         this.repositoryInfo = repositoryInfo;
         this.eventAdmin = eventAdmin;
     }
 
-    public synchronized void markStopped() {
-        this.markedStopped = true;
+    public synchronized void disconnected() {
+        this.disconnected = true;
     }
 
-    public synchronized boolean isMarkedStopped() {
-        return markedStopped;
+    public synchronized boolean isDisconnected() {
+        return disconnected;
     }
 
     public RepositoryInfo getRepositoryInfo() {
         return repositoryInfo;
     }
 
-    public void init() {
+    public void connect() {
         try {
             jcrRepo = RepositoryUtils.getRepository(repositoryInfo);
             credentials = RepositoryUtils.getCredentials(repositoryInfo);
+
         } catch (RepositoryException e) {
             throw new RuntimeException(e);
         }
         // loading nodeTypeRegistry:
-        getNodeTypeRegistry();
+        loadNodeTypeRegistry();
+    }
+
+    private void loadNodeTypeRegistry() {
+        try {
+            ntRegistry = new VltNodeTypeRegistry(this);
+        } catch (org.apache.sling.ide.transport.RepositoryException e) {
+            throw new RuntimeException(e);
+        }
     }
 
     @Override
@@ -104,14 +113,6 @@ public class VltRepository implements Re
         if (repositoryInfo==null) {
             throw new IllegalStateException("repositoryInfo must not be null");
         }
-        if (ntRegistry!=null) {
-            return ntRegistry;
-        }
-        try {
-            ntRegistry = new VltNodeTypeRegistry(this);
-        } catch (org.apache.sling.ide.transport.RepositoryException e) {
-            throw new RuntimeException(e);
-        }
         return ntRegistry;
     }
 

Modified: sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java?rev=1602091&r1=1602090&r2=1602091&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java (original)
+++ sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java Thu Jun 12 08:17:41 2014
@@ -34,20 +34,39 @@ public class VltRepositoryFactory implem
     private EventAdmin eventAdmin;
 
     private Map<String,VltRepository> repositoryMap = new HashMap<String,VltRepository>();
+
+    @Override
+    public Repository getRepository(RepositoryInfo repositoryInfo,
+            boolean acceptsDisconnectedRepository) throws RepositoryException {
+
+        final String key = getKey(repositoryInfo);
+        
+        synchronized(repositoryMap) {
+            VltRepository repo = repositoryMap.get(key);
+            if (repo==null) {
+                return null;
+            }
+            if (!repo.isDisconnected() || acceptsDisconnectedRepository) {
+                return repo;
+            }
+        }
+        return null;
+    }
+    
     
     @Override
-    public Repository getRepository(RepositoryInfo repositoryInfo) throws RepositoryException {
+    public Repository connectRepository(RepositoryInfo repositoryInfo) throws RepositoryException {
 
         final String key = getKey(repositoryInfo);
         
         synchronized(repositoryMap) {
             VltRepository repo = repositoryMap.get(key);
-            if (repo!=null && !repo.isMarkedStopped()) {
+            if (repo!=null && !repo.isDisconnected()) {
                 return repo;
             }
             
             repo = new VltRepository(repositoryInfo, eventAdmin);
-            repo.init();
+            repo.connect();
             
             repositoryMap.put(key, repo);
             return repo;
@@ -55,14 +74,14 @@ public class VltRepositoryFactory implem
     }
     
     @Override
-    public void stopRepository(RepositoryInfo repositoryInfo) {
+    public void disconnectRepository(RepositoryInfo repositoryInfo) {
         final String key = getKey(repositoryInfo);
         synchronized(repositoryMap) {
             VltRepository r = repositoryMap.get(key);
-            // marking the repository as stopped allows us to keep using it
+            // marking the repository as disconnected allows us to keep using it
             // (eg for node type registry lookups) although the server is stopped
             //TODO we might come up with a proper online/offline handling here
-            r.markStopped();
+            r.disconnected();
         }
     }