You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by kw...@apache.org on 2021/06/02 18:10:16 UTC

[sling-org-apache-sling-feature-cpconverter] 01/01: SLING-10450 ContentPackage2FeatureModelConverter now implements Closeable

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

kwin pushed a commit to branch feature/converter-implements-closeable
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature-cpconverter.git

commit c67f6d8d839c59d48c97214597f5866744ce6ebd
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Wed Jun 2 20:07:36 2021 +0200

    SLING-10450 ContentPackage2FeatureModelConverter now implements
    Closeable
    
    makes it possible to use with try..with..resources
    cleanup usage from CP2FMCLauncher
---
 .../ContentPackage2FeatureModelConverter.java      | 16 ++++++-----
 ...ntentPackage2FeatureModelConverterLauncher.java | 31 +++++++++-------------
 .../ContentPackage2FeatureModelConverterTest.java  |  4 +--
 3 files changed, 24 insertions(+), 27 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java b/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
index 81ec0c3..44c2248 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverter.java
@@ -20,6 +20,7 @@ import static java.util.Objects.requireNonNull;
 import static org.apache.sling.feature.cpconverter.vltpkg.VaultPackageUtils.detectPackageType;
 import static org.apache.sling.feature.cpconverter.vltpkg.VaultPackageUtils.getDependencies;
 
+import java.io.Closeable;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Files;
@@ -61,7 +62,7 @@ import org.apache.sling.feature.cpconverter.vltpkg.VaultPackageAssembler;
 import org.jetbrains.annotations.NotNull;
 import org.jetbrains.annotations.Nullable;
 
-public class ContentPackage2FeatureModelConverter extends BaseVaultPackageScanner {
+public class ContentPackage2FeatureModelConverter extends BaseVaultPackageScanner implements Closeable {
 
     public static final String ZIP_TYPE = "zip";
 
@@ -208,15 +209,11 @@ public class ContentPackage2FeatureModelConverter extends BaseVaultPackageScanne
         return this.tmpDirectory;
     }
     
-    public void cleanup() {
+    public void cleanup() throws IOException {
         if ( this.tmpDirectory.exists() ) {
             logger.info( "Cleaning up tmp directory {}", this.tmpDirectory);
 
-            try {
-                FileUtils.deleteDirectory( this.tmpDirectory );
-            } catch (IOException e) {
-                logger.error( "Error Deleting {}", this.tmpDirectory );
-            }
+            FileUtils.deleteDirectory( this.tmpDirectory );
         }
     }
     
@@ -516,4 +513,9 @@ public class ContentPackage2FeatureModelConverter extends BaseVaultPackageScanne
         handlersManager.addEntryHandler(NodeTypesEntryHandler.forCndPattern(cndPattern));
     }
 
+    @Override
+    public void close() throws IOException {
+        cleanup();
+    }
+
 }
diff --git a/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java b/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
index c18953e..59b72fa 100644
--- a/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
+++ b/src/main/java/org/apache/sling/feature/cpconverter/cli/ContentPackage2FeatureModelConverterLauncher.java
@@ -205,21 +205,19 @@ public final class ContentPackage2FeatureModelConverterLauncher implements Runna
                     }
                 }
 
-                ContentPackage2FeatureModelConverter converter = new ContentPackage2FeatureModelConverter(strictValidation)
-                                                                .setFeaturesManager(featuresManager)
-                                                                .setBundlesDeployer(new LocalMavenRepositoryArtifactsDeployer(artifactsOutputDirectory))
-                                                                .setEntryHandlersManager(new DefaultEntryHandlersManager(entryHandlerConfigsMap, !disableInstallerPolicy, slingInitialContentPolicy))
-                                                                .setAclManager(aclManager)
-                                                                .setEmitter(DefaultPackagesEventsEmitter.open(featureModelsOutputDirectory))
-                                                                .setFailOnMixedPackages(failOnMixedPackages)
-                                                                .setContentTypePackagePolicy(contentTypePackagePolicy);
-                                                                
-                if (unreferencedArtifactsOutputDirectory != null) {
-                    converter.setUnreferencedArtifactsDeployer(new SimpleFolderArtifactsDeployer(unreferencedArtifactsOutputDirectory));
-                } else if (contentTypePackagePolicy == ContentPackage2FeatureModelConverter.PackagePolicy.PUT_IN_DEDICATED_FOLDER) {
-                    throw new IllegalStateException("Argument '--content-type-package-policy PUT_IN_DEDICATED_FOLDER' requires argument '--unreferenced-artifacts-output-directory' as well!");
-                }
-                try {
+                try (ContentPackage2FeatureModelConverter converter = new ContentPackage2FeatureModelConverter(strictValidation)) {
+                    converter.setFeaturesManager(featuresManager)
+                             .setBundlesDeployer(new LocalMavenRepositoryArtifactsDeployer(artifactsOutputDirectory))
+                             .setEntryHandlersManager(new DefaultEntryHandlersManager(entryHandlerConfigsMap, !disableInstallerPolicy, slingInitialContentPolicy))
+                             .setAclManager(aclManager)
+                             .setEmitter(DefaultPackagesEventsEmitter.open(featureModelsOutputDirectory))
+                             .setFailOnMixedPackages(failOnMixedPackages)
+                             .setContentTypePackagePolicy(contentTypePackagePolicy);
+                    if (unreferencedArtifactsOutputDirectory != null) {
+                        converter.setUnreferencedArtifactsDeployer(new SimpleFolderArtifactsDeployer(unreferencedArtifactsOutputDirectory));
+                    } else if (contentTypePackagePolicy == ContentPackage2FeatureModelConverter.PackagePolicy.PUT_IN_DEDICATED_FOLDER) {
+                        throw new IllegalStateException("Argument '--content-type-package-policy PUT_IN_DEDICATED_FOLDER' requires argument '--unreferenced-artifacts-output-directory' as well!");
+                    }
                     if (filteringPatterns != null && filteringPatterns.length > 0) {
                         RegexBasedResourceFilter filter = new RegexBasedResourceFilter();
 
@@ -229,10 +227,7 @@ public final class ContentPackage2FeatureModelConverterLauncher implements Runna
 
                         converter.setResourceFilter(filter);
                     }
-
                     converter.convert(contentPackages);
-                } finally {
-                    converter.cleanup();
                 }
 
                 logger.info( "+-----------------------------------------------------+" );
diff --git a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
index 0dbab64..36b0d32 100644
--- a/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
+++ b/src/test/java/org/apache/sling/feature/cpconverter/ContentPackage2FeatureModelConverterTest.java
@@ -103,8 +103,8 @@ public class ContentPackage2FeatureModelConverterTest {
     }
 
     @After
-    public void tearDown() {
-        converter.cleanup();
+    public void tearDown() throws IOException {
+        converter.close();
     }
 
     @Test