You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2014/05/05 14:31:39 UTC

svn commit: r1592510 - in /sling/trunk/tooling/ide: api-test/src/test/java/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/cor...

Author: rombert
Date: Mon May  5 12:31:39 2014
New Revision: 1592510

URL: http://svn.apache.org/r1592510
Log:
SLING-3074-  Repository, SerializationManager - make stateful based on
RepositoryInfo

Create a RepositoryFactory interface and encapsulate all access to the
Repository object through it.

Added:
    sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/RepositoryFactory.java
      - copied, changed from r1592478, sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java
    sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryFactoryImpl.xml   (contents, props changed)
      - copied, changed from r1592478, sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryImpl.xml
    sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java
      - copied, changed from r1592478, sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java
    sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepositoryFactory.xml   (contents, props changed)
      - copied, changed from r1592478, sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepository.xml
    sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java   (contents, props changed)
      - copied, changed from r1592478, sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java
Removed:
    sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryImpl.xml
    sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java
    sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepository.xml
Modified:
    sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java
    sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/Repository.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/Activator.java
    sling/trunk/tooling/ide/impl-resource/META-INF/MANIFEST.MF
    sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
    sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepository.java

Modified: sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java?rev=1592510&r1=1592509&r2=1592510&view=diff
==============================================================================
--- sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java (original)
+++ sling/trunk/tooling/ide/api-test/src/test/java/org/apache/sling/ide/serialization/StubRepository.java Mon May  5 12:31:39 2014
@@ -25,9 +25,6 @@ import org.apache.sling.ide.transport.Re
 import org.apache.sling.ide.transport.Result;
 
 public class StubRepository implements Repository {
-    @Override
-    public void setRepositoryInfo(RepositoryInfo repositoryInfo) {
-    }
 
     @Override
     public Command<ResourceProxy> newListChildrenNodeCommand(final String path) {

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=1592510&r1=1592509&r2=1592510&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 Mon May  5 12:31:39 2014
@@ -75,10 +75,6 @@ public interface Repository {
 	public static String JCR_VERSION_LABELS= "jcr:versionLabels";
 	public static String JCR_CHILD_VERSION_HISTORY= "jcr:childVersionHistory";
  	
-	//TODO change with properties
-    // FIXME this is not thread-safe and with multiple sling servers will fail intermitently
-	public void setRepositoryInfo(RepositoryInfo repositoryInfo);
-
     RepositoryInfo getRepositoryInfo();
 
     Command<Void> newAddOrUpdateNodeCommand(FileInfo fileInfo, ResourceProxy resourceProxy);

Copied: sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/RepositoryFactory.java (from r1592478, sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java)
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/RepositoryFactory.java?p2=sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/RepositoryFactory.java&p1=sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java&r1=1592478&r2=1592510&rev=1592510&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java (original)
+++ sling/trunk/tooling/ide/api/src/org/apache/sling/ide/transport/RepositoryFactory.java Mon May  5 12:31:39 2014
@@ -14,26 +14,28 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.ide.impl.resource.transport;
+package org.apache.sling.ide.transport;
 
-import org.apache.sling.ide.transport.Repository;
-import org.apache.sling.ide.transport.RepositoryInfo;
-//TODO move to api?
-public abstract class AbstractRepository implements Repository{
-	
-	protected RepositoryInfo repositoryInfo;
-	
-	public void setRepositoryInfo(RepositoryInfo repositoryInfo){
-		this.repositoryInfo=repositoryInfo;
-	}
-
-    @Override
-    public RepositoryInfo getRepositoryInfo() {
-        return repositoryInfo;
-    }
+/**
+ * The <tt>RepositoryFactory</tt> creates new <tt>Repository</tt> instances
+ * 
+ * <p>
+ * Implementations of this interface must be thread-safe.
+ * </p>
+ *
+ */
+public interface RepositoryFactory {
 
-	@Override
-	public String toString() {
-		return "AbstractRepository [repositoryInfo=" + repositoryInfo + "]";
-	}
+    /**
+     * Returns a <tt>Repository</tt> instance for the specified <tt>repositoryInfo</tt>
+     * 
+     * <p>
+     * As an optimisation, implementations may choose to return the same instance for equivalent repositoryInfo data.
+     * </p>
+     * 
+     * @param repositoryInfo
+     * @return
+     * @throws RepositoryException
+     */
+    Repository newRepository(RepositoryInfo repositoryInfo) throws RepositoryException;
 }

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=1592510&r1=1592509&r2=1592510&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 Mon May  5 12:31:39 2014
@@ -22,6 +22,8 @@ import java.net.URISyntaxException;
 import org.apache.sling.ide.eclipse.core.internal.Activator;
 import org.apache.sling.ide.eclipse.core.internal.SlingLaunchpadServer;
 import org.apache.sling.ide.transport.Repository;
+import org.apache.sling.ide.transport.RepositoryException;
+import org.apache.sling.ide.transport.RepositoryFactory;
 import org.apache.sling.ide.transport.RepositoryInfo;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -33,16 +35,17 @@ public abstract class ServerUtil {
     public static Repository getRepository(IServer server, IProgressMonitor monitor) throws CoreException {
 
 
-        Repository repository = Activator.getDefault().getRepository();
+        RepositoryFactory repository = Activator.getDefault().getRepositoryFactory();
         try {
             RepositoryInfo repositoryInfo = getRepositoryInfo(server, monitor);
-            repository.setRepositoryInfo(repositoryInfo);
+            return repository.newRepository(repositoryInfo);
         } 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));
         }
-        return repository;
     }
 
     public static RepositoryInfo getRepositoryInfo(IServer server, IProgressMonitor monitor) throws URISyntaxException {

Modified: sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java?rev=1592510&r1=1592509&r2=1592510&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java (original)
+++ sling/trunk/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java Mon May  5 12:31:39 2014
@@ -20,7 +20,7 @@ import org.apache.sling.ide.eclipse.core
 import org.apache.sling.ide.filter.FilterLocator;
 import org.apache.sling.ide.osgi.OsgiClientFactory;
 import org.apache.sling.ide.serialization.SerializationManager;
-import org.apache.sling.ide.transport.Repository;
+import org.apache.sling.ide.transport.RepositoryFactory;
 import org.eclipse.core.runtime.Plugin;
 import org.osgi.framework.BundleContext;
 import org.osgi.util.tracker.ServiceTracker;
@@ -41,7 +41,7 @@ public class Activator extends Plugin {
 	// The shared instance
 	private static Activator plugin;
 
-    private ServiceTracker<Repository, Repository> repository;
+    private ServiceTracker<RepositoryFactory, RepositoryFactory> repositoryFactory;
     private ServiceTracker<SerializationManager, SerializationManager> serializationManager;
     private ServiceTracker<FilterLocator, FilterLocator> filterLocator;
     private ServiceTracker<OsgiClientFactory, OsgiClientFactory> osgiClientFactory;
@@ -50,8 +50,9 @@ public class Activator extends Plugin {
 		super.start(context);
 		plugin = this;
 
-        repository = new ServiceTracker<Repository, Repository>(context, Repository.class, null);
-        repository.open();
+        repositoryFactory = new ServiceTracker<RepositoryFactory, RepositoryFactory>(context, RepositoryFactory.class,
+                null);
+        repositoryFactory.open();
 
         serializationManager = new ServiceTracker<SerializationManager, SerializationManager>(context,
                 SerializationManager.class, null);
@@ -70,7 +71,7 @@ public class Activator extends Plugin {
 	 * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
 	 */
 	public void stop(BundleContext context) throws Exception {
-        repository.close();
+        repositoryFactory.close();
         serializationManager.close();
         filterLocator.close();
         osgiClientFactory.close();
@@ -88,9 +89,9 @@ public class Activator extends Plugin {
 		return plugin;
 	}
 
-	public Repository getRepository() {
+    public RepositoryFactory getRepositoryFactory() {
 
-        return ServiceUtil.getNotNull(repository);
+        return ServiceUtil.getNotNull(repositoryFactory);
 	}
 
     public SerializationManager getSerializationManager() {

Modified: sling/trunk/tooling/ide/impl-resource/META-INF/MANIFEST.MF
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-resource/META-INF/MANIFEST.MF?rev=1592510&r1=1592509&r2=1592510&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-resource/META-INF/MANIFEST.MF (original)
+++ sling/trunk/tooling/ide/impl-resource/META-INF/MANIFEST.MF Mon May  5 12:31:39 2014
@@ -10,7 +10,7 @@ Require-Bundle: org.eclipse.core.runtime
  org.eclipse.osgi.services;bundle-version="3.2.100"
 Bundle-ActivationPolicy: lazy
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
-Service-Component: OSGI-INF/RepositoryImpl.xml,
+Service-Component: OSGI-INF/RepositoryFactoryImpl.xml,
  OSGI-INF/SimpleXmlSerializationManager.xml, OSGI-INF/Tracer.xml,
  OSGI-INF/SimpleFilterLocator.xml
 Import-Package: org.json

Copied: sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryFactoryImpl.xml (from r1592478, sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryImpl.xml)
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryFactoryImpl.xml?p2=sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryFactoryImpl.xml&p1=sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryImpl.xml&r1=1592478&r2=1592510&rev=1592510&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryImpl.xml (original)
+++ sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryFactoryImpl.xml Mon May  5 12:31:39 2014
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="false">
-   <implementation class="org.apache.sling.ide.impl.resource.transport.RepositoryImpl"/>
+   <implementation class="org.apache.sling.ide.impl.resource.transport.RepositoryFactoryImpl"/>
    <service>
-      <provide interface="org.apache.sling.ide.transport.Repository"/>
+      <provide interface="org.apache.sling.ide.transport.RepositoryFactory"/>
    </service>
    <reference bind="bindEventAdmin" cardinality="1..1" interface="org.osgi.service.event.EventAdmin" name="EventAdmin" policy="static" unbind="unbindEventAdmin"/>
 </scr:component>

Propchange: sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryFactoryImpl.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/tooling/ide/impl-resource/OSGI-INF/RepositoryFactoryImpl.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Copied: sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java (from r1592478, sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java)
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java?p2=sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java&p1=sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java&r1=1592478&r2=1592510&rev=1592510&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java (original)
+++ sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java Mon May  5 12:31:39 2014
@@ -17,23 +17,25 @@
 package org.apache.sling.ide.impl.resource.transport;
 
 import org.apache.sling.ide.transport.Repository;
+import org.apache.sling.ide.transport.RepositoryException;
+import org.apache.sling.ide.transport.RepositoryFactory;
 import org.apache.sling.ide.transport.RepositoryInfo;
-//TODO move to api?
-public abstract class AbstractRepository implements Repository{
-	
-	protected RepositoryInfo repositoryInfo;
-	
-	public void setRepositoryInfo(RepositoryInfo repositoryInfo){
-		this.repositoryInfo=repositoryInfo;
-	}
+import org.osgi.service.event.EventAdmin;
+
+/**
+ * The <tt>RepositoryFactoryImpl</tt> creates <tt>RepositoryImpl</tt> instances
+ *
+ */
+public class RepositoryFactoryImpl implements RepositoryFactory {
+
+    private EventAdmin eventAdmin;
 
     @Override
-    public RepositoryInfo getRepositoryInfo() {
-        return repositoryInfo;
+    public Repository newRepository(RepositoryInfo repositoryInfo) throws RepositoryException {
+        return new RepositoryImpl(repositoryInfo, eventAdmin);
     }
 
-	@Override
-	public String toString() {
-		return "AbstractRepository [repositoryInfo=" + repositoryInfo + "]";
-	}
+    protected void bindEventAdmin(EventAdmin eventAdmin) {
+        this.eventAdmin = eventAdmin;
+    }
 }

Modified: sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java?rev=1592510&r1=1592509&r2=1592510&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java (original)
+++ sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java Mon May  5 12:31:39 2014
@@ -19,14 +19,22 @@ package org.apache.sling.ide.impl.resour
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.sling.ide.transport.Command;
 import org.apache.sling.ide.transport.FileInfo;
+import org.apache.sling.ide.transport.Repository;
+import org.apache.sling.ide.transport.RepositoryInfo;
 import org.apache.sling.ide.transport.ResourceProxy;
 import org.apache.sling.ide.transport.TracingCommand;
 import org.osgi.service.event.EventAdmin;
 
-public class RepositoryImpl extends AbstractRepository{
+public class RepositoryImpl implements Repository {
 	
     private final HttpClient httpClient = new HttpClient();
-    private EventAdmin eventAdmin;
+    private final RepositoryInfo repositoryInfo;
+    private final EventAdmin eventAdmin;
+
+    public RepositoryImpl(RepositoryInfo repositoryInfo, EventAdmin eventAdmin) {
+        this.repositoryInfo = repositoryInfo;
+        this.eventAdmin = eventAdmin;
+    }
 
     private <T> Command<T> wrap(AbstractCommand<T> command) {
         return new TracingCommand<T>(command, eventAdmin);
@@ -60,13 +68,8 @@ public class RepositoryImpl extends Abst
                 resource.getProperties(), fileInfo));
 	}
 
-    public void bindEventAdmin(EventAdmin eventAdmin) {
-
-        this.eventAdmin = eventAdmin;
-    }
-
-    public void unbindEventAdmin(EventAdmin eventAdmin) {
-
-        this.eventAdmin = null;
+    @Override
+    public RepositoryInfo getRepositoryInfo() {
+        return repositoryInfo;
     }
 }

Copied: sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepositoryFactory.xml (from r1592478, sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepository.xml)
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepositoryFactory.xml?p2=sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepositoryFactory.xml&p1=sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepository.xml&r1=1592478&r2=1592510&rev=1592510&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepository.xml (original)
+++ sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepositoryFactory.xml Mon May  5 12:31:39 2014
@@ -1,9 +1,9 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <scr:component xmlns:scr="http://www.osgi.org/xmlns/scr/v1.1.0" immediate="false">
-   <implementation class="org.apache.sling.ide.impl.vlt.VltRepository"/>
-   <service>
-      <provide interface="org.apache.sling.ide.transport.Repository"/>
-   </service>
+   <implementation class="org.apache.sling.ide.impl.vlt.VltRepositoryFactory"/>
    <reference bind="bindEventAdmin" cardinality="1..1" interface="org.osgi.service.event.EventAdmin" name="EventAdmin" policy="static" unbind="unbindEventAdmin"/>
    <property name="service.ranking" type="Integer" value="100"/>
+   <service>
+      <provide interface="org.apache.sling.ide.transport.RepositoryFactory"/>
+   </service>
 </scr:component>

Propchange: sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepositoryFactory.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/tooling/ide/impl-vlt/OSGI-INF/VltRepositoryFactory.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

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=1592510&r1=1592509&r2=1592510&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 Mon May  5 12:31:39 2014
@@ -17,25 +17,22 @@ import org.osgi.service.event.EventAdmin
  */
 public class VltRepository implements Repository {
 
-    private RepositoryInfo repositoryInfo;
-    private javax.jcr.Repository jcrRepo;
+    private final RepositoryInfo repositoryInfo;
+    private final EventAdmin eventAdmin;
 
-    private EventAdmin eventAdmin;
+    private javax.jcr.Repository jcrRepo;
     private Credentials credentials;
 
-    @Override
-    public void setRepositoryInfo(RepositoryInfo repositoryInfo) {
-
+    public VltRepository(RepositoryInfo repositoryInfo, EventAdmin eventAdmin) {
         this.repositoryInfo = repositoryInfo;
-
-        initJcrRepo();
+        this.eventAdmin = eventAdmin;
     }
 
     public RepositoryInfo getRepositoryInfo() {
         return repositoryInfo;
     }
 
-    private void initJcrRepo() {
+    public void init() {
         try {
             jcrRepo = RepositoryUtils.getRepository(repositoryInfo);
             credentials = RepositoryUtils.getCredentials(repositoryInfo);
@@ -46,7 +43,6 @@ public class VltRepository implements Re
 
     @Override
     public Command<Void> newAddOrUpdateNodeCommand(FileInfo fileInfo, ResourceProxy resource) {
-        // TODO implement
         return TracingCommand.wrap(new AddOrUpdateNodeCommand(jcrRepo, credentials, fileInfo, resource),
                 eventAdmin);
     }
@@ -74,14 +70,4 @@ public class VltRepository implements Re
         return TracingCommand.wrap(new GetNodeCommand(jcrRepo, credentials, path), eventAdmin);
     }
 
-    protected void bindEventAdmin(EventAdmin eventAdmin) {
-
-        this.eventAdmin = eventAdmin;
-    }
-
-    protected void unbindEventAdmin(EventAdmin eventAdmin) {
-
-        this.eventAdmin = null;
-    }
-
 }

Copied: sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java (from r1592478, sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java)
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java?p2=sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java&p1=sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java&r1=1592478&r2=1592510&rev=1592510&view=diff
==============================================================================
--- sling/trunk/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/transport/AbstractRepository.java (original)
+++ sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java Mon May  5 12:31:39 2014
@@ -14,26 +14,37 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.ide.impl.resource.transport;
+package org.apache.sling.ide.impl.vlt;
 
 import org.apache.sling.ide.transport.Repository;
+import org.apache.sling.ide.transport.RepositoryException;
+import org.apache.sling.ide.transport.RepositoryFactory;
 import org.apache.sling.ide.transport.RepositoryInfo;
-//TODO move to api?
-public abstract class AbstractRepository implements Repository{
-	
-	protected RepositoryInfo repositoryInfo;
-	
-	public void setRepositoryInfo(RepositoryInfo repositoryInfo){
-		this.repositoryInfo=repositoryInfo;
-	}
+import org.osgi.service.event.EventAdmin;
+
+/**
+ * The <tt>VltRepositoryFactory</tt> instatiantes <tt>VltRepository</tt> instances
+ *
+ */
+public class VltRepositoryFactory implements RepositoryFactory {
+
+    private EventAdmin eventAdmin;
 
     @Override
-    public RepositoryInfo getRepositoryInfo() {
-        return repositoryInfo;
+    public Repository newRepository(RepositoryInfo repositoryInfo) throws RepositoryException {
+
+        VltRepository repo = new VltRepository(repositoryInfo, eventAdmin);
+
+        repo.init();
+
+        return repo;
+    }
+
+    protected void bindEventAdmin(EventAdmin eventAdmin) {
+        this.eventAdmin = eventAdmin;
     }
 
-	@Override
-	public String toString() {
-		return "AbstractRepository [repositoryInfo=" + repositoryInfo + "]";
-	}
+    protected void unbindEventAdmin(EventAdmin eventAdmin) {
+        this.eventAdmin = null;
+    }
 }

Propchange: sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/trunk/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL