You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by cz...@apache.org on 2020/07/16 06:08:51 UTC

[sling-org-apache-sling-feature] branch master updated: SLING-9590 : Add ability to specify java version and options in execution environment

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 59e201e  SLING-9590 : Add ability to specify java version and options in execution environment
59e201e is described below

commit 59e201ea12080086725cac7a612e03cba583f378
Author: Carsten Ziegeler <cz...@apache.org>
AuthorDate: Thu Jul 16 08:06:29 2020 +0200

    SLING-9590 : Add ability to specify java version and options in execution environment
---
 .../feature/ExecutionEnvironmentExtension.java     | 49 ++++++++++++++++++++++
 .../feature/ExecutionEnvironmentExtensionTest.java | 47 +++++++++++++++++----
 2 files changed, 89 insertions(+), 7 deletions(-)

diff --git a/src/main/java/org/apache/sling/feature/ExecutionEnvironmentExtension.java b/src/main/java/org/apache/sling/feature/ExecutionEnvironmentExtension.java
index c4c6978..7831df6 100644
--- a/src/main/java/org/apache/sling/feature/ExecutionEnvironmentExtension.java
+++ b/src/main/java/org/apache/sling/feature/ExecutionEnvironmentExtension.java
@@ -16,8 +16,12 @@
  */
 package org.apache.sling.feature;
 
+import javax.json.JsonString;
 import javax.json.JsonStructure;
 import javax.json.JsonValue;
+import javax.json.JsonValue.ValueType;
+
+import org.osgi.framework.Version;
 
 /**
  * Execution environment extension
@@ -59,8 +63,15 @@ public class ExecutionEnvironmentExtension {
         return new ExecutionEnvironmentExtension(ext.getJSONStructure());
     }
 
+    /** Optional framework artifact. */
     private final Artifact framework;
 
+    /** Optional java version */
+    private final Version javaVersion;
+
+    /** Optional java options */
+    private final String javaOptions;
+
     private ExecutionEnvironmentExtension(final JsonStructure structure) {
         // get framework
         final JsonValue fwk = structure.asJsonObject().getOrDefault("framework", null);
@@ -69,6 +80,26 @@ public class ExecutionEnvironmentExtension {
         } else {
             this.framework = null;
         }
+        // get version
+        final JsonValue jv = structure.asJsonObject().getOrDefault("javaVersion", null);
+        if ( jv != null ) {
+            if ( jv.getValueType() != ValueType.STRING ) {
+                throw new IllegalArgumentException("javaVersion is not of type String");
+            }
+            this.javaVersion = Version.parseVersion(((JsonString)jv).getString());
+        } else {
+            this.javaVersion = null;
+        }
+        // get options
+        final JsonValue jo = structure.asJsonObject().getOrDefault("javaOptions", null);
+        if ( jo != null ) {
+            if ( jo.getValueType() != ValueType.STRING ) {
+                throw new IllegalArgumentException("javaOptions is not of type String");
+            }
+            this.javaOptions = ((JsonString)jo).getString();
+        } else {
+            this.javaOptions = null;
+        }
     }
 
     /**
@@ -78,4 +109,22 @@ public class ExecutionEnvironmentExtension {
     public Artifact getFramework() {
         return this.framework;
     }
+
+    /**
+     * Get the specified java version
+     * @return The version or {@code null}
+     * @since 1.5.0
+     */
+    public Version getJavaVersion() {
+        return javaVersion;
+    }
+
+    /**
+     * Get the specified java options
+     * @return The options or {@code null}
+     * @since 1.5.0
+     */
+    public String getJavaOptions() {
+        return javaOptions;
+    }
 }
diff --git a/src/test/java/org/apache/sling/feature/ExecutionEnvironmentExtensionTest.java b/src/test/java/org/apache/sling/feature/ExecutionEnvironmentExtensionTest.java
index 512827a..ad34ba2 100644
--- a/src/test/java/org/apache/sling/feature/ExecutionEnvironmentExtensionTest.java
+++ b/src/test/java/org/apache/sling/feature/ExecutionEnvironmentExtensionTest.java
@@ -21,6 +21,7 @@ import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
 import org.junit.Test;
