You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2022/04/08 14:01:50 UTC

[jackrabbit-filevault-package-maven-plugin] branch feature/JCRVLT-621-add-builtWIth-property created (now e8c7401)

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

kwin pushed a change to branch feature/JCRVLT-621-add-builtWIth-property
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault-package-maven-plugin.git


      at e8c7401  JCRVLT-621 add "builtWith" property in package definition serialization

This branch includes the following new commits:

     new e8c7401  JCRVLT-621 add "builtWith" property in package definition serialization

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[jackrabbit-filevault-package-maven-plugin] 01/01: JCRVLT-621 add "builtWith" property in package definition serialization

Posted by kw...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

kwin pushed a commit to branch feature/JCRVLT-621-add-builtWIth-property
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault-package-maven-plugin.git

commit e8c740165652b198f9e435bb82d084c75958be74
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Fri Apr 8 16:01:41 2022 +0200

    JCRVLT-621 add "builtWith" property in package definition serialization
---
 pom.xml                                            |  2 +-
 .../maven/packaging/mojo/GenerateMetadataMojo.java | 60 ++++++++++++++++------
 2 files changed, 46 insertions(+), 16 deletions(-)

diff --git a/pom.xml b/pom.xml
index e1ec1cc..6560d0e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
         <groupId>org.apache.jackrabbit.vault</groupId>
         <artifactId>parent</artifactId>
         <relativePath />
-        <version>3.6.0</version>
+        <version>3.6.1-SNAPSHOT</version>
     </parent>
 
     <!-- ====================================================================== -->
diff --git a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/mojo/GenerateMetadataMojo.java b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/mojo/GenerateMetadataMojo.java
index 7400bff..1d16bfb 100644
--- a/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/mojo/GenerateMetadataMojo.java
+++ b/src/main/java/org/apache/jackrabbit/filevault/maven/packaging/mojo/GenerateMetadataMojo.java
@@ -27,8 +27,10 @@ import java.net.URISyntaxException;
 import java.nio.file.Files;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -48,6 +50,11 @@ import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
 import java.util.zip.ZipFile;
 
+import javax.jcr.NamespaceException;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
 import org.apache.commons.io.FilenameUtils;
 import org.apache.jackrabbit.filevault.maven.packaging.ArtifactCoordinates;
 import org.apache.jackrabbit.filevault.maven.packaging.Embedded;
@@ -55,6 +62,11 @@ import org.apache.jackrabbit.filevault.maven.packaging.Filters;
 import org.apache.jackrabbit.filevault.maven.packaging.MavenBasedPackageDependency;
 import org.apache.jackrabbit.filevault.maven.packaging.SubPackage;
 import org.apache.jackrabbit.filevault.maven.packaging.SubPackageHandlingEntry;
+import org.apache.jackrabbit.spi.Name;
+import org.apache.jackrabbit.spi.commons.name.NameConstants;
+import org.apache.jackrabbit.spi.commons.name.NameFactoryImpl;
+import org.apache.jackrabbit.spi.commons.namespace.NamespaceMapping;
+import org.apache.jackrabbit.spi.commons.namespace.NamespaceResolver;
 import org.apache.jackrabbit.util.Text;
 import org.apache.jackrabbit.vault.fs.api.PathFilterSet;
 import org.apache.jackrabbit.vault.fs.api.WorkspaceFilter;
@@ -62,18 +74,24 @@ import org.apache.jackrabbit.vault.fs.config.ConfigurationException;
 import org.apache.jackrabbit.vault.fs.config.DefaultWorkspaceFilter;
 import org.apache.jackrabbit.vault.fs.filter.DefaultPathFilter;
 import org.apache.jackrabbit.vault.fs.io.AccessControlHandling;
+import org.apache.jackrabbit.vault.fs.io.DocViewFormat;
 import org.apache.jackrabbit.vault.packaging.Dependency;
+import org.apache.jackrabbit.vault.packaging.JcrPackage;
 import org.apache.jackrabbit.vault.packaging.PackageId;
 import org.apache.jackrabbit.vault.packaging.PackageProperties;
 import org.apache.jackrabbit.vault.packaging.PackageType;
 import org.apache.jackrabbit.vault.packaging.SubPackageHandling;
 import org.apache.jackrabbit.vault.util.Constants;
