You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by si...@apache.org on 2019/06/23 16:04:25 UTC

[sling-whiteboard] branch master updated: Remove already promoted content-package-2-feature-model module

This is an automated email from the ASF dual-hosted git repository.

simonetripodi pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git


The following commit(s) were added to refs/heads/master by this push:
     new 03d3ced  Remove already promoted content-package-2-feature-model module
03d3ced is described below

commit 03d3ced27463663ee3b5c56db4e98983552499fa
Author: Simo Tripodi <st...@adobe.com>
AuthorDate: Sun Jun 23 18:04:14 2019 +0200

    Remove already promoted content-package-2-feature-model module
---
 content-package-2-feature-model/LICENSE            | 201 ----------
 content-package-2-feature-model/README.md          | 396 -------------------
 content-package-2-feature-model/pom.xml            | 322 ---------------
 .../src/main/assembly/README.md                    | 149 -------
 .../src/main/assembly/bin.xml                      |  71 ----
 .../ContentPackage2FeatureModelConverter.java      | 431 ---------------------
 .../cpconverter/DefaultBundlesDeployer.java        |  99 -----
 .../cpconverter/RegexBasedResourceFilter.java      |  54 ---
 ...ntentPackage2FeatureModelConverterLauncher.java | 186 ---------
 .../feature/cpconverter/cli/ShutDownHook.java      |  81 ----
 .../feature/cpconverter/cli/package-info.java      |  21 -
 .../AbstractConfigurationEntryHandler.java         |  68 ----
 .../handlers/AbstractRegexEntryHandler.java        |  44 ---
 .../cpconverter/handlers/BundleEntryHandler.java   | 136 -------
 .../handlers/ConfigurationEntryHandler.java        |  36 --
 .../handlers/ContentPackageEntryHandler.java       |  49 ---
 .../handlers/JsonConfigurationEntryHandler.java    |  75 ----
 .../PropertiesConfigurationEntryHandler.java       |  60 ---
 .../handlers/XmlConfigurationEntryHandler.java     |  92 -----
 .../feature/cpconverter/handlers/package-info.java |  23 --
 .../sling/feature/cpconverter/package-info.java    |  21 -
 .../feature/cpconverter/spi/ArtifactWriter.java    |  26 --
 .../feature/cpconverter/spi/BundlesDeployer.java   |  33 --
 .../feature/cpconverter/spi/EntryHandler.java      |  29 --
 .../feature/cpconverter/spi/package-info.java      |  21 -
 .../cpconverter/vltpkg/VaultPackageAssembler.java  | 172 --------
 .../feature/cpconverter/vltpkg/package-info.java   |  21 -
 .../cpconverter/writers/FileArtifactWriter.java    |  42 --
 .../writers/InputStreamArtifactWriter.java         |  39 --
 .../writers/MavenPomSupplierWriter.java            |  54 ---
 .../feature/cpconverter/writers/package-info.java  |  21 -
 .../src/main/legal/LICENSE-with-deps               | 233 -----------
 .../src/main/legal/NOTICE-with-deps                |   5 -
 .../src/main/legal/license-header                  |  14 -
 ...ache.sling.feature.cpconverter.spi.EntryHandler |   6 -
 .../sling/feature/cpconverter/vltpkg/config.xml    |  95 -----
 .../cpconverter/vltpkg/definition/.content.xml     |  19 -
 .../sling/feature/cpconverter/vltpkg/settings.xml  |  22 --
 .../ContentPackage2FeatureModelConverterTest.java  | 235 -----------
 .../cpconverter/DefaultBundlesDeployerTest.java    |  80 ----
 .../cpconverter/RegexBasedResourceFilterTest.java  |  69 ----
 .../handlers/BundleEntryHandlerTest.java           | 118 ------
 .../handlers/ConfigurationEntryHandlerTest.java    | 127 ------
 .../handlers/ContentPackageEntryHandlerTest.java   |  51 ---
 .../JsonConfigurationEntryHandlerTest.java         |  46 ---
 .../vltpkg/VaultPackageAssemblerTest.java          |  89 -----
 .../cpconverter/handlers/jcr_root/.content.xml     |  22 --
 ...ceusermapping.impl.ServiceUserMapperImpl.config |  17 -
 ...ceusermapping.impl.ServiceUserMapperImpl.config |  17 -
 ...ing.impl.ServiceUserMapperImpl.INVALID.cfg.json |   1 -
 ...rviceusermapping.impl.ServiceUserMapperImpl.cfg |  17 -
 ...usermapping.impl.ServiceUserMapperImpl.cfg.json |   7 -
 ...ceusermapping.impl.ServiceUserMapperImpl.config |  17 -
 ...sermapping.impl.ServiceUserMapperImpl.empty.cfg |  14 -
 ...pping.impl.ServiceUserMapperImpl.empty.cfg.json |   3 -
 ...mapping.impl.ServiceUserMapperImpl.empty.config |  14 -
 ...sermapping.impl.ServiceUserMapperImpl.empty.xml |  19 -
 ...apping.impl.ServiceUserMapperImpl.empty.xml.cfg |  19 -
 ...rviceusermapping.impl.ServiceUserMapperImpl.xml |  21 -
 ...eusermapping.impl.ServiceUserMapperImpl.xml.cfg |  22 --
 .../apps/asd/install.author/test-framework.jar     | Bin 13288 -> 0 bytes
 .../apps/asd/install.publish/test-framework.jar    | Bin 13288 -> 0 bytes
 .../apps/asd/install/test-framework-no-pom.jar     | Bin 10769 -> 0 bytes
 .../jcr_root/apps/asd/install/test-framework.jar   | Bin 13288 -> 0 bytes
 .../cpconverter/handlers/jcr_root/asd/.content.xml |  20 -
 .../handlers/jcr_root/asd/public/.content.xml      |  19 -
 .../handlers/jcr_root/asd/public/_rep_policy.xml   |  24 --
 .../handlers/jcr_root/asd/public/license.txt       |  14 -
 .../test-content-package-unacceptable.zip          | Bin 15017 -> 0 bytes
 .../feature/cpconverter/test-content-package.zip   | Bin 46393 -> 0 bytes
 70 files changed, 4569 deletions(-)

