You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2022/09/29 08:55:22 UTC
[sling-ide-tooling] 01/01: SLING-11590 Make compatible with m2e 2.x
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch feature/m2e-2.x-compatibility
in repository https://gitbox.apache.org/repos/asf/sling-ide-tooling.git
commit ff37dc8ceaf42adbf0668a544d1eaa3244e43a1c
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Thu Sep 29 10:55:14 2022 +0200
SLING-11590 Make compatible with m2e 2.x
Require at least Eclipse 2022-09
Update Eclipse plugins to Java 17
Update to Tycho 2.7.5
No longer generate p2 repo for plain OSGi bundles
Update to latest dependencies/parent poms
---
.gitignore | 1 +
Jenkinsfile | 10 +-
README.md | 8 +-
build.sh | 12 +-
cli/cli/pom.xml | 18 +-
cli/pom.xml | 2 +-
eclipse/eclipse-core/META-INF/MANIFEST.MF | 30 +-
.../ide/eclipse/core/ExtendedServiceTracker.java | 123 +++
.../apache/sling/ide/eclipse/core/ServiceUtil.java | 30 -
.../sling/ide/eclipse/core/internal/Activator.java | 109 +--
.../core/internal/JVMDebuggerConnection.java | 7 +-
eclipse/eclipse-m2e-core/META-INF/MANIFEST.MF | 2 +-
eclipse/eclipse-m2e-test/META-INF/MANIFEST.MF | 7 +-
eclipse/eclipse-m2e-test/pom.xml | 20 -
eclipse/eclipse-m2e-ui/META-INF/MANIFEST.MF | 29 +-
.../AbstractBundleProjectConfigurator.java | 12 +-
.../sling/ide/eclipse/m2e/internal/Activator.java | 31 +-
.../ContentPackageProjectConfigurator.java | 31 +-
.../MavenBundlePluginProjectConfigurator.java | 13 -
.../internal/SlingstartProjectConfigurator.java | 7 +-
...bstractNewMavenBasedSlingApplicationWizard.java | 189 ++--
.../wizards/np/ArchetypeParametersWizardPage.java | 13 +-
.../ui/wizards/np/ChooseArchetypeWizardPage.java | 57 +-
.../ide/eclipse/sightly/internal/Activator.java | 12 +-
eclipse/eclipse-sightly-ui/META-INF/MANIFEST.MF | 2 +-
eclipse/eclipse-test/META-INF/MANIFEST.MF | 2 +-
eclipse/eclipse-test/pom.xml | 71 +-
.../org/apache/sling/ide/test/impl/Activator.java | 46 +-
.../sling/ide/test/impl/ContentDeploymentTest.java | 5 +-
.../impl/ui/sightly/SightlyAutocompletionTest.java | 16 +-
eclipse/eclipse-ui/META-INF/MANIFEST.MF | 32 +-
.../eclipse/ui/actions/JcrNodeFormatHandler.java | 21 +-
.../sling/ide/eclipse/ui/internal/Activator.java | 55 +-
.../ide/eclipse/ui/views/DateTimeSupport.java | 19 +-
eclipse/feature/feature.xml | 9 +-
eclipse/p2update/pom.xml | 6 +-
eclipse/pom.xml | 40 +-
eclipse/target-definition/README.md | 7 +
eclipse/target-definition/Sling IDE Tooling.launch | 952 ++++++++++++---------
.../org.apache.sling.ide.target-definition.target | 80 +-
shared/{modules => }/.gitignore | 0
.../META-INF => shared}/MANIFEST.MF | 5 +-
shared/{modules => }/api/.project | 10 -
shared/{modules => }/api/README.md | 0
shared/{modules => }/api/bnd.bnd | 0
shared/{modules => }/api/pom.xml | 1 +
.../java/org/apache/sling/ide/filter/Filter.java | 0
.../org/apache/sling/ide/filter/FilterLocator.java | 0
.../org/apache/sling/ide/filter/FilterResult.java | 0
.../apache/sling/ide/filter/IgnoredResources.java | 0
.../org/apache/sling/ide/filter/package-info.java | 0
.../main/java/org/apache/sling/ide/log/Logger.java | 0
.../org/apache/sling/ide/log/package-info.java | 0
.../sling/ide/osgi/MavenSourceReference.java | 0
.../java/org/apache/sling/ide/osgi/OsgiClient.java | 0
.../apache/sling/ide/osgi/OsgiClientException.java | 0
.../apache/sling/ide/osgi/OsgiClientFactory.java | 0
.../org/apache/sling/ide/osgi/SourceReference.java | 0
.../apache/sling/ide/osgi/impl/HttpOsgiClient.java | 0
.../sling/ide/osgi/impl/HttpOsgiClientFactory.java | 0
.../ide/osgi/impl/MavenSourceReferenceImpl.java | 0
.../sling/ide/osgi/impl/TracingOsgiClient.java | 0
.../org/apache/sling/ide/osgi/package-info.java | 0
.../sling/ide/serialization/SerializationData.java | 0
.../serialization/SerializationDataBuilder.java | 0
.../ide/serialization/SerializationException.java | 0
.../sling/ide/serialization/SerializationKind.java | 0
.../serialization/SerializationKindManager.java | 0
.../ide/serialization/SerializationManager.java | 0
.../sling/ide/serialization/package-info.java | 0
.../ide/sync/content/NonExistingResources.java | 0
.../sling/ide/sync/content/SyncCommandFactory.java | 0
.../sling/ide/sync/content/WorkspaceDirectory.java | 0
.../sling/ide/sync/content/WorkspaceFile.java | 0
.../sling/ide/sync/content/WorkspacePath.java | 0
.../sling/ide/sync/content/WorkspacePaths.java | 0
.../sling/ide/sync/content/WorkspaceProject.java | 0
.../sling/ide/sync/content/WorkspaceResource.java | 0
.../content/impl/DefaultSyncCommandFactory.java | 0
.../sync/content/impl/NonExistingDirectory.java | 0
.../ide/sync/content/impl/NonExistingFile.java | 0
.../sling/ide/sync/content/package-info.java | 0
.../org/apache/sling/ide/transport/Batcher.java | 0
.../apache/sling/ide/transport/BatcherFactory.java | 0
.../org/apache/sling/ide/transport/Command.java | 0
.../apache/sling/ide/transport/CommandContext.java | 0
.../ide/transport/CommandExecutionProperties.java | 0
.../ide/transport/FallbackNodeTypeRegistry.java | 0
.../org/apache/sling/ide/transport/FileInfo.java | 0
.../sling/ide/transport/NodeTypeRegistry.java | 0
.../apache/sling/ide/transport/ProtectedNodes.java | 0
.../org/apache/sling/ide/transport/Repository.java | 0
.../sling/ide/transport/RepositoryException.java | 0
.../sling/ide/transport/RepositoryFactory.java | 0
.../apache/sling/ide/transport/RepositoryInfo.java | 0
.../sling/ide/transport/RepositoryResponse.java | 0
.../sling/ide/transport/ResourceAndInfo.java | 0
.../apache/sling/ide/transport/ResourceProxy.java | 0
.../org/apache/sling/ide/transport/Result.java | 0
.../apache/sling/ide/transport/TracingCommand.java | 0
.../sling/ide/transport/impl/DefaultBatcher.java | 0
.../ide/transport/impl/DefaultBatcherFactory.java | 0
.../apache/sling/ide/transport/package-info.java | 0
.../java/org/apache/sling/ide/util/PathUtil.java | 0
.../org/apache/sling/ide/util/package-info.java | 0
.../sling/ide/filter/IgnoredResourcesTest.java | 0
.../sling/ide/osgi/impl/HttpOsgiClientTest.java | 0
.../ide/serialization/NodeTypeResourceBuilder.java | 0
.../SerializationKindManagerTest.java | 0
.../sling/ide/serialization/StubRepository.java | 0
.../sling/ide/sync/content/WorkspacePathTest.java | 0
.../sling/ide/sync/content/WorkspacePathsTest.java | 0
.../transport/FallbackNodeTypeRegistryTest.java | 0
.../sling/ide/transport/ResourceProxyTest.java | 0
.../org/apache/sling/ide/util/PathUtilTest.java | 0
.../api/src/test/resources/bundles.json | 0
.../api/src/test/resources/sourceReferences.json | 0
shared/{modules => }/artifacts/.project | 10 -
shared/{modules => }/artifacts/README.md | 0
shared/{modules => }/artifacts/bnd.bnd | 0
shared/{modules => }/artifacts/pom.xml | 0
.../sling/ide/artifacts/EmbeddedArtifact.java | 0
.../ide/artifacts/EmbeddedArtifactLocator.java | 0
.../ide/artifacts/impl/ArtifactsLocatorImpl.java | 0
.../apache/sling/ide/artifacts/package-info.java | 0
.../{modules/api => filevault-uber-jar}/.project | 14 +-
shared/filevault-uber-jar/README.md | 4 +
shared/filevault-uber-jar/bnd.bnd | 57 ++
shared/filevault-uber-jar/pom.xml | 126 +++
shared/{modules => }/impl-resource/.project | 10 -
shared/{modules => }/impl-resource/README.md | 0
shared/{modules => }/impl-resource/bnd.bnd | 0
shared/{modules => }/impl-resource/pom.xml | 0
.../ide/impl/resource/filer/SimpleFilter.java | 0
.../impl/resource/filer/SimpleFilterLocator.java | 0
.../SimpleXmlSerializationManager.java | 0
.../impl/resource/transport/AbstractCommand.java | 0
.../impl/resource/transport/AbstractResult.java | 0
.../impl/resource/transport/DeleteNodeCommand.java | 0
.../impl/resource/transport/GetNodeCommand.java | 0
.../resource/transport/GetNodeContentCommand.java | 0
.../resource/transport/ListChildrenCommand.java | 0
.../resource/transport/RepositoryFactoryImpl.java | 0
.../impl/resource/transport/RepositoryImpl.java | 0
.../resource/transport/UpdateContentCommand.java | 0
.../sling/ide/impl/resource/util/Constants.java | 0
.../SimpleXmlSerializationManagerTest.java | 0
...lizationManagerTest.serializedDataIsEscaped.xml | 0
...rializationManagerTest.stringSerializedData.xml | 0
shared/{modules => }/impl-vlt/.project | 10 -
shared/{modules => }/impl-vlt/README.md | 0
shared/{modules => }/impl-vlt/bnd.bnd | 2 +-
shared/{modules => }/impl-vlt/pom.xml | 26 +-
.../sling/ide/impl/vlt/AddOrUpdateNodeCommand.java | 14 +-
.../apache/sling/ide/impl/vlt/ConversionUtils.java | 0
.../sling/ide/impl/vlt/DeleteNodeCommand.java | 0
.../apache/sling/ide/impl/vlt/GetNodeCommand.java | 0
.../sling/ide/impl/vlt/GetNodeContentCommand.java | 0
.../org/apache/sling/ide/impl/vlt/JcrCommand.java | 0
.../org/apache/sling/ide/impl/vlt/JcrResult.java | 8 +-
.../sling/ide/impl/vlt/ListChildrenCommand.java | 0
.../apache/sling/ide/impl/vlt/ListTreeCommand.java | 0
.../org/apache/sling/ide/impl/vlt/NoOpCommand.java | 0
.../ide/impl/vlt/ReorderChildNodesCommand.java | 2 +-
.../apache/sling/ide/impl/vlt/VaultFsLocator.java | 0
.../sling/ide/impl/vlt/VaultFsLocatorImpl.java | 0
.../sling/ide/impl/vlt/VltNodeDefinition.java | 0
.../org/apache/sling/ide/impl/vlt/VltNodeType.java | 0
.../sling/ide/impl/vlt/VltNodeTypeFactory.java | 0
.../sling/ide/impl/vlt/VltNodeTypeRegistry.java | 0
.../sling/ide/impl/vlt/VltPropertyDefinition.java | 0
.../apache/sling/ide/impl/vlt/VltRepository.java | 0
.../sling/ide/impl/vlt/VltRepositoryFactory.java | 2 +-
.../sling/ide/impl/vlt/filter/VltFilter.java | 0
.../ide/impl/vlt/filter/VltFilterLocator.java | 0
.../serialization/ResourceProxyParserHandler.java} | 176 ++--
.../serialization/VltSerializationDataBuilder.java | 2 +-
.../vlt/serialization/VltSerializationManager.java | 29 +-
.../org/apache/sling/ide/jcr/RepositoryUtils.java | 0
.../org/apache/sling/ide/jcr/package-info.java | 0
.../ide/impl/vlt/AddOrUpdateNodeCommandTest.java | 381 +++++++++
.../ide/impl/vlt/ReorderChildNodesCommandTest.java | 15 +-
.../sling/ide/impl/vlt/RepositoryManager.java | 177 ++++
.../org/apache/sling/ide/impl/vlt/Slf4jLogger.java | 0
.../sling/ide/impl/vlt/filter/VltFilterTest.java | 0
.../ResourceProxyParserHandlerTest.java} | 49 +-
.../serialization/VltSerializationManagerTest.java | 0
.../ide/impl/vlt/transport/DefaultBatcherTest.java | 0
.../apache/sling/ide/jcr/RepositoryUtilsTest.java | 1 -
.../sling/ide/impl/vlt/filter/filter-deep.xml | 0
.../sling/ide/impl/vlt/filter/filter-default.xml | 0
.../ide/impl/vlt/filter/filter-with-include.xml | 0
.../org/apache/sling/ide/impl/vlt/folder.cnd | 0
.../sling/ide/impl/vlt/serialization/bin.binary | 0
.../ide/impl/vlt/serialization/binary-property.xml | 0
.../serialization/empty-multivalued-property.xml | 0
.../vlt/serialization/encoded-child-content.xml | 0
.../escaped-braces-at-start-of-property.xml | 0
.../escaped-comma-in-multi-valued-property.xml | 0
.../serialization/escaped-value-in-property.xml | 0
.../sling/ide/impl/vlt/serialization/file.xml | 0
.../serialization/full-coverage-escaped-names.xml | 0
.../ide/impl/vlt/serialization/full-coverage.xml | 0
.../multivalued-properties-content.xml | 0
.../ide/impl/vlt/serialization/root-content.xml | 0
.../ide/impl/vlt/serialization/simple-content.xml | 0
...gle-explicit-multivalued-properties-content.xml | 0
.../apache/sling/ide/impl/vlt/test-definitions.cnd | 0
shared/modules/impl-vlt/.options | 2 -
shared/modules/impl-vlt/plugin.xml | 29 -
.../ide/impl/vlt/AddOrUpdateNodeCommandTest.java | 507 -----------
shared/modules/parent/pom.xml | 178 ----
shared/p2/pom.xml | 170 ----
shared/p2/shared-feature/build.properties | 1 -
shared/p2/shared-feature/feature.xml | 256 ------
shared/p2/shared-feature/pom.xml | 40 -
shared/p2/shared-repository/category.xml | 23 -
shared/p2/shared-repository/pom.xml | 40 -
shared/p2/vlt-wrapper/META-INF/LICENSE | 202 -----
shared/p2/vlt-wrapper/META-INF/MANIFEST.MF | 75 --
shared/p2/vlt-wrapper/META-INF/NOTICE | 11 -
shared/p2/vlt-wrapper/README.md | 3 -
shared/p2/vlt-wrapper/build.properties | 18 -
shared/p2/vlt-wrapper/lib/.gitignore | 1 -
shared/p2/vlt-wrapper/pom.xml | 179 ----
shared/{modules => }/parent/.project | 0
shared/parent/pom.xml | 161 ++++
shared/{modules => }/pom.xml | 7 +-
shared/{modules => }/sync-fs/.project | 10 -
shared/{modules => }/sync-fs/bnd.bnd | 0
shared/{modules => }/sync-fs/pom.xml | 3 +
.../sling/ide/content/sync/fs/FSResources.java | 0
.../content/sync/fs/impl/FSWorkspaceDirectory.java | 0
.../ide/content/sync/fs/impl/FSWorkspaceFile.java | 0
.../content/sync/fs/impl/FSWorkspaceProject.java | 0
.../content/sync/fs/impl/FSWorkspaceResource.java | 0
.../sling/ide/content/sync/fs/package-info.java | 0
.../sync/fs/impl/FSWorkspaceDirectoryTest.java | 0
.../content/sync/fs/impl/FSWorkspaceFileTest.java | 0
.../sync/fs/impl/FSWorkspaceProjectTest.java | 0
.../content/sync/fs/impl/MockFilterLocator.java | 0
241 files changed, 2146 insertions(+), 3037 deletions(-)
diff --git a/.gitignore b/.gitignore
index 6cb7699a..8696b2d1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,3 +16,4 @@ maven-eclipse.xml
jcr.log
atlassian-ide-plugin.xml
derby.log
+bin
diff --git a/Jenkinsfile b/Jenkinsfile
index 8de6f298..6cb72587 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -1,7 +1,7 @@
import org.apache.sling.jenkins.SlingJenkinsHelper;
def mvnVersion = 'Maven 3.3.9'
-def javaVersion = 'JDK 1.8 (latest)'
+def javaVersion = 'JDK 17 (latest)'
node('ubuntu') {
def helper = new SlingJenkinsHelper()
@@ -20,7 +20,7 @@ def generateStages(String os, def mvnVersion, def javaVersion) {
"[$prefix] Build shared code": {
withMaven(maven: mvnVersion, jdk: javaVersion, options: [artifactsPublisher(disabled: true)]) {
timeout(10) {
- runCmd "mvn -f shared/modules clean install"
+ runCmd "mvn -f shared clean install"
}
}
}, "[$prefix] Build CLI bundles": {
@@ -29,12 +29,6 @@ def generateStages(String os, def mvnVersion, def javaVersion) {
runCmd "mvn -f cli clean install"
}
}
- }, "[$prefix] Build shared code P2 repository": {
- withMaven(maven: mvnVersion, jdk: javaVersion, options: [artifactsPublisher(disabled: true)]) {
- timeout(10) {
- runCmd 'mvn -f shared/p2 clean package'
- }
- }
}, "[$prefix] Build Eclipse plug-ins": {
withMaven(maven: mvnVersion, jdk: javaVersion, options: [artifactsPublisher(disabled: true)]) {
timeout(20) {
diff --git a/README.md b/README.md
index c40a52be..7c75eeef 100644
--- a/README.md
+++ b/README.md
@@ -11,16 +11,18 @@ documentation page.
## Repository structure
-The modules are split into two sub-trees
+The modules are split into distinct sub-trees
* shared
+* cli
* eclipse
to ensure that the reusable code is available for usage in other IDEs or
environments.
The modules placed under `shared/modules` should bring as few external dependencies as
-possible, and must not depend on IDE-specific APIs, such as Eclipse or OSGi.
+possible, and must not depend on IDE-specific APIs, such as Eclipse or OSGi. However,
+all modules come with OSGi bundle headers.
The modules placed under `eclipse` may depend on any Eclipse-specific APIs.
@@ -34,7 +36,7 @@ This howto assumes that you are running Eclipse Oxygen or later with the Plug-In
Development Environment and Maven features installed. You should have
previously built the projects using
- ./build-eclipse.sh
+ ./build.sh
to ensure that Maven artifacts which are not available on p2 update sites are
included in the workspace.
diff --git a/build.sh b/build.sh
index 69deda1e..89781d1f 100755
--- a/build.sh
+++ b/build.sh
@@ -1,10 +1,9 @@
#!/bin/sh -e
build_all() {
- mvn -f shared/modules clean install
- mvn -f cli clean install
- mvn -f shared/p2 clean package
- mvn -f eclipse clean verify
+ mvn -f shared clean install -e
+# mvn -f cli clean install -e
+ mvn -f eclipse clean verify -e
}
@@ -13,12 +12,11 @@ build_all() {
if [ $# -eq 1 ]; then
case "$1" in
eclipse)
- mvn -f shared/modules clean install
- mvn -f shared/p2 clean package
+ mvn -f shared clean install
mvn -f eclipse clean verify
;;
cli)
- mvn -f shared/modules clean install
+ mvn -f shared clean install
mvn -f cli clean install
;;
*)
diff --git a/cli/cli/pom.xml b/cli/cli/pom.xml
index f6b83c09..364e0a6b 100644
--- a/cli/cli/pom.xml
+++ b/cli/cli/pom.xml
@@ -16,10 +16,11 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.sling</groupId>
- <artifactId>sling</artifactId>
- <version>33</version>
+ <artifactId>sling-bundle-parent</artifactId>
+ <version>49</version>
</parent>
+ <groupId>org.apache.sling.ide</groupId>
<artifactId>org.apache.sling.ide.cli</artifactId>
<name>Apache Sling IDE Tools CLI</name>
<version>1.2.3-SNAPSHOT</version>
@@ -30,15 +31,6 @@
<url>https://gitbox.apache.org/repos/asf?p=sling-ide-tooling.git</url>
</scm>
- <build>
- <plugins>
- <plugin>
- <groupId>biz.aQute.bnd</groupId>
- <artifactId>bnd-maven-plugin</artifactId>
- </plugin>
- </plugins>
- </build>
-
<dependencies>
<dependency>
<groupId>org.osgi</groupId>
@@ -75,6 +67,7 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
@@ -100,8 +93,9 @@
<scope>provided</scope>
</dependency>
</dependencies>
+
<properties>
<sling.java.version>8</sling.java.version>
</properties>
- <groupId>org.apache.sling.ide</groupId>
+
</project>
diff --git a/cli/pom.xml b/cli/pom.xml
index 46e7cfab..d261a82e 100644
--- a/cli/pom.xml
+++ b/cli/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
- <version>14</version>
+ <version>27</version>
</parent>
<groupId>org.apache.sling.ide</groupId>
<artifactId>sling-ide-tooling-cli</artifactId>
diff --git a/eclipse/eclipse-core/META-INF/MANIFEST.MF b/eclipse/eclipse-core/META-INF/MANIFEST.MF
index 706d51c3..9b09cd99 100644
--- a/eclipse/eclipse-core/META-INF/MANIFEST.MF
+++ b/eclipse/eclipse-core/META-INF/MANIFEST.MF
@@ -5,41 +5,30 @@ Bundle-Name: Sling IDE Eclipse Core
Bundle-SymbolicName: org.apache.sling.ide.eclipse-core;singleton:=true
Bundle-Version: 1.2.3.qualifier
Bundle-Activator: org.apache.sling.ide.eclipse.core.internal.Activator
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.equinox.ds;bundle-version="1.2.1",
- org.eclipse.osgi.services;bundle-version="3.2.100",
- org.eclipse.core.resources,
- org.eclipse.ui,
- org.eclipse.jdt.debug
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ClassPath: .
-Import-Package: org.apache.commons.httpclient;version="3.1.0",
- org.apache.commons.httpclient.auth;version="3.1.0",
- org.apache.commons.httpclient.methods;version="3.1.0",
- org.apache.commons.httpclient.params;version="3.1.0",
- org.apache.commons.io;version="2.0.1",
- org.apache.sling.ide.artifacts,
+Import-Package: org.apache.sling.ide.artifacts,
org.apache.sling.ide.filter,
org.apache.sling.ide.log,
org.apache.sling.ide.osgi,
org.apache.sling.ide.serialization,
org.apache.sling.ide.sync.content,
org.apache.sling.ide.transport,
- org.apache.sling.ide.util,
org.eclipse.core.commands,
org.eclipse.core.commands.operations,
org.eclipse.core.expressions,
org.eclipse.core.resources,
+ org.eclipse.core.runtime;version="3.7.0",
+ org.eclipse.core.runtime.preferences;version="3.5.0",
org.eclipse.debug.core,
org.eclipse.debug.core.model,
org.eclipse.debug.core.sourcelookup,
- org.eclipse.debug.core.sourcelookup.containers,
org.eclipse.jdt.core,
org.eclipse.jdt.internal.launching,
org.eclipse.jdt.launching,
- org.eclipse.jdt.launching.sourcelookup.containers,
org.eclipse.osgi.service.debug;version="1.2.0",
+ org.eclipse.osgi.util;version="1.1.0",
org.eclipse.wst.common.project.facet.core,
org.eclipse.wst.server.core,
org.eclipse.wst.server.core.model,
@@ -49,7 +38,14 @@ Import-Package: org.apache.commons.httpclient;version="3.1.0",
org.eclipse.wst.validation.internal.provisional.core,
org.eclipse.wst.xml.core.internal.validation.core,
org.eclipse.wst.xml.core.internal.validation.eclipse,
- org.osgi.service.component;version="1.1.0"
+ org.osgi.framework;version="1.10.0",
+ org.osgi.framework.dto;version="1.8.0",
+ org.osgi.service.component;version="1.1.0",
+ org.osgi.service.component.runtime;version="1.5.0",
+ org.osgi.service.component.runtime.dto;version="1.5.0",
+ org.osgi.service.event;version="1.4.1",
+ org.osgi.service.prefs;version="1.1.2",
+ org.osgi.util.tracker;version="1.5.3"
Export-Package: org.apache.sling.ide.eclipse.core,
org.apache.sling.ide.eclipse.core.facet,
org.apache.sling.ide.eclipse.core.internal,
diff --git a/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/ExtendedServiceTracker.java b/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/ExtendedServiceTracker.java
new file mode 100644
index 00000000..8daa4668
--- /dev/null
+++ b/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/ExtendedServiceTracker.java
@@ -0,0 +1,123 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.ide.eclipse.core;
+
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.Optional;
+import java.util.stream.Collectors;
+
+import org.osgi.framework.BundleContext;
+import org.osgi.service.component.runtime.ServiceComponentRuntime;
+import org.osgi.service.component.runtime.dto.ComponentConfigurationDTO;
+import org.osgi.service.component.runtime.dto.ComponentDescriptionDTO;
+import org.osgi.util.tracker.ServiceTracker;
+
+/**
+ * Provides some capabilities to better trace issues with services provided by DS components in case the service cannot be retrieved.
+ *
+ * @param <T> the tracked service class
+ */
+public class ExtendedServiceTracker<T> implements AutoCloseable {
+
+ private final Class<T> trackedClass;
+
+ private final ServiceTracker<T,T> serviceTracker;
+
+ private final ServiceTracker<ServiceComponentRuntime, ServiceComponentRuntime> scrServiceTracker;
+
+
+ public ExtendedServiceTracker(BundleContext bundleContext, Class<T> trackedClass) {
+ this.trackedClass = trackedClass;
+ serviceTracker = new ServiceTracker<T, T>(bundleContext, trackedClass, null);
+ serviceTracker.open();
+ scrServiceTracker = new ServiceTracker<ServiceComponentRuntime, ServiceComponentRuntime>(bundleContext, ServiceComponentRuntime.class, null);
+ scrServiceTracker.open();
+ }
+
+ public Optional<T> getOptional() {
+ return Optional.ofNullable(serviceTracker.getService());
+ }
+
+ public T getNotNull() {
+ T service = serviceTracker.getService();
+ if (service == null) {
+ ServiceComponentRuntime scr = scrServiceTracker.getService();
+ if (scr == null) {
+ throw new IllegalStateException("Could not get service of type " + trackedClass + " and 'ServiceComponentRuntime' is not available either for further debugging hints");
+ }
+ List<ComponentDescriptionDTO> components = getComponentDescriptionDTOs(scr, trackedClass);
+ if (components.isEmpty()) {
+ throw new IllegalStateException("Could not get service of type " + trackedClass + ". The providing bundle is probably not properly installed or was not started as no DS component was found providing that service interface");
+ } else {
+ // only dump the first found component
+ throw new IllegalStateException("Could not get service of type " + trackedClass + ": Providing " + getRelevantComponentInfo(scr, components.get(0)));
+ }
+ }
+ return service;
+ }
+
+ static List<ComponentDescriptionDTO> getComponentDescriptionDTOs(ServiceComponentRuntime scr, Class<?> serviceInterface) {
+ return scr.getComponentDescriptionDTOs().stream().filter(c -> Arrays.asList(c.serviceInterfaces).contains(serviceInterface.getName())).collect(Collectors.toList());
+ }
+
+
+ public String getRelevantComponentInfo(ServiceComponentRuntime scr, ComponentDescriptionDTO component) {
+ StringBuilder info = new StringBuilder("DS Component ").append(component.name).append(" from bundle ").append(component.bundle.symbolicName);
+ Collection<ComponentConfigurationDTO> componentConfigurations = scr.getComponentConfigurationDTOs(component);
+ if (componentConfigurations.isEmpty()) {
+ info.append(" is not available"); // why?
+ } else {
+ for (ComponentConfigurationDTO componentConfiguration : componentConfigurations) {
+ info.append("has state ").append(getState(componentConfiguration));
+ }
+ }
+ return info.toString();
+ }
+
+ static String getState(ComponentConfigurationDTO componentConfiguration) {
+ String state;
+ switch(componentConfiguration.state) {
+ case ComponentConfigurationDTO.UNSATISFIED_CONFIGURATION:
+ state = "Unsatisfied configuration";
+ break;
+ case ComponentConfigurationDTO.UNSATISFIED_REFERENCE:
+ state = "Unsatisfied reference(s): " + String.join(", ", Arrays.asList(componentConfiguration.unsatisfiedReferences.toString()));
+ break;
+ case ComponentConfigurationDTO.SATISFIED:
+ state = "Satisfied";
+ break;
+ case ComponentConfigurationDTO.ACTIVE:
+ state = "Active";
+ break;
+ case ComponentConfigurationDTO.FAILED_ACTIVATION:
+ state = "Activate method failed: " + componentConfiguration.failure;
+ break;
+ default:
+ state = "Unknown state: " + componentConfiguration.state;
+ }
+ return state;
+ }
+
+ @Override
+ public void close() throws Exception {
+ serviceTracker.close();
+ scrServiceTracker.close();
+ }
+
+}
diff --git a/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServiceUtil.java b/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServiceUtil.java
deleted file mode 100644
index 3e4252b5..00000000
--- a/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/ServiceUtil.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sling.ide.eclipse.core;
-
-import org.osgi.util.tracker.ServiceTracker;
-
-public class ServiceUtil {
-
- public static <S, T> T getNotNull(ServiceTracker<S, T> serviceTracker) {
- T service = serviceTracker.getService();
- if (service == null)
- throw new IllegalStateException("Service is null");
-
- return service;
- }
-}
diff --git a/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java b/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java
index 05b809fa..aefa0deb 100644
--- a/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java
+++ b/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/Activator.java
@@ -18,10 +18,12 @@ package org.apache.sling.ide.eclipse.core.internal;
import java.util.HashMap;
import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
import org.apache.sling.ide.artifacts.EmbeddedArtifactLocator;
+import org.apache.sling.ide.eclipse.core.ExtendedServiceTracker;
import org.apache.sling.ide.eclipse.core.Preferences;
-import org.apache.sling.ide.eclipse.core.ServiceUtil;
import org.apache.sling.ide.eclipse.core.launch.SourceReferenceResolver;
import org.apache.sling.ide.filter.FilterLocator;
import org.apache.sling.ide.log.Logger;
@@ -32,6 +34,7 @@ import org.apache.sling.ide.transport.BatcherFactory;
import org.apache.sling.ide.transport.CommandExecutionProperties;
import org.apache.sling.ide.transport.RepositoryFactory;
import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.Bundle;
import org.osgi.framework.BundleContext;
import org.osgi.service.event.Event;
import org.osgi.service.event.EventAdmin;
@@ -54,53 +57,55 @@ public class Activator extends Plugin {
private static Activator plugin;
private ServiceTracker<EventAdmin, EventAdmin> eventAdmin;
- private ServiceTracker<RepositoryFactory, RepositoryFactory> repositoryFactory;
- private ServiceTracker<SerializationManager, SerializationManager> serializationManager;
- private ServiceTracker<FilterLocator, FilterLocator> filterLocator;
- private ServiceTracker<OsgiClientFactory, OsgiClientFactory> osgiClientFactory;
- private ServiceTracker<EmbeddedArtifactLocator, EmbeddedArtifactLocator> artifactLocator;
- private ServiceTracker<Logger, Logger> tracer;
- private ServiceTracker<BatcherFactory, BatcherFactory> batcherFactoryLocator;
- private ServiceTracker<SourceReferenceResolver, Object> sourceReferenceLocator;
- private ServiceTracker<SyncCommandFactory, SyncCommandFactory> commandFactory;
+ private ExtendedServiceTracker<RepositoryFactory> repositoryFactory;
+ private ExtendedServiceTracker<SerializationManager> serializationManager;
+ private ExtendedServiceTracker<FilterLocator> filterLocator;
+ private ExtendedServiceTracker<OsgiClientFactory> osgiClientFactory;
+ private ExtendedServiceTracker<EmbeddedArtifactLocator> artifactLocator;
+ private ExtendedServiceTracker<Logger> tracer;
+ private ExtendedServiceTracker<BatcherFactory> batcherFactoryLocator;
+ private ExtendedServiceTracker<SourceReferenceResolver> sourceReferenceLocator;
+ private ExtendedServiceTracker<SyncCommandFactory> commandFactory;
private Preferences preferences;
+
+ public static final String BSN_VAULT_IMPL = "org.apache.sling.ide.impl-vlt";
+ public static final String BSN_API = "org.apache.sling.ide.api";
+ public static final String BSN_ARTIFACTS = "org.apache.sling.ide.artifacts";
public void start(BundleContext context) throws Exception {
super.start(context);
plugin = this;
+ // the following bundles need to be explicitly started as no class is directly referenced
+ // and everything works via declarative services
+ // compare with https://github.com/eclipse-m2e/m2e-core/issues/945
+ getFirstBundle(context, BSN_API).start();
+ getFirstBundle(context, BSN_VAULT_IMPL).start();
+ getFirstBundle(context, BSN_ARTIFACTS).start();
+
eventAdmin = new ServiceTracker<>(context, EventAdmin.class, null);
- eventAdmin.open();
-
- repositoryFactory = new ServiceTracker<>(context, RepositoryFactory.class,
- null);
- repositoryFactory.open();
-
- serializationManager = new ServiceTracker<>(context, SerializationManager.class, null);
- serializationManager.open();
-
- filterLocator = new ServiceTracker<>(context, FilterLocator.class, null);
- filterLocator.open();
-
- osgiClientFactory = new ServiceTracker<>(context, OsgiClientFactory.class,
- null);
- osgiClientFactory.open();
-
- artifactLocator = new ServiceTracker<>(context, EmbeddedArtifactLocator.class, null);
- artifactLocator.open();
-
- tracer = new ServiceTracker<>(context, Logger.class, null);
- tracer.open();
-
- batcherFactoryLocator = new ServiceTracker<>(context, BatcherFactory.class, null);
- batcherFactoryLocator.open();
-
- sourceReferenceLocator = new ServiceTracker<>(context, SourceReferenceResolver.class, null);
- sourceReferenceLocator.open();
-
- commandFactory = new ServiceTracker<>(context, SyncCommandFactory.class, null);
- commandFactory.open();
+ eventAdmin.open(true);
+
+ repositoryFactory = new ExtendedServiceTracker<>(context, RepositoryFactory.class);
+ serializationManager = new ExtendedServiceTracker<>(context, SerializationManager.class);
+ filterLocator = new ExtendedServiceTracker<>(context, FilterLocator.class);
+ osgiClientFactory = new ExtendedServiceTracker<>(context, OsgiClientFactory.class);
+ artifactLocator = new ExtendedServiceTracker<>(context, EmbeddedArtifactLocator.class);
+ tracer = new ExtendedServiceTracker<>(context, Logger.class);
+ batcherFactoryLocator = new ExtendedServiceTracker<>(context, BatcherFactory.class);
+ sourceReferenceLocator = new ExtendedServiceTracker<>(context, SourceReferenceResolver.class);
+ commandFactory = new ExtendedServiceTracker<>(context, SyncCommandFactory.class);
+ }
+
+ static Bundle getFirstBundle(BundleContext bundleContext, String bundleSymbolicName)
+ {
+ for (Bundle bundle : bundleContext.getBundles()) {
+ if (bundleSymbolicName.equals(bundle.getSymbolicName())) {
+ return bundle;
+ }
+ }
+ throw new IllegalStateException("Bundle with Bundle-SymbolicName '" + bundleSymbolicName + "' could not be found. Something went wrong during installation");
}
/*
@@ -133,37 +138,35 @@ public class Activator extends Plugin {
}
public RepositoryFactory getRepositoryFactory() {
-
- return ServiceUtil.getNotNull(repositoryFactory);
+ return repositoryFactory.getNotNull();
}
public SerializationManager getSerializationManager() {
- return ServiceUtil.getNotNull(serializationManager);
+ return serializationManager.getNotNull();
}
public FilterLocator getFilterLocator() {
- return ServiceUtil.getNotNull(filterLocator);
+ return filterLocator.getNotNull();
}
public OsgiClientFactory getOsgiClientFactory() {
- return ServiceUtil.getNotNull(osgiClientFactory);
+ return osgiClientFactory.getNotNull();
}
public EmbeddedArtifactLocator getArtifactLocator() {
-
- return ServiceUtil.getNotNull(artifactLocator);
+ return artifactLocator.getNotNull();
}
public Logger getPluginLogger() {
- return (Logger) ServiceUtil.getNotNull(tracer);
+ return tracer.getNotNull();
}
public BatcherFactory getBatcherFactory() {
- return (BatcherFactory) ServiceUtil.getNotNull(batcherFactoryLocator);
+ return batcherFactoryLocator.getNotNull();
}
public SyncCommandFactory getCommandFactory() {
- return ServiceUtil.getNotNull(commandFactory);
+ return commandFactory.getNotNull();
}
/**
@@ -182,14 +185,14 @@ public class Activator extends Plugin {
}
public EventAdmin getEventAdmin() {
- return (EventAdmin) ServiceUtil.getNotNull(eventAdmin);
+ return Objects.requireNonNull(eventAdmin.getService(), "No OSGi EventAdmin service registered in the system");
}
/**
* @return the source reference resolver, possibly null
*/
- public SourceReferenceResolver getSourceReferenceResolver() {
- return (SourceReferenceResolver) sourceReferenceLocator.getService();
+ public Optional<SourceReferenceResolver> getSourceReferenceResolver() {
+ return sourceReferenceLocator.getOptional();
}
public Preferences getPreferences() {
diff --git a/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/JVMDebuggerConnection.java b/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/JVMDebuggerConnection.java
index fc25de27..7ccddd02 100644
--- a/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/JVMDebuggerConnection.java
+++ b/eclipse/eclipse-core/src/org/apache/sling/ide/eclipse/core/internal/JVMDebuggerConnection.java
@@ -20,6 +20,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import org.apache.sling.ide.eclipse.core.ISlingLaunchpadConfiguration;
import org.apache.sling.ide.eclipse.core.ISlingLaunchpadServer;
@@ -114,15 +115,15 @@ public class JVMDebuggerConnection {
int workTicksForReferences = 24; // 30 - 5 - 1
- SourceReferenceResolver resolver = Activator.getDefault().getSourceReferenceResolver();
- if ( resolver != null && configuration.resolveSourcesInDebugMode()) {
+ Optional<SourceReferenceResolver> resolver = Activator.getDefault().getSourceReferenceResolver();
+ if ( resolver.isPresent() && configuration.resolveSourcesInDebugMode()) {
try {
List<SourceReference> references = osgiClient.findSourceReferences();
SubMonitor subMonitor = SubMonitor.convert(monitor, "Resolving source references", workTicksForReferences).setWorkRemaining(references.size());
for ( SourceReference reference : references ) {
try {
subMonitor.setTaskName("Resolving source reference: " + reference);
- IRuntimeClasspathEntry classpathEntry = resolver.resolve(reference);
+ IRuntimeClasspathEntry classpathEntry = resolver.get().resolve(reference);
if ( classpathEntry != null ) {
classpathEntries.add(classpathEntry);
}
diff --git a/eclipse/eclipse-m2e-core/META-INF/MANIFEST.MF b/eclipse/eclipse-m2e-core/META-INF/MANIFEST.MF
index e05559e9..d7430dd1 100644
--- a/eclipse/eclipse-m2e-core/META-INF/MANIFEST.MF
+++ b/eclipse/eclipse-m2e-core/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@ Bundle-Name: Sling IDE M2E Core
Bundle-SymbolicName: org.apache.sling.ide.eclipse-m2e-core;singleton:=true
Bundle-Version: 1.2.3.qualifier
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ClassPath: .
Import-Package: org.apache.sling.ide.eclipse.core.launch,
org.apache.sling.ide.osgi,
diff --git a/eclipse/eclipse-m2e-test/META-INF/MANIFEST.MF b/eclipse/eclipse-m2e-test/META-INF/MANIFEST.MF
index ac91b918..7d81d23e 100644
--- a/eclipse/eclipse-m2e-test/META-INF/MANIFEST.MF
+++ b/eclipse/eclipse-m2e-test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: Sling IDE Tools: Eclipse M2Eclipse-based tests
Bundle-SymbolicName: org.apache.sling.ide.eclipse-m2e-test
Bundle-Version: 1.2.3.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.junit,
org.eclipse.m2e.core,
org.eclipse.m2e.launching,
@@ -11,15 +11,10 @@ Require-Bundle: org.junit,
org.eclipse.m2e.core.ui,
org.eclipse.m2e.discovery,
org.eclipse.m2e.editor,
- org.eclipse.m2e.editor.xml,
- org.eclipse.m2e.maven.indexer,
org.eclipse.m2e.archetype.common,
org.eclipse.m2e.profiles.ui,
org.eclipse.m2e.scm,
org.eclipse.m2e.maven.runtime,
- org.eclipse.m2e.lifecyclemapping.defaults,
- org.eclipse.m2e.model.edit,
- org.eclipse.m2e.maven.runtime.slf4j.simple,
org.eclipse.m2e.refactoring,
org.eclipse.m2e.profiles.core
Fragment-Host: org.apache.sling.ide.eclipse-m2e-ui
diff --git a/eclipse/eclipse-m2e-test/pom.xml b/eclipse/eclipse-m2e-test/pom.xml
index 8b91d1a3..76f8c369 100644
--- a/eclipse/eclipse-m2e-test/pom.xml
+++ b/eclipse/eclipse-m2e-test/pom.xml
@@ -54,26 +54,6 @@
</archive>
</configuration>
</plugin>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>target-platform-configuration</artifactId>
- <configuration>
- <dependency-resolution>
- <extraRequirements>
- <requirement>
- <type>eclipse-plugin</type>
- <id>org.slf4j.binding.simple</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- <requirement>
- <type>eclipse-plugin</type>
- <id>org.slf4j.apis.log4j</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- </extraRequirements>
- </dependency-resolution>
- </configuration>
- </plugin>
</plugins>
</build>
</project>
diff --git a/eclipse/eclipse-m2e-ui/META-INF/MANIFEST.MF b/eclipse/eclipse-m2e-ui/META-INF/MANIFEST.MF
index 6976b45b..cccd2fb1 100644
--- a/eclipse/eclipse-m2e-ui/META-INF/MANIFEST.MF
+++ b/eclipse/eclipse-m2e-ui/META-INF/MANIFEST.MF
@@ -5,41 +5,28 @@ Bundle-Name: Sling IDE M2E UI
Bundle-SymbolicName: org.apache.sling.ide.eclipse-m2e-ui;singleton:=true
Bundle-Activator: org.apache.sling.ide.eclipse.m2e.internal.Activator
Bundle-Version: 1.2.3.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ClassPath: .
Require-Bundle: org.eclipse.m2e.core;bundle-version="1.4.0",
org.eclipse.m2e.archetype.common;bundle-version="1.4.0",
org.eclipse.m2e.maven.runtime;bundle-version="1.4.0",
org.eclipse.jst.j2ee,
- org.eclipse.m2e.discovery;bundle-version="1.4.0"
-Import-Package: org.apache.commons.httpclient;version="3.1.0",
- org.apache.commons.httpclient.auth;version="3.1.0",
- org.apache.commons.httpclient.methods;version="3.1.0",
- org.apache.commons.httpclient.methods.multipart;version="3.1.0",
- org.apache.commons.httpclient.params;version="3.1.0",
- org.apache.commons.io;version="2.0.1",
- org.apache.commons.lang,
- org.apache.sling.ide.artifacts,
+ org.eclipse.m2e.discovery;bundle-version="1.4.0",
+ org.eclipse.m2e.core.ui;bundle-version="2.0.0",
+ org.apache.sling.ide.eclipse-core
+Import-Package: org.apache.sling.ide.artifacts,
org.apache.sling.ide.eclipse.core,
org.apache.sling.ide.eclipse.core.progress,
org.apache.sling.ide.eclipse.ui,
org.apache.sling.ide.eclipse.ui.wizards,
org.apache.sling.ide.log,
org.apache.sling.ide.osgi,
- org.apache.sling.ide.transport,
- org.eclipse.core.commands.common,
org.eclipse.core.resources,
org.eclipse.core.runtime;version="3.4.0",
- org.eclipse.core.runtime.jobs,
org.eclipse.core.runtime.preferences;version="3.3.0",
- org.eclipse.debug.core,
- org.eclipse.debug.core.model,
- org.eclipse.debug.internal.ui,
org.eclipse.jface.dialogs,
- org.eclipse.jface.layout,
org.eclipse.jface.operation,
org.eclipse.jface.preference,
- org.eclipse.jface.resource,
org.eclipse.jface.util,
org.eclipse.jface.viewers,
org.eclipse.jface.wizard,
@@ -53,16 +40,12 @@ Import-Package: org.apache.commons.httpclient;version="3.1.0",
org.eclipse.swt.layout,
org.eclipse.swt.widgets,
org.eclipse.ui,
- org.eclipse.ui.actions,
org.eclipse.ui.browser,
- org.eclipse.ui.plugin,
org.eclipse.ui.preferences,
- org.eclipse.ui.progress,
org.eclipse.ui.statushandlers,
org.eclipse.wst.common.frameworks.datamodel,
org.eclipse.wst.common.project.facet.core,
org.eclipse.wst.server.core,
- org.osgi.framework;version="1.6.0",
- org.osgi.util.tracker;version="1.5.0"
+ org.osgi.framework;version="1.8.0"
Bundle-ActivationPolicy: lazy
Export-Package: org.apache.sling.ide.eclipse.ui.wizards.np
diff --git a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/AbstractBundleProjectConfigurator.java b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/AbstractBundleProjectConfigurator.java
index 98afa72b..15a72428 100644
--- a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/AbstractBundleProjectConfigurator.java
+++ b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/AbstractBundleProjectConfigurator.java
@@ -20,6 +20,7 @@ import org.apache.maven.model.Plugin;
import org.apache.maven.project.MavenProject;
import org.apache.sling.ide.eclipse.core.ConfigurationHelper;
import org.apache.sling.ide.log.Logger;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
@@ -45,12 +46,13 @@ public abstract class AbstractBundleProjectConfigurator extends AbstractProjectC
// at this point the JDT project is already created by the tycho plugin
// we just need to setup the appropriate facets
- IProject project = configRequest.getProject();
+ IProject project = configRequest.mavenProjectFacade().getProject();
+ IFile pomFile = configRequest.mavenProjectFacade().getPom();
trace("AbstractBundleProjectConfigurator called for POM {0} and project {1}",
- configRequest.getPom().getFullPath(),
+ pomFile.getFullPath(),
project.getName());
// delete all previous markers on this pom.xml set by any project configurator
- deleteMarkers(configRequest.getPom());
+ deleteMarkers(pomFile);
if (!getPreferences().isBundleProjectConfiguratorEnabled()) {
trace("m2e project configurator for bundles was disabled through preference.");
@@ -58,7 +60,7 @@ public abstract class AbstractBundleProjectConfigurator extends AbstractProjectC
}
// check for maven-sling-plugin as well (to make sure this is a Sling project)
- MavenProject mavenProject = configRequest.getMavenProject();
+ MavenProject mavenProject = configRequest.mavenProject();
if (mavenProject.getPlugin(MAVEN_SLING_PLUGIN_KEY) != null) {
trace("Found maven-sling-plugin in build plugins for project {0}, therefore adding sling bundle facets!", project.getName());
ConfigurationHelper.convertToBundleProject(project);
@@ -66,7 +68,7 @@ public abstract class AbstractBundleProjectConfigurator extends AbstractProjectC
trace("Couldn't find maven-sling-plugin in build plugins for project {0}, therefore not adding the sling bundle facets!", project.getName());
}
if (!isSupportingM2eIncrementalBuild(mavenProject, getLogger())) {
- markerManager.addMarker(configRequest.getPom(), MARKER_TYPE_BUNDLE_NOT_SUPPORTING_M2E,
+ markerManager.addMarker(pomFile, MARKER_TYPE_BUNDLE_NOT_SUPPORTING_M2E,
"Missing m2e incremental build support for generating the bundle manifest, component descriptions and metatype resources. Please use the provided Quick Fixes on this issue to resolve this.",
-1,
IMarker.SEVERITY_ERROR);
diff --git a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/Activator.java b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/Activator.java
index b41cfa88..4ec13816 100644
--- a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/Activator.java
+++ b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/Activator.java
@@ -17,7 +17,6 @@
package org.apache.sling.ide.eclipse.m2e.internal;
import org.apache.sling.ide.artifacts.EmbeddedArtifactLocator;
-import org.apache.sling.ide.eclipse.core.ServiceUtil;
import org.apache.sling.ide.log.Logger;
import org.apache.sling.ide.osgi.OsgiClientFactory;
import org.eclipse.core.runtime.Plugin;
@@ -25,17 +24,12 @@ import org.eclipse.core.runtime.preferences.InstanceScope;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
public class Activator extends Plugin {
public static final String PLUGIN_ID = "org.apache.sling.ide.eclipse-m2e-ui";
public static Activator INSTANCE;
- private ServiceTracker<EmbeddedArtifactLocator, EmbeddedArtifactLocator> artifactLocator;
- private ServiceTracker<OsgiClientFactory, OsgiClientFactory> osgiClientFactory;
- private ServiceTracker<Logger, Logger> tracer;
-
/**
* Storage for preferences.
*/
@@ -50,42 +44,27 @@ public class Activator extends Plugin {
super.start(context);
INSTANCE = this;
-
- artifactLocator = new ServiceTracker<>(context, EmbeddedArtifactLocator.class, null);
- artifactLocator.open();
-
- osgiClientFactory = new ServiceTracker<>(context, OsgiClientFactory.class,
- null);
- osgiClientFactory.open();
-
- tracer = new ServiceTracker<>(context, Logger.class, null);
- tracer.open();
}
@Override
public void stop(BundleContext context) throws Exception {
INSTANCE = null;
- artifactLocator.close();
- tracer.close();
-
super.stop(context);
}
- public EmbeddedArtifactLocator getArtifactsLocator() {
-
- return ServiceUtil.getNotNull(artifactLocator);
+ public EmbeddedArtifactLocator getArtifactLocator() {
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getArtifactLocator();
}
public OsgiClientFactory getOsgiClientFactory() {
-
- return ServiceUtil.getNotNull(osgiClientFactory);
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getOsgiClientFactory();
}
public Logger getPluginLogger() {
- return ServiceUtil.getNotNull(tracer);
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getPluginLogger();
}
-
+
public IPreferenceStore getPreferenceStore() {
// Create the preference store lazily.
if (preferenceStore == null) {
diff --git a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/ContentPackageProjectConfigurator.java b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/ContentPackageProjectConfigurator.java
index 3e21b2c9..403ad59e 100644
--- a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/ContentPackageProjectConfigurator.java
+++ b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/ContentPackageProjectConfigurator.java
@@ -25,7 +25,7 @@ import java.util.TreeSet;
import org.apache.maven.project.MavenProject;
import org.apache.sling.ide.eclipse.core.ConfigurationHelper;
-import org.eclipse.aether.util.StringUtils;
+import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IProjectDescription;
@@ -68,16 +68,17 @@ public class ContentPackageProjectConfigurator extends AbstractProjectConfigurat
@Override
public void configure(ProjectConfigurationRequest configRequest, IProgressMonitor progressMonitor) throws CoreException {
- IProject project = configRequest.getProject();
+ IProject project = configRequest.mavenProjectFacade().getProject();
+ IFile pomFile = configRequest.mavenProjectFacade().getPom();
// delete all previous markers on this pom.xml set by any project configurator
- deleteMarkers(configRequest.getPom());
+ deleteMarkers(pomFile);
if (!getPreferences().isContentPackageProjectConfiguratorEnabled()) {
trace("M2E project configurator for packing type 'content-package' was disabled through preference.");
return;
}
- MavenProject mavenProject = configRequest.getMavenProject();
+ MavenProject mavenProject = configRequest.mavenProject();
boolean active = !"false".equalsIgnoreCase(mavenProject.getProperties().getProperty(M2E_ACTIVE));
if(!active) {
trace("M2E project configurator for packing type 'content-package' was disabled with Maven property {0}", M2E_ACTIVE);
@@ -92,7 +93,7 @@ public class ContentPackageProjectConfigurator extends AbstractProjectConfigurat
Optional<java.nio.file.Path> contentSyncPath = MavenProjectUtils.guessJcrRootFolder(mavenProject);
if (!contentSyncPath.isPresent()) {
// add marker
- addMarker(configRequest.getPom(), "Could not detect jcr_root path for this content package!", IMarker.SEVERITY_ERROR);
+ addMarker(pomFile, "Could not detect jcr_root path for this content package!", IMarker.SEVERITY_ERROR);
return;
}
@@ -158,7 +159,7 @@ public class ContentPackageProjectConfigurator extends AbstractProjectConfigurat
WtpProjectConfigurer(ProjectConfigurationRequest configRequest,
IProject project, String jcrRootPath) {
- this.configRequest = configRequest;
+ this.configRequest = configRequest;
this.project = project;
this.jcrRootPath = jcrRootPath;
}
@@ -168,24 +169,26 @@ public class ContentPackageProjectConfigurator extends AbstractProjectConfigurat
trace("Configuring content-package with WTP facets/natures");
- addNatures(project, getDefaultWtpNatures(), progressMonitor, configRequest.getPom());
+ addNatures(project, getDefaultWtpNatures(), progressMonitor, configRequest.mavenProjectFacade().getPom());
addWtpFacets(progressMonitor);
}
void addWtpFacets( IProgressMonitor progressMonitor) throws CoreException {
- MavenProject mavenProject = configRequest.getMavenProject();
- String javaFacetVersion;
- if ( !StringUtils.isEmpty(mavenProject.getProperties().getProperty(M2E_JAVA_FACET_VERSION))) {
- javaFacetVersion = mavenProject.getProperties().getProperty(M2E_JAVA_FACET_VERSION);
+ MavenProject mavenProject = configRequest.mavenProject();
+ final String javaFacetVersion;
+ String javaFacetVersionPropertyValue = mavenProject.getProperties().getProperty(M2E_JAVA_FACET_VERSION, "");
+ if (!javaFacetVersionPropertyValue.isBlank()) {
+ javaFacetVersion = javaFacetVersionPropertyValue;
trace("Configured Java facet version {0} from pom property {1}", javaFacetVersion, M2E_JAVA_FACET_VERSION);
} else {
javaFacetVersion = JavaFacetUtil.getCompilerLevel(project);
trace("Configured Java facet version {0} using JavaFacetUtil", javaFacetVersion);
}
- String webFacetVersion;
- if ( !StringUtils.isEmpty(mavenProject.getProperties().getProperty(M2E_WEB_FACET_VERSION))) {
- webFacetVersion = mavenProject.getProperties().getProperty(M2E_WEB_FACET_VERSION);
+ final String webFacetVersion;
+ String webFacetVersionPropertyValue = mavenProject.getProperties().getProperty(M2E_WEB_FACET_VERSION);
+ if (!webFacetVersionPropertyValue.isBlank()) {
+ webFacetVersion = webFacetVersionPropertyValue;
trace("Configured Web facet version {0} from pom property {1}", webFacetVersion, M2E_WEB_FACET_VERSION);
} else {
webFacetVersion = MavenProjectUtils.guessServletApiVersion(mavenProject);
diff --git a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/MavenBundlePluginProjectConfigurator.java b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/MavenBundlePluginProjectConfigurator.java
index 317c50c1..a9e47c0f 100644
--- a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/MavenBundlePluginProjectConfigurator.java
+++ b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/MavenBundlePluginProjectConfigurator.java
@@ -22,8 +22,6 @@ import org.apache.maven.model.PluginExecution;
import org.apache.maven.project.MavenProject;
import org.apache.sling.ide.log.Logger;
import org.codehaus.plexus.util.xml.Xpp3Dom;
-import org.eclipse.m2e.core.internal.lifecyclemapping.LifecycleMappingFactory;
-
public class MavenBundlePluginProjectConfigurator extends AbstractBundleProjectConfigurator {
@@ -32,11 +30,6 @@ public class MavenBundlePluginProjectConfigurator extends AbstractBundleProjectC
*/
private static final String MAVEN_BUNDLE_PLUGIN_KEY ="org.apache.felix:maven-bundle-plugin";
- /**
- * The configurator id used in <a href="https://github.com/tesla/m2eclipse-tycho/blob/master/org.sonatype.tycho.m2e/lifecycle-mapping-metadata.xml">m2e-tycho</a>.
- * @see <a href="https://github.com/tesla/m2eclipse-tycho">m2eclipse-tycho Github</a>
- */
- private static final String M2E_TYCHO_EXTENSION_PROJECT_CONFIGURATOR_ID = "maven-bundle-plugin";
public MavenBundlePluginProjectConfigurator() {
super(false); // this configurator is only bound to goal "bundle" which is not supposed to be executed in
@@ -50,12 +43,6 @@ public class MavenBundlePluginProjectConfigurator extends AbstractBundleProjectC
logger.warn("maven-bundle-plugin not configured!");
return false;
} else {
- // check if m2elipse-tycho is already installed (which supports incremental builds for "bundle" packagings
- if (LifecycleMappingFactory.createProjectConfigurator(M2E_TYCHO_EXTENSION_PROJECT_CONFIGURATOR_ID) != null) {
- logger.trace("Project configurator with id '" + M2E_TYCHO_EXTENSION_PROJECT_CONFIGURATOR_ID + "' found -> m2e-tycho installed.");
- return true;
- }
-
String version = bundlePlugin.getVersion();
if (version == null) {
logger.warn("Could not retrieve used version of maven-bundle-plugin!");
diff --git a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/SlingstartProjectConfigurator.java b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/SlingstartProjectConfigurator.java
index c73d6685..65b16c17 100644
--- a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/SlingstartProjectConfigurator.java
+++ b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/m2e/internal/SlingstartProjectConfigurator.java
@@ -32,8 +32,8 @@ public class SlingstartProjectConfigurator extends AbstractProjectConfigurator {
@Override
public void configure(ProjectConfigurationRequest request, IProgressMonitor monitor) throws CoreException {
- IProject project = request.getProject();
- Set<String> candidates = MavenProjectUtils.getModelDirectoryCandidateLocations(request.getMavenProject());
+ IProject project = request.mavenProjectFacade().getProject();
+ Set<String> candidates = MavenProjectUtils.getModelDirectoryCandidateLocations(request.mavenProject());
IPath modelsPath = null;
for ( String candidate : candidates ) {
@@ -46,7 +46,6 @@ public class SlingstartProjectConfigurator extends AbstractProjectConfigurator {
}
trace("Configuring project {0} with models path {1}", project.getName(), modelsPath);
-
- ConfigurationHelper.convertToLaunchpadProject(request.getProject(), modelsPath);
+ ConfigurationHelper.convertToLaunchpadProject(project, modelsPath);
}
}
diff --git a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/AbstractNewMavenBasedSlingApplicationWizard.java b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/AbstractNewMavenBasedSlingApplicationWizard.java
index a3e0d3e7..03a01430 100644
--- a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/AbstractNewMavenBasedSlingApplicationWizard.java
+++ b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/AbstractNewMavenBasedSlingApplicationWizard.java
@@ -18,6 +18,7 @@ package org.apache.sling.ide.eclipse.ui.wizards.np;
import static org.apache.sling.ide.eclipse.core.progress.ProgressUtils.advance;
+import java.util.Collection;
import java.util.List;
import java.util.Properties;
@@ -34,7 +35,12 @@ import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.m2e.core.MavenPlugin;
+import org.eclipse.m2e.core.project.IArchetype;
+import org.eclipse.m2e.core.project.IMavenProjectImportResult;
+import org.eclipse.m2e.core.project.MavenProjectInfo;
import org.eclipse.m2e.core.project.ProjectImportConfiguration;
+import org.eclipse.m2e.core.ui.internal.M2EUIPluginActivator;
+import org.eclipse.m2e.core.ui.internal.archetype.ArchetypePlugin;
import org.eclipse.wst.server.core.IServer;
public abstract class AbstractNewMavenBasedSlingApplicationWizard extends AbstractNewSlingApplicationWizard {
@@ -42,17 +48,17 @@ public abstract class AbstractNewMavenBasedSlingApplicationWizard extends Abstra
private ArchetypeParametersWizardPage archetypeParametersPage;
private static boolean isConfiguredWithBndPlugin(Model model) {
- for ( Plugin buildPlugin: model.getBuild().getPlugins() ) {
- if ( "biz.aQute.bnd".equals(buildPlugin.getGroupId())
- && "bnd-maven-plugin".equals(buildPlugin.getArtifactId()) ) {
- return true;
- }
- }
-
- return false;
- }
-
- public abstract boolean acceptsArchetype(Archetype archetype);
+ for (Plugin buildPlugin : model.getBuild().getPlugins()) {
+ if ("biz.aQute.bnd".equals(buildPlugin.getGroupId())
+ && "bnd-maven-plugin".equals(buildPlugin.getArtifactId())) {
+ return true;
+ }
+ }
+
+ return false;
+ }
+
+ public abstract boolean acceptsArchetype(Archetype archetype);
/**
* Constructor for AbstractNewMavenBasedSlingApplicationWizard.
@@ -62,25 +68,24 @@ public abstract class AbstractNewMavenBasedSlingApplicationWizard extends Abstra
setWindowTitle(doGetWindowTitle());
setNeedsProgressMonitor(true);
}
-
-
+
/**
* Adding the page to the wizard.
*/
@Override
- public void addPages() {
+ public void addPages() {
chooseArchetypePage = new ChooseArchetypeWizardPage(this);
addPage(chooseArchetypePage);
archetypeParametersPage = createArchetypeParametersWizardPage();
addPage(archetypeParametersPage);
- addPage(getSetupServerWizardPage());
+ addPage(getSetupServerWizardPage());
}
-
- protected ArchetypeParametersWizardPage createArchetypeParametersWizardPage() {
- return new ArchetypeParametersWizardPage(this);
- }
-
- public ChooseArchetypeWizardPage getChooseArchetypePage() {
+
+ protected ArchetypeParametersWizardPage createArchetypeParametersWizardPage() {
+ return new ArchetypeParametersWizardPage(this);
+ }
+
+ public ChooseArchetypeWizardPage getChooseArchetypePage() {
return chooseArchetypePage;
}
@@ -88,13 +93,12 @@ public abstract class AbstractNewMavenBasedSlingApplicationWizard extends Abstra
protected List<IProject> createProjects(IProgressMonitor monitor) throws CoreException {
IPath location = chooseArchetypePage.getLocation();
- Archetype archetype = chooseArchetypePage.getSelectedArchetype();
+ final Archetype archetype = chooseArchetypePage.getSelectedArchetype();
String groupId = archetypeParametersPage.getGroupId();
String artifactId = archetypeParametersPage.getArtifactId();
String version = archetypeParametersPage.getVersion();
String javaPackage = archetypeParametersPage.getJavaPackage();
Properties properties = archetypeParametersPage.getProperties();
- ProjectImportConfiguration configuration = new ProjectImportConfiguration();
IProject existingProject = ResourcesPlugin.getWorkspace().getRoot().getProject(artifactId);
if (existingProject!=null && existingProject.exists()) {
@@ -103,69 +107,92 @@ public abstract class AbstractNewMavenBasedSlingApplicationWizard extends Abstra
advance(monitor, 1);
- List<IProject> projects = MavenPlugin.getProjectConfigurationManager().createArchetypeProjects(location,
- archetype, groupId, artifactId, version, javaPackage, properties, configuration,
+ // TODO: depends on https://github.com/eclipse-m2e/m2e-core/issues/921
+ IArchetype m2eArchetype = new IArchetype() {
+
+ @Override
+ public String getGroupId() {
+ return archetype.getGroupId();
+ }
+
+ @Override
+ public String getArtifactId() {
+ return archetype.getArtifactId();
+ }
+
+ @Override
+ public String getVersion() {
+ return archetype.getVersion();
+ }
+ };
+ // rely on internal API, until https://github.com/eclipse-m2e/m2e-core/issues/921 is solved
+ ArchetypePlugin archetypeManager = M2EUIPluginActivator.getDefault().getArchetypePlugin();
+ Collection<MavenProjectInfo> projects = archetypeManager.getGenerator().createArchetypeProjects(location,
+ m2eArchetype, groupId, artifactId, version, javaPackage, properties, false,
new NullProgressMonitor());
monitor.worked(3);
- return projects;
+ return MavenPlugin.getProjectConfigurationManager()
+ .importProjects(projects, new ProjectImportConfiguration(), null, monitor)
+ .stream().filter(r -> r.getProject() != null && r.getProject().exists())
+ .map(IMavenProjectImportResult::getProject).toList();
}
- @Override
- protected Projects configureCreatedProjects(List<IProject> createdProjects, IProgressMonitor monitor)
- throws CoreException {
-
- Projects projects = new Projects();
-
- for (IProject project : createdProjects) {
- IFile pomFile = project.getFile("pom.xml");
- if (!pomFile.exists()) {
- // then ignore this project - we only deal with maven projects
- continue;
- }
- final Model model = MavenPlugin.getMavenModelManager().readMavenModel(pomFile);
- final String packaging = model.getPackaging();
-
- if ("content-package".equals(packaging)) {
- projects.getContentProjects().add(project);
- } else if ("bundle".equals(packaging) || isConfiguredWithBndPlugin(model)) {
- projects.getBundleProjects().add(project);
- } else if ("pom".equals(packaging)) {
- if (projects.getReactorProject() == null) {
- projects.setReactorProject(project);
- } else {
- IPath currLocation = project.getFullPath();
- IPath prevLocation = projects.getReactorProject().getFullPath();
- if (currLocation.isPrefixOf(prevLocation)) {
- // assume reactor is up in the folder structure
- projects.setReactorProject(project);
- }
- }
- }
- }
-
- advance(monitor, 1);
-
- for (IProject contentProject : projects.getContentProjects()) {
- configureContentProject(contentProject, createdProjects, monitor);
- }
- for (IProject bundleProject : projects.getBundleProjects()) {
- configureBundleProject(bundleProject, createdProjects, monitor);
- }
-
- if (projects.getReactorProject() != null) {
- configureReactorProject(projects.getReactorProject(), monitor);
- advance(monitor, 1);
- }
-
- IServer server = getSetupServerWizardPage().getOrCreateServer(monitor);
- advance(monitor, 1);
-
- finishConfiguration(createdProjects, server, monitor);
- advance(monitor, 1);
-
- return projects;
- }
+ @Override
+ protected Projects configureCreatedProjects(List<IProject> createdProjects, IProgressMonitor monitor)
+ throws CoreException {
+
+ Projects projects = new Projects();
+
+ for (IProject project : createdProjects) {
+ IFile pomFile = project.getFile("pom.xml");
+ if (!pomFile.exists()) {
+ // then ignore this project - we only deal with maven projects
+ continue;
+ }
+ final Model model = MavenPlugin.getMavenModelManager().readMavenModel(pomFile);
+ final String packaging = model.getPackaging();
+
+ if ("content-package".equals(packaging)) {
+ projects.getContentProjects().add(project);
+ } else if ("bundle".equals(packaging) || isConfiguredWithBndPlugin(model)) {
+ projects.getBundleProjects().add(project);
+ } else if ("pom".equals(packaging)) {
+ if (projects.getReactorProject() == null) {
+ projects.setReactorProject(project);
+ } else {
+ IPath currLocation = project.getFullPath();
+ IPath prevLocation = projects.getReactorProject().getFullPath();
+ if (currLocation.isPrefixOf(prevLocation)) {
+ // assume reactor is up in the folder structure
+ projects.setReactorProject(project);
+ }
+ }
+ }
+ }
+
+ advance(monitor, 1);
+
+ for (IProject contentProject : projects.getContentProjects()) {
+ configureContentProject(contentProject, createdProjects, monitor);
+ }
+ for (IProject bundleProject : projects.getBundleProjects()) {
+ configureBundleProject(bundleProject, createdProjects, monitor);
+ }
+
+ if (projects.getReactorProject() != null) {
+ configureReactorProject(projects.getReactorProject(), monitor);
+ advance(monitor, 1);
+ }
+
+ IServer server = getSetupServerWizardPage().getOrCreateServer(monitor);
+ advance(monitor, 1);
+
+ finishConfiguration(createdProjects, server, monitor);
+ advance(monitor, 1);
+
+ return projects;
+ }
}
\ No newline at end of file
diff --git a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/ArchetypeParametersWizardPage.java b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/ArchetypeParametersWizardPage.java
index 1623515c..ab74636b 100644
--- a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/ArchetypeParametersWizardPage.java
+++ b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/ArchetypeParametersWizardPage.java
@@ -23,7 +23,6 @@ import java.util.StringTokenizer;
import org.apache.maven.archetype.catalog.Archetype;
import org.apache.maven.archetype.metadata.RequiredProperty;
-import org.apache.maven.artifact.repository.ArtifactRepository;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.jface.dialogs.IDialogPage;
@@ -39,8 +38,9 @@ import org.eclipse.jface.viewers.TableViewerEditor;
import org.eclipse.jface.viewers.TableViewerFocusCellManager;
import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.m2e.core.internal.MavenPluginActivator;
-import org.eclipse.m2e.core.internal.archetype.ArchetypeManager;
+import org.eclipse.m2e.core.ui.internal.M2EUIPluginActivator;
+import org.eclipse.m2e.core.ui.internal.archetype.ArchetypePlugin;
+import org.eclipse.m2e.core.ui.internal.archetype.MavenArchetype;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.KeyAdapter;
import org.eclipse.swt.events.KeyEvent;
@@ -270,9 +270,10 @@ public class ArchetypeParametersWizardPage extends WizardPage {
}
try {
- ArchetypeManager archetypeManager = MavenPluginActivator.getDefault().getArchetypeManager();
- ArtifactRepository remoteArchetypeRepository = archetypeManager.getArchetypeRepository(archetype);
- properties = (List<RequiredProperty>) archetypeManager.getRequiredProperties(archetype, remoteArchetypeRepository, null);
+ // rely on internal API, until https://github.com/eclipse-m2e/m2e-core/issues/921 is solved
+ ArchetypePlugin archetypeManager = M2EUIPluginActivator.getDefault().getArchetypePlugin();
+ MavenArchetype mavenArchetype = new MavenArchetype(archetype);
+ properties = (List<RequiredProperty>) archetypeManager.getRequiredProperties(mavenArchetype, null);
Table table = propertiesViewer.getTable();
table.setItemCount(properties.size());
diff --git a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/ChooseArchetypeWizardPage.java b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/ChooseArchetypeWizardPage.java
index 20f41b4e..31b996f3 100644
--- a/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/ChooseArchetypeWizardPage.java
+++ b/eclipse/eclipse-m2e-ui/src/org/apache/sling/ide/eclipse/ui/wizards/np/ChooseArchetypeWizardPage.java
@@ -34,16 +34,12 @@ import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.wizard.WizardPage;
-import org.eclipse.m2e.core.MavenPlugin;
-import org.eclipse.m2e.core.internal.MavenPluginActivator;
-import org.eclipse.m2e.core.internal.archetype.ArchetypeCatalogFactory;
-import org.eclipse.m2e.core.internal.archetype.ArchetypeManager;
-import org.eclipse.m2e.core.internal.index.IndexListener;
-import org.eclipse.m2e.core.repository.IRepository;
+import org.eclipse.m2e.core.ui.internal.M2EUIPluginActivator;
+import org.eclipse.m2e.core.ui.internal.archetype.ArchetypeCatalogFactory;
+import org.eclipse.m2e.core.ui.internal.archetype.ArchetypePlugin;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
@@ -61,7 +57,7 @@ import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
@SuppressWarnings("restriction")
-public class ChooseArchetypeWizardPage extends WizardPage implements IndexListener {
+public class ChooseArchetypeWizardPage extends WizardPage {
static final Comparator<String> ARTIFACT_KEY_COMPARATOR = new Comparator<String>() {
@Override
@@ -209,15 +205,12 @@ public class ChooseArchetypeWizardPage extends WizardPage implements IndexListen
setPageComplete(false);
- MavenPlugin.getIndexManager().addIndexListener(this);
-
setControl(container);
}
@Override
public void dispose() {
- MavenPlugin.getIndexManager().removeIndexListener(this);
super.dispose();
}
@@ -297,43 +290,6 @@ public class ChooseArchetypeWizardPage extends WizardPage implements IndexListen
}
}
- @Override
- public void indexAdded(IRepository repository) {
-
- }
-
- @Override
- public void indexChanged(IRepository repository) {
-
- Activator.getDefault().getPluginLogger()
- .trace("Reloading archetypes as index for repository {0} has changed", repository);
-
- try {
- new RefreshArchetypesRunnable().run(new NullProgressMonitor());
- } catch (final InvocationTargetException e) {
- Display.getDefault().asyncExec(new Runnable() {
- @Override
- public void run() {
- if (isCurrentPage()) {
- setErrorMessage("Failed refreshing archetypes : " + e.getCause().getMessage());
- }
- }
- });
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- }
- }
-
- @Override
- public void indexRemoved(IRepository repository) {
-
- }
-
- @Override
- public void indexUpdating(IRepository repository) {
-
- }
-
class RefreshArchetypesRunnable implements IRunnableWithProgress {
@Override
public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
@@ -341,10 +297,11 @@ public class ChooseArchetypeWizardPage extends WizardPage implements IndexListen
Logger logger = Activator.getDefault().getPluginLogger();
monitor.beginTask("Discovering archetypes...", 5);
- ArchetypeManager manager = MavenPluginActivator.getDefault().getArchetypeManager();
+ // rely on internal API, until https://github.com/eclipse-m2e/m2e-core/issues/921 is solved
+ ArchetypePlugin archetypeManager = M2EUIPluginActivator.getDefault().getArchetypePlugin();
monitor.worked(1);
- Collection<ArchetypeCatalogFactory> archetypeCatalogs = manager.getArchetypeCatalogs();
+ Collection<ArchetypeCatalogFactory> archetypeCatalogs = archetypeManager.getActiveArchetypeCatalogs();
monitor.worked(2);
ArrayList<Archetype> candidates = new ArrayList<>();
for (ArchetypeCatalogFactory catalogFactory : archetypeCatalogs) {
diff --git a/eclipse/eclipse-sightly-core/src/org/apache/sling/ide/eclipse/sightly/internal/Activator.java b/eclipse/eclipse-sightly-core/src/org/apache/sling/ide/eclipse/sightly/internal/Activator.java
index 74d8a79d..4ee47158 100644
--- a/eclipse/eclipse-sightly-core/src/org/apache/sling/ide/eclipse/sightly/internal/Activator.java
+++ b/eclipse/eclipse-sightly-core/src/org/apache/sling/ide/eclipse/sightly/internal/Activator.java
@@ -17,10 +17,8 @@
package org.apache.sling.ide.eclipse.sightly.internal;
import org.apache.sling.ide.log.Logger;
-import org.apache.sling.ide.eclipse.core.ServiceUtil;
import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
public class Activator extends Plugin {
@@ -30,14 +28,9 @@ public class Activator extends Plugin {
// The shared instance
private static Activator plugin;
- private ServiceTracker<Logger, Logger> loggerTracker;
-
public void start(BundleContext context) throws Exception {
- loggerTracker = new ServiceTracker<>(context, Logger.class, null);
- loggerTracker.open();
-
super.start(context);
plugin = this;
}
@@ -50,8 +43,6 @@ public class Activator extends Plugin {
plugin = null;
- loggerTracker.close();
-
super.stop(context);
}
@@ -65,8 +56,7 @@ public class Activator extends Plugin {
}
public Logger getLogger() {
-
- return ServiceUtil.getNotNull(loggerTracker);
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getPluginLogger();
}
}
diff --git a/eclipse/eclipse-sightly-ui/META-INF/MANIFEST.MF b/eclipse/eclipse-sightly-ui/META-INF/MANIFEST.MF
index dc541400..80adde30 100644
--- a/eclipse/eclipse-sightly-ui/META-INF/MANIFEST.MF
+++ b/eclipse/eclipse-sightly-ui/META-INF/MANIFEST.MF
@@ -5,7 +5,7 @@ Bundle-Name: Sling IDE Eclipse Sightly UI
Bundle-SymbolicName: org.apache.sling.ide.eclipse-sightly-ui;singleton:=true
Bundle-Version: 1.2.3.qualifier
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.jface,
diff --git a/eclipse/eclipse-test/META-INF/MANIFEST.MF b/eclipse/eclipse-test/META-INF/MANIFEST.MF
index 15aa3ffd..4a0b99a9 100644
--- a/eclipse/eclipse-test/META-INF/MANIFEST.MF
+++ b/eclipse/eclipse-test/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@ Bundle-ManifestVersion: 2
Bundle-Name: Sling IDE Tools: Eclipse Tests
Bundle-SymbolicName: org.apache.sling.ide.eclipse-test
Bundle-Version: 1.2.3.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.junit,
org.eclipse.core.runtime,
org.eclipse.core.resources,
diff --git a/eclipse/eclipse-test/pom.xml b/eclipse/eclipse-test/pom.xml
index dce6376d..b6f2e072 100644
--- a/eclipse/eclipse-test/pom.xml
+++ b/eclipse/eclipse-test/pom.xml
@@ -42,16 +42,6 @@
<configuration>
<dependency-resolution>
<extraRequirements>
- <requirement>
- <type>eclipse-plugin</type>
- <id>org.eclipse.equinox.event</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- <requirement>
- <type>eclipse-plugin</type>
- <id>org.eclipse.equinox.ds</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
<requirement>
<type>eclipse-feature</type>
<id>org.apache.sling.ide.feature</id>
@@ -62,16 +52,6 @@
<id>org.apache.sling.ide.sightly-feature</id>
<versionRange>0.0.0</versionRange>
</requirement>
- <requirement>
- <type>eclipse-plugin</type>
- <id>org.slf4j.binding.simple</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
- <requirement>
- <type>eclipse-plugin</type>
- <id>org.slf4j.apis.log4j</id>
- <versionRange>0.0.0</versionRange>
- </requirement>
</extraRequirements>
</dependency-resolution>
</configuration>
@@ -83,7 +63,7 @@
<configuration>
<useUIHarness>true</useUIHarness>
<useUIThread>false</useUIThread>
- <argLine>-XX:MaxPermSize=512m ${ui.test.args}</argLine>
+ <argLine>${ui.test.args}</argLine>
<systemProperties>
<launchpad.http.port>${http.port}</launchpad.http.port>
<org.slf4j.simpleLogger.showDateTime>true</org.slf4j.simpleLogger.showDateTime>
@@ -98,7 +78,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
- <version>1.7</version>
+ <version>3.3.0</version>
<executions>
<execution>
<id>reserve-network-port</id>
@@ -114,37 +94,42 @@
</execution>
</executions>
</plugin>
+ <!-- launch the Sling instances to test; only oak-tar -->
<plugin>
<groupId>org.apache.sling</groupId>
- <artifactId>slingstart-maven-plugin</artifactId>
- <version>1.8.2</version>
- <extensions>true</extensions>
+ <artifactId>feature-launcher-maven-plugin</artifactId>
+ <version>0.1.2</version>
+ <configuration>
+ <!-- newer versions don't work due to https://issues.apache.org/jira/browse/SLING-11158 -->
+ <featureLauncherVersion>1.1.26</featureLauncherVersion>
+ <launches>
+ <launch>
+ <id>sling-starter-oak-tar</id>
+ <!-- launch the regular Starter distribution (based on Oak with Segment Node Store) -->
+ <feature>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>org.apache.sling.starter</artifactId>
+ <version>12</version>
+ <classifier>oak_tar</classifier>
+ <type>slingosgifeature</type>
+ </feature>
+ <launcherArguments>
+ <frameworkProperties>
+ <org.osgi.service.http.port>${http.port}</org.osgi.service.http.port>
+ </frameworkProperties>
+ </launcherArguments>
+ <startTimeoutSeconds>${startTimeoutSeconds}</startTimeoutSeconds>
+ </launch>
+ </launches>
+ </configuration>
<executions>
<execution>
- <id>start-container</id>
<goals>
<goal>start</goal>
- </goals>
- </execution>
- <execution>
- <id>stop-container</id>
- <goals>
<goal>stop</goal>
</goals>
</execution>
</executions>
- <configuration>
- <servers>
- <server>
- <port>${http.port}</port>
- </server>
- </servers>
- <launchpadDependency>
- <groupId>org.apache.sling</groupId>
- <artifactId>org.apache.sling.starter</artifactId>
- <version>11</version>
- </launchpadDependency>
- </configuration>
</plugin>
</plugins>
</build>
diff --git a/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/Activator.java b/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/Activator.java
index 60c983e6..3e809c84 100644
--- a/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/Activator.java
+++ b/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/Activator.java
@@ -17,53 +17,26 @@
package org.apache.sling.ide.test.impl;
import org.apache.sling.ide.artifacts.EmbeddedArtifactLocator;
-import org.apache.sling.ide.eclipse.core.ServiceUtil;
import org.apache.sling.ide.osgi.OsgiClientFactory;
import org.apache.sling.ide.serialization.SerializationManager;
import org.apache.sling.ide.sync.content.SyncCommandFactory;
import org.eclipse.core.runtime.Plugin;
import org.osgi.framework.BundleContext;
-import org.osgi.util.tracker.ServiceTracker;
public class Activator extends Plugin {
private static Activator INSTANCE;
- private ServiceTracker<EmbeddedArtifactLocator, EmbeddedArtifactLocator> artifactLocator;
-
- private ServiceTracker<OsgiClientFactory, OsgiClientFactory> osgiClientFactory;
-
- private ServiceTracker<SerializationManager, SerializationManager> serializationManager;
-
- private ServiceTracker <SyncCommandFactory, SyncCommandFactory> commandFactory;
-
@Override
public void start(BundleContext context) throws Exception {
super.start(context);
- artifactLocator = new ServiceTracker<>(context, EmbeddedArtifactLocator.class, null);
- artifactLocator.open();
-
- osgiClientFactory = new ServiceTracker<>(context, OsgiClientFactory.class, null);
- osgiClientFactory.open();
-
- serializationManager = new ServiceTracker<>(context, SerializationManager.class, null);
- serializationManager.open();
-
- commandFactory = new ServiceTracker<>(context, SyncCommandFactory.class, null);
- commandFactory.open();
-
INSTANCE = this;
}
@Override
public void stop(BundleContext context) throws Exception {
- artifactLocator.close();
- osgiClientFactory.close();
- serializationManager.close();
- commandFactory.close();
-
INSTANCE = null;
super.stop(context);
@@ -73,22 +46,21 @@ public class Activator extends Plugin {
return INSTANCE;
}
- public EmbeddedArtifactLocator getArtifactLocator() {
- return ServiceUtil.getNotNull(artifactLocator);
+ public SerializationManager getSerializationManager() {
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getSerializationManager();
}
- public OsgiClientFactory getOsgiClientFactory() {
-
- return ServiceUtil.getNotNull(osgiClientFactory);
+ public EmbeddedArtifactLocator getArtifactLocator() {
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getArtifactLocator();
}
- public SerializationManager getSerializationManager() {
-
- return ServiceUtil.getNotNull(serializationManager);
+ public OsgiClientFactory getOsgiClientFactory() {
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getOsgiClientFactory();
}
-
+
public SyncCommandFactory getCommandFactory() {
- return ServiceUtil.getNotNull(commandFactory);
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getCommandFactory();
}
+
}
diff --git a/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/ContentDeploymentTest.java b/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/ContentDeploymentTest.java
index 68832cc7..215d9952 100644
--- a/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/ContentDeploymentTest.java
+++ b/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/ContentDeploymentTest.java
@@ -27,6 +27,7 @@ import static org.hamcrest.CoreMatchers.nullValue;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.nio.charset.StandardCharsets;
import java.util.concurrent.Callable;
import javax.jcr.Node;
@@ -157,7 +158,7 @@ public class ContentDeploymentTest {
// create filter.xml
project.createVltFilterWithRoots("/test");
project.createOrUpdateFile(Path.fromPortableString("jcr_root/test/hello.txt"), new ByteArrayInputStream(
- "hello, world".getBytes()));
+ "hello, world".getBytes(StandardCharsets.US_ASCII)));
// verifications
final RepositoryAccessor repo = new RepositoryAccessor(config);
@@ -167,7 +168,7 @@ public class ContentDeploymentTest {
// change node type to sling:Folder
InputStream contentXml = getClass().getResourceAsStream("sling-folder-nodetype.xml");
project.createOrUpdateFile(Path.fromPortableString("jcr_root/test/.content.xml"), contentXml);
-
+
// verifications (2)
assertThatNode(repo, poller, "/test",
allOf(hasPath("/test"), hasPrimaryType("sling:Folder"), hasChildrenCount(1)));
diff --git a/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/ui/sightly/SightlyAutocompletionTest.java b/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/ui/sightly/SightlyAutocompletionTest.java
index 60263e2a..151a838d 100644
--- a/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/ui/sightly/SightlyAutocompletionTest.java
+++ b/eclipse/eclipse-test/src/org/apache/sling/ide/test/impl/ui/sightly/SightlyAutocompletionTest.java
@@ -35,6 +35,7 @@ import org.eclipse.swtbot.eclipse.finder.SWTWorkbenchBot;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotEclipseEditor;
import org.eclipse.swtbot.eclipse.finder.widgets.SWTBotView;
import org.eclipse.swtbot.swt.finder.junit.SWTBotJunit4ClassRunner;
+import org.eclipse.swtbot.swt.finder.utils.SWTBotPreferences;
import org.eclipse.swtbot.swt.finder.waits.DefaultCondition;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTree;
import org.eclipse.swtbot.swt.finder.widgets.SWTBotTreeItem;
@@ -57,6 +58,8 @@ public class SightlyAutocompletionTest {
if ( bot.activeView().getTitle().equals("Welcome") ) {
bot.activeView().close();
}
+ // to prevent issues due to missing keyboard layouts: https://wiki.eclipse.org/SWTBot/Keyboard_Layouts
+ SWTBotPreferences.KEYBOARD_LAYOUT = "EN_US";
}
@Test
@@ -149,12 +152,13 @@ public class SightlyAutocompletionTest {
prepareEditor(editor);
// gather proposals
- List<String> proposals = editor.getAutoCompleteProposals("");
-
- // close editor, otherwise cleanup can hang due to the dialog
- editor.saveAndClose();
-
- return proposals;
+ try {
+ List<String> proposals = editor.getAutoCompleteProposals("");
+ return proposals;
+ } finally {
+ // close editor, otherwise cleanup can hang due to the dialog
+ editor.saveAndClose();
+ }
}
/**
diff --git a/eclipse/eclipse-ui/META-INF/MANIFEST.MF b/eclipse/eclipse-ui/META-INF/MANIFEST.MF
index 4d5a6143..51b3b758 100644
--- a/eclipse/eclipse-ui/META-INF/MANIFEST.MF
+++ b/eclipse/eclipse-ui/META-INF/MANIFEST.MF
@@ -5,16 +5,11 @@ Bundle-Name: Sling IDE Eclipse UI
Bundle-SymbolicName: org.apache.sling.ide.eclipse-ui;singleton:=true
Bundle-Activator: org.apache.sling.ide.eclipse.ui.internal.Activator
Bundle-Version: 1.2.3.qualifier
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-17
Bundle-ClassPath: .,
lib/decentxml-1.4.jar
Import-Package: javax.jcr,
javax.jcr.nodetype,
- org.apache.commons.httpclient;version="3.1.0",
- org.apache.commons.httpclient.auth;version="3.1.0",
- org.apache.commons.httpclient.methods;version="3.1.0",
- org.apache.commons.httpclient.methods.multipart;version="3.1.0",
- org.apache.commons.httpclient.params;version="3.1.0",
org.apache.commons.io;version="2.0.1",
org.apache.jackrabbit.util,
org.apache.jackrabbit.vault.fs.io;version="2.4.0",
@@ -27,36 +22,26 @@ Import-Package: javax.jcr,
org.apache.sling.ide.serialization,
org.apache.sling.ide.sync.content,
org.apache.sling.ide.transport,
- org.apache.sling.ide.util,
org.eclipse.core.commands,
- org.eclipse.core.commands.operations,
org.eclipse.core.expressions,
org.eclipse.core.resources,
org.eclipse.core.resources.mapping,
org.eclipse.core.runtime;version="3.4.0",
org.eclipse.core.runtime.jobs,
org.eclipse.debug.core,
- org.eclipse.debug.core.model,
org.eclipse.debug.internal.ui,
- org.eclipse.debug.internal.ui.actions,
org.eclipse.debug.ui,
org.eclipse.debug.ui.sourcelookup,
org.eclipse.jdt.core,
org.eclipse.jdt.debug.ui.launchConfigurations,
- org.eclipse.jdt.internal.ui.javaeditor,
- org.eclipse.jdt.launching,
- org.eclipse.jdt.ui.actions,
org.eclipse.jface.action,
org.eclipse.jface.dialogs,
org.eclipse.jface.operation,
org.eclipse.jface.preference,
org.eclipse.jface.resource,
- org.eclipse.jface.text,
org.eclipse.jface.viewers,
org.eclipse.jface.window,
org.eclipse.jface.wizard,
- org.eclipse.jst.common.project.facet.core,
- org.eclipse.jst.server.core,
org.eclipse.swt,
org.eclipse.swt.events,
org.eclipse.swt.layout,
@@ -66,34 +51,23 @@ Import-Package: javax.jcr,
org.eclipse.ui.dialogs,
org.eclipse.ui.forms,
org.eclipse.ui.forms.widgets,
- org.eclipse.wst.common.project.facet.core,
org.eclipse.wst.server.core,
- org.eclipse.wst.server.core.model,
- org.eclipse.wst.server.core.util,
org.eclipse.wst.server.ui,
org.eclipse.wst.server.ui.editor,
org.eclipse.wst.server.ui.internal,
org.eclipse.wst.server.ui.wizard,
org.osgi.framework,
- org.osgi.service.component,
org.osgi.service.event;version="1.3.0",
org.osgi.util.tracker;version="1.5.0"
Bundle-ActivationPolicy: lazy
-Require-Bundle: org.eclipse.wst.common.project.facet.ui,
- org.eclipse.ui.navigator;bundle-version="3.5.101",
- org.eclipse.ui.views;bundle-version="3.6.0",
- org.eclipse.ui,
+Require-Bundle: org.eclipse.ui.navigator;bundle-version="3.5.101",
org.eclipse.core.resources,
org.eclipse.ui.ide,
org.eclipse.core.runtime,
org.eclipse.ui.console,
org.eclipse.jdt.ui,
org.apache.sling.ide.eclipse-core,
- org.eclipse.ui.views.properties.tabbed,
- org.eclipse.ui.workbench,
- org.eclipse.jface.text,
- org.eclipse.ui.editors,
- org.eclipse.swt
+ org.eclipse.ui.views.properties.tabbed
Service-Component: OSGI-INF/*.xml
Export-Package: org.apache.sling.ide.eclipse.ui,
org.apache.sling.ide.eclipse.ui.browser,
diff --git a/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeFormatHandler.java b/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeFormatHandler.java
index 043c3242..36f20209 100644
--- a/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeFormatHandler.java
+++ b/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNodeFormatHandler.java
@@ -16,12 +16,9 @@
*/
package org.apache.sling.ide.eclipse.ui.actions;
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
import java.io.IOException;
import org.apache.jackrabbit.vault.fs.io.DocViewFormat;
-import org.apache.jackrabbit.vault.util.xml.serialize.XMLSerializer;
import org.apache.sling.ide.eclipse.ui.internal.Activator;
import org.apache.sling.ide.eclipse.ui.internal.SelectionUtils;
import org.apache.sling.ide.eclipse.ui.nav.model.JcrNode;
@@ -38,10 +35,6 @@ import org.eclipse.core.runtime.jobs.Job;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.osgi.util.NLS;
import org.eclipse.ui.handlers.HandlerUtil;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.XMLReaderFactory;
public class JcrNodeFormatHandler extends AbstractHandler {
@@ -66,15 +59,11 @@ public class JcrNodeFormatHandler extends AbstractHandler {
@Override
protected IStatus run(IProgressMonitor monitor) {
try {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- XMLSerializer serializer = new XMLSerializer(out, new DocViewFormat().getXmlOutputFormat());
- XMLReader reader = XMLReaderFactory.createXMLReader();
- reader.setContentHandler(serializer);
- reader.setDTDHandler(serializer);
- reader.parse(new InputSource(resource.getContents()));
-
- resource.setContents(new ByteArrayInputStream(out.toByteArray()), false, true, monitor);
- } catch (SAXException | IOException | CoreException e) {
+ DocViewFormat docViewFormat = new DocViewFormat();
+ if (docViewFormat.format(resource.getFullPath().toFile(), true)) {
+ resource.refreshLocal(0, monitor);
+ }
+ } catch (IOException | CoreException e) {
return new Status(IStatus.ERROR, Activator.PLUGIN_ID, NLS.bind("Failed formatting {0}", resourcePath), e);
}
diff --git a/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/Activator.java b/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/Activator.java
index 0fdec2dd..90f28033 100644
--- a/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/Activator.java
+++ b/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/internal/Activator.java
@@ -18,7 +18,6 @@ package org.apache.sling.ide.eclipse.ui.internal;
import org.apache.sling.ide.artifacts.EmbeddedArtifactLocator;
import org.apache.sling.ide.eclipse.core.Preferences;
-import org.apache.sling.ide.eclipse.core.ServiceUtil;
import org.apache.sling.ide.filter.FilterLocator;
import org.apache.sling.ide.log.Logger;
import org.apache.sling.ide.osgi.OsgiClientFactory;
@@ -30,20 +29,11 @@ import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.ui.preferences.ScopedPreferenceStore;
import org.osgi.framework.BundleContext;
import org.osgi.service.event.EventAdmin;
-import org.osgi.util.tracker.ServiceTracker;
public class Activator extends AbstractUIPlugin {
public static final String PLUGIN_ID = "org.apache.sling.ide.eclipse-core";
public static Activator INSTANCE;
-
- private ServiceTracker<SerializationManager, SerializationManager> serializationManager;
- private ServiceTracker<FilterLocator, FilterLocator> filterLocator;
- private ServiceTracker<EventAdmin, EventAdmin> eventAdmin;
- private ServiceTracker<EmbeddedArtifactLocator, EmbeddedArtifactLocator> artifactLocator;
- private ServiceTracker<OsgiClientFactory, OsgiClientFactory> osgiClientFactory;
- private ServiceTracker<Logger, Logger> tracer;
- private ServiceTracker<SyncCommandFactory, SyncCommandFactory> commandFactory;
private ScopedPreferenceStore preferenceStore;
@@ -58,73 +48,42 @@ public class Activator extends AbstractUIPlugin {
public void start(BundleContext context) throws Exception {
super.start(context);
- serializationManager = new ServiceTracker<>(context, SerializationManager.class, null);
- serializationManager.open();
-
- filterLocator = new ServiceTracker<>(context, FilterLocator.class, null);
- filterLocator.open();
-
- eventAdmin = new ServiceTracker<>(context, EventAdmin.class, null);
- eventAdmin.open();
-
- artifactLocator = new ServiceTracker<>(context,
- EmbeddedArtifactLocator.class, null);
- artifactLocator.open();
-
- osgiClientFactory = new ServiceTracker<>(context, OsgiClientFactory.class,
- null);
- osgiClientFactory.open();
-
- tracer = new ServiceTracker<>(context, Logger.class, null);
- tracer.open();
-
- commandFactory = new ServiceTracker<>(context, SyncCommandFactory.class, null);
- commandFactory.open();
-
INSTANCE = this;
}
@Override
public void stop(BundleContext context) throws Exception {
INSTANCE = null;
- serializationManager.close();
- filterLocator.close();
- eventAdmin.close();
- artifactLocator.close();
- osgiClientFactory.close();
- commandFactory.close();
- tracer.close();
super.stop(context);
}
public SerializationManager getSerializationManager() {
- return ServiceUtil.getNotNull(serializationManager);
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getSerializationManager();
}
public FilterLocator getFilterLocator() {
- return ServiceUtil.getNotNull(filterLocator);
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getFilterLocator();
}
public EventAdmin getEventAdmin() {
- return ServiceUtil.getNotNull(eventAdmin);
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getEventAdmin();
}
public EmbeddedArtifactLocator getArtifactLocator() {
-
- return ServiceUtil.getNotNull(artifactLocator);
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getArtifactLocator();
}
public OsgiClientFactory getOsgiClientFactory() {
- return ServiceUtil.getNotNull(osgiClientFactory);
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getOsgiClientFactory();
}
public Logger getPluginLogger() {
- return (Logger) ServiceUtil.getNotNull(tracer);
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getPluginLogger();
}
public SyncCommandFactory getCommandFactory() {
- return ServiceUtil.getNotNull(commandFactory);
+ return org.apache.sling.ide.eclipse.core.internal.Activator.getDefault().getCommandFactory();
}
@Override
diff --git a/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/DateTimeSupport.java b/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/DateTimeSupport.java
index ecda7c17..a236cc25 100644
--- a/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/DateTimeSupport.java
+++ b/eclipse/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/views/DateTimeSupport.java
@@ -16,12 +16,17 @@
*/
package org.apache.sling.ide.eclipse.ui.views;
-import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
-import javax.xml.bind.DatatypeConverter;
+import org.apache.jackrabbit.util.ISO8601;
+/**
+ * Converts between {@link Calendar} and {@link String} according to
+ * <a href="https://developer.adobe.com/experience-manager/reference-materials/spec/jcr/2.0/3_Repository_Model.html#3.6.4.3%20From%20DATE%20To">
+ * JCR Spec 2.0, Chapter 3.6.4</a>
+ *
+ */
public class DateTimeSupport {
public static Date parseAsDate(String vaultDateTime) {
@@ -29,7 +34,7 @@ public class DateTimeSupport {
}
public static Calendar parseAsCalendar(String vaultDateTime) {
- final Calendar result = DatatypeConverter.parseDateTime(vaultDateTime);
+ final Calendar result = ISO8601.parse(vaultDateTime);
return result;
}
@@ -40,12 +45,6 @@ public class DateTimeSupport {
}
public static String print(Calendar c) {
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS");
- String result = sdf.format(c.getTime());
- SimpleDateFormat timezone = new SimpleDateFormat("Z");
- String timezoneStr = timezone.format(c.getTime());
- //make it ISO_8601 conform
- timezoneStr = timezoneStr.substring(0, timezoneStr.length()-2) + ":" + timezoneStr.substring(timezoneStr.length()-2);
- return result+timezoneStr;
+ return ISO8601.format(c);
}
}
diff --git a/eclipse/feature/feature.xml b/eclipse/feature/feature.xml
index 675439b5..95dfd93d 100644
--- a/eclipse/feature/feature.xml
+++ b/eclipse/feature/feature.xml
@@ -254,7 +254,7 @@
unpack="false"/>
<plugin
- id="org.apache.sling.ide.vlt-wrapper"
+ id="org.apache.sling.ide.filevault.uber-jar"
download-size="0"
install-size="0"
version="0.0.0"
@@ -267,13 +267,6 @@
version="0.0.0"
unpack="false"/>
- <plugin
- id="org.apache.commons.collections"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
<plugin
id="org.apache.commons.httpclient"
download-size="0"
diff --git a/eclipse/p2update/pom.xml b/eclipse/p2update/pom.xml
index 33194b57..da391a69 100644
--- a/eclipse/p2update/pom.xml
+++ b/eclipse/p2update/pom.xml
@@ -48,7 +48,7 @@
<plugin>
<groupId>org.jboss.tools.tycho-plugins</groupId>
<artifactId>repository-utils</artifactId>
- <version>0.22.0</version>
+ <version>2.7.5</version>
<executions>
<execution>
<id>generate-facade</id>
@@ -68,8 +68,8 @@
</plugin>
<!-- the update site is not expected to contain legal artifacts -->
<plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>ianal-maven-plugin</artifactId>
+ <groupId>org.apache.geronimo.genesis.plugins</groupId>
+ <artifactId>tools-maven-plugin</artifactId>
<configuration>
<skip>true</skip>
</configuration>
diff --git a/eclipse/pom.xml b/eclipse/pom.xml
index a345c357..83308e5f 100644
--- a/eclipse/pom.xml
+++ b/eclipse/pom.xml
@@ -21,7 +21,7 @@
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
- <version>14</version>
+ <version>27</version>
</parent>
<groupId>org.apache.sling.ide</groupId>
<artifactId>sling-ide-tooling</artifactId>
@@ -79,9 +79,9 @@
<version>${tycho.version}</version>
</plugin>
<plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>ianal-maven-plugin</artifactId>
- <version>1.0-alpha-1</version>
+ <groupId>org.apache.geronimo.genesis.plugins</groupId>
+ <artifactId>tools-maven-plugin</artifactId>
+ <version>1.4</version>
<executions>
<execution>
<goals>
@@ -120,6 +120,7 @@
<!-- Jenkins Xvfb plugin -->
<exclude>.Xauthority-*</exclude>
+ <exclude>.*</exclude>
</excludes>
</configuration>
<executions>
@@ -134,15 +135,6 @@
</plugins>
<pluginManagement>
<plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.1</version>
- <configuration>
- <source>1.7</source>
- <target>1.7</target>
- </configuration>
- </plugin>
<!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself. -->
<!--
We embed some bundles that are not available on p2 update sites. To make the build seamless, we copy them early in the process.
@@ -181,26 +173,12 @@
</pluginManagement>
</build>
- <pluginRepositories>
- <pluginRepository>
- <id>jboss-public-repository-group</id>
- <name>JBoss Public Repository Group</name>
- <url>https://repository.jboss.org/nexus/content/groups/public/</url>
- </pluginRepository>
- </pluginRepositories>
-
- <repositories>
- <repository>
- <id>sling-ide-tooling-shared-local</id>
- <layout>p2</layout>
- <url>file:${basedir}/../../shared/p2/shared-repository/target/repository</url>
- </repository>
- </repositories>
-
-
<properties>
- <tycho.version>1.0.0</tycho.version>
+ <tycho.version>2.7.5</tycho.version>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ <minimalJavaBuildVersion>17</minimalJavaBuildVersion>
+ <maven.compiler.target>17</maven.compiler.target>
+ <maven.compiler.release>17</maven.compiler.release>
</properties>
<profiles>
diff --git a/eclipse/target-definition/README.md b/eclipse/target-definition/README.md
new file mode 100644
index 00000000..504b2fe0
--- /dev/null
+++ b/eclipse/target-definition/README.md
@@ -0,0 +1,7 @@
+# Apache Sling IDE Tools Target
+
+The target definition for Eclipse PDE/Tycho against which to build the Eclipse plugins.
+
+The target file references both Eclipse Plugins/Features from P2 repositories (standard Eclipse dependencies) as well as [Maven artifacts](<https://xn--lubisoft-0za.gmbh/en/articles/using-maven-artifacts-in-pde-rcp-and-tycho-builds/>) for custom OSGi bundles.
+
+3rd party dependencies are referenced from [Eclipse Orbit](https://www.eclipse.org/orbit/) (to reuse bundle versions also used by other Eclipse plugins).
diff --git a/eclipse/target-definition/Sling IDE Tooling.launch b/eclipse/target-definition/Sling IDE Tooling.launch
index 94fb6ab7..1d2d4bfb 100644
--- a/eclipse/target-definition/Sling IDE Tooling.launch
+++ b/eclipse/target-definition/Sling IDE Tooling.launch
@@ -1,392 +1,566 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.pde.ui.RuntimeWorkbench">
-<setAttribute key="additional_plugins"/>
-<booleanAttribute key="append.args" value="true"/>
-<booleanAttribute key="askclear" value="false"/>
-<booleanAttribute key="automaticAdd" value="false"/>
-<booleanAttribute key="automaticValidate" value="false"/>
-<stringAttribute key="bootstrap" value=""/>
-<stringAttribute key="checked" value="[NONE]"/>
-<booleanAttribute key="clearConfig" value="false"/>
-<booleanAttribute key="clearws" value="true"/>
-<booleanAttribute key="clearwslog" value="true"/>
-<stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/Sling IDE Tooling"/>
-<booleanAttribute key="default" value="true"/>
-<stringAttribute key="featureDefaultLocation" value="workspace"/>
-<stringAttribute key="featurePluginResolution" value="workspace"/>
-<booleanAttribute key="includeOptional" value="true"/>
-<stringAttribute key="location" value="${workspace_loc}/../runtime-sling-ide-tooling"/>
-<listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
-<listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7" path="1" type="4"/> "/>
-</listAttribute>
-<booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
-<stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -nosplash"/>
-<stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx768m -XX:MaxPermSize=256m"/>
-<stringAttribute key="pde.version" value="3.3"/>
-<stringAttribute key="product" value="org.eclipse.platform.ide"/>
-<setAttribute key="selected_features"/>
-<stringAttribute key="selected_target_plugins" value="com.ibm.icu@default:default,com.ning.async-http-client@default:default,javax.annotation@default:default,javax.inject@default:default,javax.servlet@default:default,javax.xml@default:default,org.apache.batik.css@default:default,org.apache.batik.util.gui@default:default,org.apache.batik.util@default:default,org.apache.commons.codec@default:default,org.apache.commons.collections@default:default,org.apache.commons.httpclient@default:defaul [...]
-<stringAttribute key="selected_workspace_plugins" value="org.apache.sling.ide.api@default:default,org.apache.sling.ide.artifacts@default:default,org.apache.sling.ide.eclipse-core@default:default,org.apache.sling.ide.eclipse-m2e-test@default:false,org.apache.sling.ide.eclipse-m2e-ui@default:default,org.apache.sling.ide.eclipse-ui@default:default,org.apache.sling.ide.impl-resource@default:default,org.apache.sling.ide.impl-vlt@default:default,org.apache.sling.ide.vlt-wrapper@default:default"/>
-<booleanAttribute key="show_selected_only" value="false"/>
-<stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>
-<booleanAttribute key="tracing" value="false"/>
-<mapAttribute key="tracingOptions">
-<mapEntry key="org.apache.sling.ide.eclipse-core/debug" value="true"/>
-<mapEntry key="org.apache.sling.ide.impl-resource/debug" value="true"/>
-<mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
-<mapEntry key="org.eclipse.core.expressions/debug/TypeExtensionManager" value="false"/>
-<mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
-<mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
-<mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
-<mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
-<mapEntry key="org.eclipse.core.resources/debug" value="false"/>
-<mapEntry key="org.eclipse.core.resources/history" value="false"/>
-<mapEntry key="org.eclipse.core.resources/natures" value="false"/>
-<mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
-<mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
-<mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
-<mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
-<mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
-<mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
-<mapEntry key="org.eclipse.core.resources/strings" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
-<mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
-<mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/breadcrumb" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/memory/dynamicLoading" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/breakpointDeltas" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/presentationId" value=""/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
-<mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
-<mapEntry key="org.eclipse.e4.core.contexts/debug" value="false"/>
-<mapEntry key="org.eclipse.e4.core.contexts/debug/listeners" value="false"/>
-<mapEntry key="org.eclipse.e4.core.contexts/debug/names" value="false"/>
-<mapEntry key="org.eclipse.e4.core.di/debug" value="false"/>
-<mapEntry key="org.eclipse.e4.core.di/debug/injector" value="false"/>
-<mapEntry key="org.eclipse.e4.core.services/debug" value="false"/>
-<mapEntry key="org.eclipse.e4.core.services/debug/injector" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench.swt/debug" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/commands" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/eclipse.context" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/eclipse.context.verbose" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/menus" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/renderer" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/workbench" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench/debug" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench/trace/commands" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench/trace/eclipse.context" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench/trace/eclipse.context.verbose" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench/trace/menus" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench/trace/renderer" value="false"/>
-<mapEntry key="org.eclipse.e4.ui.workbench/trace/workbench" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/debug" value="true"/>
-<mapEntry key="org.eclipse.equinox.ds/instantiate_all" value="true"/>
-<mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>
-<mapEntry key="org.eclipse.equinox.ds/print_on_console" value="true"/>
-<mapEntry key="org.eclipse.equinox.p2.engine/certificatechecker/unsigned" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.engine/certificatechecker/untrusted" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.engine/engine/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.engine/enginesession/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.p2.engine/profileregistry/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
-<mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug" value="false"/>
-<mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
-<mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
-<mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
-<mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
-<mapEntry key="org.eclipse.help/debug" value="true"/>
-<mapEntry key="org.eclipse.help/debug/context" value="false"/>
-<mapEntry key="org.eclipse.help/debug/search" value="false"/>
-<mapEntry key="org.eclipse.help/debug/toc" value="false"/>
-<mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
-<mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
-<mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
-<mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
-<mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
-<mapEntry key="org.eclipse.jdt.debug/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.debug/debug/astEvaluations" value="false"/>
-<mapEntry key="org.eclipse.jdt.debug/debug/astEvaluations/callingThreads" value="false"/>
-<mapEntry key="org.eclipse.jdt.debug/debug/jdiEvents" value="false"/>
-<mapEntry key="org.eclipse.jdt.debug/debug/jdiRequestTimes" value="false"/>
-<mapEntry key="org.eclipse.jdt.launching/debug" value="false"/>
-<mapEntry key="org.eclipse.jdt.launching/debug/classpath/jreContainer" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
-<mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
-<mapEntry key="org.eclipse.jem.util/debug/loglevel" value="WARNING"/>
-<mapEntry key="org.eclipse.jem.util/debug/logtrace" value="false"/>
-<mapEntry key="org.eclipse.jem.util/debug/logtracefile" value="false"/>
-<mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
-<mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
-<mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
-<mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
-<mapEntry key="org.eclipse.osgi/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/objectPool/adds" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/objectPool/dups" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
-<mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
-<mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/cachedmanifest" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
-<mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
-<mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
-<mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>
-<mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
-<mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
-<mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
-<mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
-<mapEntry key="org.eclipse.team.core/debug" value="false"/>
-<mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
-<mapEntry key="org.eclipse.team.core/streams" value="false"/>
-<mapEntry key="org.eclipse.team.core/threading" value="false"/>
-<mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>
-<mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
-<mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
-<mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
-<mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug/dnd" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug/resolution" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug/setup" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug/sort" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/debug/viewermap" value="false"/>
-<mapEntry key="org.eclipse.ui.navigator/perf/explorer/createPartControl" value="1300"/>
-<mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
-<mapEntry key="org.eclipse.ui.workbench/debug/e4" value="false"/>
-<mapEntry key="org.eclipse.ui/debug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>
-<mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>
-<mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
-<mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
-<mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
-<mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
-<mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
-<mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
-<mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/perspectives" value="false"/>
-<mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
-<mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
-<mapEntry key="org.eclipse.wst.common.environment/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/command" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/data" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/emitter" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/error" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/info" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/warning" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/ws_ant" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/ws_dt_cmd_engine" value="true"/>
-<mapEntry key="org.eclipse.wst.common.environment/trace/ws_framework" value="true"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/actionSorting" value="false"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/activation" value="false"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/delegate/calls" value="false"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/events/project" value="false"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.core/events/project/stacktrace" value="false"/>
-<mapEntry key="org.eclipse.wst.common.project.facet.ui/propPage/actionConfigValidation" value="false"/>
-<mapEntry key="org.eclipse.wst.internet.monitor.core/config" value="false"/>
-<mapEntry key="org.eclipse.wst.internet.monitor.core/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.internet.monitor.core/finest" value="false"/>
-<mapEntry key="org.eclipse.wst.internet.monitor.core/parsing" value="false"/>
-<mapEntry key="org.eclipse.wst.internet.monitor.core/severe" value="false"/>
-<mapEntry key="org.eclipse.wst.internet.monitor.core/warning" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/config" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.server.core/extension_point" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/finer" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/finest" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/info" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/listeners" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/performance" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/publishing" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/resources" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/runtime_target" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/severe" value="false"/>
-<mapEntry key="org.eclipse.wst.server.core/warning" value="false"/>
-<mapEntry key="org.eclipse.wst.server.discovery/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.server.ui/config" value="true"/>
-<mapEntry key="org.eclipse.wst.server.ui/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.server.ui/extension_point" value="true"/>
-<mapEntry key="org.eclipse.wst.server.ui/finer" value="true"/>
-<mapEntry key="org.eclipse.wst.server.ui/finest" value="false"/>
-<mapEntry key="org.eclipse.wst.server.ui/info" value="true"/>
-<mapEntry key="org.eclipse.wst.server.ui/performance" value="true"/>
-<mapEntry key="org.eclipse.wst.server.ui/severe" value="true"/>
-<mapEntry key="org.eclipse.wst.server.ui/warning" value="true"/>
-<mapEntry key="org.eclipse.wst.validation/debug" value="true"/>
-<mapEntry key="org.eclipse.wst.validation/extraValDetail" value=""/>
-<mapEntry key="org.eclipse.wst.validation/filter/allExcept" value=""/>
-<mapEntry key="org.eclipse.wst.validation/timings" value="false"/>
-<mapEntry key="org.eclipse.wst.validation/timings/tracefile" value=""/>
-<mapEntry key="org.eclipse.wst.validation/timings/useDoubles" value="false"/>
-<mapEntry key="org.eclipse.wst.validation/trace/level" value=""/>
-<mapEntry key="org.eclipse.wst.validation/v1" value="false"/>
-<mapEntry key="org.eclipse.wtp.common/debug/loglevel" value="WARNING"/>
-<mapEntry key="org.eclipse.wtp.common/debug/logtrace" value="false"/>
-<mapEntry key="org.eclipse.wtp.common/debug/logtracefile" value="false"/>
-</mapAttribute>
-<booleanAttribute key="useCustomFeatures" value="false"/>
-<booleanAttribute key="useDefaultConfig" value="true"/>
-<booleanAttribute key="useDefaultConfigArea" value="true"/>
-<booleanAttribute key="useProduct" value="true"/>
+ <setAttribute key="additional_plugins"/>
+ <booleanAttribute key="append.args" value="true"/>
+ <booleanAttribute key="askclear" value="false"/>
+ <booleanAttribute key="automaticAdd" value="false"/>
+ <booleanAttribute key="automaticValidate" value="false"/>
+ <stringAttribute key="bootstrap" value=""/>
+ <stringAttribute key="checked" value="[NONE]"/>
+ <booleanAttribute key="clearConfig" value="false"/>
+ <booleanAttribute key="clearws" value="true"/>
+ <booleanAttribute key="clearwslog" value="true"/>
+ <stringAttribute key="configLocation" value="${workspace_loc}/.metadata/.plugins/org.eclipse.pde.core/Sling IDE Tooling"/>
+ <booleanAttribute key="default" value="true"/>
+ <stringAttribute key="featureDefaultLocation" value="workspace"/>
+ <stringAttribute key="featurePluginResolution" value="workspace"/>
+ <booleanAttribute key="includeOptional" value="true"/>
+ <stringAttribute key="location" value="${workspace_loc}/../runtime-sling-ide-tooling"/>
+ <booleanAttribute key="org.eclipse.debug.core.ATTR_FORCE_SYSTEM_CONSOLE_ENCODING" value="false"/>
+ <booleanAttribute key="org.eclipse.jdt.launching.ATTR_ATTR_USE_ARGFILE" value="false"/>
+ <booleanAttribute key="org.eclipse.jdt.launching.ATTR_SHOW_CODEDETAILS_IN_EXCEPTION_MESSAGES" value="true"/>
+ <booleanAttribute key="org.eclipse.jdt.launching.ATTR_USE_START_ON_FIRST_THREAD" value="true"/>
+ <listAttribute key="org.eclipse.jdt.launching.CLASSPATH">
+ <listEntry value="<?xml version="1.0" encoding="UTF-8" standalone="no"?> <runtimeClasspathEntry containerPath="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7" path="1" type="4"/> "/>
+ </listAttribute>
+ <booleanAttribute key="org.eclipse.jdt.launching.DEFAULT_CLASSPATH" value="true"/>
+ <stringAttribute key="org.eclipse.jdt.launching.JRE_CONTAINER" value="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="-os ${target.os} -ws ${target.ws} -arch ${target.arch} -nl ${target.nl} -consoleLog -nosplash"/>
+ <stringAttribute key="org.eclipse.jdt.launching.SOURCE_PATH_PROVIDER" value="org.eclipse.pde.ui.workbenchClasspathProvider"/>
+ <stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx768m -XX:MaxPermSize=256m"/>
+ <stringAttribute key="pde.version" value="3.3"/>
+ <stringAttribute key="product" value="org.eclipse.platform.ide"/>
+ <setAttribute key="selected_features"/>
+ <setAttribute key="selected_target_bundles">
+ <setEntry value="com.ibm.icu@default:default"/>
+ <setEntry value="com.ning.async-http-client@default:default"/>
+ <setEntry value="javax.annotation@default:default"/>
+ <setEntry value="javax.inject@default:default"/>
+ <setEntry value="javax.servlet@default:default"/>
+ <setEntry value="javax.xml@default:default"/>
+ <setEntry value="org.apache.batik.css@default:default"/>
+ <setEntry value="org.apache.batik.util.gui@default:default"/>
+ <setEntry value="org.apache.batik.util@default:default"/>
+ <setEntry value="org.apache.commons.codec@default:default"/>
+ <setEntry value="org.apache.commons.collections@default:default"/>
+ <setEntry value="org.apache.commons.httpclient@default:default"/>
+ <setEntry value="org.apache.commons.io@default:default"/>
+ <setEntry value="org.apache.commons.logging*1.1.1.v201101211721@default:default"/>
+ <setEntry value="org.apache.lucene.analysis@default:default"/>
+ <setEntry value="org.apache.lucene.core@default:default"/>
+ <setEntry value="org.eclipse.ant.core@default:default"/>
+ <setEntry value="org.eclipse.compare.core@default:default"/>
+ <setEntry value="org.eclipse.compare@default:default"/>
+ <setEntry value="org.eclipse.core.commands@default:default"/>
+ <setEntry value="org.eclipse.core.contenttype@default:default"/>
+ <setEntry value="org.eclipse.core.databinding.observable@default:default"/>
+ <setEntry value="org.eclipse.core.databinding.property@default:default"/>
+ <setEntry value="org.eclipse.core.databinding@default:default"/>
+ <setEntry value="org.eclipse.core.expressions@default:default"/>
+ <setEntry value="org.eclipse.core.filebuffers@default:default"/>
+ <setEntry value="org.eclipse.core.filesystem.linux.x86_64@default:false"/>
+ <setEntry value="org.eclipse.core.filesystem@default:default"/>
+ <setEntry value="org.eclipse.core.jobs@default:default"/>
+ <setEntry value="org.eclipse.core.net.linux.x86_64@default:false"/>
+ <setEntry value="org.eclipse.core.net@default:default"/>
+ <setEntry value="org.eclipse.core.resources@default:default"/>
+ <setEntry value="org.eclipse.core.runtime.compatibility.registry@default:false"/>
+ <setEntry value="org.eclipse.core.runtime@default:true"/>
+ <setEntry value="org.eclipse.core.variables@default:default"/>
+ <setEntry value="org.eclipse.debug.core@default:default"/>
+ <setEntry value="org.eclipse.debug.ui@default:default"/>
+ <setEntry value="org.eclipse.e4.core.commands@default:default"/>
+ <setEntry value="org.eclipse.e4.core.contexts@default:default"/>
+ <setEntry value="org.eclipse.e4.core.di.extensions@default:default"/>
+ <setEntry value="org.eclipse.e4.core.di@default:default"/>
+ <setEntry value="org.eclipse.e4.core.services@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.bindings@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.css.core@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.css.swt.theme@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.css.swt@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.di@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.model.workbench@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.services@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.widgets@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.workbench.addons.swt@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.workbench.renderers.swt@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.workbench.swt@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.workbench3@default:default"/>
+ <setEntry value="org.eclipse.e4.ui.workbench@default:default"/>
+ <setEntry value="org.eclipse.emf.common@default:default"/>
+ <setEntry value="org.eclipse.emf.ecore.change@default:default"/>
+ <setEntry value="org.eclipse.emf.ecore.xmi@default:default"/>
+ <setEntry value="org.eclipse.emf.ecore@default:default"/>
+ <setEntry value="org.eclipse.equinox.app@default:default"/>
+ <setEntry value="org.eclipse.equinox.bidi@default:default"/>
+ <setEntry value="org.eclipse.equinox.common@2:true"/>
+ <setEntry value="org.eclipse.equinox.ds@1:true"/>
+ <setEntry value="org.eclipse.equinox.event@default:default"/>
+ <setEntry value="org.eclipse.equinox.frameworkadmin.equinox@default:default"/>
+ <setEntry value="org.eclipse.equinox.frameworkadmin@default:default"/>
+ <setEntry value="org.eclipse.equinox.http.jetty@default:default"/>
+ <setEntry value="org.eclipse.equinox.http.servlet@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.artifact.repository@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.core@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.director@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.engine@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.jarprocessor@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.metadata.repository@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.metadata@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.operations@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.publisher.eclipse@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.publisher@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.repository@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.ui@default:default"/>
+ <setEntry value="org.eclipse.equinox.p2.updatesite@default:default"/>
+ <setEntry value="org.eclipse.equinox.preferences@default:default"/>
+ <setEntry value="org.eclipse.equinox.registry@default:default"/>
+ <setEntry value="org.eclipse.equinox.security.ui@default:default"/>
+ <setEntry value="org.eclipse.equinox.security@default:default"/>
+ <setEntry value="org.eclipse.equinox.simpleconfigurator.manipulator@default:default"/>
+ <setEntry value="org.eclipse.equinox.simpleconfigurator@1:true"/>
+ <setEntry value="org.eclipse.equinox.util@default:default"/>
+ <setEntry value="org.eclipse.help.base@default:default"/>
+ <setEntry value="org.eclipse.help.ui@default:default"/>
+ <setEntry value="org.eclipse.help@default:default"/>
+ <setEntry value="org.eclipse.jdt.compiler.apt@default:false"/>
+ <setEntry value="org.eclipse.jdt.compiler.tool@default:false"/>
+ <setEntry value="org.eclipse.jdt.core.manipulation@default:default"/>
+ <setEntry value="org.eclipse.jdt.core@default:default"/>
+ <setEntry value="org.eclipse.jdt.debug.ui@default:default"/>
+ <setEntry value="org.eclipse.jdt.debug@default:default"/>
+ <setEntry value="org.eclipse.jdt.launching@default:default"/>
+ <setEntry value="org.eclipse.jdt.ui@default:default"/>
+ <setEntry value="org.eclipse.jetty.continuation@default:default"/>
+ <setEntry value="org.eclipse.jetty.http@default:default"/>
+ <setEntry value="org.eclipse.jetty.io@default:default"/>
+ <setEntry value="org.eclipse.jetty.security@default:default"/>
+ <setEntry value="org.eclipse.jetty.server@default:default"/>
+ <setEntry value="org.eclipse.jetty.servlet@default:default"/>
+ <setEntry value="org.eclipse.jetty.util@default:default"/>
+ <setEntry value="org.eclipse.jface.databinding@default:default"/>
+ <setEntry value="org.eclipse.jface.text@default:default"/>
+ <setEntry value="org.eclipse.jface@default:default"/>
+ <setEntry value="org.eclipse.jst.common.project.facet.core@default:default"/>
+ <setEntry value="org.eclipse.jst.server.core@default:default"/>
+ <setEntry value="org.eclipse.ltk.core.refactoring@default:default"/>
+ <setEntry value="org.eclipse.ltk.ui.refactoring@default:default"/>
+ <setEntry value="org.eclipse.m2e.archetype.common@default:default"/>
+ <setEntry value="org.eclipse.m2e.core@default:default"/>
+ <setEntry value="org.eclipse.m2e.maven.indexer@default:default"/>
+ <setEntry value="org.eclipse.m2e.maven.runtime@default:default"/>
+ <setEntry value="org.eclipse.osgi.services@default:default"/>
+ <setEntry value="org.eclipse.osgi@-1:true"/>
+ <setEntry value="org.eclipse.platform@default:default"/>
+ <setEntry value="org.eclipse.search@default:default"/>
+ <setEntry value="org.eclipse.swt.gtk.linux.x86_64@default:false"/>
+ <setEntry value="org.eclipse.swt@default:default"/>
+ <setEntry value="org.eclipse.team.core@default:default"/>
+ <setEntry value="org.eclipse.team.ui@default:default"/>
+ <setEntry value="org.eclipse.text@default:default"/>
+ <setEntry value="org.eclipse.ui.browser@default:default"/>
+ <setEntry value="org.eclipse.ui.cheatsheets@default:default"/>
+ <setEntry value="org.eclipse.ui.console@default:default"/>
+ <setEntry value="org.eclipse.ui.editors@default:default"/>
+ <setEntry value="org.eclipse.ui.forms@default:default"/>
+ <setEntry value="org.eclipse.ui.ide.application@default:default"/>
+ <setEntry value="org.eclipse.ui.ide@default:default"/>
+ <setEntry value="org.eclipse.ui.intro@default:default"/>
+ <setEntry value="org.eclipse.ui.navigator.resources@default:default"/>
+ <setEntry value="org.eclipse.ui.navigator@default:default"/>
+ <setEntry value="org.eclipse.ui.trace@default:default"/>
+ <setEntry value="org.eclipse.ui.views.properties.tabbed@default:default"/>
+ <setEntry value="org.eclipse.ui.views@default:default"/>
+ <setEntry value="org.eclipse.ui.workbench.texteditor@default:default"/>
+ <setEntry value="org.eclipse.ui.workbench@default:default"/>
+ <setEntry value="org.eclipse.ui@default:default"/>
+ <setEntry value="org.eclipse.wst.common.core@default:default"/>
+ <setEntry value="org.eclipse.wst.common.project.facet.core@default:default"/>
+ <setEntry value="org.eclipse.wst.common.project.facet.ui@default:default"/>
+ <setEntry value="org.eclipse.wst.internet.monitor.core@default:default"/>
+ <setEntry value="org.eclipse.wst.server.core@default:default"/>
+ <setEntry value="org.eclipse.wst.server.discovery@default:default"/>
+ <setEntry value="org.eclipse.wst.server.ui@default:default"/>
+ <setEntry value="org.hamcrest.core@default:default"/>
+ <setEntry value="org.jboss.netty@default:default"/>
+ <setEntry value="org.json@default:default"/>
+ <setEntry value="org.junit@default:default"/>
+ <setEntry value="org.sat4j.core@default:default"/>
+ <setEntry value="org.sat4j.pb@default:default"/>
+ <setEntry value="org.slf4j.api@default:default"/>
+ <setEntry value="org.w3c.css.sac@default:default"/>
+ <setEntry value="org.w3c.dom.smil@default:default"/>
+ <setEntry value="org.w3c.dom.svg@default:default"/>
+ </setAttribute>
+ <setAttribute key="selected_workspace_bundles">
+ <setEntry value="org.apache.sling.ide.api@default:default"/>
+ <setEntry value="org.apache.sling.ide.artifacts@default:default"/>
+ <setEntry value="org.apache.sling.ide.eclipse-core@default:default"/>
+ <setEntry value="org.apache.sling.ide.eclipse-m2e-test@default:false"/>
+ <setEntry value="org.apache.sling.ide.eclipse-m2e-ui@default:default"/>
+ <setEntry value="org.apache.sling.ide.eclipse-ui@default:default"/>
+ <setEntry value="org.apache.sling.ide.impl-resource@default:default"/>
+ <setEntry value="org.apache.sling.ide.impl-vlt@default:default"/>
+ <setEntry value="org.apache.sling.ide.vlt-wrapper@default:default"/>
+ </setAttribute>
+ <booleanAttribute key="show_selected_only" value="false"/>
+ <stringAttribute key="templateConfig" value="${target_home}/configuration/config.ini"/>
+ <booleanAttribute key="tracing" value="false"/>
+ <mapAttribute key="tracingOptions">
+ <mapEntry key="org.apache.sling.ide.eclipse-core/debug" value="true"/>
+ <mapEntry key="org.apache.sling.ide.impl-resource/debug" value="true"/>
+ <mapEntry key="org.eclipse.core.contenttype/debug" value="false"/>
+ <mapEntry key="org.eclipse.core.expressions/debug/TypeExtensionManager" value="false"/>
+ <mapEntry key="org.eclipse.core.expressions/tracePropertyResolving" value="false"/>
+ <mapEntry key="org.eclipse.core.jobs/jobs" value="false"/>
+ <mapEntry key="org.eclipse.core.jobs/jobs/beginend" value="false"/>
+ <mapEntry key="org.eclipse.core.jobs/jobs/errorondeadlock" value="false"/>
+ <mapEntry key="org.eclipse.core.jobs/jobs/locks" value="false"/>
+ <mapEntry key="org.eclipse.core.jobs/jobs/shutdown" value="false"/>
+ <mapEntry key="org.eclipse.core.jobs/jobs/timing" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/build/delta" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/build/failure" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/build/interrupt" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/build/invoking" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/build/needbuild" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/build/needbuildstack" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/build/stacktrace" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/contenttype" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/contenttype/cache" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/debug" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/history" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/natures" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/perf/builders" value="10000"/>
+ <mapEntry key="org.eclipse.core.resources/perf/listeners" value="500"/>
+ <mapEntry key="org.eclipse.core.resources/perf/save.participants" value="500"/>
+ <mapEntry key="org.eclipse.core.resources/perf/snapshot" value="1000"/>
+ <mapEntry key="org.eclipse.core.resources/preferences" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/refresh" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/restore" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/restore/markers" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/restore/mastertable" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/restore/metainfo" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/restore/snapshots" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/restore/syncinfo" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/restore/tree" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/save" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/save/markers" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/save/mastertable" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/save/metainfo" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/save/syncinfo" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/save/tree" value="false"/>
+ <mapEntry key="org.eclipse.core.resources/strings" value="false"/>
+ <mapEntry key="org.eclipse.core.runtime/compatibility/debug" value="false"/>
+ <mapEntry key="org.eclipse.core.runtime/debug" value="false"/>
+ <mapEntry key="org.eclipse.core.runtime/debug/context" value="false"/>
+ <mapEntry key="org.eclipse.core.runtime/perf" value="false"/>
+ <mapEntry key="org.eclipse.core.runtime/perf/success" value="false"/>
+ <mapEntry key="org.eclipse.core.runtime/preferences/plugin" value="false"/>
+ <mapEntry key="org.eclipse.core.runtime/url/debug" value="false"/>
+ <mapEntry key="org.eclipse.core.runtime/url/debug/cachecopy" value="false"/>
+ <mapEntry key="org.eclipse.core.runtime/url/debug/cachelookup" value="false"/>
+ <mapEntry key="org.eclipse.core.runtime/url/debug/connect" value="false"/>
+ <mapEntry key="org.eclipse.debug.core/debug" value="false"/>
+ <mapEntry key="org.eclipse.debug.core/debug/commands" value="false"/>
+ <mapEntry key="org.eclipse.debug.core/debug/events" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug/breadcrumb" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug/contextlaunching" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug/launchhistory" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug/memory/dynamicLoading" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug/viewers/breakpointDeltas" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug/viewers/contentProvider" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug/viewers/deltas" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug/viewers/model" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug/viewers/presentationId" value=""/>
+ <mapEntry key="org.eclipse.debug.ui/debug/viewers/stateSaveRestore" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug/viewers/updateSequence" value="false"/>
+ <mapEntry key="org.eclipse.debug.ui/debug/viewers/viewer" value="false"/>
+ <mapEntry key="org.eclipse.e4.core.contexts/debug" value="false"/>
+ <mapEntry key="org.eclipse.e4.core.contexts/debug/listeners" value="false"/>
+ <mapEntry key="org.eclipse.e4.core.contexts/debug/names" value="false"/>
+ <mapEntry key="org.eclipse.e4.core.di/debug" value="false"/>
+ <mapEntry key="org.eclipse.e4.core.di/debug/injector" value="false"/>
+ <mapEntry key="org.eclipse.e4.core.services/debug" value="false"/>
+ <mapEntry key="org.eclipse.e4.core.services/debug/injector" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench.swt/debug" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/commands" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/eclipse.context" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/eclipse.context.verbose" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/menus" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/renderer" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench.swt/trace/workbench" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench/debug" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench/trace/commands" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench/trace/eclipse.context" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench/trace/eclipse.context.verbose" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench/trace/menus" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench/trace/renderer" value="false"/>
+ <mapEntry key="org.eclipse.e4.ui.workbench/trace/workbench" value="false"/>
+ <mapEntry key="org.eclipse.equinox.ds/debug" value="true"/>
+ <mapEntry key="org.eclipse.equinox.ds/instantiate_all" value="true"/>
+ <mapEntry key="org.eclipse.equinox.ds/performance" value="false"/>
+ <mapEntry key="org.eclipse.equinox.ds/print_on_console" value="true"/>
+ <mapEntry key="org.eclipse.equinox.p2.engine/certificatechecker/unsigned" value="false"/>
+ <mapEntry key="org.eclipse.equinox.p2.engine/certificatechecker/untrusted" value="false"/>
+ <mapEntry key="org.eclipse.equinox.p2.engine/engine/debug" value="false"/>
+ <mapEntry key="org.eclipse.equinox.p2.engine/enginesession/debug" value="false"/>
+ <mapEntry key="org.eclipse.equinox.p2.engine/profileregistry/debug" value="false"/>
+ <mapEntry key="org.eclipse.equinox.preferences/general" value="false"/>
+ <mapEntry key="org.eclipse.equinox.preferences/get" value="false"/>
+ <mapEntry key="org.eclipse.equinox.preferences/set" value="false"/>
+ <mapEntry key="org.eclipse.equinox.registry/debug" value="false"/>
+ <mapEntry key="org.eclipse.equinox.registry/debug/events" value="false"/>
+ <mapEntry key="org.eclipse.equinox.security.ui/debug" value="false"/>
+ <mapEntry key="org.eclipse.equinox.security.ui/debug/storage" value="false"/>
+ <mapEntry key="org.eclipse.equinox.security/debug" value="false"/>
+ <mapEntry key="org.eclipse.equinox.security/debug/loginFramework" value="false"/>
+ <mapEntry key="org.eclipse.help.ui/debug" value="true"/>
+ <mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser" value="false"/>
+ <mapEntry key="org.eclipse.help.ui/debug/embeddedBrowser/inprocess" value="false"/>
+ <mapEntry key="org.eclipse.help.ui/debug/infopop" value="false"/>
+ <mapEntry key="org.eclipse.help.webapp/debug" value="true"/>
+ <mapEntry key="org.eclipse.help.webapp/debug/workingsets" value="false"/>
+ <mapEntry key="org.eclipse.help/debug" value="true"/>
+ <mapEntry key="org.eclipse.help/debug/context" value="false"/>
+ <mapEntry key="org.eclipse.help/debug/search" value="false"/>
+ <mapEntry key="org.eclipse.help/debug/toc" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core.manipulation/debug" value="true"/>
+ <mapEntry key="org.eclipse.jdt.core/debug" value="true"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/buffermanager" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/builder" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/builder/stats" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/compiler" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/completion" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/cpresolution" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/cpresolution/advanced" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/cpresolution/failure" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/formatter" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/hierarchy" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/indexmanager" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/indexmanager/advanced" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/javadelta" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/javadelta/verbose" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/javamodel" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/javamodel/cache" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/postaction" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/resolution" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/search" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/selection" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/sourcemapper" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/debug/zipaccess" value="false"/>
+ <mapEntry key="org.eclipse.jdt.core/perf/completion" value="300"/>
+ <mapEntry key="org.eclipse.jdt.core/perf/containerinitializer" value="5000"/>
+ <mapEntry key="org.eclipse.jdt.core/perf/javadeltalistener" value="500"/>
+ <mapEntry key="org.eclipse.jdt.core/perf/reconcile" value="1000"/>
+ <mapEntry key="org.eclipse.jdt.core/perf/selection" value="300"/>
+ <mapEntry key="org.eclipse.jdt.core/perf/variableinitializer" value="5000"/>
+ <mapEntry key="org.eclipse.jdt.debug/debug" value="false"/>
+ <mapEntry key="org.eclipse.jdt.debug/debug/astEvaluations" value="false"/>
+ <mapEntry key="org.eclipse.jdt.debug/debug/astEvaluations/callingThreads" value="false"/>
+ <mapEntry key="org.eclipse.jdt.debug/debug/jdiEvents" value="false"/>
+ <mapEntry key="org.eclipse.jdt.debug/debug/jdiRequestTimes" value="false"/>
+ <mapEntry key="org.eclipse.jdt.launching/debug" value="false"/>
+ <mapEntry key="org.eclipse.jdt.launching/debug/classpath/jreContainer" value="false"/>
+ <mapEntry key="org.eclipse.jdt.ui/debug" value="true"/>
+ <mapEntry key="org.eclipse.jdt.ui/debug/ASTProvider" value="false"/>
+ <mapEntry key="org.eclipse.jdt.ui/debug/BreadcrumbItemDropDown" value="false"/>
+ <mapEntry key="org.eclipse.jdt.ui/debug/ResultCollector" value="false"/>
+ <mapEntry key="org.eclipse.jdt.ui/debug/TypeConstraints" value="false"/>
+ <mapEntry key="org.eclipse.jdt.ui/perf/content_assist/extensions" value="1000"/>
+ <mapEntry key="org.eclipse.jdt.ui/perf/content_assist_sorters/extensions" value=""/>
+ <mapEntry key="org.eclipse.jdt.ui/perf/explorer/RefactorActionGroup" value="150"/>
+ <mapEntry key="org.eclipse.jdt.ui/perf/explorer/createPartControl" value="1300"/>
+ <mapEntry key="org.eclipse.jdt.ui/perf/explorer/makeActions" value="1000"/>
+ <mapEntry key="org.eclipse.jdt.ui/perf/search/participants" value="300"/>
+ <mapEntry key="org.eclipse.jem.util/debug/loglevel" value="WARNING"/>
+ <mapEntry key="org.eclipse.jem.util/debug/logtrace" value="false"/>
+ <mapEntry key="org.eclipse.jem.util/debug/logtracefile" value="false"/>
+ <mapEntry key="org.eclipse.jface.text.source/debug/RevisionRulerColumn" value="false"/>
+ <mapEntry key="org.eclipse.jface.text/assert/TextSelection/validConstructorArguments" value="false"/>
+ <mapEntry key="org.eclipse.jface.text/debug/AbstractInformationControlManager" value="false"/>
+ <mapEntry key="org.eclipse.jface.text/debug/AnnotationPainter" value="false"/>
+ <mapEntry key="org.eclipse.jface.text/debug/ContentAssistSubjectAdapters" value="false"/>
+ <mapEntry key="org.eclipse.jface.text/debug/FastPartitioner/PositionCache" value="false"/>
+ <mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/checkConditions" value="300"/>
+ <mapEntry key="org.eclipse.ltk.core.refactoring/perf/participants/createChanges" value="300"/>
+ <mapEntry key="org.eclipse.osgi/debug" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/bundleTime" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/events" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/filter" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/loader" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/manifest" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/messageBundles" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/objectPool/adds" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/objectPool/dups" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/packageadmin" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/security" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/services" value="false"/>
+ <mapEntry key="org.eclipse.osgi/debug/startlevel" value="false"/>
+ <mapEntry key="org.eclipse.osgi/defaultprofile/buffersize" value="256"/>
+ <mapEntry key="org.eclipse.osgi/defaultprofile/logfilename" value=""/>
+ <mapEntry key="org.eclipse.osgi/defaultprofile/logsynchronously" value="false"/>
+ <mapEntry key="org.eclipse.osgi/eclipseadaptor/converter/debug" value="false"/>
+ <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug" value="false"/>
+ <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/cachedmanifest" value="false"/>
+ <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/location" value="false"/>
+ <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin" value="false"/>
+ <mapEntry key="org.eclipse.osgi/eclipseadaptor/debug/platformadmin/resolver" value="false"/>
+ <mapEntry key="org.eclipse.osgi/monitor/activation" value="false"/>
+ <mapEntry key="org.eclipse.osgi/monitor/classes" value="false"/>
+ <mapEntry key="org.eclipse.osgi/monitor/resources" value="false"/>
+ <mapEntry key="org.eclipse.osgi/profile/benchmark" value="false"/>
+ <mapEntry key="org.eclipse.osgi/profile/debug" value="false"/>
+ <mapEntry key="org.eclipse.osgi/profile/impl" value="org.eclipse.osgi.internal.profile.DefaultProfileLogger"/>
+ <mapEntry key="org.eclipse.osgi/profile/startup" value="false"/>
+ <mapEntry key="org.eclipse.osgi/resolver/cycles" value="false"/>
+ <mapEntry key="org.eclipse.osgi/resolver/debug" value="false"/>
+ <mapEntry key="org.eclipse.osgi/resolver/generics" value="false"/>
+ <mapEntry key="org.eclipse.osgi/resolver/imports" value="false"/>
+ <mapEntry key="org.eclipse.osgi/resolver/requires" value="false"/>
+ <mapEntry key="org.eclipse.osgi/resolver/uses" value="false"/>
+ <mapEntry key="org.eclipse.osgi/resolver/wiring" value="false"/>
+ <mapEntry key="org.eclipse.osgi/trace/activation" value="false"/>
+ <mapEntry key="org.eclipse.osgi/trace/classLoading" value="false"/>
+ <mapEntry key="org.eclipse.osgi/trace/filename" value="runtime.traces"/>
+ <mapEntry key="org.eclipse.osgi/trace/filters" value="trace.properties"/>
+ <mapEntry key="org.eclipse.team.core/backgroundevents" value="false"/>
+ <mapEntry key="org.eclipse.team.core/debug" value="false"/>
+ <mapEntry key="org.eclipse.team.core/refreshjob" value="false"/>
+ <mapEntry key="org.eclipse.team.core/streams" value="false"/>
+ <mapEntry key="org.eclipse.team.core/threading" value="false"/>
+ <mapEntry key="org.eclipse.ui.browser/debug" value="false"/>
+ <mapEntry key="org.eclipse.ui.ide/debug" value="false"/>
+ <mapEntry key="org.eclipse.ui.ide/debug/gc" value="false"/>
+ <mapEntry key="org.eclipse.ui.ide/debug/internalerror/openDialog" value="false"/>
+ <mapEntry key="org.eclipse.ui.ide/debug/markers" value="false"/>
+ <mapEntry key="org.eclipse.ui.ide/debug/undomonitor" value="false"/>
+ <mapEntry key="org.eclipse.ui.intro.universal/debug" value="true"/>
+ <mapEntry key="org.eclipse.ui.intro.universal/trace/logInfo" value="true"/>
+ <mapEntry key="org.eclipse.ui.intro.universal/trace/logPerformance" value="false"/>
+ <mapEntry key="org.eclipse.ui.intro/debug" value="true"/>
+ <mapEntry key="org.eclipse.ui.intro/debug/toolbar" value="false"/>
+ <mapEntry key="org.eclipse.ui.intro/flags/noBrowser" value="false"/>
+ <mapEntry key="org.eclipse.ui.intro/trace/logInfo" value="true"/>
+ <mapEntry key="org.eclipse.ui.intro/trace/logPerformance" value="false"/>
+ <mapEntry key="org.eclipse.ui.intro/trace/printHTML" value="false"/>
+ <mapEntry key="org.eclipse.ui.navigator/debug" value="false"/>
+ <mapEntry key="org.eclipse.ui.navigator/debug/dnd" value="false"/>
+ <mapEntry key="org.eclipse.ui.navigator/debug/resolution" value="false"/>
+ <mapEntry key="org.eclipse.ui.navigator/debug/setup" value="false"/>
+ <mapEntry key="org.eclipse.ui.navigator/debug/sort" value="false"/>
+ <mapEntry key="org.eclipse.ui.navigator/debug/viewermap" value="false"/>
+ <mapEntry key="org.eclipse.ui.navigator/perf/explorer/createPartControl" value="1300"/>
+ <mapEntry key="org.eclipse.ui.workbench/debug" value="false"/>
+ <mapEntry key="org.eclipse.ui.workbench/debug/e4" value="false"/>
+ <mapEntry key="org.eclipse.ui/debug" value="false"/>
+ <mapEntry key="org.eclipse.ui/debug/contributions" value="false"/>
+ <mapEntry key="org.eclipse.ui/debug/declaredImages" value="false"/>
+ <mapEntry key="org.eclipse.ui/debug/job.stale" value="false"/>
+ <mapEntry key="org.eclipse.ui/debug/showAllJobs" value="false"/>
+ <mapEntry key="org.eclipse.ui/debug/swtdebug" value="false"/>
+ <mapEntry key="org.eclipse.ui/debug/swtdebugglobal" value="false"/>
+ <mapEntry key="org.eclipse.ui/debug/workingSets" value="false"/>
+ <mapEntry key="org.eclipse.ui/experimental/menus" value="false"/>
+ <mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener" value="false"/>
+ <mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPartListener2" value="false"/>
+ <mapEntry key="org.eclipse.ui/listeners/IWorkbenchPage.IPropertyChangeListener" value="false"/>
+ <mapEntry key="org.eclipse.ui/listeners/IWorkbenchPartReference" value="false"/>
+ <mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPageListener" value="false"/>
+ <mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener" value="false"/>
+ <mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPartListener2" value="false"/>
+ <mapEntry key="org.eclipse.ui/listeners/IWorkbenchWindow.IPerspectiveListener" value="false"/>
+ <mapEntry key="org.eclipse.ui/perf/contentTypes" value="200"/>
+ <mapEntry key="org.eclipse.ui/perf/page.listeners" value="200"/>
+ <mapEntry key="org.eclipse.ui/perf/part.activate" value="200"/>
+ <mapEntry key="org.eclipse.ui/perf/part.control" value="800"/>
+ <mapEntry key="org.eclipse.ui/perf/part.create" value="800"/>
+ <mapEntry key="org.eclipse.ui/perf/part.init" value="800"/>
+ <mapEntry key="org.eclipse.ui/perf/part.input" value="200"/>
+ <mapEntry key="org.eclipse.ui/perf/part.listeners" value="200"/>
+ <mapEntry key="org.eclipse.ui/perf/perspective.create" value="800"/>
+ <mapEntry key="org.eclipse.ui/perf/perspective.listeners" value="200"/>
+ <mapEntry key="org.eclipse.ui/perf/perspective.switch" value="800"/>
+ <mapEntry key="org.eclipse.ui/perf/showHeapStatus" value="true"/>
+ <mapEntry key="org.eclipse.ui/perf/uijob" value="200"/>
+ <mapEntry key="org.eclipse.ui/perf/workbench.restore" value="30000"/>
+ <mapEntry key="org.eclipse.ui/perf/workbench.start" value="45000"/>
+ <mapEntry key="org.eclipse.ui/trace/commands" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/contexts" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/contexts.performance" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/contexts.verbose" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/graphics" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/handlers" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/handlers.performance" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/handlers.verbose" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/handlers.verbose.commandId" value=""/>
+ <mapEntry key="org.eclipse.ui/trace/keyBindings" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/keyBindings.verbose" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/multipageeditor" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/operations" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/operations.verbose" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/perspectives" value="false"/>
+ <mapEntry key="org.eclipse.ui/trace/sources" value="false"/>
+ <mapEntry key="org.eclipse.update.configurator/debug" value="false"/>
+ <mapEntry key="org.eclipse.wst.common.environment/debug" value="true"/>
+ <mapEntry key="org.eclipse.wst.common.environment/trace/command" value="true"/>
+ <mapEntry key="org.eclipse.wst.common.environment/trace/data" value="true"/>
+ <mapEntry key="org.eclipse.wst.common.environment/trace/emitter" value="true"/>
+ <mapEntry key="org.eclipse.wst.common.environment/trace/error" value="true"/>
+ <mapEntry key="org.eclipse.wst.common.environment/trace/info" value="true"/>
+ <mapEntry key="org.eclipse.wst.common.environment/trace/warning" value="true"/>
+ <mapEntry key="org.eclipse.wst.common.environment/trace/ws_ant" value="true"/>
+ <mapEntry key="org.eclipse.wst.common.environment/trace/ws_dt_cmd_engine" value="true"/>
+ <mapEntry key="org.eclipse.wst.common.environment/trace/ws_framework" value="true"/>
+ <mapEntry key="org.eclipse.wst.common.project.facet.core/actionSorting" value="false"/>
+ <mapEntry key="org.eclipse.wst.common.project.facet.core/activation" value="false"/>
+ <mapEntry key="org.eclipse.wst.common.project.facet.core/delegate/calls" value="false"/>
+ <mapEntry key="org.eclipse.wst.common.project.facet.core/events/project" value="false"/>
+ <mapEntry key="org.eclipse.wst.common.project.facet.core/events/project/stacktrace" value="false"/>
+ <mapEntry key="org.eclipse.wst.common.project.facet.ui/propPage/actionConfigValidation" value="false"/>
+ <mapEntry key="org.eclipse.wst.internet.monitor.core/config" value="false"/>
+ <mapEntry key="org.eclipse.wst.internet.monitor.core/debug" value="true"/>
+ <mapEntry key="org.eclipse.wst.internet.monitor.core/finest" value="false"/>
+ <mapEntry key="org.eclipse.wst.internet.monitor.core/parsing" value="false"/>
+ <mapEntry key="org.eclipse.wst.internet.monitor.core/severe" value="false"/>
+ <mapEntry key="org.eclipse.wst.internet.monitor.core/warning" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/config" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/debug" value="true"/>
+ <mapEntry key="org.eclipse.wst.server.core/extension_point" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/finer" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/finest" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/info" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/listeners" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/performance" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/publishing" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/resources" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/runtime_target" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/severe" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.core/warning" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.discovery/debug" value="true"/>
+ <mapEntry key="org.eclipse.wst.server.ui/config" value="true"/>
+ <mapEntry key="org.eclipse.wst.server.ui/debug" value="true"/>
+ <mapEntry key="org.eclipse.wst.server.ui/extension_point" value="true"/>
+ <mapEntry key="org.eclipse.wst.server.ui/finer" value="true"/>
+ <mapEntry key="org.eclipse.wst.server.ui/finest" value="false"/>
+ <mapEntry key="org.eclipse.wst.server.ui/info" value="true"/>
+ <mapEntry key="org.eclipse.wst.server.ui/performance" value="true"/>
+ <mapEntry key="org.eclipse.wst.server.ui/severe" value="true"/>
+ <mapEntry key="org.eclipse.wst.server.ui/warning" value="true"/>
+ <mapEntry key="org.eclipse.wst.validation/debug" value="true"/>
+ <mapEntry key="org.eclipse.wst.validation/extraValDetail" value=""/>
+ <mapEntry key="org.eclipse.wst.validation/filter/allExcept" value=""/>
+ <mapEntry key="org.eclipse.wst.validation/timings" value="false"/>
+ <mapEntry key="org.eclipse.wst.validation/timings/tracefile" value=""/>
+ <mapEntry key="org.eclipse.wst.validation/timings/useDoubles" value="false"/>
+ <mapEntry key="org.eclipse.wst.validation/trace/level" value=""/>
+ <mapEntry key="org.eclipse.wst.validation/v1" value="false"/>
+ <mapEntry key="org.eclipse.wtp.common/debug/loglevel" value="WARNING"/>
+ <mapEntry key="org.eclipse.wtp.common/debug/logtrace" value="false"/>
+ <mapEntry key="org.eclipse.wtp.common/debug/logtracefile" value="false"/>
+ </mapAttribute>
+ <booleanAttribute key="useCustomFeatures" value="false"/>
+ <booleanAttribute key="useDefaultConfig" value="true"/>
+ <booleanAttribute key="useDefaultConfigArea" value="true"/>
+ <booleanAttribute key="useProduct" value="true"/>
</launchConfiguration>
diff --git a/eclipse/target-definition/org.apache.sling.ide.target-definition.target b/eclipse/target-definition/org.apache.sling.ide.target-definition.target
index efb33dcd..579b7d0f 100644
--- a/eclipse/target-definition/org.apache.sling.ide.target-definition.target
+++ b/eclipse/target-definition/org.apache.sling.ide.target-definition.target
@@ -18,38 +18,58 @@
<?pde version="3.8"?><target name="Sling IDE Tools" sequenceNumber="53">
<locations>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.m2e.feature.feature.group" version="1.6.0.20150526-2032"/>
-<repository location="https://download.eclipse.org/technology/m2e/releases/1.6"/>
+ <repository location="https://download.eclipse.org/releases/2022-09/"/>
+ <unit id="org.eclipse.m2e.feature.feature.group" version="2.0.4.20220904-1703"/>
+ <unit id="org.eclipse.jst.web_ui.feature.feature.group" version="3.27.0.v202206160204"/>
+ <unit id="org.eclipse.jst.enterprise_ui.feature.feature.group" version="3.27.0.v202206160204"/>
</location>
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="com.google.gson" version="2.2.4.v201311231704"/>
-<unit id="org.apache.commons.collections" version="3.2.2.v201511171945"/>
-<unit id="org.apache.commons.httpclient" version="3.1.0.v201012070820"/>
-<unit id="org.apache.commons.io" version="2.2.0.v201405211200"/>
-<unit id="org.apache.commons.lang" version="2.6.0.v201404270220"/>
-<unit id="org.hamcrest.core" version="1.3.0.v201303031735"/>
-<unit id="org.junit" version="4.12.0.v201504281640"/>
-<unit id="org.slf4j.api" version="1.7.10.v20170428-1633"/>
-<unit id="org.slf4j.binding.simple" version="1.7.10.v20160301-1109"/>
-<unit id="org.slf4j.apis.log4j" version="1.7.10.v20160208-0839"/>
-<repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20170516192513/repository/"/>
-</location>
-<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.jst.enterprise_ui.feature.feature.group" version="3.9.2.v201802121827"/>
-<unit id="org.eclipse.jst.server_adapters.feature.feature.group" version="3.2.400.v201711301708"/>
-<unit id="org.eclipse.jst.server_ui.feature.feature.group" version="3.4.300.v201709251835"/>
-<unit id="org.eclipse.jst.web_ui.feature.feature.group" version="3.9.0.v201802152012"/>
-<unit id="org.eclipse.platform.feature.group" version="4.7.3.v20180301-0715"/>
-<unit id="org.eclipse.wst.server_adapters.feature.feature.group" version="3.2.601.v201711302104"/>
-<unit id="org.eclipse.wst.web_ui.feature.feature.group" version="3.9.2.v201801171858"/>
-<unit id="org.eclipse.wst.xml_ui.feature.feature.group" version="3.9.2.v201801171858"/>
-<repository location="https://download.eclipse.org/releases/oxygen/"/>
-</location>
+ <repository location="https://download.eclipse.org/eclipse/updates/4.25/"/><!--Keep in sync with repo-ref in org.eclipse.m2e.repository/category.xml-->
+ <unit id="org.eclipse.sdk.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.equinox.p2.discovery.feature.feature.group" version="0.0.0"/>
+ <unit id="org.eclipse.ui.tests.harness" version="0.0.0"/>
+ <unit id="org.mockito.mockito-core" version="0.0.0"/>
+ <unit id="org.eclipse.equinox.executable.feature.group" version="0.0.0"/>
+ </location>
+ <!-- need new version due to https://bugs.eclipse.org/bugs/show_bug.cgi?id=580708 -->
<location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
-<unit id="org.eclipse.swtbot.eclipse.feature.group" version="2.4.0.201604200752"/>
-<unit id="org.eclipse.swtbot.eclipse.test.junit.feature.group" version="2.4.0.201604200752"/>
-<unit id="org.eclipse.swtbot.feature.group" version="2.4.0.201604200752"/>
-<repository location="https://download.eclipse.org/technology/swtbot/releases/2.4.0/"/>
+ <unit id="org.eclipse.swtbot.eclipse.feature.group" version="4.1.0.202209231935"/>
+ <repository location="https://download.eclipse.org/technology/swtbot/snapshots/"/>
</location>
+ <location includeAllPlatforms="false" includeConfigurePhase="false" includeMode="planner" includeSource="true" type="InstallableUnit">
+ <repository location="https://download.eclipse.org/tools/orbit/downloads/drops/R20180606145124/repository"/>
+ <unit id="org.apache.commons.httpclient" version="3.1.0.v201012070820"/>
+ <unit id="com.google.gson" version="2.8.2.v20180104-1110"/>
+ <unit id="org.apache.commons.io" version="2.2.0.v201405211200"/>
+ </location>
+ <location includeDependencyDepth="none" includeDependencyScopes="compile" includeSource="true" missingManifest="error" type="Maven">
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.sling.ide</groupId>
+ <artifactId>org.apache.sling.ide.api</artifactId>
+ <version>1.2.3-SNAPSHOT</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling.ide</groupId>
+ <artifactId>org.apache.sling.ide.artifacts</artifactId>
+ <version>1.2.3-SNAPSHOT</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling.ide</groupId>
+ <artifactId>org.apache.sling.ide.filevault.uber-jar</artifactId>
+ <version>1.2.3-SNAPSHOT</version>
+ <type>jar</type>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.sling.ide</groupId>
+ <artifactId>org.apache.sling.ide.impl-vlt</artifactId>
+ <version>1.2.3-SNAPSHOT</version>
+ <type>jar</type>
+ </dependency>
+ </dependencies>
+ </location>
</locations>
-</target>
+ <targetJRE path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-17"/>
+</target>
\ No newline at end of file
diff --git a/shared/modules/.gitignore b/shared/.gitignore
similarity index 100%
rename from shared/modules/.gitignore
rename to shared/.gitignore
diff --git a/eclipse/eclipse-sightly-core/META-INF/MANIFEST.MF b/shared/MANIFEST.MF
similarity index 93%
rename from eclipse/eclipse-sightly-core/META-INF/MANIFEST.MF
rename to shared/MANIFEST.MF
index 6a61580b..22afcc53 100644
--- a/eclipse/eclipse-sightly-core/META-INF/MANIFEST.MF
+++ b/shared/MANIFEST.MF
@@ -6,11 +6,12 @@ Bundle-SymbolicName: org.apache.sling.ide.eclipse-sightly-core;singleton:=true
Bundle-Version: 1.2.3.qualifier
Bundle-Activator: org.apache.sling.ide.eclipse.sightly.internal.Activator
Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.8
+Bundle-RequiredExecutionEnvironment: JavaSE-17
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.core.resources,
org.eclipse.swt,
- org.eclipse.osgi
+ org.eclipse.osgi,
+ org.apache.sling.ide.eclipse-core
Import-Package: org.apache.sling.ide.eclipse.core,
org.apache.sling.ide.eclipse.core.facet,
org.apache.sling.ide.log,
diff --git a/shared/modules/api/.project b/shared/api/.project
similarity index 72%
copy from shared/modules/api/.project
copy to shared/api/.project
index 53aa37e3..6b308a64 100644
--- a/shared/modules/api/.project
+++ b/shared/api/.project
@@ -10,16 +10,6 @@
<arguments>
</arguments>
</buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
diff --git a/shared/modules/api/README.md b/shared/api/README.md
similarity index 100%
rename from shared/modules/api/README.md
rename to shared/api/README.md
diff --git a/shared/modules/api/bnd.bnd b/shared/api/bnd.bnd
similarity index 100%
rename from shared/modules/api/bnd.bnd
rename to shared/api/bnd.bnd
diff --git a/shared/modules/api/pom.xml b/shared/api/pom.xml
similarity index 98%
rename from shared/modules/api/pom.xml
rename to shared/api/pom.xml
index b82481c7..d50cdef2 100644
--- a/shared/modules/api/pom.xml
+++ b/shared/api/pom.xml
@@ -45,6 +45,7 @@
<artifactId>jcr</artifactId>
<scope>provided</scope>
</dependency>
+ <!-- TODO: update 3rd party dependencies -->
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/filter/Filter.java b/shared/api/src/main/java/org/apache/sling/ide/filter/Filter.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/filter/Filter.java
rename to shared/api/src/main/java/org/apache/sling/ide/filter/Filter.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/filter/FilterLocator.java b/shared/api/src/main/java/org/apache/sling/ide/filter/FilterLocator.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/filter/FilterLocator.java
rename to shared/api/src/main/java/org/apache/sling/ide/filter/FilterLocator.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/filter/FilterResult.java b/shared/api/src/main/java/org/apache/sling/ide/filter/FilterResult.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/filter/FilterResult.java
rename to shared/api/src/main/java/org/apache/sling/ide/filter/FilterResult.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/filter/IgnoredResources.java b/shared/api/src/main/java/org/apache/sling/ide/filter/IgnoredResources.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/filter/IgnoredResources.java
rename to shared/api/src/main/java/org/apache/sling/ide/filter/IgnoredResources.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/filter/package-info.java b/shared/api/src/main/java/org/apache/sling/ide/filter/package-info.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/filter/package-info.java
rename to shared/api/src/main/java/org/apache/sling/ide/filter/package-info.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/log/Logger.java b/shared/api/src/main/java/org/apache/sling/ide/log/Logger.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/log/Logger.java
rename to shared/api/src/main/java/org/apache/sling/ide/log/Logger.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/log/package-info.java b/shared/api/src/main/java/org/apache/sling/ide/log/package-info.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/log/package-info.java
rename to shared/api/src/main/java/org/apache/sling/ide/log/package-info.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/osgi/MavenSourceReference.java b/shared/api/src/main/java/org/apache/sling/ide/osgi/MavenSourceReference.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/osgi/MavenSourceReference.java
rename to shared/api/src/main/java/org/apache/sling/ide/osgi/MavenSourceReference.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/osgi/OsgiClient.java b/shared/api/src/main/java/org/apache/sling/ide/osgi/OsgiClient.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/osgi/OsgiClient.java
rename to shared/api/src/main/java/org/apache/sling/ide/osgi/OsgiClient.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/osgi/OsgiClientException.java b/shared/api/src/main/java/org/apache/sling/ide/osgi/OsgiClientException.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/osgi/OsgiClientException.java
rename to shared/api/src/main/java/org/apache/sling/ide/osgi/OsgiClientException.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/osgi/OsgiClientFactory.java b/shared/api/src/main/java/org/apache/sling/ide/osgi/OsgiClientFactory.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/osgi/OsgiClientFactory.java
rename to shared/api/src/main/java/org/apache/sling/ide/osgi/OsgiClientFactory.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/osgi/SourceReference.java b/shared/api/src/main/java/org/apache/sling/ide/osgi/SourceReference.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/osgi/SourceReference.java
rename to shared/api/src/main/java/org/apache/sling/ide/osgi/SourceReference.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/osgi/impl/HttpOsgiClient.java b/shared/api/src/main/java/org/apache/sling/ide/osgi/impl/HttpOsgiClient.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/osgi/impl/HttpOsgiClient.java
rename to shared/api/src/main/java/org/apache/sling/ide/osgi/impl/HttpOsgiClient.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/osgi/impl/HttpOsgiClientFactory.java b/shared/api/src/main/java/org/apache/sling/ide/osgi/impl/HttpOsgiClientFactory.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/osgi/impl/HttpOsgiClientFactory.java
rename to shared/api/src/main/java/org/apache/sling/ide/osgi/impl/HttpOsgiClientFactory.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/osgi/impl/MavenSourceReferenceImpl.java b/shared/api/src/main/java/org/apache/sling/ide/osgi/impl/MavenSourceReferenceImpl.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/osgi/impl/MavenSourceReferenceImpl.java
rename to shared/api/src/main/java/org/apache/sling/ide/osgi/impl/MavenSourceReferenceImpl.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/osgi/impl/TracingOsgiClient.java b/shared/api/src/main/java/org/apache/sling/ide/osgi/impl/TracingOsgiClient.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/osgi/impl/TracingOsgiClient.java
rename to shared/api/src/main/java/org/apache/sling/ide/osgi/impl/TracingOsgiClient.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/osgi/package-info.java b/shared/api/src/main/java/org/apache/sling/ide/osgi/package-info.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/osgi/package-info.java
rename to shared/api/src/main/java/org/apache/sling/ide/osgi/package-info.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationData.java b/shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationData.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationData.java
rename to shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationData.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationDataBuilder.java b/shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationDataBuilder.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationDataBuilder.java
rename to shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationDataBuilder.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationException.java b/shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationException.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationException.java
rename to shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationException.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationKind.java b/shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationKind.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationKind.java
rename to shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationKind.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationKindManager.java b/shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationKindManager.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationKindManager.java
rename to shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationKindManager.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationManager.java b/shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationManager.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/serialization/SerializationManager.java
rename to shared/api/src/main/java/org/apache/sling/ide/serialization/SerializationManager.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/serialization/package-info.java b/shared/api/src/main/java/org/apache/sling/ide/serialization/package-info.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/serialization/package-info.java
rename to shared/api/src/main/java/org/apache/sling/ide/serialization/package-info.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/NonExistingResources.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/NonExistingResources.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/NonExistingResources.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/NonExistingResources.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/SyncCommandFactory.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/SyncCommandFactory.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/SyncCommandFactory.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/SyncCommandFactory.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceDirectory.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceDirectory.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceDirectory.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceDirectory.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceFile.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceFile.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceFile.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceFile.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspacePath.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspacePath.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspacePath.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspacePath.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspacePaths.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspacePaths.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspacePaths.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspacePaths.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceProject.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceProject.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceProject.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceProject.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceResource.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceResource.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceResource.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/WorkspaceResource.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/impl/DefaultSyncCommandFactory.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/impl/DefaultSyncCommandFactory.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/impl/DefaultSyncCommandFactory.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/impl/DefaultSyncCommandFactory.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/impl/NonExistingDirectory.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/impl/NonExistingDirectory.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/impl/NonExistingDirectory.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/impl/NonExistingDirectory.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/impl/NonExistingFile.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/impl/NonExistingFile.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/impl/NonExistingFile.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/impl/NonExistingFile.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/package-info.java b/shared/api/src/main/java/org/apache/sling/ide/sync/content/package-info.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/sync/content/package-info.java
rename to shared/api/src/main/java/org/apache/sling/ide/sync/content/package-info.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/Batcher.java b/shared/api/src/main/java/org/apache/sling/ide/transport/Batcher.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/Batcher.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/Batcher.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/BatcherFactory.java b/shared/api/src/main/java/org/apache/sling/ide/transport/BatcherFactory.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/BatcherFactory.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/BatcherFactory.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/Command.java b/shared/api/src/main/java/org/apache/sling/ide/transport/Command.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/Command.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/Command.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/CommandContext.java b/shared/api/src/main/java/org/apache/sling/ide/transport/CommandContext.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/CommandContext.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/CommandContext.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/CommandExecutionProperties.java b/shared/api/src/main/java/org/apache/sling/ide/transport/CommandExecutionProperties.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/CommandExecutionProperties.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/CommandExecutionProperties.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/FallbackNodeTypeRegistry.java b/shared/api/src/main/java/org/apache/sling/ide/transport/FallbackNodeTypeRegistry.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/FallbackNodeTypeRegistry.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/FallbackNodeTypeRegistry.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/FileInfo.java b/shared/api/src/main/java/org/apache/sling/ide/transport/FileInfo.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/FileInfo.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/FileInfo.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/NodeTypeRegistry.java b/shared/api/src/main/java/org/apache/sling/ide/transport/NodeTypeRegistry.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/NodeTypeRegistry.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/NodeTypeRegistry.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/ProtectedNodes.java b/shared/api/src/main/java/org/apache/sling/ide/transport/ProtectedNodes.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/ProtectedNodes.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/ProtectedNodes.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/Repository.java b/shared/api/src/main/java/org/apache/sling/ide/transport/Repository.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/Repository.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/Repository.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/RepositoryException.java b/shared/api/src/main/java/org/apache/sling/ide/transport/RepositoryException.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/RepositoryException.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/RepositoryException.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/RepositoryFactory.java b/shared/api/src/main/java/org/apache/sling/ide/transport/RepositoryFactory.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/RepositoryFactory.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/RepositoryFactory.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/RepositoryInfo.java b/shared/api/src/main/java/org/apache/sling/ide/transport/RepositoryInfo.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/RepositoryInfo.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/RepositoryInfo.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/RepositoryResponse.java b/shared/api/src/main/java/org/apache/sling/ide/transport/RepositoryResponse.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/RepositoryResponse.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/RepositoryResponse.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/ResourceAndInfo.java b/shared/api/src/main/java/org/apache/sling/ide/transport/ResourceAndInfo.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/ResourceAndInfo.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/ResourceAndInfo.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/ResourceProxy.java b/shared/api/src/main/java/org/apache/sling/ide/transport/ResourceProxy.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/ResourceProxy.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/ResourceProxy.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/Result.java b/shared/api/src/main/java/org/apache/sling/ide/transport/Result.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/Result.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/Result.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/TracingCommand.java b/shared/api/src/main/java/org/apache/sling/ide/transport/TracingCommand.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/TracingCommand.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/TracingCommand.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/impl/DefaultBatcher.java b/shared/api/src/main/java/org/apache/sling/ide/transport/impl/DefaultBatcher.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/impl/DefaultBatcher.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/impl/DefaultBatcher.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/impl/DefaultBatcherFactory.java b/shared/api/src/main/java/org/apache/sling/ide/transport/impl/DefaultBatcherFactory.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/impl/DefaultBatcherFactory.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/impl/DefaultBatcherFactory.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/transport/package-info.java b/shared/api/src/main/java/org/apache/sling/ide/transport/package-info.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/transport/package-info.java
rename to shared/api/src/main/java/org/apache/sling/ide/transport/package-info.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/util/PathUtil.java b/shared/api/src/main/java/org/apache/sling/ide/util/PathUtil.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/util/PathUtil.java
rename to shared/api/src/main/java/org/apache/sling/ide/util/PathUtil.java
diff --git a/shared/modules/api/src/main/java/org/apache/sling/ide/util/package-info.java b/shared/api/src/main/java/org/apache/sling/ide/util/package-info.java
similarity index 100%
rename from shared/modules/api/src/main/java/org/apache/sling/ide/util/package-info.java
rename to shared/api/src/main/java/org/apache/sling/ide/util/package-info.java
diff --git a/shared/modules/api/src/test/java/org/apache/sling/ide/filter/IgnoredResourcesTest.java b/shared/api/src/test/java/org/apache/sling/ide/filter/IgnoredResourcesTest.java
similarity index 100%
rename from shared/modules/api/src/test/java/org/apache/sling/ide/filter/IgnoredResourcesTest.java
rename to shared/api/src/test/java/org/apache/sling/ide/filter/IgnoredResourcesTest.java
diff --git a/shared/modules/api/src/test/java/org/apache/sling/ide/osgi/impl/HttpOsgiClientTest.java b/shared/api/src/test/java/org/apache/sling/ide/osgi/impl/HttpOsgiClientTest.java
similarity index 100%
rename from shared/modules/api/src/test/java/org/apache/sling/ide/osgi/impl/HttpOsgiClientTest.java
rename to shared/api/src/test/java/org/apache/sling/ide/osgi/impl/HttpOsgiClientTest.java
diff --git a/shared/modules/api/src/test/java/org/apache/sling/ide/serialization/NodeTypeResourceBuilder.java b/shared/api/src/test/java/org/apache/sling/ide/serialization/NodeTypeResourceBuilder.java
similarity index 100%
rename from shared/modules/api/src/test/java/org/apache/sling/ide/serialization/NodeTypeResourceBuilder.java
rename to shared/api/src/test/java/org/apache/sling/ide/serialization/NodeTypeResourceBuilder.java
diff --git a/shared/modules/api/src/test/java/org/apache/sling/ide/serialization/SerializationKindManagerTest.java b/shared/api/src/test/java/org/apache/sling/ide/serialization/SerializationKindManagerTest.java
similarity index 100%
rename from shared/modules/api/src/test/java/org/apache/sling/ide/serialization/SerializationKindManagerTest.java
rename to shared/api/src/test/java/org/apache/sling/ide/serialization/SerializationKindManagerTest.java
diff --git a/shared/modules/api/src/test/java/org/apache/sling/ide/serialization/StubRepository.java b/shared/api/src/test/java/org/apache/sling/ide/serialization/StubRepository.java
similarity index 100%
rename from shared/modules/api/src/test/java/org/apache/sling/ide/serialization/StubRepository.java
rename to shared/api/src/test/java/org/apache/sling/ide/serialization/StubRepository.java
diff --git a/shared/modules/api/src/test/java/org/apache/sling/ide/sync/content/WorkspacePathTest.java b/shared/api/src/test/java/org/apache/sling/ide/sync/content/WorkspacePathTest.java
similarity index 100%
rename from shared/modules/api/src/test/java/org/apache/sling/ide/sync/content/WorkspacePathTest.java
rename to shared/api/src/test/java/org/apache/sling/ide/sync/content/WorkspacePathTest.java
diff --git a/shared/modules/api/src/test/java/org/apache/sling/ide/sync/content/WorkspacePathsTest.java b/shared/api/src/test/java/org/apache/sling/ide/sync/content/WorkspacePathsTest.java
similarity index 100%
rename from shared/modules/api/src/test/java/org/apache/sling/ide/sync/content/WorkspacePathsTest.java
rename to shared/api/src/test/java/org/apache/sling/ide/sync/content/WorkspacePathsTest.java
diff --git a/shared/modules/api/src/test/java/org/apache/sling/ide/transport/FallbackNodeTypeRegistryTest.java b/shared/api/src/test/java/org/apache/sling/ide/transport/FallbackNodeTypeRegistryTest.java
similarity index 100%
rename from shared/modules/api/src/test/java/org/apache/sling/ide/transport/FallbackNodeTypeRegistryTest.java
rename to shared/api/src/test/java/org/apache/sling/ide/transport/FallbackNodeTypeRegistryTest.java
diff --git a/shared/modules/api/src/test/java/org/apache/sling/ide/transport/ResourceProxyTest.java b/shared/api/src/test/java/org/apache/sling/ide/transport/ResourceProxyTest.java
similarity index 100%
rename from shared/modules/api/src/test/java/org/apache/sling/ide/transport/ResourceProxyTest.java
rename to shared/api/src/test/java/org/apache/sling/ide/transport/ResourceProxyTest.java
diff --git a/shared/modules/api/src/test/java/org/apache/sling/ide/util/PathUtilTest.java b/shared/api/src/test/java/org/apache/sling/ide/util/PathUtilTest.java
similarity index 100%
rename from shared/modules/api/src/test/java/org/apache/sling/ide/util/PathUtilTest.java
rename to shared/api/src/test/java/org/apache/sling/ide/util/PathUtilTest.java
diff --git a/shared/modules/api/src/test/resources/bundles.json b/shared/api/src/test/resources/bundles.json
similarity index 100%
rename from shared/modules/api/src/test/resources/bundles.json
rename to shared/api/src/test/resources/bundles.json
diff --git a/shared/modules/api/src/test/resources/sourceReferences.json b/shared/api/src/test/resources/sourceReferences.json
similarity index 100%
rename from shared/modules/api/src/test/resources/sourceReferences.json
rename to shared/api/src/test/resources/sourceReferences.json
diff --git a/shared/modules/artifacts/.project b/shared/artifacts/.project
similarity index 72%
rename from shared/modules/artifacts/.project
rename to shared/artifacts/.project
index d0ed5f0c..25cf518d 100644
--- a/shared/modules/artifacts/.project
+++ b/shared/artifacts/.project
@@ -10,16 +10,6 @@
<arguments>
</arguments>
</buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
diff --git a/shared/modules/artifacts/README.md b/shared/artifacts/README.md
similarity index 100%
rename from shared/modules/artifacts/README.md
rename to shared/artifacts/README.md
diff --git a/shared/modules/artifacts/bnd.bnd b/shared/artifacts/bnd.bnd
similarity index 100%
rename from shared/modules/artifacts/bnd.bnd
rename to shared/artifacts/bnd.bnd
diff --git a/shared/modules/artifacts/pom.xml b/shared/artifacts/pom.xml
similarity index 100%
rename from shared/modules/artifacts/pom.xml
rename to shared/artifacts/pom.xml
diff --git a/shared/modules/artifacts/src/main/java/org/apache/sling/ide/artifacts/EmbeddedArtifact.java b/shared/artifacts/src/main/java/org/apache/sling/ide/artifacts/EmbeddedArtifact.java
similarity index 100%
rename from shared/modules/artifacts/src/main/java/org/apache/sling/ide/artifacts/EmbeddedArtifact.java
rename to shared/artifacts/src/main/java/org/apache/sling/ide/artifacts/EmbeddedArtifact.java
diff --git a/shared/modules/artifacts/src/main/java/org/apache/sling/ide/artifacts/EmbeddedArtifactLocator.java b/shared/artifacts/src/main/java/org/apache/sling/ide/artifacts/EmbeddedArtifactLocator.java
similarity index 100%
rename from shared/modules/artifacts/src/main/java/org/apache/sling/ide/artifacts/EmbeddedArtifactLocator.java
rename to shared/artifacts/src/main/java/org/apache/sling/ide/artifacts/EmbeddedArtifactLocator.java
diff --git a/shared/modules/artifacts/src/main/java/org/apache/sling/ide/artifacts/impl/ArtifactsLocatorImpl.java b/shared/artifacts/src/main/java/org/apache/sling/ide/artifacts/impl/ArtifactsLocatorImpl.java
similarity index 100%
rename from shared/modules/artifacts/src/main/java/org/apache/sling/ide/artifacts/impl/ArtifactsLocatorImpl.java
rename to shared/artifacts/src/main/java/org/apache/sling/ide/artifacts/impl/ArtifactsLocatorImpl.java
diff --git a/shared/modules/artifacts/src/main/java/org/apache/sling/ide/artifacts/package-info.java b/shared/artifacts/src/main/java/org/apache/sling/ide/artifacts/package-info.java
similarity index 100%
rename from shared/modules/artifacts/src/main/java/org/apache/sling/ide/artifacts/package-info.java
rename to shared/artifacts/src/main/java/org/apache/sling/ide/artifacts/package-info.java
diff --git a/shared/modules/api/.project b/shared/filevault-uber-jar/.project
similarity index 67%
rename from shared/modules/api/.project
rename to shared/filevault-uber-jar/.project
index 53aa37e3..27765e13 100644
--- a/shared/modules/api/.project
+++ b/shared/filevault-uber-jar/.project
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
- <name>org.apache.sling.ide.api</name>
+ <name>org.apache.sling.ide.filevault.uber-jar</name>
<comment></comment>
<projects>
</projects>
@@ -10,16 +10,6 @@
<arguments>
</arguments>
</buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
@@ -27,8 +17,8 @@
</buildCommand>
</buildSpec>
<natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
<nature>org.eclipse.jdt.core.javanature</nature>
<nature>org.eclipse.m2e.core.maven2Nature</nature>
- <nature>org.eclipse.pde.PluginNature</nature>
</natures>
</projectDescription>
diff --git a/shared/filevault-uber-jar/README.md b/shared/filevault-uber-jar/README.md
new file mode 100644
index 00000000..e5a888b7
--- /dev/null
+++ b/shared/filevault-uber-jar/README.md
@@ -0,0 +1,4 @@
+# Apache Sling IDE Tools FileVault Uber Jar
+
+This module contains an uber jar of Jackrabbit FileVault and all transitive dependencies. The amount of exported packages is deliberately minimal to
+reduce the potential classpath conflicts with other jars in an OSGi container.
diff --git a/shared/filevault-uber-jar/bnd.bnd b/shared/filevault-uber-jar/bnd.bnd
new file mode 100644
index 00000000..e502e5fc
--- /dev/null
+++ b/shared/filevault-uber-jar/bnd.bnd
@@ -0,0 +1,57 @@
+# keep public exposure as small as possible
+Export-Package: javax.jcr;version="2.0.0", \
+ javax.jcr.nodetype;version="2.0.0", \
+ javax.jcr.lock;version="2.0.0", \
+ javax.jcr.observation;version="2.0.0", \
+ javax.jcr.query;version="2.0.0", \
+ javax.jcr.query.qom;version="2.0.0", \
+ javax.jcr.retention;version="2.0.0", \
+ javax.jcr.security;version="2.0.0", \
+ javax.jcr.util;version="2.0.0", \
+ javax.jcr.version;version="2.0.0", \
+ org.apache.jackrabbit.api, \
+ org.apache.jackrabbit.api.binary, \
+ org.apache.jackrabbit.api.jmx, \
+ org.apache.jackrabbit.api.management, \
+ org.apache.jackrabbit.api.observation, \
+ org.apache.jackrabbit.api.security, \
+ org.apache.jackrabbit.api.security.authorization, \
+ org.apache.jackrabbit.api.security.principal, \
+ org.apache.jackrabbit.api.security.user, \
+ org.apache.jackrabbit.api.stats, \
+ org.apache.jackrabbit.spi.commons.conversion, \
+ org.apache.jackrabbit.spi.commons.namespace, \
+ org.apache.jackrabbit.spi, \
+ org.apache.jackrabbit.spi2dav, \
+ org.apache.jackrabbit.spi2davex, \
+ org.apache.jackrabbit.vault.davex, \
+ org.apache.jackrabbit.vault.fs, \
+ org.apache.jackrabbit.vault.fs.api, \
+ org.apache.jackrabbit.vault.fs.config, \
+ org.apache.jackrabbit.vault.fs.impl, \
+ org.apache.jackrabbit.vault.fs.impl.aggregator, \
+ org.apache.jackrabbit.vault.fs.impl.io, \
+ org.apache.jackrabbit.vault.util
+
+ # some generated import-package headers are not necessary
+ # imports being generated from org.apache.commons.io.input.BufferedFileChannelInputStream
+ Import-Package: \
+ !sun.*, \
+ !org.apache.sling.jcr.api, \
+ *
+
+# disable annotation processing (neither declarative services nor metatypes necessary for IDE tooling)
+-dsannotations:
+-metatypeannotations:
+
+ # some dependencies can be kept private
+-includeresource: \
+@commons-collections-3.2.2.jar, @commons-io-2.11.0.jar, \
+@org.apache.jackrabbit.vault-${vault.version}.jar!/!OSGI-INF/*, \
+@jackrabbit-spi-${jackrabbit.version}.jar, @jackrabbit-spi2dav-${jackrabbit.version}.jar, \
+@jackrabbit-jcr-client-${jackrabbit.version}.jar,@jackrabbit-jcr2spi-${jackrabbit.version}.jar,@jackrabbit-jcr-commons-${jackrabbit.version}.jar,@jackrabbit-spi-commons-${jackrabbit.version}.jar,@jackrabbit-webdav-${jackrabbit.version}.jar
+
+# whitelist the private reference usage in Packaging.getJcrPackageRegistry(Session)
+-fixupmessages:"Export org.apache.jackrabbit.vault.packaging, has 1, private references [org.apache.jackrabbit.vault.packaging.registry.impl]"; \
+ restrict:=warning; \
+ is:=warn
\ No newline at end of file
diff --git a/shared/filevault-uber-jar/pom.xml b/shared/filevault-uber-jar/pom.xml
new file mode 100644
index 00000000..db1f2e33
--- /dev/null
+++ b/shared/filevault-uber-jar/pom.xml
@@ -0,0 +1,126 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
+ license agreements. See the NOTICE file distributed with this work for additional
+ information regarding copyright ownership. The ASF licenses this file to
+ you under the Apache License, Version 2.0 (the "License"); you may not use
+ this file except in compliance with the License. You may obtain a copy of
+ the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
+ by applicable law or agreed to in writing, software distributed under the
+ License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied. See the License for the specific
+ language governing permissions and limitations under the License. -->
+<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.sling.ide</groupId>
+ <artifactId>sling-ide-shared-parent</artifactId>
+ <version>1.2.3-SNAPSHOT</version>
+ <relativePath>../parent/</relativePath>
+ </parent>
+
+ <artifactId>org.apache.sling.ide.filevault.uber-jar</artifactId>
+ <name>Apache Sling IDE Tools FileVault Uber-Jar </name>
+
+ <scm>
+ <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-ide-tooling.git</connection>
+ <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-ide-tooling.git</developerConnection>
+ <url>https://gitbox.apache.org/repos/asf?p=sling-ide-tooling.git</url>
+ </scm>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>animal-sniffer-maven-plugin</artifactId>
+ <configuration>
+ <skip>true</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>biz.aQute.bnd</groupId>
+ <artifactId>bnd-maven-plugin</artifactId>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <!-- START JCR dependencies -->
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <!-- END JCR dependencies -->
+
+ <!-- START Apache Jackrabbit dependencies -->
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-jackrabbit-api</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-webdav</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-spi-commons</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-commons</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr2spi</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-client</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-spi</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-spi2dav</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpmime</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <!-- END Apache Jackrabbit dependencies -->
+
+ <!-- START Apache Jackrabbit FileVault dependencies -->
+ <dependency>
+ <groupId>org.apache.jackrabbit.vault</groupId>
+ <artifactId>vault-davex</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit.vault</groupId>
+ <artifactId>org.apache.jackrabbit.vault</artifactId>
+ <scope>compile</scope>
+ </dependency>
+ <!-- END Apache Jackrabbit FileVault dependencies -->
+
+ </dependencies>
+</project>
diff --git a/shared/modules/impl-resource/.project b/shared/impl-resource/.project
similarity index 72%
rename from shared/modules/impl-resource/.project
rename to shared/impl-resource/.project
index 11534a16..f4e01544 100644
--- a/shared/modules/impl-resource/.project
+++ b/shared/impl-resource/.project
@@ -10,16 +10,6 @@
<arguments>
</arguments>
</buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
diff --git a/shared/modules/impl-resource/README.md b/shared/impl-resource/README.md
similarity index 100%
rename from shared/modules/impl-resource/README.md
rename to shared/impl-resource/README.md
diff --git a/shared/modules/impl-resource/bnd.bnd b/shared/impl-resource/bnd.bnd
similarity index 100%
rename from shared/modules/impl-resource/bnd.bnd
rename to shared/impl-resource/bnd.bnd
diff --git a/shared/modules/impl-resource/pom.xml b/shared/impl-resource/pom.xml
similarity index 100%
rename from shared/modules/impl-resource/pom.xml
rename to shared/impl-resource/pom.xml
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/filer/SimpleFilter.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/filer/SimpleFilterLocator.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManager.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManager.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManager.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManager.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/AbstractCommand.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/AbstractCommand.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/AbstractCommand.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/AbstractCommand.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/AbstractResult.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/AbstractResult.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/AbstractResult.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/AbstractResult.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/DeleteNodeCommand.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/DeleteNodeCommand.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/DeleteNodeCommand.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/DeleteNodeCommand.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/GetNodeCommand.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/GetNodeCommand.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/GetNodeCommand.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/GetNodeCommand.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/GetNodeContentCommand.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/GetNodeContentCommand.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/GetNodeContentCommand.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/GetNodeContentCommand.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/ListChildrenCommand.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/ListChildrenCommand.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/ListChildrenCommand.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/ListChildrenCommand.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/RepositoryFactoryImpl.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/RepositoryImpl.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/UpdateContentCommand.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/UpdateContentCommand.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/UpdateContentCommand.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/transport/UpdateContentCommand.java
diff --git a/shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/util/Constants.java b/shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/util/Constants.java
similarity index 100%
rename from shared/modules/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/util/Constants.java
rename to shared/impl-resource/src/main/java/org/apache/sling/ide/impl/resource/util/Constants.java
diff --git a/shared/modules/impl-resource/src/test/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.java b/shared/impl-resource/src/test/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.java
similarity index 100%
rename from shared/modules/impl-resource/src/test/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.java
rename to shared/impl-resource/src/test/java/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.java
diff --git a/shared/modules/impl-resource/src/test/resources/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.serializedDataIsEscaped.xml b/shared/impl-resource/src/test/resources/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.serializedDataIsEscaped.xml
similarity index 100%
rename from shared/modules/impl-resource/src/test/resources/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.serializedDataIsEscaped.xml
rename to shared/impl-resource/src/test/resources/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.serializedDataIsEscaped.xml
diff --git a/shared/modules/impl-resource/src/test/resources/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.stringSerializedData.xml b/shared/impl-resource/src/test/resources/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.stringSerializedData.xml
similarity index 100%
rename from shared/modules/impl-resource/src/test/resources/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.stringSerializedData.xml
rename to shared/impl-resource/src/test/resources/org/apache/sling/ide/impl/resource/serialization/SimpleXmlSerializationManagerTest.stringSerializedData.xml
diff --git a/shared/modules/impl-vlt/.project b/shared/impl-vlt/.project
similarity index 72%
rename from shared/modules/impl-vlt/.project
rename to shared/impl-vlt/.project
index a5eecdb5..46d0e85a 100644
--- a/shared/modules/impl-vlt/.project
+++ b/shared/impl-vlt/.project
@@ -10,16 +10,6 @@
<arguments>
</arguments>
</buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
diff --git a/shared/modules/impl-vlt/README.md b/shared/impl-vlt/README.md
similarity index 100%
rename from shared/modules/impl-vlt/README.md
rename to shared/impl-vlt/README.md
diff --git a/shared/modules/impl-vlt/bnd.bnd b/shared/impl-vlt/bnd.bnd
similarity index 72%
rename from shared/modules/impl-vlt/bnd.bnd
rename to shared/impl-vlt/bnd.bnd
index c6f44213..1cb5e53b 100644
--- a/shared/modules/impl-vlt/bnd.bnd
+++ b/shared/impl-vlt/bnd.bnd
@@ -1,3 +1,3 @@
--includeresource: plugin.xml, .options
Bundle-SymbolicName: org.apache.sling.ide.impl-vlt;singleton:=true
SlingIDE-PluginLoggerEnabled: true
+Bundle-ActivationPolicy: lazy
diff --git a/shared/modules/impl-vlt/pom.xml b/shared/impl-vlt/pom.xml
similarity index 88%
rename from shared/modules/impl-vlt/pom.xml
rename to shared/impl-vlt/pom.xml
index 91871317..0a1509b2 100644
--- a/shared/modules/impl-vlt/pom.xml
+++ b/shared/impl-vlt/pom.xml
@@ -77,21 +77,18 @@
<dependency>
<groupId>org.apache.jackrabbit.vault</groupId>
<artifactId>org.apache.jackrabbit.vault</artifactId>
- <version>3.1.44</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.jackrabbit.vault</groupId>
<artifactId>vault-davex</artifactId>
- <version>3.1.44</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
<artifactId>jackrabbit-spi-commons</artifactId>
- <version>2.16.0</version>
<scope>provided</scope>
</dependency>
@@ -146,8 +143,27 @@
</dependency>
<dependency>
<groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-core</artifactId>
- <version>2.16.0</version>
+ <artifactId>oak-core</artifactId>
+ <version>${oak.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-core</artifactId>
+ <version>${oak.version}</version>
+ <classifier>tests</classifier>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-jcr</artifactId>
+ <version>${oak.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-segment-tar</artifactId>
+ <version>${oak.version}</version>
<scope>test</scope>
</dependency>
<dependency>
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommand.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommand.java
similarity index 97%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommand.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommand.java
index 3f87e82b..c04b843c 100644
--- a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommand.java
+++ b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommand.java
@@ -20,8 +20,8 @@ import static org.apache.jackrabbit.vault.util.JcrConstants.JCR_CONTENT;
import static org.apache.jackrabbit.vault.util.JcrConstants.JCR_DATA;
import static org.apache.jackrabbit.vault.util.JcrConstants.JCR_LASTMODIFIED;
import static org.apache.jackrabbit.vault.util.JcrConstants.JCR_PRIMARYTYPE;
+import static org.apache.jackrabbit.vault.util.JcrConstants.NT_FILE;
import static org.apache.jackrabbit.vault.util.JcrConstants.NT_RESOURCE;
-import static org.apache.sling.ide.transport.Repository.NT_FILE;
import java.io.File;
import java.io.FileInputStream;
@@ -53,8 +53,8 @@ import javax.jcr.ValueFactory;
import javax.jcr.nodetype.NodeType;
import javax.jcr.nodetype.PropertyDefinition;
+import org.apache.jackrabbit.util.Text;
import org.apache.jackrabbit.vault.util.JcrConstants;
-import org.apache.jackrabbit.vault.util.Text;
import org.apache.sling.ide.filter.FilterResult;
import org.apache.sling.ide.log.Logger;
import org.apache.sling.ide.transport.CommandContext;
@@ -97,8 +97,12 @@ public class AddOrUpdateNodeCommand extends JcrCommand<Void> {
getLogger().trace("Found existing node at {0} with primaryType {1}", path,
node.getPrimaryNodeType().getName());
} else {
- node = createNode(resource, session);
- getLogger().trace("Created node at {0} with primaryType {1}", path, node.getPrimaryNodeType().getName());
+ try {
+ node = createNode(resource, session);
+ getLogger().trace("Created node at {0} with primaryType {1}", path, node.getPrimaryNodeType().getName());
+ } catch (RepositoryException e) {
+ throw new RepositoryException("Could not create node at " + Text.getRelativeParent(resource.getPath(), 1) + " based on resource " + resource, e);
+ }
}
if (nodeExists && getFlags().contains(CommandExecutionFlag.CREATE_ONLY_WHEN_MISSING)) {
@@ -163,7 +167,7 @@ public class AddOrUpdateNodeCommand extends JcrCommand<Void> {
}
if (!session.nodeExists(parentLocation)) {
- throw new RepositoryException("No parent found at " + parentLocation + " ; it's needed to create node at "
+ throw new RepositoryException("No parent node found at " + parentLocation + "; it's needed to create node at "
+ resource.getPath());
}
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ConversionUtils.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ConversionUtils.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ConversionUtils.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ConversionUtils.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/DeleteNodeCommand.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/DeleteNodeCommand.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/DeleteNodeCommand.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/DeleteNodeCommand.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/GetNodeCommand.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/GetNodeCommand.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/GetNodeCommand.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/GetNodeCommand.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/GetNodeContentCommand.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/GetNodeContentCommand.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/GetNodeContentCommand.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/GetNodeContentCommand.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/JcrCommand.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/JcrCommand.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/JcrCommand.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/JcrCommand.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/JcrResult.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/JcrResult.java
similarity index 92%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/JcrResult.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/JcrResult.java
index c2c4efb8..c8b272e1 100644
--- a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/JcrResult.java
+++ b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/JcrResult.java
@@ -59,12 +59,14 @@ public class JcrResult<T> implements Result<T> {
@Override
public String toString() {
StringBuilder out = new StringBuilder();
- out.append(getClass().getSimpleName()).append("[ success:").append(success);
+ out.append(getClass().getSimpleName()).append(" [success:").append(success);
- if (exception != null)
+ if (exception != null) {
+ // TODO: stack trace
+ // TODO: log cause
out.append(", exception: ").append(exception.getClass().getName()).append(" - ")
.append(exception.getMessage());
-
+ }
out.append(']');
return out.toString();
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ListChildrenCommand.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ListChildrenCommand.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ListChildrenCommand.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ListChildrenCommand.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ListTreeCommand.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ListTreeCommand.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ListTreeCommand.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ListTreeCommand.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/NoOpCommand.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/NoOpCommand.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/NoOpCommand.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/NoOpCommand.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommand.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommand.java
similarity index 99%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommand.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommand.java
index c6909bf4..48460f6e 100644
--- a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommand.java
+++ b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommand.java
@@ -31,7 +31,7 @@ import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.nodetype.NodeType;
-import org.apache.jackrabbit.vault.util.Text;
+import org.apache.jackrabbit.util.Text;
import org.apache.sling.ide.log.Logger;
import org.apache.sling.ide.transport.ResourceProxy;
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VaultFsLocator.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VaultFsLocator.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VaultFsLocator.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VaultFsLocator.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VaultFsLocatorImpl.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VaultFsLocatorImpl.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VaultFsLocatorImpl.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VaultFsLocatorImpl.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeDefinition.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeDefinition.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeDefinition.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeDefinition.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeType.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeType.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeType.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeType.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeTypeFactory.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeTypeFactory.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeTypeFactory.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeTypeFactory.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeTypeRegistry.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeTypeRegistry.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeTypeRegistry.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltNodeTypeRegistry.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltPropertyDefinition.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltPropertyDefinition.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltPropertyDefinition.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltPropertyDefinition.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltRepository.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltRepository.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltRepository.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltRepository.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java
similarity index 99%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java
index e969f484..64f4261b 100644
--- a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java
+++ b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/VltRepositoryFactory.java
@@ -33,7 +33,7 @@ import org.osgi.service.event.EventAdmin;
* This service should get precedence over {@code org.apache.sling.ide.impl.resource.transport.RepositoryFactoryImpl} in
* case both are deployed in an OSGi container.
*/
-@Component(service = RepositoryFactory.class, property="service.ranking:Integer=1000")
+@Component(service = RepositoryFactory.class, property="service.ranking:Integer=1000", immediate = true)
public class VltRepositoryFactory implements RepositoryFactory {
@Reference
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/filter/VltFilter.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/filter/VltFilter.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/filter/VltFilter.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/filter/VltFilter.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/filter/VltFilterLocator.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/filter/VltFilterLocator.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/filter/VltFilterLocator.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/filter/VltFilterLocator.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/ResourceProxyParserHandler.java
similarity index 65%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/ResourceProxyParserHandler.java
index 55640fc8..79c25f95 100644
--- a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandler.java
+++ b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/ResourceProxyParserHandler.java
@@ -16,6 +16,7 @@
*/
package org.apache.sling.ide.impl.vlt.serialization;
+import java.io.IOException;
import java.math.BigDecimal;
import java.net.URISyntaxException;
import java.util.Calendar;
@@ -24,41 +25,28 @@ import java.util.EnumSet;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.Map;
+import java.util.Optional;
import java.util.UUID;
-import javax.jcr.NamespaceException;
import javax.jcr.PropertyType;
+import javax.jcr.RepositoryException;
-import org.apache.jackrabbit.spi.commons.conversion.DefaultNamePathResolver;
-import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
+import org.apache.jackrabbit.spi.commons.conversion.NameResolver;
import org.apache.jackrabbit.util.ISO8601;
-import org.apache.jackrabbit.util.ISO9075;
-import org.apache.jackrabbit.vault.util.DocViewNode;
-import org.apache.jackrabbit.vault.util.DocViewProperty;
-import org.apache.sling.ide.log.Logger;
+import org.apache.jackrabbit.vault.fs.io.DocViewParserHandler;
+import org.apache.jackrabbit.vault.util.DocViewNode2;
+import org.apache.jackrabbit.vault.util.DocViewProperty2;
import org.apache.sling.ide.transport.ResourceProxy;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-public class ContentXmlHandler extends DefaultHandler implements NamespaceResolver {
+public class ResourceProxyParserHandler implements DocViewParserHandler {
- private static final String JCR_ROOT = "jcr:root";
- private final ResourceProxy root;
- private final Deque<ResourceProxy> queue = new LinkedList<>();
+ private ResourceProxy root;
+
+ private NameResolver nameResolver;
- /**
- * map containing fully qualified uris as keys and their defined prefixes as values
- */
- private final Map<String, String> uriPrefixMap;
-
- /**
- * the default name path resolver
- */
- private final DefaultNamePathResolver npResolver = new DefaultNamePathResolver(this);
- private Logger logger;
+ private final Deque<ResourceProxy> resourceQueue = new LinkedList<>();
- /**
+ /**
* all type hint classes in a map (key = type integer value)
*/
private static final Map<Integer, TypeHint> TYPE_HINT_MAP;
@@ -70,76 +58,46 @@ public class ContentXmlHandler extends DefaultHandler implements NamespaceResolv
}
}
- public ContentXmlHandler(String rootResourcePath, Logger logger) {
- root = new ResourceProxy(rootResourcePath);
- uriPrefixMap = new HashMap<>();
-
- this.logger = logger;
- }
-
- @Override
- public void startPrefixMapping(String prefix, String uri) throws SAXException {
- uriPrefixMap.put(uri, prefix);
- }
-
- @Override
- public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
-
- ResourceProxy current;
- // name is equal to label except for SNS
- String label = ISO9075.decode(qName);
- String name = label;
- // code mostly taken from {@link org.apache.jackrabbit.vault.fs.impl.io.DocViewSaxImporter}
- DocViewNode node;
- try {
- node = new DocViewNode(name, label, attributes, npResolver);
-
- if (qName.equals(JCR_ROOT)) {
- current = root;
- } else {
- ResourceProxy parent = queue.peekLast();
-
- StringBuilder path = new StringBuilder(parent.getPath());
- if (path.charAt(path.length() - 1) != '/')
- path.append('/');
- path.append(qName);
-
- current = new ResourceProxy(ISO9075.decode(path.toString()));
- parent.addChild(current);
- }
-
- for (Map.Entry<String, DocViewProperty> entry : node.props.entrySet()) {
-
- try {
- Object typedValue = TypeHint.convertDocViewPropertyToTypedValue(entry.getValue());
-
- // unsupported
- if (typedValue == null) {
- continue;
- }
- current.addProperty(entry.getKey(), typedValue);
- } catch (Throwable t) {
- logger.error("Could not parse property '" + entry.getValue().name, t);
- }
- }
-
- queue.add(current);
- } catch (NamespaceException e) {
- logger.error("Could not resolve a JCR namespace.", e);
- }
- }
-
- @Override
- public void endElement(String uri, String localName, String qName) throws SAXException {
-
- queue.removeLast();
- }
-
- public ResourceProxy getRoot() {
- return root;
- }
-
- /**
+ public ResourceProxyParserHandler() {
+
+ }
+
+
+ @Override
+ public void setNameResolver(NameResolver nameResolver) {
+ this.nameResolver = nameResolver;
+ }
+
+
+ @Override
+ public void startDocViewNode(String nodePath, DocViewNode2 docViewNode, Optional<DocViewNode2> parentDocViewNode,
+ int line, int column) throws IOException, RepositoryException {
+
+ ResourceProxy currentResource = new ResourceProxy(nodePath);
+ for (DocViewProperty2 property: docViewNode.getProperties()) {
+ Object value = TypeHint.convertDocViewPropertyToTypedValue(property);
+ if (value != null) {
+ // always use qualified names (leveraging the namespace declaration from the DocView XML)
+ currentResource.addProperty(nameResolver.getJCRName(property.getName()), value);
+ }
+ }
+ if (root == null) {
+ root = currentResource;
+ } else {
+ ResourceProxy parent = resourceQueue.peekLast();
+ parent.addChild(currentResource);
+ }
+ resourceQueue.add(currentResource);
+
+ }
+
+ @Override
+ public void endDocViewNode(String nodePath, DocViewNode2 docViewNode, Optional<DocViewNode2> parentDocViewNode,
+ int line, int column) throws IOException, RepositoryException {
+ resourceQueue.removeLast();
+ }
+
+ /**
* Each enum implements the {@link TypeHint#parseValues(String[], boolean)} in a way, that the String[] value is converted to the closest underlying type.
*/
static enum TypeHint {
@@ -292,12 +250,12 @@ public class ContentXmlHandler extends DefaultHandler implements NamespaceResolv
}
};
- static Object convertDocViewPropertyToTypedValue(DocViewProperty property) {
- TypeHint hint = TYPE_HINT_MAP.get(property.type);
+ static Object convertDocViewPropertyToTypedValue(DocViewProperty2 property) {
+ TypeHint hint = TYPE_HINT_MAP.get(property.getType());
if (hint == null) {
- throw new IllegalArgumentException("Unknown type value '" + property.type + "'");
+ throw new IllegalArgumentException("Unknown type value '" + property.getType() + "'");
}
- return hint.parseValues(property.values, property.isMulti);
+ return hint.parseValues(property.getStringValues().toArray(new String[0]), property.isMultiValue());
}
private final int propertyType;
@@ -315,21 +273,7 @@ public class ContentXmlHandler extends DefaultHandler implements NamespaceResolv
}
- /**
- * {@inheritDoc}
- */
- public String getURI(String prefix) throws NamespaceException {
- throw new UnsupportedOperationException("The method getUri is not implemented as this is not being used");
- }
-
- /**
- * {@inheritDoc}
- */
- public String getPrefix(String uri) throws NamespaceException {
- String prefix = uriPrefixMap.get(uri);
- if (prefix == null) {
- throw new NamespaceException("Could not find defined prefix for uri " + uri);
- }
- return prefix;
- }
+ public ResourceProxy getRoot() {
+ return root;
+ }
}
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationDataBuilder.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationDataBuilder.java
similarity index 99%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationDataBuilder.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationDataBuilder.java
index a5c1172f..a00e9f00 100644
--- a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationDataBuilder.java
+++ b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationDataBuilder.java
@@ -34,6 +34,7 @@ import javax.jcr.Value;
import javax.jcr.ValueFormatException;
import javax.jcr.nodetype.NodeType;
+import org.apache.jackrabbit.util.Text;
import org.apache.jackrabbit.vault.fs.api.Aggregate;
import org.apache.jackrabbit.vault.fs.api.Aggregator;
import org.apache.jackrabbit.vault.fs.api.RepositoryAddress;
@@ -47,7 +48,6 @@ import org.apache.jackrabbit.vault.util.Constants;
import org.apache.jackrabbit.vault.util.JcrConstants;
import org.apache.jackrabbit.vault.util.MimeTypes;
import org.apache.jackrabbit.vault.util.PlatformNameFormat;
-import org.apache.jackrabbit.vault.util.Text;
import org.apache.sling.ide.impl.vlt.VaultFsLocator;
import org.apache.sling.ide.jcr.RepositoryUtils;
import org.apache.sling.ide.log.Logger;
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java
similarity index 88%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java
index d98ae8fc..0adc9c7c 100644
--- a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java
+++ b/shared/impl-vlt/src/main/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManager.java
@@ -27,20 +27,17 @@ import javax.jcr.Repository;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
import javax.jcr.SimpleCredentials;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
+import org.apache.jackrabbit.util.Text;
import org.apache.jackrabbit.vault.fs.Mounter;
import org.apache.jackrabbit.vault.fs.api.RepositoryAddress;
-import org.apache.jackrabbit.vault.fs.api.SerializationType;
import org.apache.jackrabbit.vault.fs.api.VaultFile;
import org.apache.jackrabbit.vault.fs.api.VaultFileSystem;
-import org.apache.jackrabbit.vault.fs.impl.io.XmlAnalyzer;
+import org.apache.jackrabbit.vault.fs.io.DocViewParser;
+import org.apache.jackrabbit.vault.fs.io.DocViewParser.XmlParseException;
import org.apache.jackrabbit.vault.util.Constants;
import org.apache.jackrabbit.vault.util.PlatformNameFormat;
import org.apache.jackrabbit.vault.util.RepositoryProvider;
-import org.apache.jackrabbit.vault.util.Text;
import org.apache.sling.ide.impl.vlt.VaultFsLocator;
import org.apache.sling.ide.log.Logger;
import org.apache.sling.ide.serialization.SerializationDataBuilder;
@@ -51,7 +48,6 @@ import org.apache.sling.ide.transport.ResourceProxy;
import org.osgi.service.component.annotations.Component;
import org.osgi.service.component.annotations.Reference;
import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
@Component(service = SerializationManager.class)
public class VltSerializationManager implements SerializationManager {
@@ -126,8 +122,7 @@ public class VltSerializationManager implements SerializationManager {
// TODO - copied from TransactionImpl
try (InputStream in = new BufferedInputStream(new FileInputStream(file))) {
- SerializationType serType = XmlAnalyzer.analyze(new InputSource(in));
- return serType == SerializationType.XML_DOCVIEW;
+ return DocViewParser.isDocView(new InputSource(in));
} catch (IOException e) {
throw new RuntimeException(e);
}
@@ -156,8 +151,7 @@ public class VltSerializationManager implements SerializationManager {
// TODO - copied from TransactionImpl
try (InputStream in = new BufferedInputStream(new FileInputStream(file))) {
- SerializationType serType = XmlAnalyzer.analyze(new InputSource(in));
- if (serType == SerializationType.XML_DOCVIEW) {
+ if (DocViewParser.isDocView(new InputSource(in))) {
return getPathWithoutXmlExtension(file);
}
@@ -235,22 +229,17 @@ public class VltSerializationManager implements SerializationManager {
@Override
public ResourceProxy readSerializationData(String filePath, InputStream source) throws IOException {
-
if (source == null)
return null;
String repositoryPath = getRepositoryPath(filePath);
try {
- SAXParserFactory factory = SAXParserFactory.newInstance();
- factory.setNamespaceAware(true);
- factory.setFeature("http://xml.org/sax/features/namespace-prefixes", false);
- SAXParser parser = factory.newSAXParser();
- ContentXmlHandler handler = new ContentXmlHandler(repositoryPath, logger);
- parser.parse(source, handler);
-
+ DocViewParser parser = new DocViewParser();
+ ResourceProxyParserHandler handler = new ResourceProxyParserHandler();
+ parser.parse(repositoryPath, new InputSource(source), handler);
return handler.getRoot();
- } catch (SAXException | ParserConfigurationException e) {
+ } catch (XmlParseException e) {
// TODO proper error handling
throw new IOException(e);
}
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/jcr/RepositoryUtils.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/jcr/RepositoryUtils.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/jcr/RepositoryUtils.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/jcr/RepositoryUtils.java
diff --git a/shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/jcr/package-info.java b/shared/impl-vlt/src/main/java/org/apache/sling/ide/jcr/package-info.java
similarity index 100%
rename from shared/modules/impl-vlt/src/main/java/org/apache/sling/ide/jcr/package-info.java
rename to shared/impl-vlt/src/main/java/org/apache/sling/ide/jcr/package-info.java
diff --git a/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommandTest.java b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommandTest.java
new file mode 100644
index 00000000..054169bb
--- /dev/null
+++ b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommandTest.java
@@ -0,0 +1,381 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.ide.impl.vlt;
+
+import static org.apache.sling.ide.transport.Repository.CommandExecutionFlag.CREATE_ONLY_WHEN_MISSING;
+import static org.hamcrest.CoreMatchers.equalTo;
+import static org.junit.Assert.assertThat;
+
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.Session;
+import javax.jcr.Value;
+
+import org.apache.jackrabbit.vault.util.JcrConstants;
+import org.apache.sling.ide.filter.Filter;
+import org.apache.sling.ide.filter.FilterResult;
+import org.apache.sling.ide.log.Logger;
+import org.apache.sling.ide.transport.CommandContext;
+import org.apache.sling.ide.transport.ResourceProxy;
+import org.hamcrest.Matchers;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+
+public class AddOrUpdateNodeCommandTest {
+
+ private static final CommandContext DEFAULT_CONTEXT = new CommandContext(new Filter() {
+ @Override
+ public FilterResult filter(String repositoryPath) {
+ return FilterResult.ALLOW;
+ }
+ });
+
+ @Rule
+ public final RepositoryManager repositoryManager = new RepositoryManager();
+
+ private static final String PROP_NAME = "jcr:title";
+
+ private Logger logger = new Slf4jLogger();
+
+ @Test
+ public void setProperty() throws Exception {
+
+ doPropertyChangeTest(null, "Title");
+ }
+
+ private ResourceProxy newResource(String path, String primaryType) {
+
+ ResourceProxy resource = new ResourceProxy(path);
+ resource.addProperty("jcr:primaryType", primaryType);
+ return resource;
+ }
+
+
+ private void doPropertyChangeTest(final Object initialPropertyValues, final Object newPropertyValues)
+ throws Exception {
+
+ Session session = repositoryManager.getAdminSession();
+ Node contentNode = session.getRootNode().addNode("content");
+ if (initialPropertyValues instanceof String) {
+ contentNode.setProperty(PROP_NAME, (String) initialPropertyValues);
+ } else if (initialPropertyValues instanceof String[]) {
+ contentNode.setProperty(PROP_NAME, (String[]) initialPropertyValues);
+ }
+
+ session.save();
+
+ ResourceProxy resource = newResource("/content", JcrConstants.NT_UNSTRUCTURED);
+ if (newPropertyValues != null) {
+ resource.addProperty(PROP_NAME, newPropertyValues);
+ }
+
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repositoryManager.getRepository(),
+ repositoryManager.getAdminCredentials(), DEFAULT_CONTEXT, null, resource, logger);
+ cmd.execute().get();
+
+ session.refresh(false);
+
+ if (newPropertyValues == null) {
+ assertThat(session.getNode("/content").hasProperty(PROP_NAME), equalTo(false));
+ return;
+ }
+
+ Property newProp = session.getNode("/content").getProperty(PROP_NAME);
+ if (newPropertyValues instanceof String) {
+ assertThat("property.isMultiple", newProp.isMultiple(), equalTo(Boolean.FALSE));
+ assertThat(newProp.getString(), equalTo((String) newPropertyValues));
+
+ } else {
+
+ String[] expectedValues = (String[]) newPropertyValues;
+ assertThat("property.isMultiple", newProp.isMultiple(), equalTo(Boolean.TRUE));
+
+ Value[] values = session.getNode("/content").getProperty(PROP_NAME).getValues();
+
+ assertThat(values.length, equalTo(expectedValues.length));
+ for (int i = 0; i < values.length; i++) {
+ assertThat(values[i].getString(), equalTo(expectedValues[i]));
+ }
+
+ }
+
+ }
+
+ @Test
+ public void removeProperty() throws Exception {
+
+ doPropertyChangeTest("Title", null);
+ }
+
+ @Test
+ public void singlePropertyToMultiValued() throws Exception {
+
+ doPropertyChangeTest("Title", new String[] { "Title", "Title 2" });
+ }
+
+ @Test
+ public void multiValuesPropertyToSingle() throws Exception {
+
+ doPropertyChangeTest(new String[] { "Title", "Title 2" }, "Title");
+ }
+
+
+ @Test
+ public void changeNtFolderToSlingFolderWithAddedProperty() throws Exception {
+
+ Session session = repositoryManager.getAdminSession();
+ session.getRootNode().addNode("content", "nt:folder");
+
+ session.save();
+
+ ResourceProxy resource = newResource("/content", "sling:Folder");
+ resource.getProperties().put("newProperty", "some/value");
+
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repositoryManager.getRepository(), repositoryManager.getAdminCredentials(), DEFAULT_CONTEXT, null,
+ resource, logger);
+ cmd.execute().get();
+
+ session.refresh(false);
+
+ Node content = session.getRootNode().getNode("content");
+ assertThat(content.getPrimaryNodeType().getName(), equalTo("sling:Folder"));
+
+ }
+
+ @Test
+ public void changeSlingFolderToNtFolderWithExistingProperty() throws Exception {
+ Session session = repositoryManager.getAdminSession();
+ Node content = session.getRootNode().addNode("content", "sling:Folder");
+ content.setProperty("newProperty", "some/value");
+
+ session.save();
+
+ ResourceProxy resource = newResource("/content", "nt:folder");
+
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repositoryManager.getRepository(), repositoryManager.getAdminCredentials(), DEFAULT_CONTEXT, null,
+ resource, logger);
+ cmd.execute().get();
+
+ session.refresh(false);
+
+ content = session.getRootNode().getNode("content");
+ assertThat(content.getPrimaryNodeType().getName(), equalTo("nt:folder"));
+
+ }
+
+ @Test
+ @Ignore("SLING-4036")
+ public void updateNtUnstructuredToNodeWithRequiredProperty() throws Exception {
+
+ Session session = repositoryManager.getAdminSession();
+ Node content = session.getRootNode().addNode("content", "nt:unstructured");
+
+ session.save();
+
+ ResourceProxy resource = newResource("/content", "custom");
+ resource.getProperties().put("attribute", "some value");
+
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repositoryManager.getRepository(), repositoryManager.getAdminCredentials(), DEFAULT_CONTEXT, null,
+ resource, logger);
+ cmd.execute().get();
+
+ session.refresh(false);
+
+ content = session.getRootNode().getNode("content");
+ assertThat(content.getPrimaryNodeType().getName(), equalTo("custom"));
+
+ }
+
+ @Test
+ public void nodeNotPresentButOutsideOfFilterIsNotRemoved() throws Exception {
+
+ final CommandContext context = new CommandContext(new Filter() {
+
+ @Override
+ public FilterResult filter(String repositoryPath) {
+ if (repositoryPath.equals("/content/not-included-child")) {
+ return FilterResult.DENY;
+ }
+
+ return FilterResult.ALLOW;
+ }
+ });
+
+ Session session = repositoryManager.getAdminSession();
+ Node content = session.getRootNode().addNode("content", "nt:unstructured");
+ content.addNode("included-child");
+ content.addNode("not-included-child");
+
+ session.save();
+
+ ResourceProxy resource = newResource("/content", "nt:unstructured");
+ resource.addChild(newResource("/content/included-child", "nt:unstructured"));
+
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repositoryManager.getRepository(), repositoryManager.getAdminCredentials(), context, null, resource,
+ logger);
+ cmd.execute().get();
+
+ session.refresh(false);
+
+ content = session.getRootNode().getNode("content");
+ content.getNode("included-child");
+ content.getNode("not-included-child");
+
+ }
+
+
+ @Test
+ public void createIfRequiredFlagSkipsExistingResources() throws Exception {
+
+ Session session = repositoryManager.getAdminSession();
+ Node content = session.getRootNode().addNode("content", "nt:folder");
+
+ session.save();
+
+ ResourceProxy resource = newResource("/content", "nt:unstructured");
+
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repositoryManager.getRepository(), repositoryManager.getAdminCredentials(), DEFAULT_CONTEXT, null,
+ resource, logger, CREATE_ONLY_WHEN_MISSING);
+ cmd.execute().get();
+
+ session.refresh(false);
+
+ content = session.getRootNode().getNode("content");
+ assertThat(content.getPrimaryNodeType().getName(), equalTo("nt:folder"));
+
+ }
+
+ @Test
+ public void createIfRequiredFlagCreatesNeededResources() throws Exception {
+
+ Session session = repositoryManager.getAdminSession();
+ ResourceProxy resource = newResource("/content", "nt:unstructured");
+
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repositoryManager.getRepository(), repositoryManager.getAdminCredentials(), DEFAULT_CONTEXT, null,
+ resource, logger, CREATE_ONLY_WHEN_MISSING);
+ cmd.execute().get();
+
+ session.refresh(false);
+
+ Node content = session.getRootNode().getNode("content");
+ assertThat(content.getPrimaryNodeType().getName(), equalTo("nt:unstructured"));
+
+ }
+
+ @Test
+ public void createIfRequiredFlagCreatesNeededResourcesEvenWhenPrimaryTypeIsMissing() throws Exception {
+
+ Session session = repositoryManager.getAdminSession();
+ ResourceProxy resource = new ResourceProxy("/content");
+
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repositoryManager.getRepository(), repositoryManager.getAdminCredentials(), DEFAULT_CONTEXT, null,
+ resource, logger, CREATE_ONLY_WHEN_MISSING);
+ cmd.execute().get();
+
+ session.refresh(false);
+
+ Node content = session.getRootNode().getNode("content");
+ assertThat(content.getPrimaryNodeType().getName(), equalTo("nt:unstructured"));
+
+ }
+
+ @Test
+ public void autoCreatedPropertiesAreNotRemoved() throws Exception {
+
+ Session session = repositoryManager.getAdminSession();
+ Node content = session.getRootNode().addNode("content", "nt:folder");
+
+ session.save();
+
+ ResourceProxy resource = newResource("/content", "nt:folder");
+ resource.addProperty("jcr:mixinTypes", "mix:lastModified");
+
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repositoryManager.getRepository(), repositoryManager.getAdminCredentials(), DEFAULT_CONTEXT, null,
+ resource, logger);
+ cmd.execute().get();
+ cmd.execute().get(); // second time since mixins are processed after properties so we need two
+ // executions to
+ // expose the problem
+
+ session.refresh(false);
+
+ content = session.getRootNode().getNode("content");
+ assertThat("jcr:lastModified property not present", content.hasProperty("jcr:lastModified"),
+ equalTo(true));
+ assertThat("jcr:lastModifiedBy property not present", content.hasProperty("jcr:lastModifiedBy"),
+ equalTo(true));
+
+ }
+
+ @Test
+ public void autoCreatedPropertiesAreUpdatedIfPresent() throws Exception {
+
+ Session session = repositoryManager.getAdminSession();
+ Node content = session.getRootNode().addNode("content", "nt:folder");
+
+ session.save();
+
+ ResourceProxy resource = newResource("/content", "nt:folder");
+ resource.addProperty("jcr:mixinTypes", "mix:lastModified");
+ resource.addProperty("jcr:lastModifiedBy", "admin2");
+
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repositoryManager.getRepository(), repositoryManager.getAdminCredentials(), DEFAULT_CONTEXT, null,
+ resource, logger);
+ cmd.execute().get();
+ cmd.execute().get(); // second time since mixins are processed after properties so we need two
+ // executions to
+ // expose the problem
+
+ session.refresh(false);
+
+ content = session.getRootNode().getNode("content");
+ assertThat("jcr:lastModifiedBy property not modified",
+ content.getProperty("jcr:lastModifiedBy").getString(), equalTo("admin2"));
+
+ }
+
+ @Test
+ public void setEmptyMixinTypes() throws Exception {
+ setMixinTypes0();
+ }
+
+ private void setMixinTypes0(final String... mixinTypeNames) throws Exception {
+
+ Session session = repositoryManager.getAdminSession();
+ ResourceProxy resource = newResource("/content", "nt:unstructured");
+ resource.addProperty("jcr:mixinTypes", mixinTypeNames);
+
+ AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repositoryManager.getRepository(),
+ repositoryManager.getAdminCredentials(), DEFAULT_CONTEXT, null,
+ resource, logger);
+ cmd.execute().get();
+
+ session.refresh(false);
+
+ Node content = session.getRootNode().getNode("content");
+ assertThat(content.getMixinNodeTypes(), Matchers.arrayWithSize(mixinTypeNames.length));
+
+ }
+
+ @Test
+ public void setMixinTypes() throws Exception {
+
+ setMixinTypes0("mix:created");
+ }
+
+}
diff --git a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommandTest.java b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommandTest.java
similarity index 88%
rename from shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommandTest.java
rename to shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommandTest.java
index f08cac47..189468fe 100644
--- a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommandTest.java
+++ b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/ReorderChildNodesCommandTest.java
@@ -20,24 +20,25 @@ import static java.util.Arrays.asList;
import static org.hamcrest.Matchers.equalTo;
import static org.junit.Assert.assertThat;
-import java.io.File;
import java.util.ArrayList;
import java.util.List;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.Session;
-import javax.jcr.SimpleCredentials;
-import org.apache.jackrabbit.core.TransientRepository;
import org.apache.sling.ide.log.Logger;
import org.apache.sling.ide.transport.ResourceProxy;
+import org.junit.Rule;
import org.junit.Test;
public class ReorderChildNodesCommandTest {
private Logger logger = new Slf4jLogger();
+ @Rule
+ public final RepositoryManager repositoryManager = new RepositoryManager();
+
@Test
public void singleReordering() throws Exception {
@@ -75,11 +76,7 @@ public class ReorderChildNodesCommandTest {
expected = resourceNames;
}
- File out = new File(new File("target"), "jackrabbit");
-
- TransientRepository repo = new TransientRepository(new File(out, "repository.xml"), new File(out, "repository"));
- SimpleCredentials credentials = new SimpleCredentials("admin", "admin".toCharArray());
- Session session = repo.login(credentials);
+ Session session = repositoryManager.getAdminSession();
List<String> finalOrder;
try {
Node content = session.getRootNode().addNode("content");
@@ -96,7 +93,7 @@ public class ReorderChildNodesCommandTest {
resource.addChild(newResource("/content/" + resourceName, "nt:unstructured"));
}
- ReorderChildNodesCommand cmd = new ReorderChildNodesCommand(repo, credentials, resource, logger);
+ ReorderChildNodesCommand cmd = new ReorderChildNodesCommand(repositoryManager.getRepository(), repositoryManager.getAdminCredentials(), resource, logger);
cmd.execute().get();
session.refresh(false);
diff --git a/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/RepositoryManager.java b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/RepositoryManager.java
new file mode 100644
index 00000000..4c074bed
--- /dev/null
+++ b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/RepositoryManager.java
@@ -0,0 +1,177 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.sling.ide.impl.vlt;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Properties;
+
+import javax.jcr.Credentials;
+import javax.jcr.LoginException;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
+import javax.jcr.UnsupportedRepositoryOperationException;
+import javax.jcr.nodetype.InvalidNodeTypeDefinitionException;
+import javax.jcr.nodetype.NodeTypeExistsException;
+
+import org.apache.jackrabbit.api.JackrabbitRepository;
+import org.apache.jackrabbit.commons.cnd.CndImporter;
+import org.apache.jackrabbit.commons.cnd.ParseException;
+import org.apache.jackrabbit.commons.jackrabbit.authorization.AccessControlUtils;
+import org.apache.jackrabbit.oak.jcr.Jcr;
+import org.apache.jackrabbit.oak.plugins.tree.impl.RootProviderService;
+import org.apache.jackrabbit.oak.plugins.tree.impl.TreeProviderService;
+import org.apache.jackrabbit.oak.security.internal.SecurityProviderBuilder;
+import org.apache.jackrabbit.oak.security.user.RandomAuthorizableNodeName;
+import org.apache.jackrabbit.oak.spi.security.ConfigurationParameters;
+import org.apache.jackrabbit.oak.spi.security.SecurityProvider;
+import org.apache.jackrabbit.oak.spi.security.authorization.AuthorizationConfiguration;
+import org.apache.jackrabbit.oak.spi.security.principal.EveryonePrincipal;
+import org.apache.jackrabbit.oak.spi.security.privilege.PrivilegeConstants;
+import org.apache.jackrabbit.oak.spi.security.user.AuthorizableNodeName;
+import org.apache.jackrabbit.oak.spi.security.user.UserConfiguration;
+import org.apache.jackrabbit.oak.spi.security.user.UserConstants;
+import org.apache.jackrabbit.oak.spi.security.user.action.AccessControlAction;
+import org.apache.jackrabbit.oak.spi.xml.ImportBehavior;
+import org.apache.jackrabbit.oak.spi.xml.ProtectedItemImporter;
+import org.junit.Rule;
+import org.junit.rules.ExternalResource;
+
+/**
+ * Creates an in memory Oak repository.
+ * To be used as JUnit {@link Rule}.
+ */
+public class RepositoryManager extends ExternalResource {
+
+ private Repository repository;
+ private Session adminSession;
+
+ public RepositoryManager() {
+
+ }
+
+ public Repository getRepository() throws RepositoryException, ParseException, IOException {
+ if (repository == null) {
+ repository = createOakRepository();
+ }
+ return repository;
+ }
+
+ /**
+ * @return the singleton admin session which is automatically closed at the end
+ * of the test
+ * @throws LoginException
+ * @throws RepositoryException
+ * @throws IOException
+ * @throws ParseException
+ */
+ public Session getAdminSession() throws LoginException, RepositoryException, ParseException, IOException {
+ if (adminSession == null) {
+ adminSession = getRepository().login(getAdminCredentials());
+ }
+ return adminSession;
+ }
+
+ /**
+ * @return a new admin session
+ * @throws LoginException
+ * @throws RepositoryException
+ * @throws IOException
+ * @throws ParseException
+ */
+ public Session createAdminSession() throws LoginException, RepositoryException, ParseException, IOException {
+ return getRepository().login(getAdminCredentials());
+ }
+
+ public Credentials getAdminCredentials() {
+ return new SimpleCredentials("admin", "admin".toCharArray());
+ }
+
+ Repository createOakRepository() throws RepositoryException, ParseException, IOException {
+ // in-memory repo
+ Jcr jcr = new Jcr();
+
+ // TODO: optimize by disabling JMX with
+ // https://issues.apache.org/jira/browse/OAK-9959
+ Repository repository = jcr.with(createSecurityProvider()).withAtomicCounter().createRepository();
+
+ // setup default read ACL for everyone
+ Session admin = repository.login(new SimpleCredentials("admin", "admin".toCharArray()));
+ AccessControlUtils.addAccessControlEntry(admin, "/", EveryonePrincipal.getInstance(),
+ new String[] { "jcr:read" }, true);
+
+ // add some more node type definitions
+ importNodeTypeDefinitions(admin, "test-definitions.cnd");
+ importNodeTypeDefinitions(admin, "folder.cnd");
+
+ admin.save();
+ admin.logout();
+
+ return repository;
+ }
+
+ private void importNodeTypeDefinitions(Session session, String cndResourceName)
+ throws InvalidNodeTypeDefinitionException, NodeTypeExistsException, UnsupportedRepositoryOperationException,
+ ParseException, RepositoryException, IOException {
+ try (InputStream cndInput = getClass().getResourceAsStream(cndResourceName)) {
+ if (cndInput == null) {
+ throw new IllegalArgumentException("Unable to read classpath resource " + cndResourceName);
+ }
+ CndImporter.registerNodeTypes(new InputStreamReader(cndInput), session);
+ }
+ }
+
+ static SecurityProvider createSecurityProvider() {
+ SecurityProvider securityProvider = SecurityProviderBuilder.newBuilder()
+ .with(getSecurityConfigurationParameters()).withRootProvider(new RootProviderService())
+ .withTreeProvider(new TreeProviderService()).build();
+ return securityProvider;
+ }
+
+ static ConfigurationParameters getSecurityConfigurationParameters() {
+ Properties userProps = new Properties();
+ AuthorizableNodeName nameGenerator = new RandomAuthorizableNodeName();
+
+ userProps.put(UserConstants.PARAM_USER_PATH, "/home/users");
+ userProps.put(UserConstants.PARAM_GROUP_PATH, "/home/groups");
+ userProps.put(AccessControlAction.USER_PRIVILEGE_NAMES, new String[] { PrivilegeConstants.JCR_ALL });
+ userProps.put(AccessControlAction.GROUP_PRIVILEGE_NAMES, new String[] { PrivilegeConstants.JCR_READ });
+ userProps.put(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, ImportBehavior.NAME_BESTEFFORT);
+ userProps.put(UserConstants.PARAM_AUTHORIZABLE_NODE_NAME, nameGenerator);
+ userProps.put("cacheExpiration", 3600 * 1000);
+ Properties authzProps = new Properties();
+ authzProps.put(ProtectedItemImporter.PARAM_IMPORT_BEHAVIOR, ImportBehavior.NAME_BESTEFFORT);
+ return ConfigurationParameters.of(UserConfiguration.NAME, ConfigurationParameters.of(userProps),
+ AuthorizationConfiguration.NAME, ConfigurationParameters.of(authzProps));
+ }
+
+ @Override
+ protected void after() {
+ if (repository != null) {
+ if (adminSession != null && adminSession.isLive()) {
+ adminSession.logout();
+ }
+ if (repository instanceof JackrabbitRepository) {
+ ((JackrabbitRepository) repository).shutdown();
+ }
+ }
+ }
+
+}
diff --git a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/Slf4jLogger.java b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/Slf4jLogger.java
similarity index 100%
rename from shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/Slf4jLogger.java
rename to shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/Slf4jLogger.java
diff --git a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/filter/VltFilterTest.java b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/filter/VltFilterTest.java
similarity index 100%
rename from shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/filter/VltFilterTest.java
rename to shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/filter/VltFilterTest.java
diff --git a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ResourceProxyParserHandlerTest.java
similarity index 85%
rename from shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java
rename to shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ResourceProxyParserHandlerTest.java
index f462a447..8f4dfc5f 100644
--- a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ContentXmlHandlerTest.java
+++ b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/serialization/ResourceProxyParserHandlerTest.java
@@ -23,6 +23,7 @@ import static org.hamcrest.Matchers.hasSize;
import static org.junit.Assert.assertThat;
import java.io.IOException;
+import java.io.InputStream;
import java.math.BigDecimal;
import java.util.Calendar;
import java.util.Map;
@@ -31,6 +32,8 @@ import javax.xml.parsers.ParserConfigurationException;
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
+import org.apache.jackrabbit.vault.fs.io.DocViewParser;
+import org.apache.jackrabbit.vault.fs.io.DocViewParser.XmlParseException;
import org.apache.sling.ide.impl.vlt.Slf4jLogger;
import org.apache.sling.ide.transport.ResourceProxy;
import org.hamcrest.Description;
@@ -41,10 +44,10 @@ import org.junit.Test;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
-public class ContentXmlHandlerTest {
+public class ResourceProxyParserHandlerTest {
@Test
- public void simpleContentXml() throws ParserConfigurationException, SAXException, IOException {
+ public void simpleContentXml() throws IOException, XmlParseException {
Map<String, Object> properties = parseContentXmlFile("simple-content.xml", "/").getProperties();
@@ -66,24 +69,19 @@ public class ContentXmlHandlerTest {
}
private ResourceProxy parseContentXmlFile(String fileName, String rootResourcePath)
- throws ParserConfigurationException, SAXException,
- IOException {
+ throws IOException, XmlParseException {
- InputSource source = new InputSource(getClass().getResourceAsStream(fileName));
-
- SAXParserFactory factory = SAXParserFactory.newInstance();
- factory.setNamespaceAware(true);
- factory.setFeature("http://xml.org/sax/features/namespace-prefixes", false);
- SAXParser parser = factory.newSAXParser();
- ContentXmlHandler handler = new ContentXmlHandler(rootResourcePath, new Slf4jLogger());
- parser.parse(source, handler);
-
- return handler.getRoot();
+ try (InputStream input = getClass().getResourceAsStream(fileName)) {
+ DocViewParser parser = new DocViewParser();
+ ResourceProxyParserHandler handler = new ResourceProxyParserHandler();
+ parser.parse(rootResourcePath, new InputSource(input), handler);
+ return handler.getRoot();
+ }
}
@Test
@SuppressWarnings("unchecked")
- public void parseMultiValuedProperties() throws ParserConfigurationException, SAXException, IOException {
+ public void parseMultiValuedProperties() throws IOException, XmlParseException {
Map<String, Object> properties = parseContentXmlFile("multivalued-properties-content.xml", "/").getProperties();
@@ -104,8 +102,7 @@ public class ContentXmlHandlerTest {
@Test
@SuppressWarnings("unchecked")
- public void parseSingleExplicitMultiValuedProperties() throws ParserConfigurationException, SAXException,
- IOException {
+ public void parseSingleExplicitMultiValuedProperties() throws IOException, XmlParseException {
Map<String, Object> properties = parseContentXmlFile("single-explicit-multivalued-properties-content.xml", "/")
.getProperties();
@@ -126,7 +123,7 @@ public class ContentXmlHandlerTest {
}
@Test
- public void parseFullCoverageXmlFile() throws ParserConfigurationException, SAXException, IOException {
+ public void parseFullCoverageXmlFile() throws IOException, XmlParseException {
ResourceProxy root = parseContentXmlFile("full-coverage.xml", "/apps/full-coverage");
@@ -150,7 +147,7 @@ public class ContentXmlHandlerTest {
}
@Test
- public void parseRootContentXml() throws ParserConfigurationException, SAXException, IOException {
+ public void parseRootContentXml() throws IOException, XmlParseException {
ResourceProxy root = parseContentXmlFile("root-content.xml", "/");
@@ -158,7 +155,7 @@ public class ContentXmlHandlerTest {
}
@Test
- public void encodedChildContentXml() throws ParserConfigurationException, SAXException, IOException {
+ public void encodedChildContentXml() throws IOException, XmlParseException {
ResourceProxy root = parseContentXmlFile("encoded-child-content.xml", "/ROOT");
@@ -166,14 +163,14 @@ public class ContentXmlHandlerTest {
}
@Test
- public void parseContentXmlWithEscapedNames() throws ParserConfigurationException, SAXException, IOException {
+ public void parseContentXmlWithEscapedNames() throws IOException, XmlParseException {
ResourceProxy root = parseContentXmlFile("full-coverage-escaped-names.xml", "/");
assertThat("node contains /50-50", root.getChildren(), hasChildPath("/50-50"));
}
@Test
- public void parseContentXmlWithBinaryProperty() throws ParserConfigurationException, SAXException, IOException {
+ public void parseContentXmlWithBinaryProperty() throws IOException, XmlParseException {
ResourceProxy root = parseContentXmlFile("binary-property.xml", "/");
@@ -181,7 +178,7 @@ public class ContentXmlHandlerTest {
}
@Test
- public void parseContentXmlWithEscapedValues() throws ParserConfigurationException, SAXException, IOException {
+ public void parseContentXmlWithEscapedValues() throws IOException, XmlParseException {
ResourceProxy root = parseContentXmlFile("escaped-value-in-property.xml", "/");
assertThat(root.getProperties(), hasEntry("property",
@@ -189,7 +186,7 @@ public class ContentXmlHandlerTest {
}
@Test
- public void escapedBraceAtStartOfPropertyValue() throws Exception {
+ public void escapedBraceAtStartOfPropertyValue() throws IOException, XmlParseException {
ResourceProxy root = parseContentXmlFile("escaped-braces-at-start-of-property.xml", "/");
assertThat("properties[org.apache.sling.commons.log.pattern]",
@@ -198,7 +195,7 @@ public class ContentXmlHandlerTest {
}
@Test
- public void escapedCommaInMultiValuedProperty() throws Exception {
+ public void escapedCommaInMultiValuedProperty() throws IOException, XmlParseException {
ResourceProxy root = parseContentXmlFile("escaped-comma-in-multi-valued-property.xml", "/");
assertThat("properties[someProp]", (String[]) root.getProperties().get("someProp"),
@@ -206,7 +203,7 @@ public class ContentXmlHandlerTest {
}
@Test
- public void emptyMultivaluedProperties() throws Exception {
+ public void emptyMultivaluedProperties() throws IOException, XmlParseException {
ResourceProxy root = parseContentXmlFile("empty-multivalued-property.xml", "/");
diff --git a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManagerTest.java b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManagerTest.java
similarity index 100%
rename from shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManagerTest.java
rename to shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/serialization/VltSerializationManagerTest.java
diff --git a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/transport/DefaultBatcherTest.java b/shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/transport/DefaultBatcherTest.java
similarity index 100%
rename from shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/transport/DefaultBatcherTest.java
rename to shared/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/transport/DefaultBatcherTest.java
diff --git a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/jcr/RepositoryUtilsTest.java b/shared/impl-vlt/src/test/java/org/apache/sling/ide/jcr/RepositoryUtilsTest.java
similarity index 97%
rename from shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/jcr/RepositoryUtilsTest.java
rename to shared/impl-vlt/src/test/java/org/apache/sling/ide/jcr/RepositoryUtilsTest.java
index c88d8e30..b4d53ae6 100644
--- a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/jcr/RepositoryUtilsTest.java
+++ b/shared/impl-vlt/src/test/java/org/apache/sling/ide/jcr/RepositoryUtilsTest.java
@@ -19,7 +19,6 @@ package org.apache.sling.ide.jcr;
import java.net.URISyntaxException;
import org.apache.jackrabbit.vault.fs.api.RepositoryAddress;
-import org.apache.sling.ide.jcr.RepositoryUtils;
import org.junit.Assert;
import org.junit.Test;
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-deep.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-deep.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-deep.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-deep.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-default.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-default.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-default.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-default.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-with-include.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-with-include.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-with-include.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/filter/filter-with-include.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/folder.cnd b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/folder.cnd
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/folder.cnd
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/folder.cnd
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/bin.binary b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/bin.binary
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/bin.binary
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/bin.binary
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/binary-property.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/binary-property.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/binary-property.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/binary-property.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/empty-multivalued-property.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/empty-multivalued-property.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/empty-multivalued-property.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/empty-multivalued-property.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/encoded-child-content.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/encoded-child-content.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/encoded-child-content.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/encoded-child-content.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-braces-at-start-of-property.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-braces-at-start-of-property.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-braces-at-start-of-property.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-braces-at-start-of-property.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-comma-in-multi-valued-property.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-comma-in-multi-valued-property.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-comma-in-multi-valued-property.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-comma-in-multi-valued-property.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-value-in-property.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-value-in-property.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-value-in-property.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/escaped-value-in-property.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/file.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/file.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/file.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/file.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/full-coverage-escaped-names.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/full-coverage-escaped-names.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/full-coverage-escaped-names.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/full-coverage-escaped-names.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/full-coverage.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/full-coverage.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/full-coverage.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/full-coverage.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/multivalued-properties-content.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/multivalued-properties-content.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/multivalued-properties-content.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/multivalued-properties-content.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/root-content.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/root-content.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/root-content.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/root-content.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/simple-content.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/simple-content.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/simple-content.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/simple-content.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/single-explicit-multivalued-properties-content.xml b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/single-explicit-multivalued-properties-content.xml
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/single-explicit-multivalued-properties-content.xml
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/serialization/single-explicit-multivalued-properties-content.xml
diff --git a/shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/test-definitions.cnd b/shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/test-definitions.cnd
similarity index 100%
rename from shared/modules/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/test-definitions.cnd
rename to shared/impl-vlt/src/test/resources/org/apache/sling/ide/impl/vlt/test-definitions.cnd
diff --git a/shared/modules/impl-vlt/.options b/shared/modules/impl-vlt/.options
deleted file mode 100644
index 48b2831f..00000000
--- a/shared/modules/impl-vlt/.options
+++ /dev/null
@@ -1,2 +0,0 @@
-org.apache.sling.ide.impl-vlt/debug=false
-org.apache.sling.ide.impl-vlt/debug/console=false
\ No newline at end of file
diff --git a/shared/modules/impl-vlt/plugin.xml b/shared/modules/impl-vlt/plugin.xml
deleted file mode 100644
index 9b79e21c..00000000
--- a/shared/modules/impl-vlt/plugin.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or
- more contributor license agreements. See the NOTICE file
- distributed with this work for additional information regarding
- copyright ownership. The ASF licenses this file to you under the
- Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain
- a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0 Unless required by
- applicable law or agreed to in writing, software distributed
- under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions
- and limitations under the License.
--->
-<?eclipse version="3.0"?>
-<plugin>
- <extension
- point="org.eclipse.ui.trace.traceComponents">
- <component
- id="org.eclipse.ui.trace.tracingPrefPage"
- label="Sling IDE Tooling">
- <bundle
- name="org.apache.sling.ide.impl-vlt"></bundle>
- </component>
- </extension>
-</plugin>
\ No newline at end of file
diff --git a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommandTest.java b/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommandTest.java
deleted file mode 100644
index 98d0a7f1..00000000
--- a/shared/modules/impl-vlt/src/test/java/org/apache/sling/ide/impl/vlt/AddOrUpdateNodeCommandTest.java
+++ /dev/null
@@ -1,507 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.sling.ide.impl.vlt;
-
-import static org.apache.sling.ide.transport.Repository.CommandExecutionFlag.CREATE_ONLY_WHEN_MISSING;
-import static org.hamcrest.CoreMatchers.equalTo;
-import static org.junit.Assert.assertThat;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.concurrent.Callable;
-
-import javax.jcr.Credentials;
-import javax.jcr.Node;
-import javax.jcr.Property;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.SimpleCredentials;
-import javax.jcr.UnsupportedRepositoryOperationException;
-import javax.jcr.Value;
-import javax.jcr.nodetype.InvalidNodeTypeDefinitionException;
-import javax.jcr.nodetype.NodeType;
-import javax.jcr.nodetype.NodeTypeExistsException;
-
-import org.apache.jackrabbit.commons.cnd.CndImporter;
-import org.apache.jackrabbit.commons.cnd.ParseException;
-import org.apache.jackrabbit.core.TransientRepository;
-import org.apache.sling.ide.filter.Filter;
-import org.apache.sling.ide.filter.FilterResult;
-import org.apache.sling.ide.log.Logger;
-import org.apache.sling.ide.transport.CommandContext;
-import org.apache.sling.ide.transport.ResourceProxy;
-import org.hamcrest.Matchers;
-import org.junit.Ignore;
-import org.junit.Test;
-
-public class AddOrUpdateNodeCommandTest {
-
- private static final CommandContext DEFAULT_CONTEXT = new CommandContext(new Filter() {
- @Override
- public FilterResult filter(String repositoryPath) {
- return FilterResult.ALLOW;
- }
- });
-
- private static final String PROP_NAME = "jcr:title";
-
- private Logger logger = new Slf4jLogger();
-
- @Test
- public void setProperty() throws Exception {
-
- doPropertyChangeTest(null, "Title");
- }
-
- private void doPropertyChangeTest(final Object initialPropertyValues, final Object newPropertyValues)
- throws Exception {
-
- doWithTransientRepository(new CallableWithSession() {
- @Override
- public Void call() throws Exception {
- Node contentNode = session().getRootNode().addNode("content");
- if (initialPropertyValues instanceof String) {
- contentNode.setProperty(PROP_NAME, (String) initialPropertyValues);
- } else if (initialPropertyValues instanceof String[]) {
- contentNode.setProperty(PROP_NAME, (String[]) initialPropertyValues);
- }
-
- session().save();
-
- ResourceProxy resource = newResource("/content", NodeType.NT_UNSTRUCTURED);
- if (newPropertyValues != null) {
- resource.addProperty(PROP_NAME, newPropertyValues);
- }
-
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
- cmd.execute().get();
-
- session().refresh(false);
-
- if (newPropertyValues == null) {
- assertThat(session().getNode("/content").hasProperty(PROP_NAME), equalTo(false));
- return null;
- }
-
- Property newProp = session().getNode("/content").getProperty(PROP_NAME);
- if (newPropertyValues instanceof String) {
- assertThat("property.isMultiple", newProp.isMultiple(), equalTo(Boolean.FALSE));
- assertThat(newProp.getString(), equalTo((String) newPropertyValues));
-
- } else {
-
- String[] expectedValues = (String[]) newPropertyValues;
- assertThat("property.isMultiple", newProp.isMultiple(), equalTo(Boolean.TRUE));
-
- Value[] values = session().getNode("/content").getProperty(PROP_NAME).getValues();
-
- assertThat(values.length, equalTo(expectedValues.length));
- for (int i = 0; i < values.length; i++) {
- assertThat(values[i].getString(), equalTo(expectedValues[i]));
- }
-
- }
-
- return null;
- }
- });
-
- }
-
- @Test
- public void removeProperty() throws Exception {
-
- doPropertyChangeTest("Title", null);
- }
-
- @Test
- public void singlePropertyToMultiValued() throws Exception {
-
- doPropertyChangeTest("Title", new String[] { "Title", "Title 2" });
- }
-
- @Test
- public void multiValuesPropertyToSingle() throws Exception {
-
- doPropertyChangeTest(new String[] { "Title", "Title 2" }, "Title");
- }
-
- @Test
- public void changeNtFolderToSlingFolderWithAddedProperty() throws Exception {
-
- doWithTransientRepository(new CallableWithSession() {
- @Override
- public Void call() throws Exception {
- session().getRootNode().addNode("content", "nt:folder");
-
- session().save();
-
- ResourceProxy resource = newResource("/content", "sling:Folder");
- resource.getProperties().put("newProperty", "some/value");
-
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
- cmd.execute().get();
-
- session().refresh(false);
-
- Node content = session().getRootNode().getNode("content");
- assertThat(content.getPrimaryNodeType().getName(), equalTo("sling:Folder"));
-
- return null;
- }
- });
- }
-
- @Test
- public void changeSlingFolderToNtFolderWithExistingProperty() throws Exception {
- doWithTransientRepository(new CallableWithSession() {
- @Override
- public Void call() throws Exception {
- Node content = session().getRootNode().addNode("content", "sling:Folder");
- content.setProperty("newProperty", "some/value");
-
- session().save();
-
- ResourceProxy resource = newResource("/content", "nt:folder");
-
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
- cmd.execute().get();
-
- session().refresh(false);
-
- content = session().getRootNode().getNode("content");
- assertThat(content.getPrimaryNodeType().getName(), equalTo("nt:folder"));
-
- return null;
- }
- });
- }
-
- @Test
- @Ignore("SLING-4036")
- public void updateNtUnstructuredToNodeWithRequiredProperty() throws Exception {
-
- doWithTransientRepository(new CallableWithSession() {
- @Override
- public Void call() throws Exception {
- Node content = session().getRootNode().addNode("content", "nt:unstructured");
-
- session().save();
-
- ResourceProxy resource = newResource("/content", "custom");
- resource.getProperties().put("attribute", "some value");
-
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
- cmd.execute().get();
-
- session().refresh(false);
-
- content = session().getRootNode().getNode("content");
- assertThat(content.getPrimaryNodeType().getName(), equalTo("custom"));
-
- return null;
- }
- });
- }
-
- @Test
- public void nodeNotPresentButOutsideOfFilterIsNotRemoved() throws Exception {
-
- final CommandContext context = new CommandContext(new Filter() {
-
- @Override
- public FilterResult filter(String repositoryPath) {
- if ( repositoryPath.equals("/content/not-included-child")) {
- return FilterResult.DENY;
- }
-
- return FilterResult.ALLOW;
- }
- });
-
- doWithTransientRepository(new CallableWithSession() {
- @Override
- public Void call() throws Exception {
- Node content = session().getRootNode().addNode("content", "nt:unstructured");
- content.addNode("included-child");
- content.addNode("not-included-child");
-
- session().save();
-
- ResourceProxy resource = newResource("/content", "nt:unstructured");
- resource.addChild(newResource("/content/included-child", "nt:unstructured"));
-
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), context, null, resource, logger);
- cmd.execute().get();
-
- session().refresh(false);
-
- content = session().getRootNode().getNode("content");
- content.getNode("included-child");
- content.getNode("not-included-child");
- return null;
- }
- });
-
- }
-
- private ResourceProxy newResource(String path, String primaryType) {
-
- ResourceProxy resource = new ResourceProxy(path);
- resource.addProperty("jcr:primaryType", primaryType);
- return resource;
- }
-
- @Test
- public void createIfRequiredFlagSkipsExistingResources() throws Exception {
-
- doWithTransientRepository(new CallableWithSession() {
- @Override
- public Void call() throws Exception {
- Node content = session().getRootNode().addNode("content", "nt:folder");
-
- session().save();
-
- ResourceProxy resource = newResource("/content", "nt:unstructured");
-
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger,
- CREATE_ONLY_WHEN_MISSING);
- cmd.execute().get();
-
- session().refresh(false);
-
- content = session().getRootNode().getNode("content");
- assertThat(content.getPrimaryNodeType().getName(), equalTo("nt:folder"));
-
- return null;
- }
- });
- }
-
- @Test
- public void createIfRequiredFlagCreatesNeededResources() throws Exception {
-
- doWithTransientRepository(new CallableWithSession() {
- @Override
- public Void call() throws Exception {
- ResourceProxy resource = newResource("/content", "nt:unstructured");
-
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger,
- CREATE_ONLY_WHEN_MISSING);
- cmd.execute().get();
-
- session().refresh(false);
-
- Node content = session().getRootNode().getNode("content");
- assertThat(content.getPrimaryNodeType().getName(), equalTo("nt:unstructured"));
-
- return null;
- }
- });
- }
-
- @Test
- public void createIfRequiredFlagCreatesNeededResourcesEvenWhenPrimaryTypeIsMissing() throws Exception {
-
- doWithTransientRepository(new CallableWithSession() {
- @Override
- public Void call() throws Exception {
- ResourceProxy resource = new ResourceProxy("/content");
-
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger,
- CREATE_ONLY_WHEN_MISSING);
- cmd.execute().get();
-
- session().refresh(false);
-
- Node content = session().getRootNode().getNode("content");
- assertThat(content.getPrimaryNodeType().getName(), equalTo("nt:unstructured"));
-
- return null;
- }
- });
- }
-
- @Test
- public void autoCreatedPropertiesAreNotRemoved() throws Exception {
-
- doWithTransientRepository(new CallableWithSession() {
- @Override
- public Void call() throws Exception {
- Node content = session().getRootNode().addNode("content", "nt:folder");
-
- session().save();
-
- ResourceProxy resource = newResource("/content", "nt:folder");
- resource.addProperty("jcr:mixinTypes", "mix:lastModified");
-
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
- cmd.execute().get();
- cmd.execute().get(); // second time since mixins are processed after properties so we need two
- // executions to
- // expose the problem
-
- session().refresh(false);
-
- content = session().getRootNode().getNode("content");
- assertThat("jcr:lastModified property not present", content.hasProperty("jcr:lastModified"),
- equalTo(true));
- assertThat("jcr:lastModifiedBy property not present", content.hasProperty("jcr:lastModifiedBy"),
- equalTo(true));
-
- return null;
- }
- });
- }
-
- @Test
- public void autoCreatedPropertiesAreUpdatedIfPresent() throws Exception {
-
- doWithTransientRepository(new CallableWithSession() {
- @Override
- public Void call() throws Exception {
- Node content = session().getRootNode().addNode("content", "nt:folder");
-
- session().save();
-
- ResourceProxy resource = newResource("/content", "nt:folder");
- resource.addProperty("jcr:mixinTypes", "mix:lastModified");
- resource.addProperty("jcr:lastModifiedBy", "admin2");
-
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
- cmd.execute().get();
- cmd.execute().get(); // second time since mixins are processed after properties so we need two
- // executions to
- // expose the problem
-
- session().refresh(false);
-
- content = session().getRootNode().getNode("content");
- assertThat("jcr:lastModifiedBy property not modified", content.getProperty("jcr:lastModifiedBy")
- .getString(), equalTo("admin2"));
-
- return null;
- }
- });
- }
-
- @Test
- public void setEmptyMixinTypes() throws Exception {
- setMixinTypes0();
- }
-
- private void setMixinTypes0(final String... mixinTypeNames) throws Exception {
-
- doWithTransientRepository(new CallableWithSession() {
- @Override
- public Void call() throws Exception {
- ResourceProxy resource = newResource("/content", "nt:unstructured");
- resource.addProperty("jcr:mixinTypes", mixinTypeNames);
-
- AddOrUpdateNodeCommand cmd = new AddOrUpdateNodeCommand(repo(), credentials(), DEFAULT_CONTEXT, null, resource, logger);
- cmd.execute().get();
-
- session().refresh(false);
-
- Node content = session().getRootNode().getNode("content");
- assertThat(content.getMixinNodeTypes(), Matchers.arrayWithSize(mixinTypeNames.length));
-
- return null;
- }
- });
- }
-
- @Test
- public void setMixinTypes() throws Exception {
-
- setMixinTypes0("mix:created");
- }
-
- private void doWithTransientRepository(CallableWithSession callable) throws Exception {
-
- File out = new File(new File("target"), "jackrabbit");
- TransientRepository repo = new TransientRepository(new File(out, "repository.xml"), new File(out, "repository"));
- SimpleCredentials credentials = new SimpleCredentials("admin", "admin".toCharArray());
- Session session = repo.login(credentials);
-
- importNodeTypeDefinitions(session, "test-definitions.cnd");
- importNodeTypeDefinitions(session, "folder.cnd");
-
- try {
- callable.setCredentials(credentials);
- callable.setSession(session);
- callable.call();
- } finally {
- if (session.itemExists("/content"))
- session.removeItem("/content");
- session.save();
- session.logout();
- }
-
- }
-
- private void importNodeTypeDefinitions(Session session, String cndFile) throws InvalidNodeTypeDefinitionException,
- NodeTypeExistsException, UnsupportedRepositoryOperationException, ParseException, RepositoryException,
- IOException {
- try ( InputStream cndInput = getClass().getResourceAsStream(cndFile) ) {
- if (cndInput == null) {
- throw new IllegalArgumentException("Unable to read classpath resource " + cndFile);
- }
- CndImporter.registerNodeTypes(new InputStreamReader(cndInput), session);
- }
- }
-
- private static abstract class CallableWithSession implements Callable<Void> {
-
- private Session session;
- private Credentials credentials;
-
- public void setSession(Session session) {
-
- this.session = session;
- }
-
- public void setCredentials(Credentials credentials) {
-
- this.credentials = credentials;
- }
-
- protected Session session() {
-
- if (session == null)
- throw new IllegalStateException("session is null");
-
- return session;
- }
-
- protected Credentials credentials() {
-
- if (credentials == null)
- throw new IllegalStateException("credentials is null");
-
- return credentials;
- }
-
- protected Repository repo() {
-
- return session().getRepository();
- }
- }
-}
diff --git a/shared/modules/parent/pom.xml b/shared/modules/parent/pom.xml
deleted file mode 100644
index 02c84acf..00000000
--- a/shared/modules/parent/pom.xml
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
- license agreements. See the NOTICE file distributed with this work for additional
- information regarding copyright ownership. The ASF licenses this file to
- you under the Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain a copy of
- the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
- by applicable law or agreed to in writing, software distributed under the
- License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
- OF ANY KIND, either express or implied. See the License for the specific
- language governing permissions and limitations under the License. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.sling</groupId>
- <artifactId>sling</artifactId>
- <version>33</version>
- <relativePath />
- </parent>
-
- <groupId>org.apache.sling.ide</groupId>
- <artifactId>sling-ide-shared-parent</artifactId>
- <packaging>pom</packaging>
- <version>1.2.3-SNAPSHOT</version>
-
- <name>Apache Sling IDE - Shared Modules Parent</name>
-
- <scm>
- <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-ide-tooling.git</connection>
- <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-ide-tooling.git</developerConnection>
- <url>https://gitbox.apache.org/repos/asf?p=sling-ide-tooling.git</url>
- </scm>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
- <configuration>
- <excludes>
- <exclude>**/MANIFEST.MF</exclude>
- <exclude>**/OSGI-INF/*.xml</exclude>
- </excludes>
- </configuration>
- </plugin>
- </plugins>
- <pluginManagement>
- <plugins>
- <plugin>
- <artifactId>maven-resources-plugin</artifactId>
- <version>3.1.0</version>
- </plugin>
- <plugin>
- <!-- TODO: consolidate once sling-parent 35 is released, because most properties are set correctly there -->
- <groupId>biz.aQute.bnd</groupId>
- <artifactId>bnd-maven-plugin</artifactId>
- <version>4.1.0</version>
- <executions>
- <execution>
- <goals>
- <goal>bnd-process</goal>
- </goals>
- <configuration>
- <!-- default OSGi headers (mainly for usage within Eclipse) -->
- <bnd><![CDATA[
-Bundle-Category: sling
-
-Bundle-Description: "${project.description}"
-
-Bundle-DocURL: https://sling.apache.org/documentation/development/ide-tooling.html
-
-Bundle-License: Apache License, Version 2.0
-
-Bundle-Vendor: The Apache Software Foundation
-
-Bundle-SCM: url=${project.scm.url},connection=${project.scm.connection},developer-connection=${project.scm.developerConnection},tag=${project.scm.tag}
-
-# export all versioned packages by default
--exportcontents: ${packages;VERSIONED}
-
-# overwrite timestamp format used as qualifier for snapshots to make the resolution higher (i.e. make them differ for each build),
-# compare with https://www.mail-archive.com/dev@sling.apache.org/msg76177.html
--snapshot: ${tstamp;yyyyMMddHHmmssSSS}
-
-Bundle-ActivationPolicy: lazy
- ]]></bnd>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
-
- <profiles>
- <profile>
- <id>m2e</id>
- <!-- This profile is only activated when building in Eclipse
- with m2e -->
- <activation>
- <property>
- <name>m2e.version</name>
- </property>
- </activation>
- <build>
- <!-- as currently PDE cannot deal with the MANIFEST.MF in the target folder
- https://bugs.eclipse.org/bugs/show_bug.cgi?id=533263 copy both
- Manifest and component descriptors to the project's root -->
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <configuration>
- <filesets>
- <fileset>
- <directory>META-INF</directory>
- <includes>
- <include>*</include>
- </includes>
- </fileset>
- <fileset>
- <directory>OSGI-INF</directory>
- <includes>
- <include>*</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <artifactId>maven-resources-plugin</artifactId>
- <executions>
- <execution>
- <id>copy-manifest-for-pde</id>
- <phase>process-test-resources</phase>
- <goals>
- <goal>copy-resources</goal>
- </goals>
- <configuration>
- <overwrite>true</overwrite>
- <outputDirectory>META-INF</outputDirectory>
- <resources>
- <resource>
- <directory>${project.build.outputDirectory}/META-INF</directory>
- <includes>
- <include>MANIFEST.MF</include>
- </includes>
- </resource>
- </resources>
- </configuration>
- </execution>
- <execution>
- <id>copy-scr-descriptors-for-pde</id>
- <phase>process-test-resources</phase>
- <goals>
- <goal>copy-resources</goal>
- </goals>
- <configuration>
- <outputDirectory>OSGI-INF</outputDirectory>
- <resources>
- <resource>
- <directory>${project.build.outputDirectory}/OSGI-INF</directory>
- <includes>
- <include>*.xml</include>
- </includes>
- </resource>
- </resources>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
- </profile>
- </profiles>
-</project>
diff --git a/shared/p2/pom.xml b/shared/p2/pom.xml
deleted file mode 100644
index edf358f0..00000000
--- a/shared/p2/pom.xml
+++ /dev/null
@@ -1,170 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
- license agreements. See the NOTICE file distributed with this work for additional
- information regarding copyright ownership. The ASF licenses this file to
- you under the Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain a copy of
- the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
- by applicable law or agreed to in writing, software distributed under the
- License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
- OF ANY KIND, either express or implied. See the License for the specific
- language governing permissions and limitations under the License. -->
-<project
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
- xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache</groupId>
- <artifactId>apache</artifactId>
- <version>14</version>
- </parent>
- <groupId>org.apache.sling</groupId>
- <artifactId>sling-ide-tooling-p2</artifactId>
- <version>1.2.3-SNAPSHOT</version>
- <packaging>pom</packaging>
- <name>Apache Sling IDE Tools - P2 packaging</name>
- <url>http://sling.apache.org</url>
-
- <scm>
- <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-ide-tooling.git</connection>
- <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-ide-tooling.git</developerConnection>
- <url>https://gitbox.apache.org/repos/asf?p=sling-ide-tooling.git</url>
- </scm>
-
- <modules>
- <module>vlt-wrapper</module>
- <module>shared-feature</module>
- <module>shared-repository</module>
- </modules>
-
- <repositories>
- <repository>
- <id>luna</id>
- <layout>p2</layout>
- <url>https://download.eclipse.org/releases/oxygen</url>
- </repository>
- <repository>
- <id>orbit</id>
- <layout>p2</layout>
- <url>https://download.eclipse.org/tools/orbit/downloads/drops/R20170516192513/repository</url>
- </repository>
- </repositories>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-maven-plugin</artifactId>
- <version>${tycho.version}</version>
- <extensions>true</extensions>
- </plugin>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>target-platform-configuration</artifactId>
- <version>${tycho.version}</version>
- <configuration>
- <resolver>p2</resolver>
- <pomDependencies>consider</pomDependencies>
- <!-- <target> <artifact> <groupId>${project.groupId}</groupId>
- <artifactId>org.apache.sling.ide.target-definition</artifactId> <version>${project.version}</version>
- </artifact> </target> -->
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.eclipse.tycho</groupId>
- <artifactId>tycho-versions-plugin</artifactId>
- <version>${tycho.version}</version>
- </plugin>
- <!-- <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>ianal-maven-plugin</artifactId>
- <version>1.0-alpha-1</version> <executions> <execution> <goals> <goal>verify-legal-files</goal>
- </goals> <configuration> <strict>true</strict> </configuration> </execution>
- </executions> </plugin> -->
- <plugin>
- <groupId>org.apache.rat</groupId>
- <artifactId>apache-rat-plugin</artifactId>
- <configuration>
- <excludes>
- <exclude>derby.log</exclude>
- <exclude>.gitignore</exclude>
- <exclude>README.md</exclude>
-
- <!-- Eclipse build related files -->
- <exclude>*.launch</exclude>
- <exclude>build.properties</exclude>
- <exclude>.options</exclude>
- <exclude>META-INF/MANIFEST.MF</exclude>
-
- <!-- test data -->
- <exclude>**/*.binary</exclude>
-
- <!-- prevent failures when eclipse-test is not activated
- as a submodule -->
- <exclude>eclipse-test/**</exclude>
- <!-- exclude target file from the source-bundle project
- since it is not a module -->
- <exclude>source-bundle/target/**</exclude>
- <exclude>source-bundle/README.md</exclude>
-
- <!-- Jenkins Xvfb plugin -->
- <exclude>.Xauthority-*</exclude>
- </excludes>
- </configuration>
- <!-- <executions> <execution> <goals> <goal>check</goal>
- </goals> <phase>verify</phase> </execution> </executions> -->
- </plugin>
- </plugins>
- <pluginManagement>
- <plugins>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <version>3.1</version>
- <configuration>
- <source>1.7</source>
- <target>1.7</target>
- </configuration>
- </plugin>
- <!--This plugin's configuration is used to store Eclipse
- m2e settings only. It has no influence on the Maven build itself. -->
- <!-- We embed some bundles that are not available on p2 update
- sites. To make the build seamless, we copy them early in the process. -->
- <plugin>
- <groupId>org.eclipse.m2e</groupId>
- <artifactId>lifecycle-mapping</artifactId>
- <version>1.0.0</version>
- <configuration>
- <lifecycleMappingMetadata>
- <pluginExecutions>
- <pluginExecution>
- <pluginExecutionFilter>
- <groupId>
- org.apache.maven.plugins
- </groupId>
- <artifactId>
- maven-dependency-plugin
- </artifactId>
- <versionRange>
- [2.8,)
- </versionRange>
- <goals>
- <goal>copy</goal>
- </goals>
- </pluginExecutionFilter>
- <action>
- <ignore></ignore>
- </action>
- </pluginExecution>
- </pluginExecutions>
- </lifecycleMappingMetadata>
- </configuration>
- </plugin>
- </plugins>
- </pluginManagement>
- </build>
-
- <properties>
- <tycho.version>1.0.0</tycho.version>
- <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- </properties>
-</project>
diff --git a/shared/p2/shared-feature/build.properties b/shared/p2/shared-feature/build.properties
deleted file mode 100644
index 64f93a9f..00000000
--- a/shared/p2/shared-feature/build.properties
+++ /dev/null
@@ -1 +0,0 @@
-bin.includes = feature.xml
diff --git a/shared/p2/shared-feature/feature.xml b/shared/p2/shared-feature/feature.xml
deleted file mode 100644
index 1d0a0e46..00000000
--- a/shared/p2/shared-feature/feature.xml
+++ /dev/null
@@ -1,256 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or
- more contributor license agreements. See the NOTICE file
- distributed with this work for additional information regarding
- copyright ownership. The ASF licenses this file to you under the
- Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain
- a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0 Unless required by
- applicable law or agreed to in writing, software distributed
- under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions
- and limitations under the License.
--->
-<feature
- id="org.apache.sling.ide.shared.feature"
- label="Sling IDE Tools - Shared"
- version="1.2.3.qualifier"
- provider-name="The Apache Software Foundation">
-
- <license url="http://www.apache.org/licenses/LICENSE-2.0">
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- </license>
-
- <plugin
- id="org.apache.sling.ide.api"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.apache.sling.ide.impl-vlt"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.apache.sling.ide.artifacts"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-
- <plugin
- id="org.apache.sling.ide.vlt-wrapper"
- download-size="0"
- install-size="0"
- version="0.0.0"
- unpack="false"/>
-</feature>
-
diff --git a/shared/p2/shared-feature/pom.xml b/shared/p2/shared-feature/pom.xml
deleted file mode 100644
index a22ba751..00000000
--- a/shared/p2/shared-feature/pom.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.sling</groupId>
- <artifactId>sling-ide-tooling-p2</artifactId>
- <version>1.2.3-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.apache.sling.ide.shared.feature</artifactId>
- <packaging>eclipse-feature</packaging>
-
- <name>Apache Sling IDE Tooling Shared Features</name>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.sling.ide</groupId>
- <artifactId>org.apache.sling.ide.api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.sling.ide</groupId>
- <artifactId>org.apache.sling.ide.impl-vlt</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.sling.ide</groupId>
- <artifactId>org.apache.sling.ide.artifacts</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.sling.ide</groupId>
- <artifactId>org.apache.sling.ide.vlt-wrapper</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/shared/p2/shared-repository/category.xml b/shared/p2/shared-repository/category.xml
deleted file mode 100644
index 242fa409..00000000
--- a/shared/p2/shared-repository/category.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or
- more contributor license agreements. See the NOTICE file
- distributed with this work for additional information regarding
- copyright ownership. The ASF licenses this file to you under the
- Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain
- a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0 Unless required by
- applicable law or agreed to in writing, software distributed
- under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions
- and limitations under the License.
--->
-<site>
- <feature url="features/org.apache.sling.ide.shared.feature_0.0.0.qualifier.jar" id="org.apache.sling.ide.shared.feature" version="0.0.0">
- <category name="sling"/>
- </feature>
- <category-def name="sling" label="Sling"/>
-</site>
diff --git a/shared/p2/shared-repository/pom.xml b/shared/p2/shared-repository/pom.xml
deleted file mode 100644
index 073a3638..00000000
--- a/shared/p2/shared-repository/pom.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
- <groupId>org.apache.sling</groupId>
- <artifactId>sling-ide-tooling-p2</artifactId>
- <version>1.2.3-SNAPSHOT</version>
- </parent>
-
- <artifactId>org.apache.sling.ide.shared.repository</artifactId>
- <packaging>eclipse-repository</packaging>
-
- <name>Apache Sling IDE Tooling Shared Features P2 repository</name>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.sling.ide</groupId>
- <artifactId>org.apache.sling.ide.api</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.sling.ide</groupId>
- <artifactId>org.apache.sling.ide.vlt-wrapper</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.sling.ide</groupId>
- <artifactId>org.apache.sling.ide.impl-vlt</artifactId>
- <version>${project.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.sling.ide</groupId>
- <artifactId>org.apache.sling.ide.artifacts</artifactId>
- <version>${project.version}</version>
- </dependency>
- </dependencies>
-
-</project>
diff --git a/shared/p2/vlt-wrapper/META-INF/LICENSE b/shared/p2/vlt-wrapper/META-INF/LICENSE
deleted file mode 100644
index d6456956..00000000
--- a/shared/p2/vlt-wrapper/META-INF/LICENSE
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/shared/p2/vlt-wrapper/META-INF/MANIFEST.MF b/shared/p2/vlt-wrapper/META-INF/MANIFEST.MF
deleted file mode 100644
index b2dc0f14..00000000
--- a/shared/p2/vlt-wrapper/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,75 +0,0 @@
-Manifest-Version: 1.0
-Bundle-ManifestVersion: 2
-Bundle-Vendor: The Apache Software Foundation
-Bundle-Name: Sling IDE Vlt Wrapper
-Bundle-SymbolicName: org.apache.sling.ide.vlt-wrapper
-Bundle-Version: 1.2.3.qualifier
-Bundle-ActivationPolicy: lazy
-Bundle-RequiredExecutionEnvironment: JavaSE-1.7
-Bundle-ClassPath: .,
- lib/org.apache.jackrabbit.vault-3.2.8.jar,
- lib/vault-davex-3.2.8.jar,
- lib/jcr-2.0.jar,
- lib/guava-15.0.jar,
- lib/jackrabbit-api-2.16.3.jar,
- lib/jackrabbit-spi2dav-2.16.3.jar,
- lib/jackrabbit-spi-2.16.3.jar,
- lib/jackrabbit-jcr-client-2.16.3.jar,
- lib/jackrabbit-jcr2spi-2.16.3.jar,
- lib/jackrabbit-jcr-commons-2.16.3.jar,
- lib/jackrabbit-spi-commons-2.16.3.jar,
- lib/jackrabbit-webdav-2.16.3.jar,
- lib/httpmime-4.5.3.jar,
- lib/httpclient-4.5.3.jar,
- lib/httpcore-4.4.6.jar
-Export-Package: javax.jcr;version="2.0.0",
- javax.jcr.nodetype;version="2.0.0",
- javax.jcr.lock;version="2.0.0",
- javax.jcr.observation;version="2.0.0",
- javax.jcr.query;version="2.0.0",
- javax.jcr.query.qom;version="2.0.0",
- javax.jcr.retention;version="2.0.0",
- javax.jcr.security;version="2.0.0",
- javax.jcr.util;version="2.0.0",
- javax.jcr.version;version="2.0.0",
- org.apache.jackrabbit.api;version="2.16.0",
- org.apache.jackrabbit.api.management;version="2.16.0",
- org.apache.jackrabbit.api.security;version="2.16.0",
- org.apache.jackrabbit.api.security.authorization;version="2.16.0",
- org.apache.jackrabbit.api.security.principal;version="2.16.0",
- org.apache.jackrabbit.api.security.user;version="2.16.0",
- org.apache.jackrabbit.spi.commons.conversion;version="2.16.0",
- org.apache.jackrabbit.spi.commons.namespace;version="2.16.0",
- org.apache.jackrabbit.util;version="2.16.0",
- org.apache.jackrabbit.vault.davex;version="2.4.0",
- org.apache.jackrabbit.vault.fs;version="2.4.0",
- org.apache.jackrabbit.vault.fs.api;version="2.6.0",
- org.apache.jackrabbit.vault.fs.config;version="2.5.0",
- org.apache.jackrabbit.vault.fs.filter;version="2.4.0",
- org.apache.jackrabbit.vault.fs.impl;version="2.4.0",
- org.apache.jackrabbit.vault.fs.impl.aggregator;version="2.4.0",
- org.apache.jackrabbit.vault.fs.impl.io;version="2.4.0",
- org.apache.jackrabbit.vault.fs.impl.io.legacycnd;version="2.4.0",
- org.apache.jackrabbit.vault.fs.io;version="2.4.0",
- org.apache.jackrabbit.vault.fs.spi;version="2.4.0",
- org.apache.jackrabbit.vault.fs.spi.impl.jcr20;version="2.4.0",
- org.apache.jackrabbit.vault.packaging;version="2.4.0",
- org.apache.jackrabbit.vault.packaging.impl;version="2.4.0",
- org.apache.jackrabbit.vault.util;version="2.4.0",
- org.apache.jackrabbit.vault.util.xml.serialize;version="2.4.0",
- org.apache.jackrabbit.vault.util.xml.xerces.dom;version="2.4.0",
- org.apache.jackrabbit.vault.util.xml.xerces.util;version="2.4.0",
- org.apache.jackrabbit.vault.util.xml.xerces.xni;version="2.4.0",
- org.apache.jackrabbit.vault.util.xml.xerces.xni.parser;version="2.4.0"
-Require-Bundle: org.eclipse.core.runtime
-Import-Package: org.apache.commons.collections,
- org.apache.commons.collections.map,
- org.apache.commons.collections.list,
- org.apache.commons.collections.iterators,
- org.apache.commons.logging,
- org.apache.commons.codec,
- org.apache.commons.codec.binary,
- org.apache.commons.io,
- org.apache.commons.io.output,
- org.osgi.framework,
- org.slf4j
diff --git a/shared/p2/vlt-wrapper/META-INF/NOTICE b/shared/p2/vlt-wrapper/META-INF/NOTICE
deleted file mode 100644
index 45dda0c5..00000000
--- a/shared/p2/vlt-wrapper/META-INF/NOTICE
+++ /dev/null
@@ -1,11 +0,0 @@
-
-Sling IDE Tools: FileVault wrapper
-Copyright 2007-2014 The Apache Software Foundation
-
-Apache Sling is based on source code originally developed
-by Day Software (http://www.day.com/).
-
-This product includes software developed at
-The Apache Software Foundation (http://www.apache.org/).
-
-
diff --git a/shared/p2/vlt-wrapper/README.md b/shared/p2/vlt-wrapper/README.md
deleted file mode 100644
index 16632dbc..00000000
--- a/shared/p2/vlt-wrapper/README.md
+++ /dev/null
@@ -1,3 +0,0 @@
-# Apache Sling IDE Tools FileVault wrapper
-
-This module is part of the [Apache Sling](https://sling.apache.org) project.
diff --git a/shared/p2/vlt-wrapper/build.properties b/shared/p2/vlt-wrapper/build.properties
deleted file mode 100644
index 82f46e0b..00000000
--- a/shared/p2/vlt-wrapper/build.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- lib/org.apache.jackrabbit.vault-3.2.8.jar,\
- lib/vault-davex-3.2.8.jar,\
- lib/jcr-2.0.jar,\
- lib/guava-15.0.jar,\
- lib/jackrabbit-api-2.16.3.jar,\
- lib/jackrabbit-spi2dav-2.16.3.jar,\
- lib/jackrabbit-spi-2.16.3.jar,\
- lib/jackrabbit-jcr-client-2.16.3.jar,\
- lib/jackrabbit-jcr2spi-2.16.3.jar,\
- lib/jackrabbit-jcr-commons-2.16.3.jar,\
- lib/jackrabbit-spi-commons-2.16.3.jar,\
- lib/jackrabbit-webdav-2.16.3.jar,\
- lib/httpmime-4.5.3.jar,\
- lib/httpclient-4.5.3.jar,\
- lib/httpcore-4.4.6.jar
diff --git a/shared/p2/vlt-wrapper/lib/.gitignore b/shared/p2/vlt-wrapper/lib/.gitignore
deleted file mode 100644
index f23b9489..00000000
--- a/shared/p2/vlt-wrapper/lib/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-*.jar
\ No newline at end of file
diff --git a/shared/p2/vlt-wrapper/pom.xml b/shared/p2/vlt-wrapper/pom.xml
deleted file mode 100644
index 0cdbc577..00000000
--- a/shared/p2/vlt-wrapper/pom.xml
+++ /dev/null
@@ -1,179 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or
- more contributor license agreements. See the NOTICE file
- distributed with this work for additional information regarding
- copyright ownership. The ASF licenses this file to you under the
- Apache License, Version 2.0 (the "License"); you may not use
- this file except in compliance with the License. You may obtain
- a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0 Unless required by
- applicable law or agreed to in writing, software distributed
- under the License is distributed on an "AS IS" BASIS, WITHOUT
- WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions
- and limitations under the License.
--->
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <groupId>org.apache.sling</groupId>
- <artifactId>sling-ide-tooling-p2</artifactId>
- <version>1.2.3-SNAPSHOT</version>
- </parent>
- <groupId>org.apache.sling.ide</groupId>
- <artifactId>org.apache.sling.ide.vlt-wrapper</artifactId>
- <packaging>eclipse-plugin</packaging>
- <name>Apache Sling IDE Tools FileVault wrapper</name>
-
- <scm>
- <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-ide-tooling.git</connection>
- <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-ide-tooling.git</developerConnection>
- <url>https://gitbox.apache.org/repos/asf?p=sling-ide-tooling.git</url>
- </scm>
- <build>
- <!-- ensure that extra files are picked up by the maven-source-plugin -->
- <resources>
- <resource>
- <directory>.</directory>
- <includes>
- <include>build.properties</include>
- <include>META-INF/*</include>
- </includes>
- </resource>
- </resources>
- <plugins>
- <plugin>
- <artifactId>maven-clean-plugin</artifactId>
- <configuration>
- <filesets>
- <fileset>
- <directory>lib</directory>
- <includes>
- <include>**/*.jar</include>
- </includes>
- </fileset>
- </filesets>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-source-plugin</artifactId>
- <configuration>
- <archive>
- <manifestFile>META-INF/MANIFEST.MF</manifestFile>
- </archive>
- </configuration>
- </plugin>
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-dependency-plugin</artifactId>
- <configuration>
- <artifactItems>
- <!-- START JCR dependencies -->
- <artifactItem>
- <groupId>javax.jcr</groupId>
- <artifactId>jcr</artifactId>
- <version>2.0</version>
- </artifactItem>
- <!-- END JCR dependencies -->
-
- <!-- START Apache Jackrabbit dependencies -->
- <artifactItem>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-api</artifactId>
- <version>${jackrabbit.version}</version>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-webdav</artifactId>
- <version>${jackrabbit.version}</version>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-spi-commons</artifactId>
- <version>${jackrabbit.version}</version>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-jcr-commons</artifactId>
- <version>${jackrabbit.version}</version>
- </artifactItem>
- <!-- transitive dependency of jackrabbit-jcr-commons -->
- <artifactItem>
- <groupId>com.google.guava</groupId>
- <artifactId>guava</artifactId>
- <version>15.0</version>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-jcr2spi</artifactId>
- <version>${jackrabbit.version}</version>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-jcr-client</artifactId>
- <version>${jackrabbit.version}</version>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-spi</artifactId>
- <version>${jackrabbit.version}</version>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.jackrabbit</groupId>
- <artifactId>jackrabbit-spi2dav</artifactId>
- <version>${jackrabbit.version}</version>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpmime</artifactId>
- <version>4.5.3</version>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpclient</artifactId>
- <version>4.5.3</version>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.httpcomponents</groupId>
- <artifactId>httpcore</artifactId>
- <version>4.4.6</version>
- </artifactItem>
- <!-- END Apache Jackrabbit dependencies -->
-
- <!-- START Apache Jackrabbit FileVault dependencies -->
- <artifactItem>
- <groupId>org.apache.jackrabbit.vault</groupId>
- <artifactId>vault-davex</artifactId>
- <version>${vault.version}</version>
- </artifactItem>
- <artifactItem>
- <groupId>org.apache.jackrabbit.vault</groupId>
- <artifactId>org.apache.jackrabbit.vault</artifactId>
- <version>${vault.version}</version>
- </artifactItem>
- <!-- END Apache Jackrabbit FileVault dependencies -->
-
- </artifactItems>
- <outputDirectory>lib</outputDirectory>
- </configuration>
- <executions>
- <execution>
- <goals>
- <goal>copy</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-
- <properties>
- <!-- must match the version being referenced in the pom.xml of filevault -->
- <jackrabbit.version>2.16.3</jackrabbit.version>
- <vault.version>3.2.8</vault.version>
- </properties>
-</project>
diff --git a/shared/modules/parent/.project b/shared/parent/.project
similarity index 100%
rename from shared/modules/parent/.project
rename to shared/parent/.project
diff --git a/shared/parent/pom.xml b/shared/parent/pom.xml
new file mode 100644
index 00000000..77c02cd8
--- /dev/null
+++ b/shared/parent/pom.xml
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
+ license agreements. See the NOTICE file distributed with this work for additional
+ information regarding copyright ownership. The ASF licenses this file to
+ you under the Apache License, Version 2.0 (the "License"); you may not use
+ this file except in compliance with the License. You may obtain a copy of
+ the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
+ by applicable law or agreed to in writing, software distributed under the
+ License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
+ OF ANY KIND, either express or implied. See the License for the specific
+ language governing permissions and limitations under the License. -->
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.apache.sling</groupId>
+ <artifactId>sling-bundle-parent</artifactId>
+ <version>49</version>
+ <relativePath />
+ </parent>
+
+ <groupId>org.apache.sling.ide</groupId>
+ <artifactId>sling-ide-shared-parent</artifactId>
+ <packaging>pom</packaging>
+ <version>1.2.3-SNAPSHOT</version>
+
+ <name>Apache Sling IDE - Shared Modules Parent</name>
+
+ <scm>
+ <connection>scm:git:https://gitbox.apache.org/repos/asf/sling-ide-tooling.git</connection>
+ <developerConnection>scm:git:https://gitbox.apache.org/repos/asf/sling-ide-tooling.git</developerConnection>
+ <url>https://gitbox.apache.org/repos/asf?p=sling-ide-tooling.git</url>
+ </scm>
+
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>biz.aQute.bnd</groupId>
+ <artifactId>bnd-baseline-maven-plugin</artifactId>
+ <configuration>
+ <failOnMissing>false</failOnMissing><!-- no release yet -->
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.rat</groupId>
+ <artifactId>apache-rat-plugin</artifactId>
+ <configuration>
+ <excludes>
+ <exclude>**/MANIFEST.MF</exclude>
+ <exclude>**/OSGI-INF/*.xml</exclude>
+ </excludes>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencyManagement>
+ <dependencies>
+ <!-- START JCR dependencies -->
+ <dependency>
+ <groupId>javax.jcr</groupId>
+ <artifactId>jcr</artifactId>
+ <version>2.0</version>
+ <scope>compile</scope>
+ </dependency>
+ <!-- END JCR dependencies -->
+
+ <!-- START Apache Jackrabbit dependencies -->
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>oak-jackrabbit-api</artifactId>
+ <version>${oak.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-webdav</artifactId>
+ <version>${jackrabbit.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-spi-commons</artifactId>
+ <version>${jackrabbit.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-commons</artifactId>
+ <version>${jackrabbit.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr2spi</artifactId>
+ <version>${jackrabbit.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-jcr-client</artifactId>
+ <version>${jackrabbit.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-spi</artifactId>
+ <version>${jackrabbit.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit</groupId>
+ <artifactId>jackrabbit-spi2dav</artifactId>
+ <version>${jackrabbit.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpclient</artifactId>
+ <version>4.5.8</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.httpcomponents</groupId>
+ <artifactId>httpmime</artifactId>
+ <version>4.5.8</version>
+ <scope>compile</scope>
+ </dependency>
+ <!-- END Apache Jackrabbit dependencies -->
+
+ <!-- START Apache Jackrabbit FileVault dependencies -->
+ <dependency>
+ <groupId>org.apache.jackrabbit.vault</groupId>
+ <artifactId>vault-davex</artifactId>
+ <version>${vault.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.jackrabbit.vault</groupId>
+ <artifactId>org.apache.jackrabbit.vault</artifactId>
+ <version>${vault.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ <!-- END Apache Jackrabbit FileVault dependencies -->
+ </dependencies>
+ </dependencyManagement>
+
+ <properties>
+ <sling.java.version>8</sling.java.version>
+ <!-- must match the version being referenced in the pom.xml of filevault -->
+ <jackrabbit.version>2.20.6</jackrabbit.version>
+ <oak.version>1.42.0</oak.version>
+ <vault.version>3.6.4</vault.version>
+ </properties>
+</project>
diff --git a/shared/modules/pom.xml b/shared/pom.xml
similarity index 92%
rename from shared/modules/pom.xml
rename to shared/pom.xml
index 1be41e5d..613a4d4b 100644
--- a/shared/modules/pom.xml
+++ b/shared/pom.xml
@@ -17,7 +17,7 @@
<parent>
<groupId>org.apache</groupId>
<artifactId>apache</artifactId>
- <version>14</version>
+ <version>27</version>
</parent>
<groupId>org.apache.sling.ide</groupId>
<artifactId>sling-ide-tooling-shared</artifactId>
@@ -39,5 +39,10 @@
<module>impl-vlt</module>
<module>artifacts</module>
<module>sync-fs</module>
+ <module>filevault-uber-jar</module>
</modules>
+
+ <properties>
+ <maven.compiler.target>1.8</maven.compiler.target>
+ </properties>
</project>
diff --git a/shared/modules/sync-fs/.project b/shared/sync-fs/.project
similarity index 72%
rename from shared/modules/sync-fs/.project
rename to shared/sync-fs/.project
index 4c63d87a..ba16487c 100644
--- a/shared/modules/sync-fs/.project
+++ b/shared/sync-fs/.project
@@ -10,16 +10,6 @@
<arguments>
</arguments>
</buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.ManifestBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
- <buildCommand>
- <name>org.eclipse.pde.SchemaBuilder</name>
- <arguments>
- </arguments>
- </buildCommand>
<buildCommand>
<name>org.eclipse.m2e.core.maven2Builder</name>
<arguments>
diff --git a/shared/modules/sync-fs/bnd.bnd b/shared/sync-fs/bnd.bnd
similarity index 100%
rename from shared/modules/sync-fs/bnd.bnd
rename to shared/sync-fs/bnd.bnd
diff --git a/shared/modules/sync-fs/pom.xml b/shared/sync-fs/pom.xml
similarity index 97%
rename from shared/modules/sync-fs/pom.xml
rename to shared/sync-fs/pom.xml
index ce5177b2..c8ae58c6 100644
--- a/shared/modules/sync-fs/pom.xml
+++ b/shared/sync-fs/pom.xml
@@ -44,10 +44,12 @@
<groupId>org.apache.sling.ide</groupId>
<artifactId>org.apache.sling.ide.api</artifactId>
<version>${project.version}</version>
+ <scope>compile</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
+ <scope>provided</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
@@ -57,6 +59,7 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
+ <scope>test</scope>
</dependency>
<dependency>
<groupId>org.hamcrest</groupId>
diff --git a/shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/FSResources.java b/shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/FSResources.java
similarity index 100%
rename from shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/FSResources.java
rename to shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/FSResources.java
diff --git a/shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceDirectory.java b/shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceDirectory.java
similarity index 100%
rename from shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceDirectory.java
rename to shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceDirectory.java
diff --git a/shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceFile.java b/shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceFile.java
similarity index 100%
rename from shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceFile.java
rename to shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceFile.java
diff --git a/shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceProject.java b/shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceProject.java
similarity index 100%
rename from shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceProject.java
rename to shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceProject.java
diff --git a/shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceResource.java b/shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceResource.java
similarity index 100%
rename from shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceResource.java
rename to shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceResource.java
diff --git a/shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/package-info.java b/shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/package-info.java
similarity index 100%
rename from shared/modules/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/package-info.java
rename to shared/sync-fs/src/main/java/org/apache/sling/ide/content/sync/fs/package-info.java
diff --git a/shared/modules/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceDirectoryTest.java b/shared/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceDirectoryTest.java
similarity index 100%
rename from shared/modules/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceDirectoryTest.java
rename to shared/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceDirectoryTest.java
diff --git a/shared/modules/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceFileTest.java b/shared/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceFileTest.java
similarity index 100%
rename from shared/modules/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceFileTest.java
rename to shared/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceFileTest.java
diff --git a/shared/modules/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceProjectTest.java b/shared/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceProjectTest.java
similarity index 100%
rename from shared/modules/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceProjectTest.java
rename to shared/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/FSWorkspaceProjectTest.java
diff --git a/shared/modules/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/MockFilterLocator.java b/shared/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/MockFilterLocator.java
similarity index 100%
rename from shared/modules/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/MockFilterLocator.java
rename to shared/sync-fs/src/test/java/org/apache/sling/ide/content/sync/fs/impl/MockFilterLocator.java