+import org.apache.jackrabbit.vault.util.DocViewNode2;
+import org.apache.jackrabbit.vault.util.DocViewProperty2;
+import org.apache.jackrabbit.vault.util.xml.serialize.FormattingXmlStreamWriter;
 import org.apache.maven.archiver.ManifestConfiguration;
 import org.apache.maven.archiver.MavenArchiveConfiguration;
 import org.apache.maven.archiver.MavenArchiver;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.DependencyResolutionRequiredException;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
+import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.MojoFailureException;
@@ -558,27 +576,39 @@ public class GenerateMetadataMojo extends AbstractMetadataPackageMojo {
             writeFilters(sourceFilters);
             copyFile("/vault/config.xml", new File(vaultDir, Constants.CONFIG_XML));
             copyFile("/vault/settings.xml", new File(vaultDir, Constants.SETTINGS_XML));
-            
-            // add package thumbnail
-            if (thumbnailImage != null && thumbnailImage.exists()) {
-                File vaultDefinitionFolder = new File(vaultDir, "definition");
-                if (!vaultDefinitionFolder.exists()) {
-                    vaultDefinitionFolder.mkdir();
-                }
-                copyFile("/vault/definition/.content.xml", new File(vaultDefinitionFolder, ".content.xml"));
-                // copy thumbnail image only when it's not already placed in the source META-INF directory
-                if (!thumbnailImage.equals(new File(metaInfDirectory, "/definition/thumbnail.png"))) {
-                    FileUtils.copyFile(thumbnailImage, new File(vaultDefinitionFolder, "thumbnail.png"));
-                }
+            File packageDefinitionXml = new File(vaultDir, Constants.PACKAGE_DEFINITION_XML);
+            if (!packageDefinitionXml.getParentFile().exists()) {
+                packageDefinitionXml.getParentFile().mkdir();
+            }
+            try (OutputStream output = new FileOutputStream( packageDefinitionXml )) {
+                writePackageDefinition(output);
+            }
+            // copy thumbnail image only when it's not already placed in the source META-INF directory
+            if (thumbnailImage != null && thumbnailImage.exists() && !thumbnailImage.equals(new File(metaInfDirectory, "/definition/thumbnail.png"))) {
+                FileUtils.copyFile(thumbnailImage, new File(packageDefinitionXml.getParentFile(), "thumbnail.png"));
             }
-
             writeManifest(getGeneratedManifestFile(true), dependenciesString, dependenciesLocations, vaultProperties);
-        } catch (IOException | ManifestException | DependencyResolutionRequiredException | ConfigurationException e) {
+        } catch (IOException | ManifestException | DependencyResolutionRequiredException | ConfigurationException | NamespaceException | XMLStreamException e) {
             throw new MojoExecutionException(e.toString(), e);
         }
         buildContext.refresh(vaultDir);
     }
 
+    void writePackageDefinition(OutputStream outputStream) throws XMLStreamException, FactoryConfigurationError, NamespaceException {
+        NamespaceMapping namespaceResolver = new NamespaceMapping(); // no namespaces necessary
+        namespaceResolver.setMapping(Name.NS_EMPTY_PREFIX, Name.NS_DEFAULT_URI);
+        namespaceResolver.setMapping(Name.NS_JCR_PREFIX, Name.NS_JCR_URI);
+        try (FormattingXmlStreamWriter xmlWriter = FormattingXmlStreamWriter.create(outputStream, new DocViewFormat().getXmlOutputFormat())) {
+            Collection<DocViewProperty2> properties = new ArrayList<>();
+            properties.add(new DocViewProperty2(NameConstants.JCR_PRIMARYTYPE, JcrPackage.NT_VLT_PACKAGE_DEFINITION));
+            properties.add(new DocViewProperty2(NameFactoryImpl.getInstance().create(Name.NS_DEFAULT_URI, "builtWith"), "filevault-package-maven-plugin"));
+            DocViewNode2 docViewNode = new DocViewNode2(NameConstants.JCR_ROOT, properties);
+            docViewNode.writeStart(xmlWriter, namespaceResolver, Collections.emptySet());
+            DocViewNode2.writeEnd(xmlWriter);
+        }
+        
+    }
+
     void writeManifest(File file, String dependenciesString, String dependenciesLocations, final Properties vaultProperties)
             throws ManifestException, DependencyResolutionRequiredException, IOException, FileNotFoundException {
         // generate manifest file
@@ -589,7 +619,7 @@ public class GenerateMetadataMojo extends AbstractMetadataPackageMojo {
             manifest.write(out);
         }
     }
-    
+
     /**
      * Computes the package filters.
      *