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;
 

Reply via email to