This is an automated email from the ASF dual-hosted git repository.
cziegeler pushed a commit to branch master
in repository
https://gitbox.apache.org/repos/asf/sling-org-apache-sling-feature.git
The following commit(s) were added to refs/heads/master by this push:
new bc8c8f3 SLING-11743 : Allow serializing of feature model
bc8c8f3 is described below
commit bc8c8f3f3397aefcfaeaedcd20d543ef9e8fa46c
Author: Carsten Ziegeler <[email protected]>
AuthorDate: Fri Dec 23 09:08:19 2022 +0100
SLING-11743 : Allow serializing of feature model
---
src/main/java/org/apache/sling/feature/Artifact.java | 6 +++++-
src/main/java/org/apache/sling/feature/ArtifactId.java | 5 ++++-
.../java/org/apache/sling/feature/Configuration.java | 5 ++++-
src/main/java/org/apache/sling/feature/Extension.java | 17 +++++++++++++++--
src/main/java/org/apache/sling/feature/Feature.java | 5 ++++-
.../java/org/apache/sling/feature/MapWithMetadata.java | 5 ++++-
src/main/java/org/apache/sling/feature/Prototype.java | 5 ++++-
7 files changed, 40 insertions(+), 8 deletions(-)
diff --git a/src/main/java/org/apache/sling/feature/Artifact.java
b/src/main/java/org/apache/sling/feature/Artifact.java
index ea6b035..4a73d20 100644
--- a/src/main/java/org/apache/sling/feature/Artifact.java
+++ b/src/main/java/org/apache/sling/feature/Artifact.java
@@ -16,6 +16,7 @@
*/
package org.apache.sling.feature;
+import java.io.Serializable;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -40,7 +41,10 @@ import jakarta.json.JsonValue.ValueType;
*
* This class is not thread-safe.
*/
-public class Artifact implements Comparable<Artifact> {
+public class Artifact implements Comparable<Artifact>, Serializable {
+
+ private static final long serialVersionUID = 2L;
+
/** Can be used in artifact metadata to specify an alias. Multiple aliases
can be comma-separated. */
public static final String KEY_ALIAS = "alias";
diff --git a/src/main/java/org/apache/sling/feature/ArtifactId.java
b/src/main/java/org/apache/sling/feature/ArtifactId.java
index fa23b82..68d200b 100644
--- a/src/main/java/org/apache/sling/feature/ArtifactId.java
+++ b/src/main/java/org/apache/sling/feature/ArtifactId.java
@@ -16,6 +16,7 @@
*/
package org.apache.sling.feature;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -31,7 +32,9 @@ import org.osgi.framework.Version;
*
* This class is thread-safe.
*/
-public class ArtifactId implements Comparable<ArtifactId> {
+public class ArtifactId implements Comparable<ArtifactId>, Serializable {
+
+ private static final long serialVersionUID = 2L;
/** The default type if {@code null} is provided as a type. @since 1.3 */
public static final String DEFAULT_TYPE = "jar";
diff --git a/src/main/java/org/apache/sling/feature/Configuration.java
b/src/main/java/org/apache/sling/feature/Configuration.java
index f296307..75cd72d 100644
--- a/src/main/java/org/apache/sling/feature/Configuration.java
+++ b/src/main/java/org/apache/sling/feature/Configuration.java
@@ -16,6 +16,7 @@
*/
package org.apache.sling.feature;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Dictionary;
@@ -39,7 +40,9 @@ import org.osgi.util.converter.Converters;
* This class is not thread-safe.
*/
public class Configuration
- implements Comparable<Configuration> {
+ implements Comparable<Configuration>, Serializable {
+
+ private static final long serialVersionUID = 2L;
/**
* Prefix for instructions for the configurator.
diff --git a/src/main/java/org/apache/sling/feature/Extension.java
b/src/main/java/org/apache/sling/feature/Extension.java
index 865fc09..1c5ff6c 100644
--- a/src/main/java/org/apache/sling/feature/Extension.java
+++ b/src/main/java/org/apache/sling/feature/Extension.java
@@ -17,6 +17,8 @@
package org.apache.sling.feature;
import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.Serializable;
import java.io.StringReader;
import java.io.StringWriter;
@@ -49,7 +51,9 @@ import org.apache.sling.feature.builder.BuilderContext;
*
* @see ExtensionType
*/
-public class Extension {
+public class Extension implements Serializable {
+
+ private static final long serialVersionUID = 2L;
/**
* Common extension name to specify the repoinit part for Apache Sling.
This
@@ -91,7 +95,7 @@ public class Extension {
private String text;
/** The json structure (if corresponding type) */
- private JsonStructure json;
+ private transient JsonStructure json;
/** Extension state. */
private final ExtensionState state;
@@ -119,6 +123,15 @@ public class Extension {
}
}
+ private void readObject(final ObjectInputStream in)
+ throws IOException, ClassNotFoundException {
+ in.defaultReadObject();
+ // initialize json object
+ if ( this.type == ExtensionType.JSON ) {
+ this.setJSON(this.text);
+ }
+ }
+
/**
* Get the extension type
* @return The type
diff --git a/src/main/java/org/apache/sling/feature/Feature.java
b/src/main/java/org/apache/sling/feature/Feature.java
index 8a4f5f5..17773ef 100644
--- a/src/main/java/org/apache/sling/feature/Feature.java
+++ b/src/main/java/org/apache/sling/feature/Feature.java
@@ -16,6 +16,7 @@
*/
package org.apache.sling.feature;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
@@ -42,7 +43,9 @@ import org.osgi.util.converter.Converters;
*
* This class is not thread-safe.
*/
-public class Feature implements Comparable<Feature> {
+public class Feature implements Comparable<Feature>, Serializable {
+
+ private static final long serialVersionUID = 2L;
private final ArtifactId id;
diff --git a/src/main/java/org/apache/sling/feature/MapWithMetadata.java
b/src/main/java/org/apache/sling/feature/MapWithMetadata.java
index f9a2a81..9a9990d 100644
--- a/src/main/java/org/apache/sling/feature/MapWithMetadata.java
+++ b/src/main/java/org/apache/sling/feature/MapWithMetadata.java
@@ -16,6 +16,7 @@
*/
package org.apache.sling.feature;
+import java.io.Serializable;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
@@ -27,7 +28,9 @@ import java.util.Set;
* This class is not thread-safe.
* @since 1.7.0
*/
-class MapWithMetadata implements Map<String, String> {
+class MapWithMetadata implements Map<String, String>, Serializable {
+
+ private static final long serialVersionUID = 2L;
private final Map<String, String> values = new LinkedHashMap<>();
diff --git a/src/main/java/org/apache/sling/feature/Prototype.java
b/src/main/java/org/apache/sling/feature/Prototype.java
index d73a554..215d0e9 100644
--- a/src/main/java/org/apache/sling/feature/Prototype.java
+++ b/src/main/java/org/apache/sling/feature/Prototype.java
@@ -16,6 +16,7 @@
*/
package org.apache.sling.feature;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -36,7 +37,9 @@ import org.osgi.resource.Capability;
*
* This class is not thread-safe.
*/
-public class Prototype implements Comparable<Prototype> {
+public class Prototype implements Comparable<Prototype>, Serializable {
+
+ private static final long serialVersionUID = 2L;
private final ArtifactId id;