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);
}
}