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 2013/09/13 15:33:30 UTC

svn commit: r1522920 - in /sling/branches/tooling-ide-vlt/tooling/ide: api/src/org/apache/sling/ide/serialization/ eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/ eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ impl-resource-test/...

Author: rombert
Date: Fri Sep 13 13:33:29 2013
New Revision: 1522920

URL: http://svn.apache.org/r1522920
Log:
SLING-2989 - [Tooling] integrate with vlt once available

Make the SerializationKindManager part of the api bundle and make the
SerializationManager stateful.

Added:
    sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationException.java
      - copied, changed from r1522919, sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java
    sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKind.java   (with props)
    sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java   (contents, props changed)
      - copied, changed from r1522919, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/SerializationKindManager.java
Removed:
    sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/SerializationKindManager.java
Modified:
    sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java
    sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
    sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java
    sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizard.java
    sling/branches/tooling-ide-vlt/tooling/ide/impl-resource-test/src/test/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.java
    sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManager.java
    sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java

Copied: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationException.java (from r1522919, sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java)
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationException.java?p2=sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationException.java&p1=sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java&r1=1522919&r2=1522920&rev=1522920&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationException.java Fri Sep 13 13:33:29 2013
@@ -16,24 +16,24 @@
  */
 package org.apache.sling.ide.serialization;
 
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map;
+public class SerializationException extends Exception {
 
-import org.apache.sling.ide.transport.RepositoryInfo;
-import org.apache.sling.ide.transport.ResourceProxy;
+    private static final long serialVersionUID = 1L;
 
-public interface SerializationManager {
+    public SerializationException() {
+        super();
+    }
 
-    boolean isSerializationFile(String filePath);
+    public SerializationException(String message, Throwable cause) {
+        super(message, cause);
+    }
 
-    String getBaseResourcePath(String serializationFilePath);
+    public SerializationException(String message) {
+        super(message);
+    }
 
-    String getSerializationFilePath(String baseFilePath);
+    public SerializationException(Throwable cause) {
+        super(cause);
+    }
 
-    String buildSerializationData(File contentSyncRoot, ResourceProxy resource, RepositoryInfo repositoryInfo)
-            throws IOException;
-
-    Map<String, Object> readSerializationData(InputStream source) throws IOException;
 }

Added: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKind.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKind.java?rev=1522920&view=auto
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKind.java (added)
+++ sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKind.java Fri Sep 13 13:33:29 2013
@@ -0,0 +1,9 @@
+package org.apache.sling.ide.serialization;
+
+/**
+ * The <tt>SerializationKind</tt> lists the various rules for serializing repository content on disk
+ * 
+ */
+public enum SerializationKind {
+    FILE, FOLDER, METADATA_PARTIAL, METADATA_FULL;
+}
\ No newline at end of file

Propchange: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKind.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKind.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Copied: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java (from r1522919, sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/SerializationKindManager.java)
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java?p2=sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java&p1=sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/SerializationKindManager.java&r1=1522919&r2=1522920&rev=1522920&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/SerializationKindManager.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java Fri Sep 13 13:33:29 2013
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.sling.ide.eclipse.ui.internal;
+package org.apache.sling.ide.serialization;
 
 import java.util.HashMap;
 import java.util.HashSet;
@@ -27,7 +27,11 @@ import org.apache.sling.ide.transport.Re
 import org.apache.sling.ide.transport.Result;
 import org.apache.sling.ide.util.PathUtil;
 
-// TODO this should be made API after merging the vlt branch back to trunk
+/**
+ * The <tt>SerializationKindManager</tt> is a helper class which implements common logic dealing with how to serialize
+ * repository contents on disk
+ * 
+ */
 public class SerializationKindManager {
 
     private final Set<String> fullMetadataNodeTypes = new HashSet<String>();
@@ -121,8 +125,4 @@ public class SerializationKindManager {
 
         return SerializationKind.METADATA_PARTIAL;
     }
-
-    enum SerializationKind {
-        FILE, FOLDER, METADATA_PARTIAL, METADATA_FULL;
-    }
 }

Propchange: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationKindManager.java
------------------------------------------------------------------------------
    svn:keywords = Author Date Id Revision Rev URL

Modified: sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java?rev=1522920&r1=1522919&r2=1522920&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/api/src/org/apache/sling/ide/serialization/SerializationManager.java Fri Sep 13 13:33:29 2013
@@ -21,11 +21,16 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.util.Map;
 
+import org.apache.sling.ide.transport.Repository;
 import org.apache.sling.ide.transport.RepositoryInfo;
 import org.apache.sling.ide.transport.ResourceProxy;
 
 public interface SerializationManager {
 
+    void init(Repository repository, File contentSyncRoot) throws SerializationException;
+
+    void destroy();
+
     boolean isSerializationFile(String filePath);
 
     String getBaseResourcePath(String serializationFilePath);
@@ -33,7 +38,9 @@ public interface SerializationManager {
     String getSerializationFilePath(String baseFilePath);
 
     String buildSerializationData(File contentSyncRoot, ResourceProxy resource, RepositoryInfo repositoryInfo)
-            throws IOException;
+            throws SerializationException;
 
     Map<String, Object> readSerializationData(InputStream source) throws IOException;
+
+    SerializationKind getSerializationKind(String primaryType);
 }

Modified: sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java?rev=1522920&r1=1522919&r2=1522920&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/SlingLaunchpadBehaviour.java Fri Sep 13 13:33:29 2013
@@ -26,6 +26,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 
+
 import org.apache.commons.httpclient.Credentials;
 import org.apache.commons.httpclient.HttpClient;
 import org.apache.commons.httpclient.HttpException;
@@ -40,11 +41,11 @@ import org.apache.sling.ide.eclipse.core
 import org.apache.sling.ide.filter.Filter;
 import org.apache.sling.ide.filter.FilterLocator;
 import org.apache.sling.ide.filter.FilterResult;
+import org.apache.sling.ide.serialization.SerializationException;
 import org.apache.sling.ide.serialization.SerializationManager;
 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.Result;
 import org.eclipse.core.resources.IFile;
@@ -169,16 +170,27 @@ public class SlingLaunchpadBehaviour ext
 
         System.out.println(trace.toString());
 
-        if (ProjectHelper.isBundleProject(module[0].getProject())) {
-            String serverMode = getServer().getMode();
-            if (!serverMode.equals(ILaunchManager.DEBUG_MODE)) {
-                // in debug mode, we rely on the hotcode replacement feature of eclipse/jvm
-                // otherwise, for run and profile modes we explicitly publish the bundle module
-                // TODO: make this configurable as part of the server config
-        		publishBundleModule(module, monitor);
-        	}
-        } else if (ProjectHelper.isContentProject(module[0].getProject())) {
-    		publishContentModule(kind, deltaKind, module, monitor); 
+        try {
+            if (ProjectHelper.isBundleProject(module[0].getProject())) {
+                String serverMode = getServer().getMode();
+                if (!serverMode.equals(ILaunchManager.DEBUG_MODE)) {
+                    // in debug mode, we rely on the hotcode replacement feature of eclipse/jvm
+                    // otherwise, for run and profile modes we explicitly publish the bundle module
+                    // TODO: make this configurable as part of the server config
+            		publishBundleModule(module, monitor);
+            	}
+            } else if (ProjectHelper.isContentProject(module[0].getProject())) {
+                try {
+                    publishContentModule(kind, deltaKind, module, monitor);
+                } catch (SerializationException e) {
+                    throw new CoreException(new Status(IStatus.ERROR, Activator.PLUGIN_ID, "Serialization error for "
+                            + trace.toString(), e));
+                }
+            }
+        } finally {
+            if (serializationManager != null) {
+                serializationManager.destroy();
+            }
         }
     }
 
@@ -250,7 +262,7 @@ public class SlingLaunchpadBehaviour ext
 	}
 
 	private void publishContentModule(int kind, int deltaKind,
-			IModule[] module, IProgressMonitor monitor) throws CoreException {
+			IModule[] module, IProgressMonitor monitor) throws CoreException, SerializationException {
 
 		if (runLaunchesIfExist(kind, deltaKind, module, monitor)) {
 			return;
@@ -391,16 +403,24 @@ public class SlingLaunchpadBehaviour ext
             throw new CoreException(new Status(Status.ERROR, "some.plugin", result.toString()));
     }
 
-    private Command<?> addFileCommand(Repository repository, IModuleResource resource) throws CoreException {
+    private Command<?> addFileCommand(Repository repository, IModuleResource resource) throws CoreException,
+            SerializationException {
 
         FileInfo info = createFileInfo(resource, repository);
 
+        IResource res = getResource(resource);
+        if (res == null) {
+            return null;
+        }
+
         System.out.println("For " + resource + " build fileInfo " + info);
         if (info == null) {
             return null;
         }
 
-        if (serializationManager().isSerializationFile(info.getLocation())) {
+        File syncDirectoryAsFile = ProjectUtil.getSyncDirectoryFullPath(res.getProject()).toFile();
+
+        if (serializationManager(repository, syncDirectoryAsFile).isSerializationFile(info.getLocation())) {
 
             // TODO - we don't support files with different names, see the docview file ( ui.xml ) pathological case
             if (!info.getName().equals(".content.xml")) {
@@ -409,7 +429,8 @@ public class SlingLaunchpadBehaviour ext
             try {
                 IFile file = (IFile) resource.getAdapter(IFile.class);
                 InputStream contents = file.getContents();
-                Map<String, Object> serializationData = serializationManager().readSerializationData(contents);
+                Map<String, Object> serializationData = serializationManager(repository, syncDirectoryAsFile)
+                        .readSerializationData(contents);
                 return repository.newUpdateContentNodeCommand(info, serializationData);
             } catch (IOException e) {
                 // TODO logging
@@ -421,17 +442,10 @@ public class SlingLaunchpadBehaviour ext
         }
     }
 
-    private FileInfo createFileInfo(IModuleResource resource, Repository repository) {
-
-        IResource file = (IFile) resource.getAdapter(IFile.class);
-        if (file == null) {
-            file = (IFolder) resource.getAdapter(IFolder.class);
-        }
+    private FileInfo createFileInfo(IModuleResource resource, Repository repository) throws SerializationException {
 
+        IResource file = getResource(resource);
         if (file == null) {
-            // Usually happens on server startup, it seems to be safe to ignore for now
-            System.out.println("Got null '" + IFile.class.getSimpleName() + "' and '" + IFolder.class.getSimpleName()
-                    + "' for " + resource);
             return null;
         }
 
@@ -450,7 +464,7 @@ public class SlingLaunchpadBehaviour ext
 
         if (filter != null) {
             FilterResult filterResult = getFilterResult(resource, filter, syncDirectoryAsFile,
-                    repository.getRepositoryInfo());
+                    repository);
             if (filterResult == FilterResult.DENY) {
                 return null;
             }
@@ -465,20 +479,37 @@ public class SlingLaunchpadBehaviour ext
         return info;
     }
 
+    private IResource getResource(IModuleResource resource) {
+
+        IResource file = (IFile) resource.getAdapter(IFile.class);
+        if (file == null) {
+            file = (IFolder) resource.getAdapter(IFolder.class);
+        }
+
+        if (file == null) {
+            // Usually happens on server startup, it seems to be safe to ignore for now
+            System.out.println("Got null '" + IFile.class.getSimpleName() + "' and '" + IFolder.class.getSimpleName()
+                    + "' for " + resource);
+            return null;
+        }
+
+        return file;
+    }
+
     private FilterResult getFilterResult(IModuleResource resource, Filter filter, File contentSyncRoot,
-            RepositoryInfo repositoryInfo) {
+            Repository repository) throws SerializationException {
 
         String filePath = resource.getModuleRelativePath().toOSString();
-        if (serializationManager().isSerializationFile(filePath)) {
+        if (serializationManager(repository, contentSyncRoot).isSerializationFile(filePath)) {
             filePath = serializationManager.getBaseResourcePath(filePath);
         }
 
         System.out.println("Filtering by " + filePath + " for " + resource);
 
-        return filter.filter(contentSyncRoot, filePath, repositoryInfo);
+        return filter.filter(contentSyncRoot, filePath, repository.getRepositoryInfo());
     }
 
-    private Command<?> removeFileCommand(Repository repository, IModuleResource resource) {
+    private Command<?> removeFileCommand(Repository repository, IModuleResource resource) throws SerializationException {
 
         FileInfo info = createFileInfo(resource, repository);
 
@@ -517,9 +548,11 @@ public class SlingLaunchpadBehaviour ext
         return filter;
     }
 
-    private SerializationManager serializationManager() {
+    private SerializationManager serializationManager(Repository repository, File contentSyncRoot)
+            throws SerializationException {
         if (serializationManager == null) {
             serializationManager = Activator.getDefault().getSerializationManager();
+            serializationManager.init(repository, contentSyncRoot);
         }
 
         return serializationManager;

Modified: sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java?rev=1522920&r1=1522919&r2=1522920&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportRepositoryContentAction.java Fri Sep 13 13:33:29 2013
@@ -25,10 +25,12 @@ import java.lang.reflect.InvocationTarge
 import org.apache.sling.ide.eclipse.core.ISlingLaunchpadServer;
 import org.apache.sling.ide.eclipse.core.ProjectUtil;
 import org.apache.sling.ide.eclipse.core.ServerUtil;
-import org.apache.sling.ide.eclipse.ui.internal.SerializationKindManager.SerializationKind;
 import org.apache.sling.ide.filter.Filter;
 import org.apache.sling.ide.filter.FilterLocator;
 import org.apache.sling.ide.filter.FilterResult;
+import org.apache.sling.ide.serialization.SerializationException;
+import org.apache.sling.ide.serialization.SerializationKind;
+import org.apache.sling.ide.serialization.SerializationKindManager;
 import org.apache.sling.ide.serialization.SerializationManager;
 import org.apache.sling.ide.transport.Command;
 import org.apache.sling.ide.transport.Repository;
@@ -136,7 +138,7 @@ public class ImportRepositoryContentActi
             // we create the root node and assume this is a folder
             createRoot(project, projectRelativePath, repositoryPath);
 
-            crawlChildrenAndImport(repository, filter, repositoryPath, project, projectRelativePath, skm);
+            crawlChildrenAndImport(repository, filter, repositoryPath, project, projectRelativePath);
 
             monitor.setTaskName("Import Complete");
             monitor.worked(100);
@@ -169,7 +171,6 @@ public class ImportRepositoryContentActi
      * @param project the project to create resources in
      * @param projectRelativePath the path, relative to the project root, where the resources should be
      *            created
-     * @param skm
      * @param tracer
      * @throws JSONException
      * @throws RepositoryException
@@ -178,8 +179,8 @@ public class ImportRepositoryContentActi
      */
     // TODO: This probably should be pushed into the service layer
     private void crawlChildrenAndImport(Repository repository, Filter filter, String path,
-            IProject project, IPath projectRelativePath, SerializationKindManager skm)
-            throws RepositoryException, CoreException, IOException {
+            IProject project, IPath projectRelativePath)
+            throws RepositoryException, CoreException, IOException, SerializationException {
 
         File contentSyncRoot = ProjectUtil.getSyncDirectoryFullPath(project).toFile();
 
@@ -189,7 +190,7 @@ public class ImportRepositoryContentActi
         ResourceProxy resource = executeCommand(repository.newListChildrenNodeCommand(path));
         String primaryType = (String) resource.getProperties().get(Repository.JCR_PRIMARY_TYPE);
 
-        SerializationKind serializationKind = skm.getSerializationKind(primaryType);
+        SerializationKind serializationKind = serializationManager.getSerializationKind(primaryType);
         System.out.println(primaryType + " -> " + serializationKind);
 
         // TODO we should know all node types for which to create files and folders
@@ -282,7 +283,7 @@ public class ImportRepositoryContentActi
                 }
             }
 
-            crawlChildrenAndImport(repository, filter, child.getPath(), project, projectRelativePath, skm);
+            crawlChildrenAndImport(repository, filter, child.getPath(), project, projectRelativePath);
         }
     }
 

Modified: sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizard.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizard.java?rev=1522920&r1=1522919&r2=1522920&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizard.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/ImportWizard.java Fri Sep 13 13:33:29 2013
@@ -18,7 +18,11 @@ package org.apache.sling.ide.eclipse.ui.
 
 import java.lang.reflect.InvocationTargetException;
 
+import org.apache.sling.ide.eclipse.core.ProjectUtil;
+import org.apache.sling.ide.eclipse.core.ServerUtil;
+import org.apache.sling.ide.serialization.SerializationException;
 import org.apache.sling.ide.serialization.SerializationManager;
+import org.apache.sling.ide.transport.Repository;
 import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.ResourcesPlugin;
@@ -64,7 +68,7 @@ public class ImportWizard extends Wizard
         final IServer server = mainPage.getServer();
 
         IPath destinationPath = mainPage.getResourcePath();
-		
+
         final IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject(destinationPath.segments()[0]);
         final IPath projectRelativePath = destinationPath.removeFirstSegments(1);
         final String repositoryPath = mainPage.getRepositoryPath();
@@ -72,10 +76,21 @@ public class ImportWizard extends Wizard
         IRunnableWithProgress runnable = new IRunnableWithProgress() {
             @Override
             public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
-                new ImportRepositoryContentAction(repositoryPath, server, filterFile, projectRelativePath, project,
-                        serializationManager).run(monitor);
+
+                try {
+                    Repository repository = ServerUtil.getRepository(server, monitor);
+                    serializationManager.init(repository, ProjectUtil.getSyncDirectoryFullPath(project).toFile());
+
+                    new ImportRepositoryContentAction(repositoryPath, server, filterFile, projectRelativePath, project,
+                            serializationManager).run(monitor);
+                } catch (SerializationException e) {
+                    throw new InvocationTargetException(e);
+                } finally {
+                    serializationManager.destroy();
+                }
             }
         };
+
         try {
             getContainer().run(false, true, runnable);
         } catch (InvocationTargetException e) {

Modified: sling/branches/tooling-ide-vlt/tooling/ide/impl-resource-test/src/test/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-resource-test/src/test/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.java?rev=1522920&r1=1522919&r2=1522920&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-resource-test/src/test/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-resource-test/src/test/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.java Fri Sep 13 13:33:29 2013
@@ -12,6 +12,7 @@ import java.io.StringReader;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.sling.ide.serialization.SerializationException;
 import org.apache.sling.ide.transport.ResourceProxy;
 import org.custommonkey.xmlunit.XMLUnit;
 import org.junit.Before;
@@ -35,7 +36,7 @@ public class SimpleXmlSerializationManag
     }
 
     @Test
-    public void emptySerializedData() throws IOException, SAXException {
+    public void emptySerializedData() throws SerializationException, SAXException {
 
         String serializationData = sm.buildSerializationData(null, newResourceWithProperties(new HashMap<String, Object>()), null);
 
@@ -51,7 +52,7 @@ public class SimpleXmlSerializationManag
     }
 
     @Test
-    public void nullSerializedData() throws IOException, SAXException {
+    public void nullSerializedData() throws SerializationException, SAXException {
 
         String serializationData = sm.buildSerializationData(null, null, null);
 
@@ -59,7 +60,7 @@ public class SimpleXmlSerializationManag
     }
 
     @Test
-    public void stringSerializedData() throws IOException, SAXException {
+    public void stringSerializedData() throws SerializationException, SAXException, IOException {
 
         Map<String, Object> data = new HashMap<String, Object>();
         data.put("jcr:createdBy", "admin");
@@ -72,7 +73,8 @@ public class SimpleXmlSerializationManag
         assertXmlOutputIsEqualTo(serializationData, methodName);
     }
 
-    private void assertXmlOutputIsEqualTo(String serializationData, String methodName) throws SAXException, IOException {
+    private void assertXmlOutputIsEqualTo(String serializationData, String methodName) throws SAXException,
+            SerializationException, IOException {
 
         InputStream doc = readSerializationDataFile(methodName);
 
@@ -88,7 +90,7 @@ public class SimpleXmlSerializationManag
     }
 
     @Test
-    public void serializedDataIsEscaped() throws IOException, SAXException {
+    public void serializedDataIsEscaped() throws SerializationException, SAXException, IOException {
 
         Map<String, Object> data = new HashMap<String, Object>();
         data.put("jcr:description", "<p class=\"active\">Welcome</p>");

Modified: sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManager.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManager.java?rev=1522920&r1=1522919&r2=1522920&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManager.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-resource/src/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManager.java Fri Sep 13 13:33:29 2013
@@ -34,6 +34,8 @@ import javax.xml.transform.sax.SAXTransf
 import javax.xml.transform.sax.TransformerHandler;
 import javax.xml.transform.stream.StreamResult;
 
+import org.apache.sling.ide.serialization.SerializationException;
+import org.apache.sling.ide.serialization.SerializationKind;
 import org.apache.sling.ide.serialization.SerializationManager;
 import org.apache.sling.ide.transport.RepositoryInfo;
 import org.apache.sling.ide.transport.ResourceProxy;
@@ -98,7 +100,8 @@ public class SimpleXmlSerializationManag
     }
 
     @Override
-    public String buildSerializationData(File contentSyncRoot, ResourceProxy resource, RepositoryInfo repositoryInfo) throws IOException {
+    public String buildSerializationData(File contentSyncRoot, ResourceProxy resource, RepositoryInfo repositoryInfo)
+            throws SerializationException {
 
         if (resource == null) {
             return null;
@@ -165,6 +168,24 @@ public class SimpleXmlSerializationManag
         handler.endElement("", tagName, tagName);
     }
 
+    /* (non-Javadoc)
+     * @see org.apache.sling.ide.serialization.SerializationManager#destroy()
+     */
+    public void destroy() {
+    }
+
+    /* (non-Javadoc)
+     * @see org.apache.sling.ide.serialization.SerializationManager#init(org.apache.sling.ide.transport.Repository, java.io.File)
+     */
+    public void init(org.apache.sling.ide.transport.Repository repository, File contentSyncRoot) throws SerializationException {
+    }
+
+    @Override
+    public SerializationKind getSerializationKind(String primaryType) {
+        // TODO - implement
+        throw new UnsupportedOperationException("Not implemented");
+    }
+
     static class SerializationDataHandler extends DefaultHandler {
         private Map<String, Object> result;
         private String propertyName;

Modified: sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java
URL: http://svn.apache.org/viewvc/sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java?rev=1522920&r1=1522919&r2=1522920&view=diff
==============================================================================
--- sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java (original)
+++ sling/branches/tooling-ide-vlt/tooling/ide/impl-vlt/src/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java Fri Sep 13 13:33:29 2013
@@ -54,6 +54,9 @@ import org.apache.jackrabbit.vault.util.
 import org.apache.jackrabbit.vault.util.RepositoryProvider;
 import org.apache.sling.ide.impl.vlt.RepositoryUtils;
 import org.apache.sling.ide.impl.vlt.VaultFsLocator;
+import org.apache.sling.ide.serialization.SerializationException;
+import org.apache.sling.ide.serialization.SerializationKind;
+import org.apache.sling.ide.serialization.SerializationKindManager;
 import org.apache.sling.ide.serialization.SerializationManager;
 import org.apache.sling.ide.transport.RepositoryInfo;
 import org.apache.sling.ide.transport.ResourceProxy;
@@ -89,6 +92,24 @@ public class VltSerializationManager imp
     }
 
     private VaultFsLocator fsLocator;
+    private SerializationKindManager skm;
+
+    @Override
+    public void init(org.apache.sling.ide.transport.Repository repository, File contentSyncRoot)
+            throws SerializationException {
+
+        try {
+            this.skm = new SerializationKindManager();
+            this.skm.init(repository);
+        } catch (org.apache.sling.ide.transport.RepositoryException e) {
+            throw new SerializationException(e);
+        }
+    }
+
+    @Override
+    public void destroy() {
+
+    }
 
     @Override
     public boolean isSerializationFile(String filePath) {
@@ -153,7 +174,8 @@ public class VltSerializationManager imp
     // TODO - the return type could look like (byte[] contents, String nameHint, SerializationKind sk)
 
     @Override
-    public String buildSerializationData(File contentSyncRoot, ResourceProxy resource, RepositoryInfo repositoryInfo) throws IOException {
+    public String buildSerializationData(File contentSyncRoot, ResourceProxy resource, RepositoryInfo repositoryInfo)
+            throws SerializationException {
 
         // TODO - there might be a performance problem with getting the session on-demand each time
         // the resolution might be to have a SerializationManager instance kept per 'transaction'
@@ -233,9 +255,11 @@ public class VltSerializationManager imp
             return stringResult;
 
         } catch (RepositoryException e) {
-            throw new RuntimeException(e);
+            throw new SerializationException(e);
         } catch (ConfigurationException e) {
-            throw new RuntimeException(e);
+            throw new SerializationException(e);
+        } catch (IOException e) {
+            throw new SerializationException(e);
         } finally {
             if (session != null) {
                 session.logout();
@@ -265,6 +289,10 @@ public class VltSerializationManager imp
             // TODO proper error handling
             throw new IOException(e);
         }
+    }
 
+    @Override
+    public SerializationKind getSerializationKind(String primaryType) {
+        return skm.getSerializationKind(primaryType);
     }
 }