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);
+ }
}