diff --git a/content-package-2-feature-model/LICENSE b/content-package-2-feature-model/LICENSE
deleted file mode 100644
index 261eeb9..0000000
--- a/content-package-2-feature-model/LICENSE
+++ /dev/null
@@ -1,201 +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/content-package-2-feature-model/README.md b/content-package-2-feature-model/README.md
deleted file mode 100644
index 1ac4bd0..0000000
--- a/content-package-2-feature-model/README.md
+++ /dev/null
@@ -1,396 +0,0 @@
-# Apache Sling Content-Package to Feature Model converter
-
-This tool aims to provide to Apache Sling users an easy-to-use conversion tool which is able to convert `content-package` archives to the new _Sling Feature Model_.
-
-## Introduction
-
-`content-package`s are zipped archives containing OSGi bundles, OSGi configurations and resources (and nested `content-package`s as well), aside metadata, that can be used to install content into a _JCR_ repository using the [Apache Jackrabbit FileVault](http://jackrabbit.apache.org/filevault/) packaging runtime.
-
-OTOH, [Apache Sling Feature](https://github.com/apache/sling-org-apache-sling-feature) allows users to describe an entire OSGi-based application based on reusable components and includes everything related to this application, including bundles, configuration, framework properties, capabilities, requirements and custom artifacts.
-
-The _Apache Sling Content Package to Feature Model converter_ (referred as _cp2fm_) is a tool able to extract OSGI bundles, OSGi configurations, resources and iteratively scan nested `content-package`s from an input `content-package` and create one (or more) _Apache Sling Feature_ model files and deploy the extracted OSGi bundles in a directory which structure is compliant the _Apache Maven_ repository conventions.
-
-## Understanding the Input
-
-As exposed above, `content-package`s are archives, compressed with the ZIP algorithm, which contain:
-
- * OSGi bundles, conventionally found under the `jcr_root/apps/<application>/install(.runMode)/<bundle>.jar` path; typically, OSGi bundles are also valid _Apache Maven_ artifacts, that means that they contain _Apache Maven_ metadata files such as `META-INF/maven/<groupId>/<artifactId>/pom.(xml|properties)`;
- * OSGi configurations, conventionally found under the `jcr_root/apps/<application>/config(.runMode)/<configuration>.<extension>` path;
- * nested `content-package`s, conventionally found under the `jcr_root/etc/packages/<package-name>.zip` path;
- * Metadata files, under the `META-INF/` directory;
- * any other kind of resource.
-
-### a content-package sample
-
-We can have a look at what's inside a `test-content-package.zip` test `content-package` included in the `cp2fm` test resources:
-
-```
-$ unzip -l ./content-package-2-feature-model/src/test/resources/org/apache/sling/cp2fm/test-content-package.zip 
-Archive:  content-package-2-feature-model/src/test/resources/org/apache/sling/cp2fm/test-content-package.zip
-  Length      Date    Time    Name
----------  ---------- -----   ----
-        0  03-12-2019 17:31   META-INF/
-       69  03-12-2019 17:31   META-INF/MANIFEST.MF
-        0  03-12-2019 17:06   jcr_root/
-        0  03-12-2019 17:06   jcr_root/etc/
-        0  03-12-2019 17:06   jcr_root/etc/packages/
-        0  03-12-2019 17:30   jcr_root/etc/packages/asd/
-    34493  03-12-2019 17:30   jcr_root/etc/packages/asd/test-bundles.zip
-     8333  03-12-2019 17:09   jcr_root/etc/packages/asd/test-content.zip
-     7235  03-12-2019 17:08   jcr_root/etc/packages/asd/test-configurations.zip
-        0  03-12-2019 15:28   META-INF/maven/
-        0  03-12-2019 15:29   META-INF/maven/org.apache.sling/
-        0  02-28-2019 14:27   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.all/
-     1231  03-12-2019 15:30   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.all/pom.xml
-      127  03-12-2019 15:30   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.all/pom.properties
-        0  03-12-2019 17:06   META-INF/vault/
-      892  03-12-2019 15:32   META-INF/vault/settings.xml
-      840  03-12-2019 15:47   META-INF/vault/properties.xml
-     3579  03-12-2019 15:33   META-INF/vault/config.xml
-      267  03-12-2019 15:50   META-INF/vault/filter.xml
----------                     -------
-    63214                     20 files
-```
-
-Where the `test-bundles.zip` is a nested `content-package` wrapping OSGi bundles:
-
-```
-$ unzip -l test-bundles.zip 
-Archive:  test-bundles.zip
-  Length      Date    Time    Name
----------  ---------- -----   ----
-        0  03-12-2019 17:30   META-INF/
-       69  03-12-2019 17:30   META-INF/MANIFEST.MF
-        0  03-11-2019 23:39   jcr_root/
-        0  03-11-2019 23:31   jcr_root/apps/
-        0  03-12-2019 17:26   jcr_root/apps/asd/
-        0  03-11-2019 23:32   jcr_root/apps/asd/install/
-    13288  12-06-2018 12:30   jcr_root/apps/asd/install/test-framework.jar
-        0  03-12-2019 17:16   jcr_root/apps/asd/install.publish/
-     7210  03-12-2019 17:15   jcr_root/apps/asd/install.publish/test-api.jar
-        0  03-12-2019 17:18   jcr_root/apps/asd/install.author/
-     7735  03-12-2019 17:17   jcr_root/apps/asd/install.author/test-api.jar
-        0  03-11-2019 23:42   META-INF/maven/
-        0  03-11-2019 23:43   META-INF/maven/org.apache.sling/
-        0  02-28-2019 14:26   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.bundles/
-     1229  03-12-2019 10:22   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.bundles/pom.xml
-      131  03-12-2019 00:26   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.bundles/pom.properties
-        0  03-12-2019 12:41   META-INF/vault/
-      888  03-12-2019 00:28   META-INF/vault/settings.xml
-      954  03-12-2019 15:33   META-INF/vault/properties.xml
-     3571  03-12-2019 00:27   META-INF/vault/config.xml
-      891  03-12-2019 00:28   META-INF/vault/filter.xml
-      842  03-12-2019 00:27   META-INF/vault/filter-plugin-generated.xml
----------                     -------
-    79844                     29 files
-```
-
-the `test-configurations.zip` contains OSGi configurations:
-
-```
-$ unzip -l test-configurations.zip 
-Archive:  test-configurations.zip
-  Length      Date    Time    Name
----------  ---------- -----   ----
-        0  03-12-2019 17:08   META-INF/
-       69  03-12-2019 17:08   META-INF/MANIFEST.MF
-        0  03-12-2019 10:21   META-INF/maven/
-        0  03-12-2019 10:21   META-INF/maven/org.apache.sling/
-        0  02-28-2019 14:25   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.config/
-     1228  03-12-2019 10:24   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.config/pom.xml
-      129  03-12-2019 10:22   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.config/pom.properties
-        0  03-12-2019 13:23   META-INF/vault/
-       94  02-28-2019 14:25   META-INF/vault/settings.xml
-      664  03-12-2019 15:13   META-INF/vault/properties.xml
-     3579  02-28-2019 14:25   META-INF/vault/config.xml
-      175  03-12-2019 10:37   META-INF/vault/filter.xml
-        0  02-28-2019 14:25   jcr_root/
-        0  03-12-2019 10:17   jcr_root/apps/
-        0  02-28-2019 14:25   jcr_root/apps/asd/
-        0  03-12-2019 10:17   jcr_root/apps/asd/config/
-      438  02-28-2019 14:25   jcr_root/apps/asd/config/org.apache.sling.commons.log.LogManager.factory.config-asd-retail.xml
-        0  03-12-2019 10:18   jcr_root/apps/asd/config.publish/
-      377  02-28-2019 14:25   jcr_root/apps/asd/config.publish/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-asd-retail.xml
-      244  02-28-2019 14:25   jcr_root/apps/.content.xml
----------                     -------
-    25441                     23 files
-```
-
-and the `test-content.zip` package includes resources of various nature:
-
-```
-$ unzip -l test-content.zip 
-Archive:  test-content.zip
-  Length      Date    Time    Name
----------  ---------- -----   ----
-        0  03-12-2019 17:09   META-INF/
-       69  03-12-2019 17:09   META-INF/MANIFEST.MF
-        0  03-12-2019 11:31   META-INF/maven/
-        0  03-12-2019 11:31   META-INF/maven/org.apache.sling/
-        0  02-28-2019 14:26   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.content/
-     1229  03-12-2019 11:32   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.content/pom.xml
-      131  03-12-2019 11:32   META-INF/maven/org.apache.sling/org.apache.sling.feature.cpconverter.content/pom.properties
-        0  03-12-2019 12:40   META-INF/vault/
-      118  02-28-2019 14:26   META-INF/vault/settings.xml
-      859  03-12-2019 15:12   META-INF/vault/properties.xml
-     3571  03-12-2019 12:42   META-INF/vault/config.xml
-      895  03-12-2019 12:57   META-INF/vault/filter.xml
-       72  02-28-2019 14:26   META-INF/vault/filter-plugin-generated.xml
-        0  03-12-2019 12:30   jcr_root/
-        0  03-12-2019 12:31   jcr_root/content/
-        0  03-12-2019 12:31   jcr_root/content/asd/
-     1021  02-28-2019 14:26   jcr_root/content/asd/.content.xml
-     6924  02-28-2019 14:26   jcr_root/content/asd/resources.xml
----------                     -------
-    39481                     22 files
-```
-
-## Mapping and the Output
-
-All metadata are mainly collected inside one or more, depending by declared run modes in the installation and configuration paths, _Feature_ model files:
-
-```json
-$ cat asd.retail.all.json 
-{
-  "id":"org.apache.sling:asd.retail.all:slingosgifeature:cp2fm-converted-feature:0.0.1",
-  "description":"Combined package for asd.Retail",
-  "bundles":[
-    {
-      "id":"org.apache.felix:org.apache.felix.framework:6.0.1",
-      "start-order":"5"
-    }
-  ],
-  "configurations":{
-    "org.apache.sling.commons.log.LogManager.factory.config-asd-retail":{
-      "org.apache.sling.commons.log.pattern":"{0,date,yyyy-MM-dd HH:mm:ss.SSS} {4} [{3}] {5}",
-      "org.apache.sling.commons.log.names":[
-        "we.retail"
-      ],
-      "org.apache.sling.commons.log.level":"info",
-      "org.apache.sling.commons.log.file":"logs/project-we-retail.log"
-    }
-  },
-  "content-packages:ARTIFACTS|true":[
-    "org.apache.sling:asd.retail.all:zip:cp2fm-converted-feature:0.0.1"
-  ]
-}
-```
-
-the `publish` run mode leads the tool to generate a separated _Apache Sling Feature_ model file:
-
-```json
-$ cat asd.retail.all-publish.json 
-{
-  "id":"org.apache.sling:asd.retail.all:slingosgifeature:cp2fm-converted-feature-publish:0.0.1",
-  "bundles":[
-    {
-      "id":"org.apache.sling:org.apache.sling.models.api:1.3.8",
-      "start-order":"5"
-    }
-  ],
-  "configurations":{
-    "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-asd-retail":{
-      "user.mapping":[
-        "com.asd.sample.we.retail.core:orders=[commerce-orders-service]",
-        "com.asd.sample.we.retail.core:frontend=[content-reader-service]"
-      ]
-    }
-  }
-}
-```
-
-bundles are collected in an _Apache Maven repository_ compliant directory, all other resources are collected in a new `content-package` created while scanning the packages:
-
-```
-$ tree bundles/
-bundles/
-└── org
-    └── apache
-        ├── felix
-        │   └── org.apache.felix.framework
-        │       └── 6.0.1
-        │           ├── org.apache.felix.framework-6.0.1.jar
-        │           └── org.apache.felix.framework-6.0.1.pom
-        └── sling
-            ├── asd.retail.all
-            │   └── 0.0.1
-            │       ├── asd.retail.all-0.0.1-cp2fm-converted-feature.zip
-            │       └── asd.retail.all-0.0.1.pom
-            ├── org.apache.sling.api
-            │   └── 2.20.0
-            │       ├── org.apache.sling.api-2.20.0.jar
-            │       └── org.apache.sling.api-2.20.0.pom
-            └── org.apache.sling.models.api
-                └── 1.3.8
-                    ├── org.apache.sling.models.api-1.3.8.jar
-                    └── org.apache.sling.models.api-1.3.8.pom
-
-12 directories, 8 files
-```
-
-_Apache Maven GAVs_ are extracted from nested bundles metadata and are renamed according to the _Apache Maven_ conventions.
-
-### Supported configurations
-
-All OSGi configuration formats are supported:
-
- * _Property_ files, which extensions are `.properties` or `.cfg`, see the related [documentation](https://sling.apache.org/documentation/bundles/configuration-installer-factory.html#property-files-cfg);
- * Configuration Files, which extension is `.config`, see the related [documentation](https://sling.apache.org/documentation/bundles/configuration-installer-factory.html#configuration-files-config);
- * JSON format, which extension is `.cfg.json`, see the related [documentation](https://blog.osgi.org/2018/06/osgi-r7-highlights-configuration-admin.html)
- * `sling:OsgiConfig` content nodes, typically `.xml` files.
-
-During the conversion process, all these formats will be parsed and then added in the `configuration` section of the _Sling Feature Model_ file.
-
-### Run Modes
-
-As shown above, run modes in the path lead the tool to create a dedicated _Apache Sling Feature_ model file containing all interested OSGi configurations/bundles.
-
-### Known limitations
-
-Multiple Run Modes are not supported yet.
-
-## Sample APIs
-
-```java
-import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-
-...
-
-new ContentPackage2FeatureModelConverter()
-            // content-package validation, when opening them
-            .setStrictValidation(strictValidation)
-            // (don't) allow different OSGi configurations file have the same PID
-            .setMergeConfigurations(mergeConfigurations)
-            // users can decide which is the bundles start order, declared in the generated Apache Sling Feature(s)
-            .setBundlesStartOrder(bundlesStartOrder)
-            // a valid directory where the outputs will be generated (it will created, if not existing already)
-            .setOutputDirectory(outputDirectory)
-            // an existing and valid content-package file
-            .convert(contentPackage);
-```
-
-### Handler Services
-
-In order to make the tool extensible, the [org.apache.sling.feature.cpconverter.spi.EntryHandler](./src/main/java/org/apache/sling/feature/cpconverter/spi/EntryHandler.java) interface is declared to handle different kind of resources, have a look at the [org.apache.sling.feature.cpconverter.handlers](src/main/java/org/apache/sling/feature/cpconverter/handlers) package to see the default implementations.
-
-If users want to handle special resource type, all they have to do is providing their `org.apache.sling.feature.cpconverter.spi.EntryHandler` service implementation and declaring them in the `META-INF/services/org.apache.sling.feature.cpconverter.spi.EntryHandler` classpath resource file, on order to let the `ServiceLoader` including it in the `content-package` scan.
-
-### Bundles deployer
-
-The [org.apache.sling.feature.cpconverter.spi.BundlesDeployer](./src/main/java/org/apache/sling/cp2fm/spi/BundlesDeployer) service is designed to let the conversion tool be integrated in external services, i.e. _Apache Maven_.
-
-The [default implementation](src/main/java/org/apache/sling/cp2fm/DefaultBundlesDeployer.java) just copies bundles in the target output directory, according to the _Apache Maven_ repository layout.
-
-## The CLI Tool
-
-The tool is distributed with a commodity package containing all is needed in order to launch the `ContentPackage2FeatureModelConverter` form the shell:
-
-```
-$ unzip -l org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT.zip 
-Archive:  org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT.zip
-  Length      Date    Time    Name
----------  ---------- -----   ----
-        0  03-13-2019 15:58   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/
-        0  03-13-2019 15:58   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/bin/
-        0  03-13-2019 15:58   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/
-     4605  02-27-2019 16:30   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/README.md
-   801904  02-28-2019 14:55   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/jackrabbit-spi-commons-2.19.1.jar
-    14744  02-11-2019 15:44   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/osgi.annotation-6.0.1.jar
-    35919  02-11-2019 15:44   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.osgi.service.component.annotations-1.3.0.jar
-    23575  02-11-2019 15:44   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.osgi.service.metatype.annotations-1.3.0.jar
-    34518  02-27-2019 15:28   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.apache.felix.scr.annotations-1.11.0.jar
-    45199  03-13-2019 15:58   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT.jar
-    17489  03-13-2019 15:58   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/LICENSE
-   588337  02-11-2019 12:49   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/commons-collections-3.2.2.jar
-   108555  02-11-2019 15:45   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/xz-1.8.jar
-    52873  03-05-2019 17:31   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/plexus-classworlds-2.6.0.jar
-   165965  03-05-2019 18:02   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/maven-model-3.6.0.jar
-      178  02-27-2019 15:56   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/NOTICE
-   745712  02-28-2019 10:02   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.apache.jackrabbit.vault-3.2.6.jar
-  2374421  02-27-2019 15:28   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/biz.aQute.bndlib-3.2.0.jar
-     3263  03-13-2019 15:58   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/bin/cp2sf.bat
-    69246  02-11-2019 12:49   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/jcr-2.0.jar
-   113508  02-11-2019 12:36   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.apache.felix.converter-1.0.0.jar
-    12548  02-11-2019 12:36   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.osgi.util.function-1.0.0.jar
-   176142  02-11-2019 12:35   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.apache.felix.utils-1.11.0.jar
-   155618  03-04-2019 00:12   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.apache.felix.configadmin-1.9.12.jar
-    75443  03-05-2019 14:58   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/plexus-io-3.1.1.jar
-    57954  02-11-2019 12:39   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/snappy-0.4.jar
-   148098  02-11-2019 12:39   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/xbean-reflect-3.7.jar
-     3808  03-13-2019 15:58   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/bin/cp2sf
-   214788  02-11-2019 15:44   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/commons-io-2.6.jar
-    26081  02-11-2019 12:36   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/geronimo-json_1.0_spec-1.0-alpha-1.jar
-    90358  02-11-2019 12:35   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/johnzon-core-1.0.0.jar
-    14769  02-11-2019 12:35   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.osgi.annotation.versioning-1.0.0.jar
-   475256  02-11-2019 12:35   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/osgi.core-6.0.0.jar
-    28688  02-11-2019 12:48   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/slf4j-api-1.7.6.jar
-    28561  02-28-2019 14:55   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/jackrabbit-spi-2.19.1.jar
-   403186  02-28-2019 14:55   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/jackrabbit-jcr-commons-2.19.1.jar
-    49017  03-04-2019 15:12   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/jackrabbit-api-2.19.1.jar
-   260371  03-05-2019 14:58   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/plexus-utils-3.1.1.jar
-   639592  02-11-2019 12:39   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/google-collections-1.0.jar
-    10684  02-11-2019 12:48   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/slf4j-simple-1.7.6.jar
-   164159  02-11-2019 12:48   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.apache.sling.feature.io-1.0.0.jar
-   289040  02-11-2019 12:36   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.apache.felix.configurator-1.0.4.jar
-   591748  02-11-2019 15:45   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/commons-compress-1.18.jar
-   242435  02-27-2019 15:58   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/picocli-3.6.0.jar
-   115238  02-11-2019 12:48   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/org.apache.sling.feature-1.0.0.jar
-    18587  02-11-2019 15:46   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/annotations-16.0.3.jar
-   191914  03-05-2019 14:58   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/plexus-archiver-4.1.0.jar
-   229982  03-05-2019 17:31   org.apache.sling.feature.cpconverter-0.0.1-SNAPSHOT/lib/plexus-container-default-2.0.0.jar
----------                     -------
-  9914076                     48 files
-```
-
-once the package is decompressed, open the shell and type:
-
-```
-$ ./bin/cp2sf -h
-Usage: cp2fm [-hmqsvX] [-b=<bundlesStartOrder>] -c=<contentPackage>
-             -o=<outputDirectory> [-f=<filteringPatterns>]...
-Apache Sling Content Package to Sling Feature converter
-  -b, --bundles-start-order=<bundlesStartOrder>
-                            The order to start detected bundles.
-  -c, --content-package=<contentPackage>
-                            The content-package input file.
-  -f, --filtering-patterns=<filteringPatterns>
-                            Regex based pattern(s) to reject content-package archive
-                              entries.
-  -h, --help                Display the usage message.
-  -m, --merge-configurations
-                            Flag to mark OSGi configurations with same PID will be
-                              merged, the tool will fail otherwise.
-  -o, --output-directory=<outputDirectory>
-                            The output directory where the Feature File and the
-                              bundles will be deployed.
-  -q, --quiet               Log errors only.
-  -s, --strict-validation   Flag to mark the content-package input file being strict
-                              validated.
-  -v, --version             Display version information.
-  -X, --verbose             Produce execution debug output.
-Copyright(c) 2019 The Apache Software Foundation.
-```
-
-to see all the available options; a sample execution could look like:
-
-```
-$ ./bin/cp2sf -v -b 20 -c /content-package-2-feature-model/src/test/resources/org/apache/sling/cp2fm/test-content-package.zip -o /tmp
-```
-
-Argument Files for Long Command Lines:
-
-```
-# argfile
-# comments are supported
-
--v
--b 20
--c /content-package-2-feature-model/src/test/resources/org/apache/sling/cp2fm/test-content-package.zip
--o /tmp
-```
-
-then execute the command
-
-```
-$ ./bin/cp2sf @arfile
-````
diff --git a/content-package-2-feature-model/pom.xml b/content-package-2-feature-model/pom.xml
deleted file mode 100644
index b7f697c..0000000
--- a/content-package-2-feature-model/pom.xml
+++ /dev/null
@@ -1,322 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
- 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/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.sling</groupId>
-    <artifactId>sling</artifactId>
-    <version>34</version>
-    <relativePath />
-  </parent>
-
-  <artifactId>org.apache.sling.feature.cpconverter</artifactId>
-  <version>0.0.1-SNAPSHOT</version>
-
-  <name>Apache Sling Content Package to Feature Model converter</name>
-  <description>Content Package to Feature Model converter tools for Apache Sling</description>
-
-  <properties>
-    <sling.java.version>8</sling.java.version>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-  </properties>
-
-  <dependencies>
-    <!--
-     | Logging
-    -->
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-simple</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <!--
-     | CLI
-    -->
-    <dependency>
-      <groupId>info.picocli</groupId>
-      <artifactId>picocli</artifactId>
-      <version>3.6.0</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <!--
-     | Content-Package
-    -->
-    <dependency>
-      <groupId>org.apache.jackrabbit.vault</groupId>
-      <artifactId>org.apache.jackrabbit.vault</artifactId>
-      <version>3.2.6</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>jackrabbit-spi-commons</artifactId>
-      <version>2.19.1</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>javax.jcr</groupId>
-      <artifactId>jcr</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-      <version>2.6</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <!--
-     | Sling Feature Model libraries
-    -->
-    <dependency>
-      <groupId>org.apache.sling</groupId>
-      <artifactId>org.apache.sling.feature.io</artifactId>
-      <version>1.0.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.converter</artifactId>
-      <version>1.0.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.configurator</artifactId>
-      <version>1.0.4</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.utils</artifactId>
-      <version>1.11.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.geronimo.specs</groupId>
-      <artifactId>geronimo-json_1.0_spec</artifactId>
-      <version>1.0-alpha-1</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.johnzon</groupId>
-      <artifactId>johnzon-core</artifactId>
-      <version>1.0.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.sling</groupId>
-      <artifactId>org.apache.sling.feature</artifactId>
-      <version>1.0.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.osgi</groupId>
-      <artifactId>org.osgi.annotation.versioning</artifactId>
-      <version>1.0.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.osgi</groupId>
-      <artifactId>osgi.core</artifactId>
-      <scope>provided</scope>
-    </dependency>
-
-    <!--
-     | Handle .config files
-    -->
-    <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.configadmin</artifactId>
-      <version>1.9.12</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.jackrabbit</groupId>
-      <artifactId>jackrabbit-api</artifactId>
-      <version>2.19.1</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <!--
-     | repackage
-    -->
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-archiver</artifactId>
-      <version>4.1.0</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-utils</artifactId>
-      <version>3.1.1</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-io</artifactId>
-      <version>3.1.1</version>
-      <scope>provided</scope>
-    </dependency>
-    <!--
-     | avoid classloading issue
-    -->
-    <dependency>
-      <groupId>org.codehaus.plexus</groupId>
-      <artifactId>plexus-container-default</artifactId>
-      <version>2.0.0</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <!--
-     | POM model
-    -->
-    <dependency>
-      <groupId>org.apache.maven</groupId>
-      <artifactId>maven-model</artifactId>
-      <version>3.6.0</version>
-      <scope>provided</scope>
-    </dependency>
-
-    <!--
-     | Test only dependencies
-    -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-core</artifactId>
-      <version>2.25.0</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.rat</groupId>
-        <artifactId>apache-rat-plugin</artifactId>
-          <configuration>
-          <excludes>
-            <exclude>src/main/resources/META-INF/services/org.apache.sling.feature.cpconverter.spi.EntryHandler</exclude>
-            <exclude>src/main/legal/NOTICE-with-deps</exclude>
-          </excludes>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <systemPropertyVariables>
-            <testDirectory>${project.build.directory}/unit-tests</testDirectory>
-          </systemPropertyVariables>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>license-maven-plugin</artifactId>
-        <version>1.16</version>
-        <executions>
-          <execution>
-            <id>add-third-party</id>
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>add-third-party</goal>
-            </goals>
-            <configuration>
-              <fileTemplate>${basedir}/src/main/legal/LICENSE-with-deps</fileTemplate>
-              <thirdPartyFilename>LICENSE-with-deps</thirdPartyFilename>
-              <sortArtifactByName>true</sortArtifactByName>
-              <excludedScopes>test</excludedScopes>
-              <licenseMerges>
-                <licenseMerge>The Apache Software License, Version 2.0|Apache License, Version 2.0|Apache Public License 2.0</licenseMerge>
-              </licenseMerges>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>appassembler-maven-plugin</artifactId>
-        <version>2.0.0</version>
-        <executions>
-          <execution>
-            <phase>package</phase>
-            <goals>
-              <goal>assemble</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <repositoryLayout>flat</repositoryLayout>
-          <repositoryName>lib</repositoryName>
-          <useWildcardClassPath>true</useWildcardClassPath>
-          <extraJvmArguments>-Dproject.artifactId=${project.artifactId} -Dproject.version=${project.version} -Dbuild.timestamp=${maven.build.timestamp} -Duser.timezone=UTC -Dfile.encoding=UTF-8</extraJvmArguments>
-          <defaultJvmSettings>-Xms500m -Xmx500m -XX:PermSize=128m -XX:-UseGCOverheadLimit</defaultJvmSettings>
-          <licenseHeaderFile>${basedir}/src/main/legal/license-header</licenseHeaderFile>
-          <programs>
-            <program>
-              <mainClass>org.apache.sling.feature.cpconverter.cli.ContentPackage2FeatureModelConverterLauncher</mainClass>
-              <name>cp2sf</name>
-            </program>
-          </programs>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-        <version>3.1.0</version>
-        <executions>
-          <execution>
-            <id>assembly</id>
-            <phase>package</phase>
-            <goals>
-              <goal>single</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <finalName>${project.build.finalName}</finalName>
-          <tarLongFileMode>gnu</tarLongFileMode>
-          <appendAssemblyId>false</appendAssemblyId>
-          <descriptors>
-            <descriptor>${basedir}/src/main/assembly/bin.xml</descriptor>
-          </descriptors>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-</project>
diff --git a/content-package-2-feature-model/src/main/assembly/README.md b/content-package-2-feature-model/src/main/assembly/README.md
deleted file mode 100644
index 4f743d5..0000000
--- a/content-package-2-feature-model/src/main/assembly/README.md
+++ /dev/null
@@ -1,149 +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.
-```
-
------
-
-# ${project.name} - ${project.inceptionYear}
-
-## What is it?
-
-  ${project.description}
-
-## Licensing
-
-  Please see the files called LICENSE and NOTICE
-
-## Documentation
-
-  The most up-to-date documentation can be found at ${project.url}.
-
-## Useful URLs
-
-  Home Page:          ${project.url}/
-  Source Code:        ${project.scm.url}
-  Issue Tracking:     ${project.issueManagement.url}
-
-## System Requirements
-
-### JDK
-
-    ${sling.java.version} or above. (see http://www.oracle.com/technetwork/java/)
-
-### Memory
-
-    No minimum requirement.
-
-### Disk
-
-    No minimum requirement.
-
-###  Operating System
-
-    No minimum requirement. On Windows, Windows NT and above or Cygwin is required for
-    the startup scripts. Tested on Windows XP, Fedora Core and Mac OS X.
-
----
-
-## Installation
-
-### Windows 2000/XP
-
-  1) Unzip the distribution archive, i.e. `${project.build.finalName}.zip` to the directory you wish to install `${project.name} ${project.version}`.
-These instructions assume you chose `C:\Program Files`.
-The subdirectory `${project.build.finalName}` will be created from the archive.
-
-  2) Add the `SFA_HOME` environment variable by opening up the system properties (WinKey + Pause), selecting the "Advanced" tab, and the "Environment Variables" button, then adding the `SFA_HOME` variable in the user variables with the value `C:\Program Files\${project.build.finalName}`.
-
-  3) In the same dialog, add the SFA environment variable in the user variables with the value `%SFA_HOME%\bin`.
-
-  4) In the same dialog, update/create the _Path_ environment variable in the user variables and prepend the value `%SFA%` to add `${project.name}` available in the command line.
-
-  5) In the same dialog, make sure that `JAVA_HOME` exists in your user variables or in the system variables and it is set to the location of your JDK, e.g. `C:\Program Files\Java\1.8.0_152` and that `%JAVA_HOME%\bin` is in your _Path_ environment variable.
-
-  6) Open a new command prompt (Winkey + R then type cmd) and run `sfa --version` to verify that it is correctly installed.
-
-## Unix-based Operating Systems (Linux, Solaris and Mac OS X)
-
-  1) Extract the distribution archive, i.e. `${project.build.finalName}.tar.gz` to the directory you wish to install `${project.name} ${project.version}`.
-These instructions assume you chose `/usr/local`.
-The subdirectory `${project.build.finalName}` will be created from the archive.
-
-  2) In a command terminal, add the `SFA_HOME` environment variable, e.g.
-        `export SFA_HOME=/usr/local/${project.build.finalName}`.
-
-  3) Add the `SFA` environment variable, e.g. `export SFA=$SFA_HOME/bin`.
-
-  4) Add `SFA` environment variable to your path, e.g. `export PATH=$SFA:$PATH`.
-
-  5) Make sure that `JAVA_HOME` is set to the location of your JDK, e.g. `export JAVA_HOME=/usr/java/1.8.0_152` and that `$JAVA_HOME/bin` is in your `PATH` environment variable.
-
-  6) Run `sfa --version` to verify that it is correctly installed.
-
----
-
-## Execution
-
-  Open the shell and type `cp2sf -h` to see the available commands:
-
-```
-$ ./cp2sf -h
-Usage: cp2fm [-hmqsvX] [-b=<bundlesStartOrder>] -c=<contentPackage>
-             -o=<outputDirectory> [-f=<filteringPatterns>]...
-Apache Sling Content Package to Sling Feature converter
-  -b, --bundles-start-order=<bundlesStartOrder>
-                            The order to start detected bundles.
-  -c, --content-package=<contentPackage>
-                            The content-package input file.
-  -f, --filtering-patterns=<filteringPatterns>
-                            Regex based pattern(s) to reject content-package archive
-                              entries.
-  -h, --help                Display the usage message.
-  -m, --merge-configurations
-                            Flag to mark OSGi configurations with same PID will be
-                              merged, the tool will fail otherwise.
-  -o, --output-directory=<outputDirectory>
-                            The output directory where the Feature File and the
-                              bundles will be deployed.
-  -q, --quiet               Log errors only.
-  -s, --strict-validation   Flag to mark the content-package input file being strict
-                              validated.
-  -v, --version             Display version information.
-  -X, --verbose             Produce execution debug output.
-Copyright(c) 2019 The Apache Software Foundation.
-```
-
-a sample execution could look like:
-
-```
-$ ./bin/cp2sf -v -b 20 -c /content-package-2-feature-model/src/test/resources/org/apache/sling/cp2fm/test-content-package.zip -o /tmp
-```
-
-### Argument Files for Long Command Lines
-
-```
-# argfile
-# comments are supported
-
--v
--b 20
--c /content-package-2-feature-model/src/test/resources/org/apache/sling/cp2fm/test-content-package.zip
--o /tmp
-```
-
-then execute the command
-
-```
-$ ./bin/cp2sf @arfile
-````
diff --git a/content-package-2-feature-model/src/main/assembly/bin.xml b/content-package-2-feature-model/src/main/assembly/bin.xml
deleted file mode 100644
index 482f4cd..0000000
--- a/content-package-2-feature-model/src/main/assembly/bin.xml
+++ /dev/null
@@ -1,71 +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.
--->
-<assembly xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.1 http://maven.apache.org/xsd/assembly-1.1.1.xsd">
-
-  <id>${project.build.finalName}</id>
-  <formats>
-    <format>tar.gz</format>
-    <format>zip</format>
-  </formats>
-  <includeBaseDirectory>true</includeBaseDirectory>
-  <baseDirectory>${project.build.finalName}</baseDirectory>
-
-  <files>
-    <file>
-      <source>${basedir}/src/main/assembly/README.md</source>
-      <filtered>true</filtered>
-      <outputDirectory>/</outputDirectory>
-      <fileMode>666</fileMode>
-    </file>
-
-    <!--
-     | Use the N&L files which apply to the included dependencies
-    -->
-    <file>
-      <source>${project.build.directory}/generated-sources/license/LICENSE-with-deps</source>
-      <destName>LICENSE</destName>
-    </file>
-    <file>
-      <source>${basedir}/src/main/legal/NOTICE-with-deps</source>
-      <destName>NOTICE</destName>
-    </file>
-  </files>
-
-  <fileSets>
-    <!--
-     | shell scripts
-    -->
-    <fileSet>
-      <directory>${project.build.directory}/appassembler/bin/</directory>
-      <outputDirectory>/bin</outputDirectory>
-      <fileMode>755</fileMode>
-      <directoryMode>755</directoryMode>
-    </fileSet>
-  </fileSets>
-
-  <dependencySets>
-    <dependencySet>
-      <outputDirectory>/lib</outputDirectory>
-      <scope>provided</scope>
-      <useTransitiveDependencies>true</useTransitiveDependencies>
-      <useProjectArtifact>true</useProjectArtifact>
-    </dependencySet>
-  </dependencySets>
-
-</assembly>
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
deleted file mode 100644
index 32c0197..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
+++ /dev/null
@@ -1,431 +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.feature.cpconverter;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Objects;
-import java.util.ServiceLoader;
-import java.util.Set;
-
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
-import org.apache.jackrabbit.vault.packaging.Dependency;
-import org.apache.jackrabbit.vault.packaging.PackageManager;
-import org.apache.jackrabbit.vault.packaging.PackageProperties;
-import org.apache.jackrabbit.vault.packaging.VaultPackage;
-import org.apache.jackrabbit.vault.packaging.impl.PackageManagerImpl;
-import org.apache.sling.feature.Artifact;
-import org.apache.sling.feature.ArtifactId;
-import org.apache.sling.feature.Configuration;
-import org.apache.sling.feature.Extension;
-import org.apache.sling.feature.ExtensionType;
-import org.apache.sling.feature.Extensions;
-import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.cpconverter.spi.BundlesDeployer;
-import org.apache.sling.feature.cpconverter.spi.EntryHandler;
-import org.apache.sling.feature.cpconverter.vltpkg.VaultPackageAssembler;
-import org.apache.sling.feature.cpconverter.writers.FileArtifactWriter;
-import org.apache.sling.feature.cpconverter.writers.MavenPomSupplierWriter;
-import org.apache.sling.feature.io.json.FeatureJSONWriter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class ContentPackage2FeatureModelConverter {
-
-    private static final String CONTENT_PACKAGES = "content-packages";
-
-    public static final String POM_TYPE = "pom";
-
-    public static final String ZIP_TYPE = "zip";
-
-    public static final String NAME_GROUP_ID = "groupId";
-
-    public static final String NAME_ARTIFACT_ID = "artifactId";
-
-    public static final String FEATURE_CLASSIFIER = "cp2fm-converted-feature";
-
-    private static final String SLING_OSGI_FEATURE_TILE_TYPE = "slingosgifeature";
-
-    private static final String JSON_FILE_EXTENSION = ".json";
-
-    private final Logger logger = LoggerFactory.getLogger(getClass());
-
-    private final PackageManager packageManager = new PackageManagerImpl();
-
-    private final ServiceLoader<EntryHandler> entryHandlers = ServiceLoader.load(EntryHandler.class);
-
-    private final Map<String, Feature> runModes = new HashMap<>();
-
-    private final Set<String> dependencies = new HashSet<>();
-
-    private final RegexBasedResourceFilter filter = new RegexBasedResourceFilter();
-
-    private BundlesDeployer artifactDeployer;
-
-    private boolean strictValidation = false;
-
-    private boolean mergeConfigurations = false;
-
-    private int bundlesStartOrder = 0;
-
-    private File outputDirectory;
-
-    private Feature targetFeature = null;
-
-    private VaultPackageAssembler mainPackageAssembler = null;
-
-    public ContentPackage2FeatureModelConverter setStrictValidation(boolean strictValidation) {
-        this.strictValidation = strictValidation;
-        return this;
-    }
-
-    public boolean isStrictValidation() {
-        return strictValidation;
-    }
-
-    public boolean isMergeConfigurations() {
-        return mergeConfigurations;
-    }
-
-    public ContentPackage2FeatureModelConverter setMergeConfigurations(boolean mergeConfigurations) {
-        this.mergeConfigurations = mergeConfigurations;
-        return this;
-    }
-
-    public ContentPackage2FeatureModelConverter setBundlesStartOrder(int bundlesStartOrder) {
-        this.bundlesStartOrder = bundlesStartOrder;
-        return this;
-    }
-
-    public ContentPackage2FeatureModelConverter setOutputDirectory(File outputDirectory) {
-        this.outputDirectory = outputDirectory;
-        return this;
-    }
-
-    public File getOutputDirectory() {
-        return outputDirectory;
-    }
-
-    public Feature getTargetFeature() {
-        return targetFeature;
-    }
-
-    public void addFilteringPattern(String filteringPattern) {
-        Objects.requireNonNull(filteringPattern, "Null pattern to filter resources out is not a valid filtering pattern");
-        if (filteringPattern.isEmpty()) {
-            throw new IllegalArgumentException("Empty pattern to filter resources out is not a valid filtering pattern");
-        }
-
-        filter.addFilteringPattern(filteringPattern);
-    }
-
-    public Feature getRunMode(String runMode) {
-        if (getTargetFeature() == null) {
-            throw new IllegalStateException("Target Feature not initialized yet, please make sure convert() method was invoked first.");
-        }
-
-        if (runMode == null) {
-            return getTargetFeature();
-        }
-
-        ArtifactId id = getTargetFeature().getId();
-
-        return runModes.computeIfAbsent(runMode, k -> new Feature(new ArtifactId(id.getGroupId(),
-                                                                                 id.getArtifactId(),
-                                                                                 id.getVersion(),
-                                                                                 id.getClassifier() + '-' + runMode,
-                                                                                 id.getType())));
-    }
-
-    public BundlesDeployer getArtifactDeployer() {
-        return artifactDeployer;
-    }
-
-    public void convert(File contentPackage) throws Exception {
-        Objects.requireNonNull(contentPackage , "Null content-package can not be converted.");
-
-        if (!contentPackage.exists() || !contentPackage.isFile()) {
-            throw new IllegalArgumentException("Content-package "
-                                            + contentPackage
-                                            + " does not exist or it is not a valid file.");
-        }
-
-        if (outputDirectory == null) {
-            throw new IllegalStateException("Null output directory not supported, it must be set before invoking the convert(File) method.");
-        }
-
-        Iterator<BundlesDeployer> artifactDeployerLoader = ServiceLoader.load(BundlesDeployer.class).iterator();
-        if (!artifactDeployerLoader.hasNext()) {
-            artifactDeployer = new DefaultBundlesDeployer(outputDirectory);
-        } else {
-            artifactDeployer = artifactDeployerLoader.next();
-        }
-
-        if (!outputDirectory.exists() && !outputDirectory.mkdirs()) {
-            throw new IllegalStateException("output directory "
-                                            + outputDirectory
-                                            + " does not exist and can not be created, please make sure current user '"
-                                            + System.getProperty("user.name")
-                                            + " has enough rights to write on the File System.");
-        }
-
-        logger.info("Reading content-package '{}'...", contentPackage);
-
-        try (VaultPackage vaultPackage = packageManager.open(contentPackage, strictValidation)) {
-            logger.info("content-package '{}' successfully read!", contentPackage);
-
-            mainPackageAssembler = VaultPackageAssembler.create(vaultPackage);
-
-            PackageProperties packageProperties = vaultPackage.getProperties();
-            String groupId = packageProperties.getProperty(NAME_GROUP_ID);
-            String artifactId = packageProperties.getProperty(NAME_ARTIFACT_ID);
-            String version = packageProperties.getProperty(PackageProperties.NAME_VERSION);
-
-            targetFeature = new Feature(new ArtifactId(groupId,
-                                                       artifactId,
-                                                       version,
-                                                       FEATURE_CLASSIFIER,
-                                                       SLING_OSGI_FEATURE_TILE_TYPE));
-
-            targetFeature.setDescription(packageProperties.getDescription());
-
-            logger.info("Converting content-package '{}' to Feature File '{}'...", vaultPackage.getId(), targetFeature.getId());
-
-            process(vaultPackage);
-
-            // attach all unmatched resources as new content-package
-
-            File contentPackageArchive = mainPackageAssembler.createPackage(outputDirectory);
-
-            // deploy the new zip content-package to the local mvn bundles dir
-
-            artifactDeployer.deploy(new FileArtifactWriter(contentPackageArchive),
-                                                           targetFeature.getId().getGroupId(),
-                                                           targetFeature.getId().getArtifactId(),
-                                                           targetFeature.getId().getVersion(),
-                                                           FEATURE_CLASSIFIER,
-                                                           ZIP_TYPE);
-
-            artifactDeployer.deploy(new MavenPomSupplierWriter(targetFeature.getId().getGroupId(),
-                                                               targetFeature.getId().getArtifactId(),
-                                                               targetFeature.getId().getVersion(),
-                                                               ZIP_TYPE),
-                                    targetFeature.getId().getGroupId(),
-                                    targetFeature.getId().getArtifactId(),
-                                    targetFeature.getId().getVersion(),
-                                    null,
-                                    POM_TYPE);
-
-            attach(null,
-                   targetFeature.getId().getGroupId(),
-                   targetFeature.getId().getArtifactId(),
-                   targetFeature.getId().getVersion(),
-                   FEATURE_CLASSIFIER,
-                   ZIP_TYPE);
-
-            // finally serialize the Feature Model(s) file(s)
-
-            seralize(targetFeature);
-
-            if (!runModes.isEmpty()) {
-                for (Feature runMode : runModes.values()) {
-                    seralize(runMode);
-                }
-            }
-        }
-    }
-
-    public void addConfiguration(String runMode, String pid, Dictionary<String, Object> configurationProperties) {
-        if (!mergeConfigurations) {
-            checkConfigurationExist(getTargetFeature(), pid);
-
-            for (Feature runModeFeature : runModes.values()) {
-                checkConfigurationExist(runModeFeature, pid);
-            }
-        }
-
-        Feature feature = getRunMode(runMode);
-        Configuration configuration = feature.getConfigurations().getConfiguration(pid);
-
-        if (configuration == null) {
-            configuration = new Configuration(pid);
-            feature.getConfigurations().add(configuration);
-        }
-
-        Enumeration<String> keys = configurationProperties.keys();
-        while (keys.hasMoreElements()) {
-            String key = keys.nextElement();
-            Object value = configurationProperties.get(key);
-            configuration.getProperties().put(key, value);
-        }
-    }
-
-    private static void checkConfigurationExist(Feature feature, String pid) {
-        if (feature != null) {
-            if (feature.getConfigurations().getConfiguration(pid) != null) {
-                throw new IllegalStateException("Cinfiguration '"
-                                                + pid
-                                                + "' already defined in Feature Model '"
-                                                + feature.getId().toMvnId()
-                                                + "', can not be added");
-            }
-        }
-    }
-
-    private void seralize(Feature feature) throws Exception {
-        StringBuilder fileName = new StringBuilder().append(feature.getId().getArtifactId());
-
-        if (!FEATURE_CLASSIFIER.equals(feature.getId().getClassifier())) {
-            fileName.append(feature.getId().getClassifier().substring(FEATURE_CLASSIFIER.length()));
-        }
-
-        fileName.append(JSON_FILE_EXTENSION);
-
-        File targetFile = new File(outputDirectory, fileName.toString());
-
-        logger.info("Conversion complete!", targetFile);
-        logger.info("Writing resulting Feature File to '{}'...", targetFile);
-
-        try (FileWriter targetWriter = new FileWriter(targetFile)) {
-            FeatureJSONWriter.write(targetWriter, feature);
-
-            logger.info("'{}' Feature File successfully written!", targetFile);
-        }
-    }
-
-    public void processSubPackage(String path, File contentPackage) throws Exception {
-        Objects.requireNonNull(path, "Impossible to process a null vault package");
-        Objects.requireNonNull(contentPackage, "Impossible to process a null vault package");
-
-        try (VaultPackage vaultPackage = packageManager.open(contentPackage, strictValidation)) {
-            process(vaultPackage);
-
-            File clonedPackage = VaultPackageAssembler.create(vaultPackage).createPackage();
-            mainPackageAssembler.addEntry(path, clonedPackage);
-        }
-    }
-
-    private void process(VaultPackage vaultPackage) throws Exception {
-        Objects.requireNonNull(vaultPackage, "Impossible to process a null vault package");
-
-        if (getTargetFeature() == null) {
-            throw new IllegalStateException("Target Feature not initialized yet, please make sure convert() method was invoked first.");
-        }
-
-        dependencies.remove(vaultPackage.getId().toString());
-
-        for (Dependency dependency : vaultPackage.getDependencies()) {
-            dependencies.add(dependency.toString());
-        }
-
-        Archive archive = vaultPackage.getArchive();
-        try {
-            archive.open(strictValidation);
-
-            Entry jcrRoot = archive.getJcrRoot();
-            traverse(null, archive, jcrRoot);
-        } finally {
-            archive.close();
-        }
-    }
-
-    private void traverse(String path, Archive archive, Entry entry) throws Exception {
-        String entryPath = newPath(path, entry.getName());
-
-        if (entry.isDirectory()) {
-            for (Entry child : entry.getChildren()) {
-                traverse(entryPath, archive, child);
-            }
-
-            return;
-        }
-
-        logger.info("Processing entry {}...", entryPath);
-
-        if (filter.isFilteredOut(entryPath)) {
-            throw new IllegalArgumentException("Path '"
-                                               + entryPath
-                                               + "' in archive "
-                                               + archive.getMetaInf().getProperties()
-                                               + " not allowed by user configuration, please check configured filtering patterns");
-        }
-
-        getEntryHandlerByEntryPath(entryPath).handle(entryPath, archive, entry, this);
-
-        logger.info("Entry {} successfully processed.", entryPath);
-    }
-
-    private static String newPath(String path, String entryName) {
-        if (path == null) {
-            return entryName;
-        }
-
-        return path + '/' + entryName;
-    }
-
-    private EntryHandler getEntryHandlerByEntryPath(String path) {
-        Iterator<EntryHandler> entryHandlersIterator = entryHandlers.iterator();
-        while (entryHandlersIterator.hasNext()) {
-            EntryHandler entryHandler = entryHandlersIterator.next();
-
-            if (entryHandler.matches(path)) {
-                return entryHandler;
-            }
-        }
-
-        return mainPackageAssembler;
-    }
-
-    public void attach(String runMode,
-                       String groupId,
-                       String artifactId,
-                       String version,
-                       String classifier,
-                       String type) {
-        Objects.requireNonNull(groupId, "Artifact can not be attached to a feature without specifying a valid 'groupId'.");
-        Objects.requireNonNull(artifactId, "Artifact can not be attached to a feature without specifying a valid 'artifactId'.");
-        Objects.requireNonNull(version, "Artifact can not be attached to a feature without specifying a valid 'version'.");
-        Objects.requireNonNull(type, "Artifact can not be attached to a feature without specifying a valid 'type'.");
-
-        Artifact artifact = new Artifact(new ArtifactId(groupId, artifactId, version, classifier, type));
-
-        Feature targetFeature = getRunMode(runMode);
-
-        if (ZIP_TYPE.equals(type) ) {
-            Extensions extensions = targetFeature.getExtensions();
-            Extension extension = extensions.getByName(CONTENT_PACKAGES);
-
-            if (extension == null) {
-                extension = new Extension(ExtensionType.ARTIFACTS, CONTENT_PACKAGES, true);
-                extensions.add(extension);
-            }
-
-            extension.getArtifacts().add(artifact);
-        } else {
-            artifact.setStartOrder(bundlesStartOrder);
-            targetFeature.getBundles().add(artifact);
-        }
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/DefaultBundlesDeployer.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/DefaultBundlesDeployer.java
deleted file mode 100644
index 780aed8..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/DefaultBundlesDeployer.java
+++ /dev/null
@@ -1,99 +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.feature.cpconverter;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.util.Objects;
-import java.util.StringTokenizer;
-
-import org.apache.sling.feature.cpconverter.spi.ArtifactWriter;
-import org.apache.sling.feature.cpconverter.spi.BundlesDeployer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class DefaultBundlesDeployer implements BundlesDeployer {
-
-    private static final String BUNDLES_RIRECTORY_NAME = "bundles";
-
-    private final Logger logger = LoggerFactory.getLogger(getClass());
-
-    private final File artifactsDirectory;
-
-    public DefaultBundlesDeployer(File outputDirectory) {
-        artifactsDirectory = new File(outputDirectory, BUNDLES_RIRECTORY_NAME);
-        if (!artifactsDirectory.exists()) {
-            artifactsDirectory.mkdirs();
-        }
-    }
-
-    @Override
-    public File getBundlesDirectory() {
-        return artifactsDirectory;
-    }
-
-    @Override
-    public void deploy(ArtifactWriter artifactWriter,
-                              String groupId,
-                              String artifactId,
-                              String version,
-                              String classifier,
-                              String type) throws IOException {
-        Objects.requireNonNull(artifactWriter, "Null ArtifactWriter can not install an artifact to a Maven repository.");
-        Objects.requireNonNull(groupId, "Bundle can not be installed to a Maven repository without specifying a valid 'groupId'.");
-        Objects.requireNonNull(artifactId, "Bundle can not be installed to a Maven repository without specifying a valid 'artifactId'.");
-        Objects.requireNonNull(version, "Bundle can not be installed to a Maven repository without specifying a valid 'version'.");
-        Objects.requireNonNull(type, "Bundle can not be installed to a Maven repository without specifying a valid 'type'.");
-
-        File targetDir = artifactsDirectory;
-
-        StringTokenizer tokenizer = new StringTokenizer(groupId, ".");
-        while (tokenizer.hasMoreTokens()) {
-            String current = tokenizer.nextToken();
-            targetDir = new File(targetDir, current);
-        }
-
-        targetDir = new File(targetDir, artifactId);
-
-        targetDir = new File(targetDir, version);
-
-        targetDir.mkdirs();
-
-        StringBuilder nameBuilder = new StringBuilder()
-                                    .append(artifactId)
-                                    .append('-')
-                                    .append(version);
-
-        if (classifier != null) {
-            nameBuilder.append('-').append(classifier);
-        }
-
-        nameBuilder.append('.').append(type);
-
-        File targetFile = new File(targetDir, nameBuilder.toString());
-
-        logger.info("Writing data to {}...", targetFile);
-
-        try (FileOutputStream targetStream = new FileOutputStream(targetFile)) {
-            artifactWriter.write(targetStream);
-        }
-
-        logger.info("Data successfully written to {}.", targetFile);
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilter.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilter.java
deleted file mode 100644
index 9535acf..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilter.java
+++ /dev/null
@@ -1,54 +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.feature.cpconverter;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.regex.Pattern;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-final class RegexBasedResourceFilter {
-
-    private final Logger logger = LoggerFactory.getLogger(getClass());
-
-    private final List<Pattern> patterns = new LinkedList<>();
-
-    public void addFilteringPattern(String filteringPattern) {
-        patterns.add(Pattern.compile(filteringPattern));
-    }
-
-    public boolean isFilteredOut(String path) {
-        for (Pattern pattern : patterns) {
-            logger.debug("Checking if path '{}' matches against '{}' pattern...", path, pattern);
-
-            if (pattern.matcher(path).matches()) {
-                logger.debug("Path '{}' matches against '{}' pattern.", path, pattern);
-
-                return true;
-            } else {
-                logger.debug("Path '{}' does not matches against '{}' pattern.", path, pattern);
-            }
-        }
-
-        logger.debug("Path '{}' does not match against any configured pattern.", path);
-
-        return false;
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
deleted file mode 100644
index 7aa7c50..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
+++ /dev/null
@@ -1,186 +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.feature.cpconverter.cli;
-
-import java.io.File;
-import java.util.TimeZone;
-
-import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import picocli.CommandLine;
-import picocli.CommandLine.Command;
-import picocli.CommandLine.Option;
-
-@Command(
-    name = "cp2fm",
-    description = "Apache Sling Content Package to Sling Feature converter",
-    footer = "Copyright(c) 2019 The Apache Software Foundation."
-)
-public final class ContentPackage2FeatureModelConverterLauncher implements Runnable {
-
-    @Option(names = { "-h", "--help" }, usageHelp = true, description = "Display the usage message.")
-    private boolean helpRequested;
-
-    @Option(names = { "-X", "--verbose" }, description = "Produce execution debug output.")
-    private boolean debug;
-
-    @Option(names = { "-q", "--quiet" }, description = "Log errors only.")
-    private boolean quiet;
-
-    @Option(names = { "-v", "--version" }, description = "Display version information.")
-    private boolean printVersion;
-
-    @Option(names = { "-c", "--content-package" }, description = "The content-package input file.", required = true)
-    private File contentPackage;
-
-    @Option(names = { "-s", "--strict-validation" }, description = "Flag to mark the content-package input file being strict validated.", required = false, defaultValue = "false")
-    private boolean strictValidation = false;
-
-    @Option(names = { "-m", "--merge-configurations" }, description = "Flag to mark OSGi configurations with same PID will be merged, the tool will fail otherwise.", required = false, defaultValue = "false")
-    private boolean mergeConfigurations = false;
-
-    @Option(names = { "-b", "--bundles-start-order" }, description = "The order to start detected bundles.", required = false)
-    private int bundlesStartOrder = 0;
-
-    @Option(names = { "-f", "--filtering-patterns" }, description = "Regex based pattern(s) to reject content-package archive entries.", required = false)
-    private String[] filteringPatterns;
-
-    @Option(names = { "-o", "--output-directory" }, description = "The output directory where the Feature File and the bundles will be deployed.", required = true)
-    private File outputDirectory;
-
-    @Override
-    public void run() {
-        if (quiet) {
-            System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "error");
-        } else if (debug) {
-            System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "debug");
-        } else {
-            System.setProperty("org.slf4j.simpleLogger.defaultLogLevel", "info");
-        }
-        System.setProperty("org.slf4j.simpleLogger.showThreadName", "false");
-        System.setProperty("org.slf4j.simpleLogger.levelInBrackets", "true");
-        System.setProperty("org.slf4j.simpleLogger.showLogName", "false");
-
-        String appName = getClass().getAnnotation(Command.class).description()[0];
-        final Logger logger = LoggerFactory.getLogger(appName);
-
-        // Add the Shutdown Hook to the Java virtual machine
-        // in order to destroy all the allocated resources
-        Runtime.getRuntime().addShutdownHook(new ShutDownHook(logger));
-
-        if (printVersion) {
-            printVersion(logger);
-        }
-
-        logger.info(appName);
-        logger.info("");
-
-        try {
-            ContentPackage2FeatureModelConverter converter = new ContentPackage2FeatureModelConverter()
-                                                             .setStrictValidation(strictValidation)
-                                                             .setMergeConfigurations(mergeConfigurations)
-                                                             .setBundlesStartOrder(bundlesStartOrder)
-                                                             .setOutputDirectory(outputDirectory);
-
-            if (filteringPatterns != null && filteringPatterns.length > 0) {
-                for (String filteringPattern : filteringPatterns) {
-                    converter.addFilteringPattern(filteringPattern);
-                }
-            }
-
-            converter.convert(contentPackage);
-
-            logger.info( "+-----------------------------------------------------+" );
-            logger.info("{} SUCCESS", appName);
-        } catch (Throwable t) {
-            logger.info( "+-----------------------------------------------------+" );
-            logger.info("{} FAILURE", appName);
-            logger.info( "+-----------------------------------------------------+" );
-
-            if (debug) {
-                logger.error("Unable to convert content-package {}:", contentPackage, t);
-            } else {
-                logger.error("Unable to convert content-package {}: {}", contentPackage, t.getMessage());
-            }
-
-            logger.info( "" );
-
-            System.exit(1);
-        }
-
-        logger.info( "+-----------------------------------------------------+" );
-    }
-
-    private static void printVersion(final Logger logger) {
-        logger.info("{} v{} (built on {})",
-                System.getProperty("project.artifactId"),
-                System.getProperty("project.version"),
-                System.getProperty("build.timestamp"));
-        logger.info("Java version: {}, vendor: {}",
-                System.getProperty("java.version"),
-                System.getProperty("java.vendor"));
-        logger.info("Java home: {}", System.getProperty("java.home"));
-        logger.info("Default locale: {}_{}, platform encoding: {}",
-                System.getProperty("user.language"),
-                System.getProperty("user.country"),
-                System.getProperty("sun.jnu.encoding"));
-        logger.info("Default Time Zone: {}", TimeZone.getDefault().getDisplayName());
-        logger.info("OS name: \"{}\", version: \"{}\", arch: \"{}\", family: \"{}\"",
-                System.getProperty("os.name"),
-                System.getProperty("os.version"),
-                System.getProperty("os.arch"),
-                getOsFamily());
-        logger.info("+-----------------------------------------------------+");
-    }
-
-    private static final String getOsFamily() {
-        String osName = System.getProperty("os.name").toLowerCase();
-        String pathSep = System.getProperty("path.separator");
-
-        if (osName.indexOf("windows") != -1) {
-            return "windows";
-        } else if (osName.indexOf("os/2") != -1) {
-            return "os/2";
-        } else if (osName.indexOf("z/os") != -1 || osName.indexOf("os/390") != -1) {
-            return "z/os";
-        } else if (osName.indexOf("os/400") != -1) {
-            return "os/400";
-        } else if (pathSep.equals(";")) {
-            return "dos";
-        } else if (osName.indexOf("mac") != -1) {
-            if (osName.endsWith("x")) {
-                return "mac"; // MACOSX
-            }
-            return "unix";
-        } else if (osName.indexOf("nonstop_kernel") != -1) {
-            return "tandem";
-        } else if (osName.indexOf("openvms") != -1) {
-            return "openvms";
-        } else if (pathSep.equals(":")) {
-            return "unix";
-        }
-
-        return "undefined";
-    }
-
-    public static void main(String[] args) {
-        CommandLine.run(new ContentPackage2FeatureModelConverterLauncher(), args);
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/cli/ShutDownHook.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/cli/ShutDownHook.java
deleted file mode 100644
index 0c5d2fc..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/cli/ShutDownHook.java
+++ /dev/null
@@ -1,81 +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.feature.cpconverter.cli;
-
-import java.util.Date;
-import java.util.Formatter;
-
-import org.slf4j.Logger;
-
-final class ShutDownHook extends Thread {
-
-    private final long start = System.currentTimeMillis();
-
-    private final Logger logger;
-
-    public ShutDownHook(Logger logger) {
-        this.logger = logger;
-    }
-
-    @Override
-    public void run() {
-        logger.info("+-----------------------------------------------------+");
-        logger.info("");
-
-        // format the uptime string
-        Formatter uptimeFormatter = new Formatter();
-        uptimeFormatter.format("Total time:");
-
-        long uptime = System.currentTimeMillis() - start;
-        if (uptime < 1000) {
-            uptimeFormatter.format(" %s millisecond%s", uptime, (uptime > 1 ? "s" : ""));
-        } else {
-            long uptimeInSeconds = (uptime) / 1000;
-            final long hours = uptimeInSeconds / 3600;
-
-            if (hours > 0) {
-                uptimeFormatter.format(" %s hour%s", hours, (hours > 1 ? "s" : ""));
-            }
-
-            uptimeInSeconds = uptimeInSeconds - (hours * 3600);
-            final long minutes = uptimeInSeconds / 60;
-
-            if (minutes > 0) {
-                uptimeFormatter.format(" %s minute%s", minutes, (minutes > 1 ? "s" : ""));
-            }
-
-            uptimeInSeconds = uptimeInSeconds - (minutes * 60);
-
-            if (uptimeInSeconds > 0) {
-                uptimeFormatter.format(" %s second%s", uptimeInSeconds, (uptimeInSeconds > 1 ? "s" : ""));
-            }
-        }
-        logger.info(uptimeFormatter.toString());
-
-        uptimeFormatter.close();
-
-        logger.info("Finished at: {}", new Date());
-
-        final Runtime runtime = Runtime.getRuntime();
-        final int megaUnit = 1024 * 1024;
-
-        logger.info("Final Memory: {}M/{}M",
-                    (runtime.totalMemory() - runtime.freeMemory()) / megaUnit,
-                    runtime.totalMemory() / megaUnit);
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/cli/package-info.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/cli/package-info.java
deleted file mode 100644
index 63be681..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/cli/package-info.java
+++ /dev/null
@@ -1,21 +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.
- */
-
-/**
- * CLI implementation for the converter.
- */
-package org.apache.sling.feature.cpconverter.cli;
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractConfigurationEntryHandler.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractConfigurationEntryHandler.java
deleted file mode 100644
index 99ea954..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractConfigurationEntryHandler.java
+++ /dev/null
@@ -1,68 +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.feature.cpconverter.handlers;
-
-import java.io.InputStream;
-import java.util.Dictionary;
-import java.util.regex.Matcher;
-
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
-import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-
-abstract class AbstractConfigurationEntryHandler extends AbstractRegexEntryHandler {
-
-    public AbstractConfigurationEntryHandler(String extension) {
-        super("(jcr_root)?/apps/[^/]+/config(\\.([^/]+))?/.+\\." + extension);
-    }
-
-    @Override
-    public final void handle(String path, Archive archive, Entry entry, ContentPackage2FeatureModelConverter converter) throws Exception {
-        String pid = entry.getName().substring(0, entry.getName().lastIndexOf('.'));
-
-        logger.info("Processing configuration '{}'.", pid);
-
-        Dictionary<String, Object> configurationProperties;
-        try (InputStream input = archive.openInputStream(entry)) {
-            configurationProperties = parseConfiguration(pid, input);
-        }
-
-        if (configurationProperties.isEmpty()) {
-            logger.info("No configuration properties found for configuration {}", path);
-            return;
-        }
-
-        Matcher matcher = getPattern().matcher(path);
-        String runMode = null;
-        // we are pretty sure it matches, here
-        if (matcher.matches()) {
-            // there is a specified RunMode
-            runMode = matcher.group(3);
-        } else {
-            throw new IllegalStateException("Something went terribly wrong: pattern '"
-                                            + getPattern().pattern()
-                                            + "' should have matched already with path '"
-                                            + path
-                                            + "' but it does not, currently");
-        }
-
-        converter.addConfiguration(runMode, pid, configurationProperties);
-    }
-
-    protected abstract Dictionary<String, Object> parseConfiguration(String name, InputStream input) throws Exception;
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractRegexEntryHandler.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractRegexEntryHandler.java
deleted file mode 100644
index f34d866..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/AbstractRegexEntryHandler.java
+++ /dev/null
@@ -1,44 +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.feature.cpconverter.handlers;
-
-import java.util.regex.Pattern;
-
-import org.apache.sling.feature.cpconverter.spi.EntryHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-abstract class AbstractRegexEntryHandler implements EntryHandler {
-
-    protected final Logger logger = LoggerFactory.getLogger(getClass());
-
-    private final Pattern pattern;
-
-    public AbstractRegexEntryHandler(String regex) {
-        pattern = Pattern.compile(regex);
-    }
-
-    @Override
-    public final boolean matches(String path) {
-        return pattern.matcher(path).matches();
-    }
-
-    protected final Pattern getPattern() {
-        return pattern;
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandler.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandler.java
deleted file mode 100644
index 884bf06..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandler.java
+++ /dev/null
@@ -1,136 +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.feature.cpconverter.handlers;
-
-import static org.apache.jackrabbit.vault.packaging.PackageProperties.NAME_VERSION;
-import static org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter.NAME_ARTIFACT_ID;
-import static org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter.NAME_GROUP_ID;
-import static org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter.POM_TYPE;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.InputStream;
-import java.util.Objects;
-import java.util.Properties;
-import java.util.jar.JarEntry;
-import java.util.jar.JarInputStream;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
-import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-import org.apache.sling.feature.cpconverter.spi.ArtifactWriter;
-import org.apache.sling.feature.cpconverter.writers.InputStreamArtifactWriter;
-import org.apache.sling.feature.cpconverter.writers.MavenPomSupplierWriter;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public final class BundleEntryHandler extends AbstractRegexEntryHandler {
-
-    private static final String JAR_TYPE = "jar";
-
-    private final Logger logger = LoggerFactory.getLogger(getClass());
-
-    private final Pattern pomPropertiesPattern = Pattern.compile("META-INF/maven/[^/]+/[^/]+/pom.properties");
-
-    private final Pattern pomXmlPattern = Pattern.compile("META-INF/maven/[^/]+/[^/]+/pom.xml");
-
-    public BundleEntryHandler() {
-        super("(jcr_root)?/apps/[^/]+/install(\\.([^/]+))?/.+\\.jar");
-    }
-
-    @Override
-    public void handle(String path, Archive archive, Entry entry, ContentPackage2FeatureModelConverter converter) throws Exception {
-        logger.info("Processing bundle {}...", entry.getName());
-
-        Properties properties = new Properties();
-        byte[] pomXml = null;
-
-        try (JarInputStream jarInput = new JarInputStream(archive.openInputStream(entry));
-                ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
-            JarEntry jarEntry;
-            while ((jarEntry = jarInput.getNextJarEntry()) != null) {
-                String entryName = jarEntry.getName();
-
-                if (pomPropertiesPattern.matcher(entryName).matches()) {
-                    logger.info("Reading '{}' bundle GAV from {}...", entry.getName(), entryName);
-
-                    properties.load(jarInput);
-                } else if (pomXmlPattern.matcher(entryName).matches()) {
-                    logger.info("Reading '{}' POM file from {}...", entry.getName(), entryName);
-
-                    IOUtils.copy(jarInput, baos);
-                    pomXml = baos.toByteArray();
-                }
-            }
-        }
-
-        String groupId = getCheckedProperty(properties, NAME_GROUP_ID);
-        String artifactId = getCheckedProperty(properties, NAME_ARTIFACT_ID);
-        String version = getCheckedProperty(properties, NAME_VERSION);
-
-        Matcher matcher = getPattern().matcher(path);
-        String runMode = null;
-        // we are pretty sure it matches, here
-        if (matcher.matches()) {
-            // there is a specified RunMode
-            runMode = matcher.group(3);
-        } else {
-            throw new IllegalStateException("Something went terribly wrong: pattern '"
-                                            + getPattern().pattern()
-                                            + "' should have matched already with path '"
-                                            + path
-                                            + "' but it does not, currently");
-        }
-
-        try (InputStream input = archive.openInputStream(entry)) {
-            converter.getArtifactDeployer().deploy(new InputStreamArtifactWriter(input),
-                                                   groupId,
-                                                   artifactId,
-                                                   version,
-                                                   null,
-                                                   JAR_TYPE);
-
-            converter.attach(runMode,
-                             groupId,
-                             artifactId,
-                             version,
-                             null,
-                             JAR_TYPE);
-        }
-
-        ArtifactWriter pomWriter;
-        if (pomXml == null) {
-            pomWriter = new MavenPomSupplierWriter(groupId, artifactId, version, JAR_TYPE);
-        } else {
-            pomWriter = new InputStreamArtifactWriter(new ByteArrayInputStream(pomXml));
-        }
-
-        converter.getArtifactDeployer().deploy(pomWriter, groupId, artifactId, version, null, POM_TYPE);
-    }
-
-    private static String getCheckedProperty(Properties properties, String name) {
-        String property = properties.getProperty(name).trim();
-        Objects.requireNonNull(property, "Bundle can not be defined as a valid Maven artifact without specifying a valid '"
-                                         + name
-                                         + "' property.");
-        return property;
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/ConfigurationEntryHandler.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/ConfigurationEntryHandler.java
deleted file mode 100644
index 64c8647..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/ConfigurationEntryHandler.java
+++ /dev/null
@@ -1,36 +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.feature.cpconverter.handlers;
-
-import java.io.InputStream;
-import java.util.Dictionary;
-
-import org.apache.felix.cm.file.ConfigurationHandler;
-
-public final class ConfigurationEntryHandler extends AbstractConfigurationEntryHandler {
-
-    public ConfigurationEntryHandler() {
-        super("config");
-    }
-
-    @Override
-    @SuppressWarnings("unchecked")
-    protected Dictionary<String, Object> parseConfiguration(String name, InputStream input) throws Exception {
-        return ConfigurationHandler.read(input);
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandler.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandler.java
deleted file mode 100644
index c385e05..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandler.java
+++ /dev/null
@@ -1,49 +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.feature.cpconverter.handlers;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
-import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-
-public final class ContentPackageEntryHandler extends AbstractRegexEntryHandler {
-
-    public ContentPackageEntryHandler() {
-        super("(?:jcr_root)?/etc/packages/.+\\.zip");
-    }
-
-    @Override
-    public void handle(String path, Archive archive, Entry entry, ContentPackage2FeatureModelConverter converter) throws Exception {
-        logger.info("Processing sub-content package '{}'...", entry.getName());
-
-        File temporaryContentPackage = File.createTempFile("content-package", entry.getName());
-
-        try (InputStream input = archive.openInputStream(entry);
-                OutputStream output = new FileOutputStream(temporaryContentPackage)) {
-            IOUtils.copy(input, output);
-        }
-
-        converter.processSubPackage(path, temporaryContentPackage);
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/JsonConfigurationEntryHandler.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/JsonConfigurationEntryHandler.java
deleted file mode 100644
index 7ddaf4f..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/JsonConfigurationEntryHandler.java
+++ /dev/null
@@ -1,75 +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.feature.cpconverter.handlers;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringWriter;
-import java.net.URL;
-import java.util.Dictionary;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.felix.configurator.impl.json.JSONUtil;
-import org.apache.felix.configurator.impl.json.TypeConverter;
-import org.apache.felix.configurator.impl.model.ConfigurationFile;
-
-public final class JsonConfigurationEntryHandler extends AbstractConfigurationEntryHandler {
-
-    public JsonConfigurationEntryHandler() {
-        super("cfg\\.json");
-    }
-
-    @Override
-    protected Dictionary<String, Object> parseConfiguration(String name, InputStream input) throws Exception {
-        StringBuilder content = new StringBuilder()
-                                .append("{ \"")
-                                .append(name)
-                                .append("\" : ");
-        try (Reader reader = new InputStreamReader(input); StringWriter writer = new StringWriter()) {
-            IOUtils.copy(reader, writer);
-            content.append(writer.toString());
-        }
-        content.append("}");
-
-        JSONUtil.Report report = new JSONUtil.Report();
-        ConfigurationFile configuration = JSONUtil.readJSON(new TypeConverter(null),
-                                                            name,
-                                                            new URL("file://content-package/" + name),
-                                                            0,
-                                                            content.toString(),
-                                                            report);
-
-        if (!report.errors.isEmpty() || !report.warnings.isEmpty()) {
-            final StringBuilder builder = new StringBuilder();
-            builder.append("Errors in configuration:");
-            for (final String w : report.warnings) {
-                builder.append("\n");
-                builder.append(w);
-            }
-            for (final String e : report.errors) {
-                builder.append("\n");
-                builder.append(e);
-            }
-            throw new IOException(builder.toString());
-        }
-
-        return configuration.getConfigurations().get(0).getProperties();
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/PropertiesConfigurationEntryHandler.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/PropertiesConfigurationEntryHandler.java
deleted file mode 100644
index faa0dac..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/PropertiesConfigurationEntryHandler.java
+++ /dev/null
@@ -1,60 +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.feature.cpconverter.handlers;
-
-import java.io.BufferedInputStream;
-import java.io.InputStream;
-import java.util.Dictionary;
-import java.util.Enumeration;
-import java.util.Hashtable;
-import java.util.Properties;
-
-public final class PropertiesConfigurationEntryHandler extends AbstractConfigurationEntryHandler {
-
-    public PropertiesConfigurationEntryHandler() {
-        super("(cfg|properties)");
-    }
-
-    @Override
-    protected Dictionary<String, Object> parseConfiguration(String name, InputStream input) throws Exception {
-        final Properties properties = new Properties();
-
-        try (final BufferedInputStream in = new BufferedInputStream(input)) {
-            in.mark(1);
-
-            boolean isXml = '<' == in.read();
-
-            in.reset();
-
-            if (isXml) {
-                properties.loadFromXML(in);
-            } else {
-                properties.load(in);
-            }
-        }
-
-        Dictionary<String, Object> configuration = new Hashtable<>();
-        final Enumeration<Object> i = properties.keys();
-        while (i.hasMoreElements()) {
-            final Object key = i.nextElement();
-            configuration.put(key.toString(), properties.get(key));
-        }
-
-        return configuration;
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/XmlConfigurationEntryHandler.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/XmlConfigurationEntryHandler.java
deleted file mode 100644
index ed6eabe..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/XmlConfigurationEntryHandler.java
+++ /dev/null
@@ -1,92 +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.feature.cpconverter.handlers;
-
-import static org.apache.jackrabbit.JcrConstants.JCR_PRIMARYTYPE;
-
-import java.io.InputStream;
-import java.util.Dictionary;
-import java.util.Hashtable;
-
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
-import org.apache.jackrabbit.vault.util.DocViewProperty;
-import org.xml.sax.Attributes;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-public final class XmlConfigurationEntryHandler extends AbstractConfigurationEntryHandler {
-
-    private static final String JCR_ROOT = "jcr:root";
-
-    private static final String SLING_OSGICONFIG = "sling:OsgiConfig";
-
-    private final SAXParserFactory saxParserFactory = SAXParserFactory.newInstance();
-
-    public XmlConfigurationEntryHandler() {
-        super("xml");
-    }
-
-    @Override
-    protected Dictionary<String, Object> parseConfiguration(String name, InputStream input) throws Exception {
-        SAXParser saxParser = saxParserFactory.newSAXParser();
-        JcrConfigurationHandler configurationHandler = new JcrConfigurationHandler();
-        saxParser.parse(input, configurationHandler);
-        return configurationHandler.getConfiguration();
-    }
-
-    private static final class JcrConfigurationHandler extends DefaultHandler {
-
-        private final Dictionary<String, Object> configuration = new Hashtable<>();
-
-        public Dictionary<String, Object> getConfiguration() {
-            return configuration;
-        }
-
-        @Override
-        public void startElement(String uri, String localName, String qName, Attributes attributes)
-                throws SAXException {
-            String primaryType = attributes.getValue(JCR_PRIMARYTYPE);
-
-            if (JCR_ROOT.equals(qName) && SLING_OSGICONFIG.equals(primaryType)) {
-                for (int i = 0; i < attributes.getLength(); i++) {
-                    String attributeQName = attributes.getQName(i);
-
-                    // ignore jcr: and similar properties
-                    if (attributeQName.indexOf(':') == -1) {
-                        String attributeValue = attributes.getValue(i);
-
-                        if (attributeValue != null && !attributeValue.isEmpty()) {
-                            DocViewProperty property = DocViewProperty.parse(attributeQName, attributeValue);
-
-                            if (property.values.length > 0) {
-                                if (property.isMulti) {
-                                    configuration.put(attributeQName, property.values);
-                                } else {
-                                    configuration.put(attributeQName, property.values[0]);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-        }
-
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/package-info.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/package-info.java
deleted file mode 100644
index 85df1d5..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/handlers/package-info.java
+++ /dev/null
@@ -1,23 +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.
- */
-
-/**
- * Default implementations of the <i>org.apache.sling.feature.cpconverter.spi.EntryHandler</i> service
- * to handle resources while scanning Apache Jackrabbit Vault packages,
- * such as OSGi bundles &amp; configurations and nested content packages.
- */
-package org.apache.sling.feature.cpconverter.handlers;
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/package-info.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/package-info.java
deleted file mode 100644
index 1af70af..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/package-info.java
+++ /dev/null
@@ -1,21 +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.
- */
-
-/**
- * Content Package to Feature Model converter tool for Apache Sling.
- */
-package org.apache.sling.feature.cpconverter;
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/ArtifactWriter.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/ArtifactWriter.java
deleted file mode 100644
index 6df9c20..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/ArtifactWriter.java
+++ /dev/null
@@ -1,26 +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.feature.cpconverter.spi;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-public interface ArtifactWriter {
-
-    void write(OutputStream output) throws IOException;
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/BundlesDeployer.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/BundlesDeployer.java
deleted file mode 100644
index ca64299..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/BundlesDeployer.java
+++ /dev/null
@@ -1,33 +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.feature.cpconverter.spi;
-
-import java.io.File;
-import java.io.IOException;
-
-public interface BundlesDeployer {
-
-    File getBundlesDirectory();
-
-    void deploy(ArtifactWriter artifactWriter,
-                String groupId,
-                String artifactId,
-                String version,
-                String classifier,
-                String type) throws IOException;
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/EntryHandler.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/EntryHandler.java
deleted file mode 100644
index 51e3835..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/EntryHandler.java
+++ /dev/null
@@ -1,29 +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.feature.cpconverter.spi;
-
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
-import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-
-public interface EntryHandler {
-
-    boolean matches(String path);
-
-    void handle(String path, Archive archive, Entry entry, ContentPackage2FeatureModelConverter converter) throws Exception;
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/package-info.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/package-info.java
deleted file mode 100644
index 4d66b84..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/spi/package-info.java
+++ /dev/null
@@ -1,21 +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.
- */
-
-/**
- * Definition of services that can be plugged at runtime to extend the converter tool.
- */
-package org.apache.sling.feature.cpconverter.spi;
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
deleted file mode 100644
index d5ec573..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssembler.java
+++ /dev/null
@@ -1,172 +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.feature.cpconverter.vltpkg;
-
-import static org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter.FEATURE_CLASSIFIER;
-import static org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter.NAME_ARTIFACT_ID;
-import static org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter.NAME_GROUP_ID;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Properties;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
-import org.apache.jackrabbit.vault.packaging.PackageProperties;
-import org.apache.jackrabbit.vault.packaging.VaultPackage;
-import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-import org.apache.sling.feature.cpconverter.spi.EntryHandler;
-import org.codehaus.plexus.archiver.Archiver;
-import org.codehaus.plexus.archiver.jar.JarArchiver;
-import org.codehaus.plexus.archiver.util.DefaultFileSet;
-
-public final class VaultPackageAssembler implements EntryHandler {
-
-    private static final String META_INF_VAULT_DIRECTORY = "META-INF/vault/";
-
-    private static final String VAULT_PROPERTIES_FILE = META_INF_VAULT_DIRECTORY + "properties.xml";
-
-    private static final String NAME_PATH = "path";
-
-    private static final String[] INCLUDE_RESOURCES = { "definition/.content.xml", "config.xml", "settings.xml" };
-
-    private static final File TMP_DIR = new File(System.getProperty("java.io.tmpdir"));
-
-    public static VaultPackageAssembler create(VaultPackage vaultPackage) {
-        File storingDirectory = new File(TMP_DIR, vaultPackage.getFile().getName() + "-deflated");
-        storingDirectory.mkdirs();
-
-        PackageProperties packageProperties = vaultPackage.getProperties();
-
-        Properties properties = new Properties();
-        properties.setProperty(PackageProperties.NAME_VERSION,
-                               packageProperties.getProperty(PackageProperties.NAME_VERSION)
-                                                             + '-'
-                                                             + FEATURE_CLASSIFIER);
-
-        for (String key : new String[] {
-                PackageProperties.NAME_GROUP,
-                PackageProperties.NAME_NAME,
-                PackageProperties.NAME_DEPENDENCIES,
-                PackageProperties.NAME_CREATED_BY,
-                PackageProperties.NAME_CREATED,
-                PackageProperties.NAME_REQUIRES_ROOT,
-                PackageProperties.NAME_PACKAGE_TYPE,
-                PackageProperties.NAME_AC_HANDLING,
-                NAME_GROUP_ID,
-                NAME_ARTIFACT_ID,
-                NAME_PATH
-        }) {
-            String value = packageProperties.getProperty(key);
-            if (value != null && !value.isEmpty()) {
-                properties.setProperty(key, value);
-            }
-        }
-
-        return new VaultPackageAssembler(storingDirectory, properties);
-    }
-
-    private final File storingDirectory;
-
-    private final Properties properties;
-
-    @Override
-    public boolean matches(String path) {
-        return true;
-    }
-
-    @Override
-    public void handle(String path, Archive archive, Entry entry, ContentPackage2FeatureModelConverter converter)
-            throws Exception {
-        addEntry(path, archive, entry);
-    }
-
-    /**
-     * This class can not be instantiated from outside
-     *
-     * @param properties
-     */
-    private VaultPackageAssembler(File storingDirectory, Properties properties) {
-        this.storingDirectory = storingDirectory;
-        this.properties = properties;
-    }
-
-    public void addEntry(String path, Archive archive, Entry entry) throws IOException {
-        try (InputStream input = archive.openInputStream(entry)) {
-            addEntry(path, input);
-        }
-    }
-
-    public void addEntry(String path, File file) throws IOException {
-        try (InputStream input = new FileInputStream(file)) {
-            addEntry(path, input);
-        }
-    }
-
-    public void addEntry(String path, InputStream input) throws IOException {
-        File target = new File(storingDirectory, path);
-
-        target.getParentFile().mkdirs();
-
-        try (OutputStream output = new FileOutputStream(target)) {
-            IOUtils.copy(input, output);
-        }
-    }
-
-    public File createPackage() throws IOException {
-        return createPackage(TMP_DIR);
-    }
-
-    public File createPackage(File outputDirectory) throws IOException {
-        // generate the Vault properties XML file
-
-        File xmlProperties = new File(storingDirectory, VAULT_PROPERTIES_FILE);
-        xmlProperties.getParentFile().mkdirs();
-
-        try (FileOutputStream fos = new FileOutputStream(xmlProperties)) {
-            properties.storeToXML(fos, null);
-        }
-
-        // copy the required resources
-
-        for (String resource : INCLUDE_RESOURCES) {
-            try (InputStream input = getClass().getResourceAsStream(resource)) {
-                addEntry(META_INF_VAULT_DIRECTORY + resource, input);
-            }
-        }
-
-        // create the target archiver
-
-        Archiver archiver = new JarArchiver();
-        archiver.setIncludeEmptyDirs(true);
-
-        String destFileName = storingDirectory.getName().substring(0, storingDirectory.getName().lastIndexOf('-'));
-        File destFile = new File(TMP_DIR, destFileName);
-
-        archiver.setDestFile(destFile);
-        archiver.addFileSet(new DefaultFileSet(storingDirectory));
-        archiver.createArchive();
-
-        return destFile;
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/package-info.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/package-info.java
deleted file mode 100644
index eab6ead..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/vltpkg/package-info.java
+++ /dev/null
@@ -1,21 +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.
- */
-
-/**
- * Easy to use Apache Jackrabbit Vault packager.
- */
-package org.apache.sling.feature.cpconverter.vltpkg;
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/FileArtifactWriter.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/FileArtifactWriter.java
deleted file mode 100644
index c70bc8e..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/FileArtifactWriter.java
+++ /dev/null
@@ -1,42 +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.feature.cpconverter.writers;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.sling.feature.cpconverter.spi.ArtifactWriter;
-
-public final class FileArtifactWriter implements ArtifactWriter {
-
-    private final File fileArtifact;
-
-    public FileArtifactWriter(File fileArtifact) {
-        this.fileArtifact = fileArtifact;
-    }
-
-    @Override
-    public void write(OutputStream output) throws IOException {
-        try (InputStream input = new FileInputStream(fileArtifact)) {
-            new InputStreamArtifactWriter(input).write(output);
-        }
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/InputStreamArtifactWriter.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/InputStreamArtifactWriter.java
deleted file mode 100644
index 3092c0f..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/InputStreamArtifactWriter.java
+++ /dev/null
@@ -1,39 +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.feature.cpconverter.writers;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.sling.feature.cpconverter.spi.ArtifactWriter;
-
-public class InputStreamArtifactWriter implements ArtifactWriter {
-
-    private final InputStream input;
-
-    public InputStreamArtifactWriter(InputStream input) {
-        this.input = input;
-    }
-
-    @Override
-    public void write(OutputStream output) throws IOException {
-        IOUtils.copy(input, output);
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/MavenPomSupplierWriter.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/MavenPomSupplierWriter.java
deleted file mode 100644
index 69f8f9b..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/MavenPomSupplierWriter.java
+++ /dev/null
@@ -1,54 +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.feature.cpconverter.writers;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import org.apache.maven.model.Model;
-import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
-import org.apache.sling.feature.cpconverter.spi.ArtifactWriter;
-
-public final class MavenPomSupplierWriter implements ArtifactWriter {
-
-    private final String groupId;
-
-    private final String artifactId;
-
-    private final String version;
-
-    private final String type;
-
-    public MavenPomSupplierWriter(String groupId, String artifactId, String version, String type) {
-        this.groupId = groupId;
-        this.artifactId = artifactId;
-        this.version = version;
-        this.type = type;
-    }
-
-    @Override
-    public void write(OutputStream outputStream) throws IOException {
-        Model model = new Model();
-        model.setGroupId(groupId);
-        model.setArtifactId(artifactId);
-        model.setVersion(version);
-        model.setPackaging(type);
-
-        new MavenXpp3Writer().write(outputStream, model);
-    }
-
-}
diff --git a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/package-info.java b/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/package-info.java
deleted file mode 100644
index 103359d..0000000
--- a/content-package-2-feature-model/src/main/java/org/apache/sling/feature/cpconverter/writers/package-info.java
+++ /dev/null
@@ -1,21 +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.
- */
-
-/**
- * Default implementations of the <i>org.apache.sling.feature.cpconverter.spi.ArtifactWriter</i>.
- */
-package org.apache.sling.feature.cpconverter.writers;
diff --git a/content-package-2-feature-model/src/main/legal/LICENSE-with-deps b/content-package-2-feature-model/src/main/legal/LICENSE-with-deps
deleted file mode 100644
index 75545a9..0000000
--- a/content-package-2-feature-model/src/main/legal/LICENSE-with-deps
+++ /dev/null
@@ -1,233 +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.
-
-<#function licenseFormat licenses>
-    <#assign result = ""/>
-    <#list licenses as license>
-        <#if result?length &gt; 0>
-            <#assign result = result + ", " />
-        </#if>
-        <#assign result = result + license />
-    </#list>
-    <#return result>
-</#function>
-
-<#function artifactFormat p>
-    <#if p.name?index_of('Unnamed') &gt; -1>
-        <#return p.groupId + ":" + p.artifactId + ":" + p.version + " (" + (p.url!"no url defined") + ")">
-    <#else>
-        <#return p.name + " v" + p.version + " (" + (p.url!"no url defined") + ")">
-    </#if>
-</#function>
-
-<#if dependencyMap?size == 0>
-The project has no dependencies.
-<#else>
-    <#list dependencyMap as e>
-        <#assign project = e.getKey()/>
-        <#assign licenses = e.getValue()/>
-For the ${artifactFormat(project)} component
-This is licensed under ${licenseFormat(licenses)}
-
-    </#list>
-</#if>
diff --git a/content-package-2-feature-model/src/main/legal/NOTICE-with-deps b/content-package-2-feature-model/src/main/legal/NOTICE-with-deps
deleted file mode 100644
index e7f7780..0000000
--- a/content-package-2-feature-model/src/main/legal/NOTICE-with-deps
+++ /dev/null
@@ -1,5 +0,0 @@
-Apache Sling Feature Analyser
-Copyright 2018 The Apache Software Foundation
-
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
diff --git a/content-package-2-feature-model/src/main/legal/license-header b/content-package-2-feature-model/src/main/legal/license-header
deleted file mode 100644
index d323a71..0000000
--- a/content-package-2-feature-model/src/main/legal/license-header
+++ /dev/null
@@ -1,14 +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. 
diff --git a/content-package-2-feature-model/src/main/resources/META-INF/services/org.apache.sling.feature.cpconverter.spi.EntryHandler b/content-package-2-feature-model/src/main/resources/META-INF/services/org.apache.sling.feature.cpconverter.spi.EntryHandler
deleted file mode 100644
index dfa616c..0000000
--- a/content-package-2-feature-model/src/main/resources/META-INF/services/org.apache.sling.feature.cpconverter.spi.EntryHandler
+++ /dev/null
@@ -1,6 +0,0 @@
-org.apache.sling.feature.cpconverter.handlers.BundleEntryHandler
-org.apache.sling.feature.cpconverter.handlers.ConfigurationEntryHandler
-org.apache.sling.feature.cpconverter.handlers.ContentPackageEntryHandler
-org.apache.sling.feature.cpconverter.handlers.JsonConfigurationEntryHandler
-org.apache.sling.feature.cpconverter.handlers.PropertiesConfigurationEntryHandler
-org.apache.sling.feature.cpconverter.handlers.XmlConfigurationEntryHandler
diff --git a/content-package-2-feature-model/src/main/resources/org/apache/sling/feature/cpconverter/vltpkg/config.xml b/content-package-2-feature-model/src/main/resources/org/apache/sling/feature/cpconverter/vltpkg/config.xml
deleted file mode 100644
index 54a0a38..0000000
--- a/content-package-2-feature-model/src/main/resources/org/apache/sling/feature/cpconverter/vltpkg/config.xml
+++ /dev/null
@@ -1,95 +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.
--->
-<vaultfs version="1.1">
-  <!--
-    Defines the content aggregation. The order of the defined aggregates
-    is important for finding the correct aggregator.
-  -->
-  <aggregates>
-    <!--
-      Defines an aggregate that handles nt:file and nt:resource nodes.
-    -->
-    <aggregate type="file" title="File Aggregate"/>
-
-    <!--
-      Defines an aggregate that handles file/folder like nodes. It matches
-      all nt:hierarchyNode nodes that have or define a jcr:content
-      child node and excludes child nodes that are nt:hierarchyNodes.
-    -->
-    <aggregate type="filefolder" title="File/Folder Aggregate"/>
-
-    <!--
-      Defines an aggregate that handles nt:nodeType nodes and serializes
-      them into .cnd notation.
-    -->
-    <aggregate type="nodetype" title="Node Type Aggregate" />
-
-    <!--
-      Defines an aggregate that defines full coverage for certain node
-      types that cannot be covered by the default aggregator.
-    -->
-    <aggregate type="full" title="Full Coverage Aggregate">
-      <matches>
-        <include nodeType="rep:AccessControl" respectSupertype="true" />
-        <include nodeType="cq:Widget" respectSupertype="true" />
-        <include nodeType="cq:WidgetCollection" respectSupertype="true" />
-        <include nodeType="cq:EditConfig" respectSupertype="true" />
-        <include nodeType="cq:WorkflowModel" respectSupertype="true" />
-        <include nodeType="vlt:FullCoverage" respectSupertype="true" />
-        <include nodeType="mix:language" respectSupertype="true" />
-        <include nodeType="sling:OsgiConfig" respectSupertype="true" />
-      </matches>
-    </aggregate>
-
-    <!--
-      Defines an aggregate that handles nt:folder like nodes.
-    -->
-    <aggregate type="generic" title="Folder Aggregate">
-      <matches>
-        <include nodeType="nt:folder" respectSupertype="true" />
-      </matches>
-      <contains>
-        <exclude isNode="true" />
-      </contains>
-    </aggregate>
-
-    <!--
-      Defines the default aggregate
-    -->
-    <aggregate type="generic" title="Default Aggregator" isDefault="true">
-      <contains>
-        <exclude nodeType="nt:hierarchyNode" respectSupertype="true" />
-      </contains>
-      <matches>
-        <!-- all -->
-      </matches>
-    </aggregate>
-
-  </aggregates>
-
-  <!--
-    defines the input handlers
-  -->
-  <handlers>
-    <handler type="folder"/>
-    <handler type="file"/>
-    <handler type="nodetype"/>
-    <handler type="generic"/>
-  </handlers>
-
-</vaultfs>
diff --git a/content-package-2-feature-model/src/main/resources/org/apache/sling/feature/cpconverter/vltpkg/definition/.content.xml b/content-package-2-feature-model/src/main/resources/org/apache/sling/feature/cpconverter/vltpkg/definition/.content.xml
deleted file mode 100644
index abf67f1..0000000
--- a/content-package-2-feature-model/src/main/resources/org/apache/sling/feature/cpconverter/vltpkg/definition/.content.xml
+++ /dev/null
@@ -1,19 +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.
--->
-<jcr:root xmlns:vlt="http://www.day.com/jcr/vault/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
-  jcr:primaryType="vlt:PackageDefinition" />
diff --git a/content-package-2-feature-model/src/main/resources/org/apache/sling/feature/cpconverter/vltpkg/settings.xml b/content-package-2-feature-model/src/main/resources/org/apache/sling/feature/cpconverter/vltpkg/settings.xml
deleted file mode 100644
index 679e6b1..0000000
--- a/content-package-2-feature-model/src/main/resources/org/apache/sling/feature/cpconverter/vltpkg/settings.xml
+++ /dev/null
@@ -1,22 +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.
-  -->
-<vault version="1.0">
-  <ignore name=".git" />
-  <ignore name=".svn" />
-  <ignore name=".DS_Store" />
-</vault>
\ No newline at end of file
diff --git a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java b/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
deleted file mode 100644
index 0514504..0000000
--- a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
+++ /dev/null
@@ -1,235 +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.feature.cpconverter;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
-
-import java.io.File;
-import java.io.FileReader;
-import java.io.Reader;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.StringTokenizer;
-import java.util.zip.ZipFile;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.sling.feature.ArtifactId;
-import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.io.json.FeatureJSONReader;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class ContentPackage2FeatureModelConverterTest {
-
-    private ContentPackage2FeatureModelConverter converter;
-
-    @Before
-    public void setUp() {
-        converter = new ContentPackage2FeatureModelConverter();
-    }
-
-    @After
-    public void tearDowd() {
-        converter = null;
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void convertRequiresNonNullPackage() throws Exception {
-        converter.convert(null);
-    }
-
-    @Test(expected = IllegalArgumentException.class)
-    public void convertRequiresExistingFile() throws Exception {
-        converter.convert(new File("this/file/does/not/exist.zip"));
-    }
-
-    @Test(expected = IllegalArgumentException.class)
-    public void convertRequiresNotDirectoryFile() throws Exception {
-        File testDirectory = new File(System.getProperty("user.dir"));
-        converter.convert(testDirectory);
-    }
-
-    @Test(expected = IllegalStateException.class)
-    public void getRunModeRequiresConvertInvoked() {
-        converter.getRunMode(null);
-    }
-
-    @Test(expected = IllegalStateException.class)
-    public void addConfigurationRequiresConvertInvoked() {
-        converter.setMergeConfigurations(true).getRunMode(null);
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void processRequiresNotNullPackage() throws Exception {
-        converter.processSubPackage("", null);
-    }
-
-    @Test(expected = IllegalStateException.class)
-    public void processRequiresConvertInvoked() throws Exception {
-        converter.processSubPackage("", mock(File.class));
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void deployLocallyAndAttachRequiresNonNullInput() throws Exception {
-        converter.attach(null, null, null, null, null, null);
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void deployLocallyAndAttachRequiresNonNullGroupId() throws Exception {
-        converter.attach(null, null, null, null, null, null);
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void deployLocallyAndAttachRequiresNonNullArtifactId() throws Exception {
-        converter.attach(null, "org.apache.sling", null, null, null, null);
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void deployLocallyAndAttachRequiresNonNullVersion() throws Exception {
-        converter.attach(null, "org.apache.sling", "org.apache.sling.cm2fm", null, null, null);
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void deployLocallyAndAttachRequiresNonNullType() throws Exception {
-        converter.attach(null, "org.apache.sling", "org.apache.sling.cm2fm", "0.0.1", null, null);
-    }
-
-    @Test
-    public void convertContentPackage() throws Exception {
-        URL packageUrl = getClass().getResource("test-content-package.zip");
-        File packageFile = FileUtils.toFile(packageUrl);
-
-        File outputDirectory = new File(System.getProperty("testDirectory"), getClass().getName() + '_' + System.currentTimeMillis());
-
-        converter.setBundlesStartOrder(5).setOutputDirectory(outputDirectory).convert(packageFile);
-
-        verifyFeatureFile(outputDirectory,
-                          "asd.retail.all.json",
-                          "org.apache.sling:asd.retail.all:slingosgifeature:cp2fm-converted-feature:0.0.1",
-                          Arrays.asList("org.apache.felix:org.apache.felix.framework:6.0.1"),
-                          Arrays.asList("org.apache.sling.commons.log.LogManager.factory.config-asd-retail"),
-                          Arrays.asList("org.apache.sling:asd.retail.all:zip:cp2fm-converted-feature:0.0.1"));
-        verifyFeatureFile(outputDirectory,
-                          "asd.retail.all-author.json",
-                          "org.apache.sling:asd.retail.all:slingosgifeature:cp2fm-converted-feature-author:0.0.1",
-                          Arrays.asList("org.apache.sling:org.apache.sling.api:2.20.0"),
-                          Collections.emptyList(),
-                          Collections.emptyList());
-        verifyFeatureFile(outputDirectory,
-                          "asd.retail.all-publish.json",
-                          "org.apache.sling:asd.retail.all:slingosgifeature:cp2fm-converted-feature-publish:0.0.1",
-                          Arrays.asList("org.apache.sling:org.apache.sling.models.api:1.3.8"),
-                          Arrays.asList("org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.amended-asd-retail"),
-                          Collections.emptyList());
-
-        ZipFile zipFile = new ZipFile(new File(outputDirectory, "bundles/org/apache/sling/asd.retail.all/0.0.1/asd.retail.all-0.0.1-cp2fm-converted-feature.zip"));
-        for (String expectedEntry : new String[] {
-                "jcr_root/content/asd/.content.xml",
-                "jcr_root/content/asd/resources.xml",
-                "jcr_root/apps/.content.xml",
-                "META-INF/vault/properties.xml",
-                "META-INF/vault/config.xml",
-                "META-INF/vault/settings.xml",
-                "META-INF/vault/definition/.content.xml",
-                "jcr_root/etc/packages/asd/test-bundles.zip",
-                "jcr_root/etc/packages/asd/test-configurations.zip",
-                "jcr_root/etc/packages/asd/test-content.zip",
-                }) {
-            assertNotNull(zipFile.getEntry(expectedEntry));
-        }
-        zipFile.close();
-    }
-
-    private void verifyFeatureFile(File outputDirectory,
-                                   String name,
-                                   String expectedArtifactId,
-                                   List<String> expectedBundles,
-                                   List<String> expectedConfigurations,
-                                   List<String> expectedContentPackagesExtensions) throws Exception {
-        File featureFile = new File(outputDirectory, name);
-        assertTrue(featureFile + " was not correctly created", featureFile.exists());
-
-        try (Reader reader = new FileReader(featureFile)) {
-            Feature feature = FeatureJSONReader.read(reader, featureFile.getAbsolutePath());
-
-            assertEquals(expectedArtifactId, feature.getId().toMvnId());
-
-            for (String expectedBundle : expectedBundles) {
-                assertTrue(expectedBundle + " not found in Feature " + expectedArtifactId, feature.getBundles().containsExact(ArtifactId.fromMvnId(expectedBundle)));
-                verifyInstalledBundle(outputDirectory, expectedBundle);
-            }
-
-            for (String expectedConfiguration : expectedConfigurations) {
-                assertNotNull(expectedConfiguration + " not found in Feature " + expectedArtifactId, feature.getConfigurations().getConfiguration(expectedConfiguration));
-            }
-
-            for (String expectedContentPackagesExtension : expectedContentPackagesExtensions) {
-                assertTrue(expectedContentPackagesExtension + " not found in Feature " + expectedArtifactId,
-                           feature.getExtensions().getByName("content-packages").getArtifacts().containsExact(ArtifactId.fromMvnId(expectedContentPackagesExtension)));
-                verifyInstalledBundle(outputDirectory, expectedContentPackagesExtension);
-            }
-        }
-    }
-
-    private void verifyInstalledBundle(File outputDirectory, String coordinates) {
-        ArtifactId bundleId = ArtifactId.fromMvnId(coordinates);
-
-        File bundleDirectory = new File(outputDirectory, "bundles");
-
-        StringTokenizer tokenizer = new StringTokenizer(bundleId.getGroupId(), ".");
-        while (tokenizer.hasMoreTokens()) {
-            bundleDirectory = new File(bundleDirectory, tokenizer.nextToken());
-        }
-
-        bundleDirectory = new File(bundleDirectory, bundleId.getArtifactId());
-        bundleDirectory = new File(bundleDirectory, bundleId.getVersion());
-
-        StringBuilder bundleFileName = new StringBuilder()
-                                       .append(bundleId.getArtifactId())
-                                       .append('-')
-                                       .append(bundleId.getVersion());
-        if (bundleId.getClassifier() != null) {
-            bundleFileName.append('-').append(bundleId.getClassifier());
-        }
-        bundleFileName.append('.').append(bundleId.getType());
-
-        File bundleFile = new File(bundleDirectory, bundleFileName.toString());
-        assertTrue("Bundle " + bundleFile + " does not exist", bundleFile.exists());
-
-        File pomFile = new File(bundleDirectory, String.format("%s-%s.pom", bundleId.getArtifactId(), bundleId.getVersion()));
-        assertTrue("POM file " + pomFile + " does not exist", pomFile.exists());
-    }
-
-    @Test(expected = IllegalArgumentException.class)
-    public void verifyFilteringOutUndesiredPackages() throws Exception {
-        converter.addFilteringPattern(".*\\/install(?!(\\.runMode1\\/|\\.runMode2\\/|\\/))(.*)(?=\\.zip$).*");
-
-        URL packageUrl = getClass().getResource("test-content-package-unacceptable.zip");
-        File packageFile = FileUtils.toFile(packageUrl);
-
-        File outputDirectory = new File(System.getProperty("testDirectory"), getClass().getName() + '_' + System.currentTimeMillis());
-
-        converter.setBundlesStartOrder(5).setOutputDirectory(outputDirectory).convert(packageFile);
-    }
-
-}
diff --git a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/DefaultBundlesDeployerTest.java b/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/DefaultBundlesDeployerTest.java
deleted file mode 100644
index 1fe0429..0000000
--- a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/DefaultBundlesDeployerTest.java
+++ /dev/null
@@ -1,80 +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.feature.cpconverter;
-
-import static org.junit.Assert.*;
-
-import static org.mockito.Mockito.mock;
-
-import java.io.File;
-
-import org.apache.sling.feature.cpconverter.spi.ArtifactWriter;
-import org.apache.sling.feature.cpconverter.spi.BundlesDeployer;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class DefaultBundlesDeployerTest {
-
-    private BundlesDeployer artifactDeployer;
-
-    @Before
-    public void setUp() {
-        File outputDirectory = new File(System.getProperty("testDirectory"), getClass().getName() + '_' + System.currentTimeMillis());
-        artifactDeployer = new DefaultBundlesDeployer(outputDirectory);
-    }
-
-    @After
-    public void tearDown() {
-        artifactDeployer = null;
-    }
-
-    @Test
-    public void verifyBundlesDirectory() {
-        File bundlesDirectory = artifactDeployer.getBundlesDirectory();
-        assertNotNull(bundlesDirectory);
-        assertTrue(bundlesDirectory.exists());
-        assertTrue(bundlesDirectory.isDirectory());
-        assertEquals("bundles", bundlesDirectory.getName());
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void deployLocallyAndAttachRequiresNonNullInput() throws Exception {
-        artifactDeployer.deploy(null, null, null, null, null, null);
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void deployLocallyAndAttachRequiresNonNullGroupId() throws Exception {
-        artifactDeployer.deploy(mock(ArtifactWriter.class), null, null, null, null, null);
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void deployLocallyAndAttachRequiresNonNullArtifactId() throws Exception {
-        artifactDeployer.deploy(mock(ArtifactWriter.class), "org.apache.sling", null, null, null, null);
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void deployLocallyAndAttachRequiresNonNullVersion() throws Exception {
-        artifactDeployer.deploy(mock(ArtifactWriter.class), "org.apache.sling", "org.apache.sling.cm2fm", null, null, null);
-    }
-
-    @Test(expected = NullPointerException.class)
-    public void deployLocallyAndAttachRequiresNonNullType() throws Exception {
-        artifactDeployer.deploy(mock(ArtifactWriter.class), "org.apache.sling", "org.apache.sling.cm2fm", "0.0.1", null, null);
-    }
-
-}
diff --git a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilterTest.java b/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilterTest.java
deleted file mode 100644
index 346d4f7..0000000
--- a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/RegexBasedResourceFilterTest.java
+++ /dev/null
@@ -1,69 +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.feature.cpconverter;
-
-import static org.junit.Assert.*;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public class RegexBasedResourceFilterTest {
-
-    private RegexBasedResourceFilter filter;
-
-    @Before
-    public void setUp() {
-        filter = new RegexBasedResourceFilter();
-    }
-
-    @After
-    public void tearDown() {
-        filter = null;
-    }
-
-    @Test
-    public void packagesFilteredIn() {
-        filter.addFilteringPattern(".*\\/myEnvironment(?!(\\.runMode1\\/|\\.runMode2\\/|\\/))(.*)(?=\\.zip$).*");
-
-        assertFalse(filter.isFilteredOut("/apps/myapp/myEnvironment/something.zip"));
-        assertFalse(filter.isFilteredOut("/apps/myapp/myEnvironment.runMode1/something.zip"));
-        assertFalse(filter.isFilteredOut("/apps/myapp/myEnvironment.runMode2/something.zip"));
-
-        assertFalse(filter.isFilteredOut("/apps/myEnvironment/asd.zip"));
-    }
-
-    @Test
-    public void configFilteredOut() {
-        filter.addFilteringPattern(".*\\/myEnvironment(?!(\\.runMode1\\/|\\.runMode2\\/|\\/))(.*)(?=\\.config$).*");
-
-        assertTrue(filter.isFilteredOut("/apps/myapp/myEnvironment.subRunMode/something.config"));
-        assertTrue(filter.isFilteredOut("/apps/myapp/myEnvironment.runMode1.subRunMode/something.config"));
-        assertTrue(filter.isFilteredOut("/apps/myapp/myEnvironment.subRunMode.runMode1/something.config"));
-    }
-
-    @Test
-    public void packagesFilteredOut() {
-        filter.addFilteringPattern(".*\\/myEnvironment(?!(\\.runMode1\\/|\\.runMode2\\/|\\/))(.*)(?=\\.zip$).*");
-
-        assertTrue(filter.isFilteredOut("/apps/myapp/myEnvironment.subRunMode/something.zip"));
-        assertTrue(filter.isFilteredOut("/apps/myapp/myEnvironment.runMode1.subRunMode/something.zip"));
-        assertTrue(filter.isFilteredOut("/apps/myapp/myEnvironment.subRunMode.runMode1/something.zip"));
-        assertTrue(filter.isFilteredOut("/apps/myapp/myEnvironment.xyz/something.zip"));
-    }
-
-}
diff --git a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandlerTest.java b/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandlerTest.java
deleted file mode 100644
index 8753d61..0000000
--- a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/BundleEntryHandlerTest.java
+++ /dev/null
@@ -1,118 +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.feature.cpconverter.handlers;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.doCallRealMethod;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import java.io.File;
-import java.io.InputStream;
-import java.util.Arrays;
-import java.util.Collection;
-
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
-import org.apache.sling.feature.ArtifactId;
-import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-import org.apache.sling.feature.cpconverter.DefaultBundlesDeployer;
-import org.apache.sling.feature.cpconverter.spi.EntryHandler;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-import org.mockito.invocation.InvocationOnMock;
-import org.mockito.stubbing.Answer;
-
-@RunWith(Parameterized.class)
-public final class BundleEntryHandlerTest {
-
-    private final String bundleLocation;
-
-    private final EntryHandler bundleEntryHandler;
-
-    public BundleEntryHandlerTest(String bundleLocation, EntryHandler bundleEntryHandler) {
-        this.bundleLocation = bundleLocation;
-        this.bundleEntryHandler = bundleEntryHandler;
-    }
-
-    @Test
-    public void doesNotMatch() {
-        assertFalse(bundleEntryHandler.matches("jcr_root/not/a/valid/recognised/bundle.jar"));
-    }
-
-    @Test
-    public void matches() {
-        assertTrue(bundleEntryHandler.matches(bundleLocation));
-    }
-
-    @Test
-    public void deployBundle() throws Exception {
-        Archive archive = mock(Archive.class);
-        Entry entry = mock(Entry.class);
-
-        when(entry.getName()).thenReturn("test-framework.jar");
-        when(archive.openInputStream(entry)).then(new Answer<InputStream>() {
-
-            @Override
-            public InputStream answer(InvocationOnMock invocation) throws Throwable {
-                return getClass().getResourceAsStream(bundleLocation);
-            }
-
-        });
-
-        ContentPackage2FeatureModelConverter converter = spy(ContentPackage2FeatureModelConverter.class);
-
-        File testDirectory = new File(System.getProperty("testDirectory"), getClass().getName() + '_' + System.currentTimeMillis());
-        when(converter.getOutputDirectory()).thenReturn(testDirectory);
-
-        doCallRealMethod().when(converter).attach(anyString(), anyString(), anyString(), anyString(), anyString(), anyString());
-        when(converter.getArtifactDeployer()).thenReturn(new DefaultBundlesDeployer(testDirectory));
-
-        Feature feature = new Feature(new ArtifactId("org.apache.sling", "org.apache.sling.cp2fm", "0.0.1", null, null));
-        when(converter.getTargetFeature()).thenReturn(feature);
-        when(converter.getRunMode(anyString())).thenReturn(feature);
-
-        bundleEntryHandler.handle(bundleLocation, archive, entry, converter);
-
-        assertTrue(new File(testDirectory, "bundles/org/apache/felix/org.apache.felix.framework/6.0.1/org.apache.felix.framework-6.0.1.pom").exists());
-        assertTrue(new File(testDirectory, "bundles/org/apache/felix/org.apache.felix.framework/6.0.1/org.apache.felix.framework-6.0.1.jar").exists());
-
-        assertFalse(converter.getTargetFeature().getBundles().isEmpty());
-        assertEquals(1, feature.getBundles().size());
-        assertEquals("org.apache.felix:org.apache.felix.framework:6.0.1", feature.getBundles().get(0).getId().toMvnId());
-    }
-
-    @Parameters
-    public static Collection<Object[]> data() {
-        final BundleEntryHandler bundleEntryHandler = new BundleEntryHandler();
-
-        return Arrays.asList(new Object[][] {
-            { "jcr_root/apps/asd/install/test-framework-no-pom.jar", bundleEntryHandler },
-            { "jcr_root/apps/asd/install/test-framework.jar", bundleEntryHandler },
-            { "jcr_root/apps/asd/install.author/test-framework.jar", bundleEntryHandler },
-            { "jcr_root/apps/asd/install.publish/test-framework.jar", bundleEntryHandler }
-        });
-    }
-
-}
diff --git a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/ConfigurationEntryHandlerTest.java b/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/ConfigurationEntryHandlerTest.java
deleted file mode 100644
index 649a07f..0000000
--- a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/ConfigurationEntryHandlerTest.java
+++ /dev/null
@@ -1,127 +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.feature.cpconverter.handlers;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyString;
-import static org.mockito.Mockito.doCallRealMethod;
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.spy;
-import static org.mockito.Mockito.when;
-
-import java.util.Arrays;
-import java.util.Collection;
-
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
-import org.apache.sling.feature.ArtifactId;
-import org.apache.sling.feature.Configuration;
-import org.apache.sling.feature.Configurations;
-import org.apache.sling.feature.Feature;
-import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class ConfigurationEntryHandlerTest {
-
-    private static final String EXPECTED_PID = "org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl";
-
-    private final String resourceConfiguration;
-
-    private final int expectedConfigurationsSize;
-
-    private final AbstractConfigurationEntryHandler configurationEntryHandler;
-
-    public ConfigurationEntryHandlerTest(String resourceConfiguration,
-                                         int expectedConfigurationsSize,
-                                         AbstractConfigurationEntryHandler configurationEntryHandler) {
-        this.resourceConfiguration = resourceConfiguration;
-        this.expectedConfigurationsSize = expectedConfigurationsSize;
-        this.configurationEntryHandler = configurationEntryHandler;
-    }
-
-    @Test
-    public void doesNotMatch() {
-        assertFalse(configurationEntryHandler.matches("/this/is/a/path/not/pointing/to/a/valid/configuration.asd"));
-    }
-
-    @Test
-    public void matches() {
-        assertTrue(resourceConfiguration, configurationEntryHandler.matches(resourceConfiguration));
-    }
-
-    @Test
-    public void parseConfiguration() throws Exception {
-        Archive archive = mock(Archive.class);
-        Entry entry = mock(Entry.class);
-
-        when(entry.getName()).thenReturn(resourceConfiguration.substring(resourceConfiguration.lastIndexOf('/') + 1));
-        when(archive.openInputStream(entry)).thenReturn(getClass().getResourceAsStream(resourceConfiguration));
-
-        Feature feature = new Feature(new ArtifactId("org.apache.sling", "org.apache.sling.cp2fm", "0.0.1", null, null));
-        ContentPackage2FeatureModelConverter converter = spy(ContentPackage2FeatureModelConverter.class);
-        when(converter.getTargetFeature()).thenReturn(feature);
-        doCallRealMethod().when(converter).addConfiguration(anyString(), anyString(), any());
-        when(converter.getRunMode(anyString())).thenReturn(feature);
-
-        configurationEntryHandler.handle(resourceConfiguration, archive, entry, converter);
-
-        Configurations configurations = converter.getTargetFeature().getConfigurations();
-
-        assertEquals(expectedConfigurationsSize, configurations.size());
-
-        if (expectedConfigurationsSize > 0) {
-            Configuration configuration = configurations.get(0);
-
-            assertTrue(configuration.getPid(), configuration.getPid().startsWith(EXPECTED_PID));
-            assertEquals("Unmatching size: " + configuration.getProperties().size(), 2, configuration.getProperties().size());
-        }
-    }
-
-    @Parameters
-    public static Collection<Object[]> data() {
-        String path = "jcr_root/apps/asd/config/";
-
-        return Arrays.asList(new Object[][] {
-            { path + EXPECTED_PID + ".empty.cfg", 0, new PropertiesConfigurationEntryHandler() },
-            { path + EXPECTED_PID + ".cfg", 1, new PropertiesConfigurationEntryHandler() },
-
-            { path + EXPECTED_PID + ".empty.cfg.json", 0, new JsonConfigurationEntryHandler() },
-            { path + EXPECTED_PID + ".cfg.json", 1, new JsonConfigurationEntryHandler() },
-
-            { path + EXPECTED_PID + ".empty.config", 0, new ConfigurationEntryHandler() },
-            { path + EXPECTED_PID + ".config", 1, new ConfigurationEntryHandler() },
-
-            { path + EXPECTED_PID + ".empty.xml", 0, new XmlConfigurationEntryHandler() },
-            { path + EXPECTED_PID + ".xml", 1, new XmlConfigurationEntryHandler() },
-
-            { path + EXPECTED_PID + ".empty.xml.cfg", 0, new PropertiesConfigurationEntryHandler() },
-            { path + EXPECTED_PID + ".xml.cfg", 1, new PropertiesConfigurationEntryHandler() },
-
-            // runmode aware folders
-            { "jcr_root/apps/asd/config.author/" + EXPECTED_PID + ".config", 1, new ConfigurationEntryHandler() },
-            { "jcr_root/apps/asd/config.publish/" + EXPECTED_PID + ".config", 1, new ConfigurationEntryHandler() },
-        });
-    }
-
-}
diff --git a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandlerTest.java b/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandlerTest.java
deleted file mode 100644
index 185bce0..0000000
--- a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/ContentPackageEntryHandlerTest.java
+++ /dev/null
@@ -1,51 +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.feature.cpconverter.handlers;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-
-import org.apache.sling.feature.cpconverter.spi.EntryHandler;
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-
-public final class ContentPackageEntryHandlerTest {
-
-    private EntryHandler contentPackageEntryhandler;
-
-    @Before
-    public void setUp() {
-        contentPackageEntryhandler = new ContentPackageEntryHandler();
-    }
-
-    @After
-    public void tearDown() {
-        contentPackageEntryhandler = null;
-    }
-
-    @Test
-    public void doesNotMatch() {
-        assertFalse(contentPackageEntryhandler.matches("/this/is/a/path/not/pointing/to/a/valid/configuration.asd"));
-    }
-
-    @Test
-    public void matches() {
-        assertTrue(contentPackageEntryhandler.matches("jcr_root/etc/packages/asd/v6/sample/asd.content-1.0.zip"));
-    }
-
-}
diff --git a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/JsonConfigurationEntryHandlerTest.java b/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/JsonConfigurationEntryHandlerTest.java
deleted file mode 100644
index 8289cd5..0000000
--- a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/handlers/JsonConfigurationEntryHandlerTest.java
+++ /dev/null
@@ -1,46 +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.feature.cpconverter.handlers;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.when;
-
-import java.io.IOException;
-
-import org.apache.jackrabbit.vault.fs.io.Archive;
-import org.apache.jackrabbit.vault.fs.io.Archive.Entry;
-import org.apache.sling.feature.cpconverter.ContentPackage2FeatureModelConverter;
-import org.junit.Test;
-
-public class JsonConfigurationEntryHandlerTest {
-
-    @Test(expected = IOException.class)
-    public void invalidConfigurationThrowsException() throws Exception {
-        String resourceConfiguration = "jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.INVALID.cfg.json";
-
-        Archive archive = mock(Archive.class);
-        Entry entry = mock(Entry.class);
-
-        when(entry.getName()).thenReturn(resourceConfiguration.substring(resourceConfiguration.lastIndexOf('/') + 1));
-        when(archive.openInputStream(entry)).thenReturn(getClass().getResourceAsStream(resourceConfiguration));
-
-        ContentPackage2FeatureModelConverter converter = mock(ContentPackage2FeatureModelConverter.class);
-
-        new JsonConfigurationEntryHandler().handle(resourceConfiguration, archive, entry, converter);
-    }
-
-}
diff --git a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssemblerTest.java b/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssemblerTest.java
deleted file mode 100644
index d2aa3cc..0000000
--- a/content-package-2-feature-model/src/test/java/org/apache/sling/feature/cpconverter/vltpkg/VaultPackageAssemblerTest.java
+++ /dev/null
@@ -1,89 +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.feature.cpconverter.vltpkg;
-
-import static org.junit.Assert.assertNotNull;
-
-import java.io.File;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-import org.apache.commons.io.FileUtils;
-import org.apache.jackrabbit.vault.packaging.VaultPackage;
-import org.apache.jackrabbit.vault.packaging.impl.PackageManagerImpl;
-import org.apache.sling.feature.cpconverter.vltpkg.VaultPackageAssembler;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
-import org.junit.runners.Parameterized.Parameters;
-
-@RunWith(Parameterized.class)
-public class VaultPackageAssemblerTest {
-
-    private File testDirectory;
-
-    private final VaultPackageAssembler assembler;
-
-    private final String resourceLocation;
-
-    public VaultPackageAssemblerTest(String resourceLocation, VaultPackageAssembler assembler) {
-        this.resourceLocation = resourceLocation;
-        this.assembler = assembler;
-    }
-
-    @Before
-    public void setUp() {
-        testDirectory = new File(System.getProperty("testDirectory"), getClass().getName() + '_' + System.currentTimeMillis());
-    }
-
-    @Test
-    public void matchAll() {
-        assembler.matches(resourceLocation);
-    }
-
-    @Test
-    public void packageResource() throws Exception {
-        assembler.addEntry(resourceLocation, getClass().getResourceAsStream("../handlers/" + resourceLocation));
-        File contentPackage = assembler.createPackage(testDirectory);
-
-        ZipFile zipFile = new ZipFile(contentPackage);
-        ZipEntry entry = zipFile.getEntry(resourceLocation);
-        assertNotNull(entry);
-        zipFile.close();
-    }
-
-    @Parameters
-    public static Collection<Object[]> data() throws Exception {
-        URL resource = VaultPackageAssemblerTest.class.getResource("../test-content-package.zip");
-        File file = FileUtils.toFile(resource);
-        VaultPackage vaultPackage = new PackageManagerImpl().open(file);
-
-        VaultPackageAssembler assembler = VaultPackageAssembler.create(vaultPackage);
-
-        return Arrays.asList(new Object[][] {
-            { "jcr_root/.content.xml", assembler },
-            { "jcr_root/asd/.content.xml", assembler },
-            { "jcr_root/asd/public/_rep_policy.xml", assembler },
-            { "jcr_root/asd/public/license.txt", assembler }
-        });
-    }
-
-}
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/.content.xml b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/.content.xml
deleted file mode 100644
index 54fbe67..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/.content.xml
+++ /dev/null
@@ -1,22 +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.
--->
-<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
-    jcr:mixinTypes="[rep:AccessControllable,rep:RepoAccessControllable]"
-    jcr:primaryType="rep:root"
-    sling:resourceType="sling:redirect"
-    sling:target="/index.html"/>
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config.author/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.config b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config.author/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.config
deleted file mode 100644
index 4c50ea3..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config.author/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.config
+++ /dev/null
@@ -1,17 +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.
-
-user.default="admin"
-user.mapping=["com.adobe.acs.acs-aem-samples-bundle\=admin","com.adobe.acs.acs-aem-samples-bundle:sample-service\=oauthservice"]
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config.publish/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.config b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config.publish/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.config
deleted file mode 100644
index 4c50ea3..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config.publish/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.config
+++ /dev/null
@@ -1,17 +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.
-
-user.default="admin"
-user.mapping=["com.adobe.acs.acs-aem-samples-bundle\=admin","com.adobe.acs.acs-aem-samples-bundle:sample-service\=oauthservice"]
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.INVALID.cfg.json b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.INVALID.cfg.json
deleted file mode 100644
index fe51488..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.INVALID.cfg.json
+++ /dev/null
@@ -1 +0,0 @@
-[]
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.cfg b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.cfg
deleted file mode 100644
index bf91183..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.cfg
+++ /dev/null
@@ -1,17 +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.
-
-user.default=admin
-user.mapping=[com.adobe.acs.acs-aem-samples-bundle=admin,com.adobe.acs.acs-aem-samples-bundle:sample-service=oauthservice]
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.cfg.json b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.cfg.json
deleted file mode 100644
index 98e506c..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.cfg.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "user.default":"admin",
-    "user.mapping": [
-        "com.adobe.acs.acs-aem-samples-bundle=admin",
-        "com.adobe.acs.acs-aem-samples-bundle:sample-service=oauthservice"
-    ]
-}
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.config b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.config
deleted file mode 100644
index 4c50ea3..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.config
+++ /dev/null
@@ -1,17 +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.
-
-user.default="admin"
-user.mapping=["com.adobe.acs.acs-aem-samples-bundle\=admin","com.adobe.acs.acs-aem-samples-bundle:sample-service\=oauthservice"]
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.cfg b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.cfg
deleted file mode 100644
index 5db1a19..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.cfg
+++ /dev/null
@@ -1,14 +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.
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.cfg.json b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.cfg.json
deleted file mode 100644
index 49d1a20..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.cfg.json
+++ /dev/null
@@ -1,3 +0,0 @@
-{
-    
-}
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.config b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.config
deleted file mode 100644
index 5db1a19..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.config
+++ /dev/null
@@ -1,14 +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.
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.xml b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.xml
deleted file mode 100644
index 6211b85..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.xml
+++ /dev/null
@@ -1,19 +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.
--->
-<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
-    jcr:primaryType="sling:OsgiConfig"/>
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.xml.cfg b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.xml.cfg
deleted file mode 100644
index 87a44e8..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.empty.xml.cfg
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
-<!--
- 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.
--->
-<properties />
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.xml b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.xml
deleted file mode 100644
index f23afc9..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.xml
+++ /dev/null
@@ -1,21 +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.
--->
-<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
-    jcr:primaryType="sling:OsgiConfig"
-    user.default="admin"
-    user.mapping="[com.adobe.acs.acs-aem-samples-bundle=admin,com.adobe.acs.acs-aem-samples-bundle:sample-service=oauthservice]"/>
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.xml.cfg b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.xml.cfg
deleted file mode 100644
index 05ce515..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/config/org.apache.sling.serviceusermapping.impl.ServiceUserMapperImpl.xml.cfg
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE properties SYSTEM "http://java.sun.com/dtd/properties.dtd">
-<!--
- 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.
--->
-<properties>
-  <entry key="user.default">admin</entry>
-  <entry key="user.mapping">[com.adobe.acs.acs-aem-samples-bundle=admin,com.adobe.acs.acs-aem-samples-bundle:sample-service=oauthservice]</entry>
-</properties>
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install.author/test-framework.jar b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install.author/test-framework.jar
deleted file mode 100644
index 9ce022d..0000000
Binary files a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install.author/test-framework.jar and /dev/null differ
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install.publish/test-framework.jar b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install.publish/test-framework.jar
deleted file mode 100644
index 9ce022d..0000000
Binary files a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install.publish/test-framework.jar and /dev/null differ
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install/test-framework-no-pom.jar b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install/test-framework-no-pom.jar
deleted file mode 100644
index cb3116e..0000000
Binary files a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install/test-framework-no-pom.jar and /dev/null differ
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install/test-framework.jar b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install/test-framework.jar
deleted file mode 100644
index 9ce022d..0000000
Binary files a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/apps/asd/install/test-framework.jar and /dev/null differ
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/.content.xml b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/.content.xml
deleted file mode 100644
index 0d5ab1d..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/.content.xml
+++ /dev/null
@@ -1,20 +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.
--->
-<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
-    jcr:mixinTypes="[rep:AccessControllable]"
-    jcr:primaryType="sling:Folder"/>
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/public/.content.xml b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/public/.content.xml
deleted file mode 100644
index 0589bcb..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/public/.content.xml
+++ /dev/null
@@ -1,19 +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.
--->
-<jcr:root xmlns:sling="http://sling.apache.org/jcr/sling/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0"
-    jcr:primaryType="sling:Folder"/>
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/public/_rep_policy.xml b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/public/_rep_policy.xml
deleted file mode 100644
index 2b1119a..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/public/_rep_policy.xml
+++ /dev/null
@@ -1,24 +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.
--->
-<jcr:root xmlns:crx="http://www.day.com/crx/1.0" xmlns:jcr="http://www.jcp.org/jcr/1.0" xmlns:rep="internal"
-    jcr:primaryType="rep:ACL">
-    <allow
-        jcr:primaryType="rep:GrantACE"
-        rep:principalName="everyone"
-        rep:privileges="{Name}[jcr:read]"/>
-</jcr:root>
\ No newline at end of file
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/public/license.txt b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/public/license.txt
deleted file mode 100644
index 805f6a4..0000000
--- a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/handlers/jcr_root/asd/public/license.txt
+++ /dev/null
@@ -1,14 +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.
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/test-content-package-unacceptable.zip b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/test-content-package-unacceptable.zip
deleted file mode 100644
index 840ee6d..0000000
Binary files a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/test-content-package-unacceptable.zip and /dev/null differ
diff --git a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/test-content-package.zip b/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/test-content-package.zip
deleted file mode 100644
index cfe6a94..0000000
Binary files a/content-package-2-feature-model/src/test/resources/org/apache/sling/feature/cpconverter/test-content-package.zip and /dev/null differ