+import org.osgi.framework.Version;
 
 public class ExecutionEnvironmentExtensionTest {
 
@@ -42,15 +43,15 @@ public class ExecutionEnvironmentExtensionTest {
         ExecutionEnvironmentExtension.getExecutionEnvironmentExtension(f);
     }
 
-    public void testNoFramework() {
-        final Extension e = new Extension(ExtensionType.TEXT, ExecutionEnvironmentExtension.EXTENSION_NAME, ExtensionState.OPTIONAL);
+    @Test public void testNoFramework() {
+        final Extension e = new Extension(ExtensionType.JSON, ExecutionEnvironmentExtension.EXTENSION_NAME, ExtensionState.OPTIONAL);
         e.setJSON("{}");
 
         assertNull(ExecutionEnvironmentExtension.getExecutionEnvironmentExtension(e).getFramework());
     }
 
-    public void testFrameworkAsString() {
-        final Extension e = new Extension(ExtensionType.TEXT, ExecutionEnvironmentExtension.EXTENSION_NAME, ExtensionState.OPTIONAL);
+    @Test public void testFrameworkAsString() {
+        final Extension e = new Extension(ExtensionType.JSON, ExecutionEnvironmentExtension.EXTENSION_NAME, ExtensionState.OPTIONAL);
         e.setJSON("{ \"framework\" : \"g:a:1\" }");
 
         final ExecutionEnvironmentExtension eee = ExecutionEnvironmentExtension.getExecutionEnvironmentExtension(e);
@@ -58,13 +59,45 @@ public class ExecutionEnvironmentExtensionTest {
         assertEquals(ArtifactId.parse("g:a:1"), eee.getFramework().getId());
     }
 
-    public void testFrameworkAsObject() {
-        final Extension e = new Extension(ExtensionType.TEXT, ExecutionEnvironmentExtension.EXTENSION_NAME, ExtensionState.OPTIONAL);
-        e.setJSON("{ \"framework\" : { \"id\" : \"g:a:1\", \"p\" : \"v\" }");
+    @Test public void testFrameworkAsObject() {
+        final Extension e = new Extension(ExtensionType.JSON, ExecutionEnvironmentExtension.EXTENSION_NAME, ExtensionState.OPTIONAL);
+        e.setJSON("{ \"framework\" : { \"id\" : \"g:a:1\", \"p\" : \"v\" } }");
 
         final ExecutionEnvironmentExtension eee = ExecutionEnvironmentExtension.getExecutionEnvironmentExtension(e);
         assertNotNull(eee.getFramework());
         assertEquals(ArtifactId.parse("g:a:1"), eee.getFramework().getId());
         assertEquals("v", eee.getFramework().getMetadata().get("p"));
     }
+
+    @Test public void testJavaOptions() {
+        final Extension e = new Extension(ExtensionType.JSON, ExecutionEnvironmentExtension.EXTENSION_NAME, ExtensionState.OPTIONAL);
+        e.setJSON("{ \"javaOptions\" : \"options\" }");
+
+        final ExecutionEnvironmentExtension eee = ExecutionEnvironmentExtension.getExecutionEnvironmentExtension(e);
+        assertEquals("options", eee.getJavaOptions());
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testWrongJavaOptions() {
+        final Extension e = new Extension(ExtensionType.JSON, ExecutionEnvironmentExtension.EXTENSION_NAME, ExtensionState.OPTIONAL);
+        e.setJSON("{ \"javaOptions\" : true }");
+
+        ExecutionEnvironmentExtension.getExecutionEnvironmentExtension(e);
+    }
+
+    @Test public void testJavaVersion() {
+        final Extension e = new Extension(ExtensionType.JSON, ExecutionEnvironmentExtension.EXTENSION_NAME, ExtensionState.OPTIONAL);
+        e.setJSON("{ \"javaVersion\" : \"11\" }");
+
+        final ExecutionEnvironmentExtension eee = ExecutionEnvironmentExtension.getExecutionEnvironmentExtension(e);
+        assertEquals(new Version("11"), eee.getJavaVersion());
+    }
+
+    @Test(expected = IllegalArgumentException.class)
+    public void testWrongJavaVersion() {
+        final Extension e = new Extension(ExtensionType.JSON, ExecutionEnvironmentExtension.EXTENSION_NAME, ExtensionState.OPTIONAL);
+        e.setJSON("{ \"javaVersion\" : true }");
+
+        ExecutionEnvironmentExtension.getExecutionEnvironmentExtension(e);
+    }
 }