From a840d8e97348fa702db39503f594e7a5d04fd6a0 Mon Sep 17 00:00:00 2001 From: Carsten Ziegeler Date: Mon, 27 Nov 2023 07:37:12 +0100 Subject: [PATCH 1/2] Add bundle module --- johnzon-bundle/.asf.yaml | 11 ++ johnzon-bundle/.gitignore | 17 ++ johnzon-bundle/.vscode/settings.json | 3 + johnzon-bundle/pom.xml | 58 ++++++ .../java/jakarta/json/spi/JsonProvider.java | 182 ++++++++++++++++++ pom.xml | 1 + 6 files changed, 272 insertions(+) create mode 100644 johnzon-bundle/.asf.yaml create mode 100644 johnzon-bundle/.gitignore create mode 100644 johnzon-bundle/.vscode/settings.json create mode 100644 johnzon-bundle/pom.xml create mode 100644 johnzon-bundle/src/main/java/jakarta/json/spi/JsonProvider.java diff --git a/johnzon-bundle/.asf.yaml b/johnzon-bundle/.asf.yaml new file mode 100644 index 00000000..4db293a1 --- /dev/null +++ b/johnzon-bundle/.asf.yaml @@ -0,0 +1,11 @@ +github: + autolink_jira: + - "SLING" + - "OAK" + - "JCR" + - "JCRVLT" + - "INFRA" + - "FELIX" + - "MNG" +notifications: + jira_options: "link" diff --git a/johnzon-bundle/.gitignore b/johnzon-bundle/.gitignore new file mode 100644 index 00000000..5b783ed3 --- /dev/null +++ b/johnzon-bundle/.gitignore @@ -0,0 +1,17 @@ +/target +.idea +.classpath +.metadata +.project +.settings +.externalToolBuilders +maven-eclipse.xml +*.swp +*.iml +*.ipr +*.iws +*.bak +.vlt +.DS_Store +jcr.log +atlassian-ide-plugin.xml diff --git a/johnzon-bundle/.vscode/settings.json b/johnzon-bundle/.vscode/settings.json new file mode 100644 index 00000000..e0f15db2 --- /dev/null +++ b/johnzon-bundle/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "java.configuration.updateBuildConfiguration": "automatic" +} \ No newline at end of file diff --git a/johnzon-bundle/pom.xml b/johnzon-bundle/pom.xml new file mode 100644 index 00000000..6c8e1e3c --- /dev/null +++ b/johnzon-bundle/pom.xml @@ -0,0 +1,58 @@ + + + + + 4.0.0 + + johnzon + org.apache.johnzon + 2.0.1-SNAPSHOT + + + johnzon-bundle + Johnzon :: OSGi Bundle containing API and Implementation + bundle + + + true + + + + + + org.apache.felix + maven-bundle-plugin + + + jakarta.json.*;-split-package:=first,org.apache.johnzon.core.* + + + + + + + + + + org.apache.johnzon + johnzon-core + ${project.version} + provided + + + org.osgi + org.osgi.annotation.versioning + 1.1.2 + provided + + + diff --git a/johnzon-bundle/src/main/java/jakarta/json/spi/JsonProvider.java b/johnzon-bundle/src/main/java/jakarta/json/spi/JsonProvider.java new file mode 100644 index 00000000..807705df --- /dev/null +++ b/johnzon-bundle/src/main/java/jakarta/json/spi/JsonProvider.java @@ -0,0 +1,182 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package jakarta.json.spi; + +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Reader; +import java.io.Writer; +import java.math.BigDecimal; +import java.math.BigInteger; +import java.util.Collection; +import java.util.Map; + +import jakarta.json.JsonArray; +import jakarta.json.JsonArrayBuilder; +import jakarta.json.JsonBuilderFactory; +import jakarta.json.JsonMergePatch; +import jakarta.json.JsonNumber; +import jakarta.json.JsonObject; +import jakarta.json.JsonObjectBuilder; +import jakarta.json.JsonPatch; +import jakarta.json.JsonPatchBuilder; +import jakarta.json.JsonPointer; +import jakarta.json.JsonReader; +import jakarta.json.JsonReaderFactory; +import jakarta.json.JsonString; +import jakarta.json.JsonStructure; +import jakarta.json.JsonValue; +import jakarta.json.JsonWriter; +import jakarta.json.JsonWriterFactory; +import jakarta.json.stream.JsonGenerator; +import jakarta.json.stream.JsonGeneratorFactory; +import jakarta.json.stream.JsonParser; +import jakarta.json.stream.JsonParserFactory; + +import org.osgi.annotation.versioning.ProviderType; + +@ProviderType +public abstract class JsonProvider { + private static final class Holder { + private static final JsonProvider DEFAULT = new org.apache.johnzon.core.JsonProviderImpl(); + } + + protected JsonProvider() { + // no-op + } + + public static JsonProvider provider() { + return Holder.DEFAULT; + } + + public abstract JsonParser createParser(Reader reader); + + public abstract JsonParser createParser(InputStream in); + + public abstract JsonParserFactory createParserFactory(Map config); + + public abstract JsonGenerator createGenerator(Writer writer); + + public abstract JsonGenerator createGenerator(OutputStream out); + + public abstract JsonGeneratorFactory createGeneratorFactory(Map config); + + public abstract JsonReader createReader(Reader reader); + + public abstract JsonReader createReader(InputStream in); + + public abstract JsonWriter createWriter(Writer writer); + + public abstract JsonWriter createWriter(OutputStream out); + + public abstract JsonWriterFactory createWriterFactory(Map config); + + public abstract JsonReaderFactory createReaderFactory(Map config); + + public abstract JsonObjectBuilder createObjectBuilder(); + + public JsonObjectBuilder createObjectBuilder(JsonObject object) { + throw new UnsupportedOperationException(); + } + + public JsonObjectBuilder createObjectBuilder(Map map) { + throw new UnsupportedOperationException(); + } + + public abstract JsonArrayBuilder createArrayBuilder(); + + public JsonArrayBuilder createArrayBuilder(JsonArray array) { + throw new UnsupportedOperationException(); + } + + public JsonPointer createPointer(String jsonPointer) { + throw new UnsupportedOperationException(); + } + + public JsonPatchBuilder createPatchBuilder() { + throw new UnsupportedOperationException(); + } + + public JsonPatchBuilder createPatchBuilder(JsonArray array) { + throw new UnsupportedOperationException(); + } + + public JsonPatch createPatch(JsonArray array) { + throw new UnsupportedOperationException(); + } + + public JsonPatch createDiff(JsonStructure source, JsonStructure target) { + throw new UnsupportedOperationException(); + } + + public JsonMergePatch createMergePatch(JsonValue patch) { + throw new UnsupportedOperationException(); + } + + public JsonMergePatch createMergeDiff(JsonValue source, JsonValue target) { + throw new UnsupportedOperationException(); + } + + public JsonArrayBuilder createArrayBuilder(Collection collection) { + throw new UnsupportedOperationException(); + } + + public abstract JsonBuilderFactory createBuilderFactory(Map config); + + public JsonString createValue(String value) { + throw new UnsupportedOperationException(); + } + + public JsonNumber createValue(int value) { + throw new UnsupportedOperationException(); + } + + public JsonNumber createValue(long value) { + throw new UnsupportedOperationException(); + } + + public JsonNumber createValue(double value) { + throw new UnsupportedOperationException(); + } + + public JsonNumber createValue(BigDecimal value) { + throw new UnsupportedOperationException(); + } + + public JsonNumber createValue(BigInteger value) { + throw new UnsupportedOperationException(); + } + + public JsonNumber createValue(Number number) { + if (number instanceof Integer) { + return createValue(number.intValue()); + } else if (number instanceof Long) { + return createValue(number.longValue()); + } else if (number instanceof Double) { + return createValue(number.doubleValue()); + } else if (number instanceof BigInteger) { + return createValue((BigInteger) number); + } else if (number instanceof BigDecimal) { + return createValue((BigDecimal) number); + } else { + throw new UnsupportedOperationException(number + " type is not known"); + } + } +} + diff --git a/pom.xml b/pom.xml index 2af0f510..7c71672f 100644 --- a/pom.xml +++ b/pom.xml @@ -68,6 +68,7 @@ johnzon-jsonschema johnzon-osgi johnzon-jsonlogic + johnzon-bundle From c1ba42d5d189adf5db9c04741a982c1e553e9db0 Mon Sep 17 00:00:00 2001 From: Carsten Ziegeler Date: Mon, 27 Nov 2023 07:38:40 +0100 Subject: [PATCH 2/2] Remove spurious files --- johnzon-bundle/.asf.yaml | 11 ----------- johnzon-bundle/.gitignore | 17 ----------------- johnzon-bundle/.vscode/settings.json | 3 --- 3 files changed, 31 deletions(-) delete mode 100644 johnzon-bundle/.asf.yaml delete mode 100644 johnzon-bundle/.gitignore delete mode 100644 johnzon-bundle/.vscode/settings.json diff --git a/johnzon-bundle/.asf.yaml b/johnzon-bundle/.asf.yaml deleted file mode 100644 index 4db293a1..00000000 --- a/johnzon-bundle/.asf.yaml +++ /dev/null @@ -1,11 +0,0 @@ -github: - autolink_jira: - - "SLING" - - "OAK" - - "JCR" - - "JCRVLT" - - "INFRA" - - "FELIX" - - "MNG" -notifications: - jira_options: "link" diff --git a/johnzon-bundle/.gitignore b/johnzon-bundle/.gitignore deleted file mode 100644 index 5b783ed3..00000000 --- a/johnzon-bundle/.gitignore +++ /dev/null @@ -1,17 +0,0 @@ -/target -.idea -.classpath -.metadata -.project -.settings -.externalToolBuilders -maven-eclipse.xml -*.swp -*.iml -*.ipr -*.iws -*.bak -.vlt -.DS_Store -jcr.log -atlassian-ide-plugin.xml diff --git a/johnzon-bundle/.vscode/settings.json b/johnzon-bundle/.vscode/settings.json deleted file mode 100644 index e0f15db2..00000000 --- a/johnzon-bundle/.vscode/settings.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "java.configuration.updateBuildConfiguration": "automatic" -} \ No newline at end of file