You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2023/03/08 12:25:08 UTC
[jackrabbit-filevault] branch master updated: JCRVLT-688: Add "generator" information to packages generated by filevault (#279)
This is an automated email from the ASF dual-hosted git repository.
reschke pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git
The following commit(s) were added to refs/heads/master by this push:
new c143cc33 JCRVLT-688: Add "generator" information to packages generated by filevault (#279)
c143cc33 is described below
commit c143cc33744432460892ef275f64bc96e700daf5
Author: Julian Reschke <ju...@gmx.de>
AuthorDate: Wed Mar 8 13:25:02 2023 +0100
JCRVLT-688: Add "generator" information to packages generated by filevault (#279)
---
src/site/markdown/properties.md | 2 +
.../apache/jackrabbit/vault/fs/config/MetaInf.java | 7 +++-
.../jackrabbit/vault/fs/config/package-info.java | 2 +-
.../jackrabbit/vault/fs/io/AbstractExporter.java | 47 ++++++++++++++++++++++
.../jackrabbit/vault/fs/io/package-info.java | 2 +-
.../vault/packaging/PackageProperties.java | 12 ++++++
.../packaging/impl/JcrPackageDefinitionImpl.java | 8 +++-
.../packaging/impl/PackagePropertiesImpl.java | 8 ++++
.../jackrabbit/vault/packaging/package-info.java | 2 +-
.../jackrabbit/vault/fs/io/JarExporterTest.java | 8 ++++
10 files changed, 93 insertions(+), 5 deletions(-)
diff --git a/src/site/markdown/properties.md b/src/site/markdown/properties.md
index 2f8ad8b4..4d59bac5 100644
--- a/src/site/markdown/properties.md
+++ b/src/site/markdown/properties.md
@@ -36,6 +36,7 @@ Example:
<properties>
<comment>FileVault Package Properties</comment>
<entry key="createdBy">admin</entry>
+ <entry key="generator">org.apache.jackrabbit.vault:3.6.10</entry>
<entry key="name">acs-aem-commons-content</entry>
<entry key="lastModified">2018-06-14T11:50:32.369+02:00</entry>
<entry key="lastModifiedBy">admin</entry>
@@ -68,6 +69,7 @@ Example:
| dependencies-locations | Optional comma-separated list of dependencies' locations. Each item has the format `<package-id>=<uri>`. Currently [FileVault Package Maven Plugin](https://jackrabbit.apache.org/filevault-package-maven-plugin/index.html) is using a URI scheme for Maven coordinates like `maven:<groupId>:<artifactId>:<version>[[:<classifier>]:packaging]`. | no | empty
| created | A date string in the format `±YYYY-MM-DDThh:mm:ss.SSSTZD` specifying when the package has been created initially (see also [ISO8601][api.ISO8601]) | no | empty
| createdBy | A user name indicating who initially created this package | no | empty
+| generator | Information about the generator of the package | no | for packages created by filevault: `org.apache.jackrabbit.vault:version`
| lastWrapped | A date string in the format `±YYYY-MM-DDThh:mm:ss.SSSTZD` specifying when the package has been last wrapped (i.e. rebuilt) (see also [ISO8601][api.ISO8601]) | no | empty
| lastWrappedBy | A user name indicating who last modified this package | no | empty
| acHandling | See [AccessControlHandling][api.AccessControlHandling]. | no | ignore
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/MetaInf.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/MetaInf.java
index dbac756e..77a0988d 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/MetaInf.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/MetaInf.java
@@ -63,7 +63,12 @@ public interface MetaInf {
* Name of the 'created by' property
*/
String CREATED_BY = "createdBy";
-
+
+ /**
+ * Name of the 'generator' property
+ */
+ String GENERATOR = "generator";
+
/**
* Returns the package format version of this package. If the package
* lacks this information, {@link #FORMAT_VERSION_2} is returned, since this
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/package-info.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/package-info.java
index 3339b772..5bcd0fc3 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/package-info.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/config/package-info.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-@Version("2.7.0")
+@Version("2.8.0")
package org.apache.jackrabbit.vault.fs.config;
import org.osgi.annotation.versioning.Version;
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/AbstractExporter.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/AbstractExporter.java
index 48f89d43..61328bf0 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/AbstractExporter.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/AbstractExporter.java
@@ -110,6 +110,11 @@ public abstract class AbstractExporter implements AutoCloseable {
protected ExportInfo exportInfo = new ExportInfo();
+ private static String DEFAULT_GENERATOR = "org.apache.jackrabbit.vault" + ":"
+ + getVersion("org.apache.jackrabbit.vault", AbstractExporter.class);
+
+ private String generator = DEFAULT_GENERATOR;
+
public boolean isVerbose() {
return tracker != null;
}
@@ -143,6 +148,24 @@ public abstract class AbstractExporter implements AutoCloseable {
}
}
+ /**
+ * @return generator information (for diagnostical purposes; usually in
+ * "name:version" format). {@code null} when n/a. Defaults to
+ * "org.apache.jackrabbit.vault:version".
+ */
+ public String getGenerator() {
+ return generator;
+ }
+
+ /**
+ * @param generator
+ * generator information (for diagnostical purposes; usually in
+ * "name:version" format). {@code null} when n/a.
+ */
+ public void setGenerator(String generator) {
+ this.generator = generator;
+ }
+
public String getRootPath() {
return rootPath;
}
@@ -201,6 +224,7 @@ public abstract class AbstractExporter implements AutoCloseable {
// update properties
setProperty(MetaInf.CREATED, Calendar.getInstance());
setProperty(MetaInf.CREATED_BY, mgr.getUserId());
+ setProperty(MetaInf.GENERATOR, generator);
setProperty(MetaInf.PACKAGE_FORMAT_VERSION, String.valueOf(MetaInf.FORMAT_VERSION_2));
// get filter and translate if necessary
@@ -398,6 +422,29 @@ public abstract class AbstractExporter implements AutoCloseable {
return PackageType.MIXED;
}
+ /**
+ * Returns the version of an Oak module.
+ *
+ * @param moduleName the name of the module
+ * @param clazz a class of the module
+ * @return the version (or "SNAPSHOT" when unknown)
+ */
+ private static String getVersion(String moduleName, Class<?> clazz) {
+ // borrowed from oak-commons
+ String version = "SNAPSHOT"; // fallback
+ try (InputStream stream = clazz
+ .getResourceAsStream("/META-INF/maven/org.apache.jackrabbit.vault/" + moduleName + "/pom.properties")) {
+ if (stream != null) {
+ Properties properties = new Properties();
+ properties.load(stream);
+ return properties.getProperty("version", version);
+ }
+ } catch (IOException ignored) {
+ log.warn("failed to read pom properties for " + moduleName, ignored);
+ }
+ return version;
+ }
+
/**
* Opens the exporter and initializes the undelying structures.
* @throws IOException if an I/O error occurs
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/package-info.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/package-info.java
index 62e3e80b..8590ed51 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/package-info.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/fs/io/package-info.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-@Version("2.14.0")
+@Version("2.15.0")
package org.apache.jackrabbit.vault.fs.io;
import org.osgi.annotation.versioning.Version;
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageProperties.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageProperties.java
index 065efc6d..93bbc556 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageProperties.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/PackageProperties.java
@@ -90,6 +90,11 @@ public interface PackageProperties {
*/
String NAME_CREATED_BY = "createdBy";
+ /**
+ * Name of the generator by meta-inf property
+ */
+ String NAME_GENERATOR = "generator";
+
/**
* Name of the last wrapped meta-inf property
* @since 2.2.22
@@ -239,6 +244,13 @@ public interface PackageProperties {
*/
String getCreatedBy();
+ /**
+ * Returns the name and version of the component that generated the package.
+ * @return the generator or {@code null} if n/a
+ * @since 3.6.10
+ */
+ String getGenerator();
+
/**
* Returns the date when this package was wrapped or {@code null} if n/a.
* @return the wrapped date
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageDefinitionImpl.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageDefinitionImpl.java
index 656685fd..c327504c 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageDefinitionImpl.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/JcrPackageDefinitionImpl.java
@@ -646,6 +646,13 @@ public class JcrPackageDefinitionImpl implements JcrPackageDefinition {
return get(PN_CREATED_BY);
}
+ /**
+ * {@inheritDoc}
+ */
+ public String getGenerator() {
+ return null;
+ }
+
/**
* {@inheritDoc}
*/
@@ -976,7 +983,6 @@ public class JcrPackageDefinitionImpl implements JcrPackageDefinition {
return null;
}
-
@Override
public Calendar getDateProperty(String name) {
return getCalendar(name);
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagePropertiesImpl.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagePropertiesImpl.java
index 6b1e3283..15394a35 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagePropertiesImpl.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/PackagePropertiesImpl.java
@@ -111,6 +111,14 @@ public abstract class PackagePropertiesImpl implements PackageProperties {
return getProperty(NAME_CREATED_BY);
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
+ public String getGenerator() {
+ return getProperty(NAME_GENERATOR);
+ }
+
/**
* {@inheritDoc}
*/
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java
index 87722e1a..aa1413be 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/package-info.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-@Version("2.14.1")
+@Version("2.15.0")
package org.apache.jackrabbit.vault.packaging;
import org.osgi.annotation.versioning.Version;
diff --git a/vault-core/src/test/java/org/apache/jackrabbit/vault/fs/io/JarExporterTest.java b/vault-core/src/test/java/org/apache/jackrabbit/vault/fs/io/JarExporterTest.java
index 5c6c4b47..89281ceb 100644
--- a/vault-core/src/test/java/org/apache/jackrabbit/vault/fs/io/JarExporterTest.java
+++ b/vault-core/src/test/java/org/apache/jackrabbit/vault/fs/io/JarExporterTest.java
@@ -23,6 +23,7 @@ import static org.junit.Assert.assertEquals;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
@@ -81,6 +82,13 @@ public class JarExporterTest {
}
}
+ @Test
+ public void checkGenerator() throws RepositoryException, IOException {
+ try (JarExporter exporter = new JarExporter(new ByteArrayOutputStream());) {
+ assertEquals("org.apache.jackrabbit.vault:SNAPSHOT", exporter.getGenerator());
+ }
+ }
+
private int countEntries(Archive.Entry entry) {
int c = 1;
for (Archive.Entry child : entry.getChildren()) {