From: Mathieu Baudier Date: Sun, 24 Sep 2023 09:33:37 +0000 (+0200) Subject: Introduce CMS JSon X-Git-Tag: v2.3.19~14 X-Git-Url: http://git.argeo.org/?a=commitdiff_plain;h=0a398c6408a25ad47543aca16664cf634720c11a;p=lgpl%2Fargeo-commons.git Introduce CMS JSon --- diff --git a/org.argeo.cms.lib.json/.classpath b/org.argeo.cms.lib.json/.classpath new file mode 100644 index 000000000..81fe078c2 --- /dev/null +++ b/org.argeo.cms.lib.json/.classpath @@ -0,0 +1,7 @@ + + + + + + + diff --git a/org.argeo.cms.lib.json/.project b/org.argeo.cms.lib.json/.project new file mode 100644 index 000000000..cd9a5505e --- /dev/null +++ b/org.argeo.cms.lib.json/.project @@ -0,0 +1,28 @@ + + + org.argeo.cms.lib.json + + + + + + org.eclipse.jdt.core.javabuilder + + + + + org.eclipse.pde.ManifestBuilder + + + + + org.eclipse.pde.SchemaBuilder + + + + + + org.eclipse.pde.PluginNature + org.eclipse.jdt.core.javanature + + diff --git a/org.argeo.cms.lib.json/.settings/org.eclipse.core.resources.prefs b/org.argeo.cms.lib.json/.settings/org.eclipse.core.resources.prefs new file mode 100644 index 000000000..99f26c020 --- /dev/null +++ b/org.argeo.cms.lib.json/.settings/org.eclipse.core.resources.prefs @@ -0,0 +1,2 @@ +eclipse.preferences.version=1 +encoding/=UTF-8 diff --git a/org.argeo.cms.lib.json/.settings/org.eclipse.jdt.core.prefs b/org.argeo.cms.lib.json/.settings/org.eclipse.jdt.core.prefs new file mode 100644 index 000000000..62ef3488c --- /dev/null +++ b/org.argeo.cms.lib.json/.settings/org.eclipse.jdt.core.prefs @@ -0,0 +1,9 @@ +eclipse.preferences.version=1 +org.eclipse.jdt.core.compiler.codegen.targetPlatform=17 +org.eclipse.jdt.core.compiler.compliance=17 +org.eclipse.jdt.core.compiler.problem.assertIdentifier=error +org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled +org.eclipse.jdt.core.compiler.problem.enumIdentifier=error +org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning +org.eclipse.jdt.core.compiler.release=enabled +org.eclipse.jdt.core.compiler.source=17 diff --git a/org.argeo.cms.lib.json/.settings/org.eclipse.pde.core.prefs b/org.argeo.cms.lib.json/.settings/org.eclipse.pde.core.prefs new file mode 100644 index 000000000..f29e940a0 --- /dev/null +++ b/org.argeo.cms.lib.json/.settings/org.eclipse.pde.core.prefs @@ -0,0 +1,3 @@ +eclipse.preferences.version=1 +pluginProject.extensions=false +resolve.requirebundle=false diff --git a/org.argeo.cms.lib.json/bnd.bnd b/org.argeo.cms.lib.json/bnd.bnd new file mode 100644 index 000000000..e69de29bb diff --git a/org.argeo.cms.lib.json/build.properties b/org.argeo.cms.lib.json/build.properties new file mode 100644 index 000000000..34d2e4d2d --- /dev/null +++ b/org.argeo.cms.lib.json/build.properties @@ -0,0 +1,4 @@ +source.. = src/ +output.. = bin/ +bin.includes = META-INF/,\ + . diff --git a/org.argeo.cms.lib.json/src/org/argeo/cms/acr/json/AcrJsonUtils.java b/org.argeo.cms.lib.json/src/org/argeo/cms/acr/json/AcrJsonUtils.java new file mode 100644 index 000000000..f288c6051 --- /dev/null +++ b/org.argeo.cms.lib.json/src/org/argeo/cms/acr/json/AcrJsonUtils.java @@ -0,0 +1,43 @@ +package org.argeo.cms.acr.json; + +import javax.xml.namespace.QName; + +import org.argeo.api.acr.Content; +import org.argeo.api.acr.NamespaceUtils; +import org.argeo.api.acr.QNamed; + +import jakarta.json.stream.JsonGenerator; + +/** Utilities around ACR and the JSON format. */ +public class AcrJsonUtils { + public static void writeAttr(JsonGenerator g, Content content, String attr) { + writeAttr(g, content, NamespaceUtils.parsePrefixedName(attr)); + } + + public static void writeAttr(JsonGenerator g, Content content, QNamed attr) { + writeAttr(g, content, attr.qName()); + } + + public static void writeAttr(JsonGenerator g, Content content, QName attr) { + // String value = content.attr(attr); + Object value = content.get(attr); + if (value != null) { + // TODO specify NamespaceContext + String key = NamespaceUtils.toPrefixedName(attr); + if (value instanceof Double v) + g.write(key, v); + else if (value instanceof Long v) + g.write(key, v); + else if (value instanceof Integer v) + g.write(key, v); + else if (value instanceof Boolean v) + g.write(key, v); + else + g.write(key, value.toString()); + } + } + + /** singleton */ + private AcrJsonUtils() { + } +}