From d6ba8550011f6dfda577eafe75d88c7a1959e7fa Mon Sep 17 00:00:00 2001 From: Walter Oggioni Date: Mon, 27 Jun 2022 01:59:54 +0800 Subject: [PATCH] added envelope jar for wson-cli --- Jenkinsfile | 2 +- build.gradle | 12 +- gradle.properties | 6 +- settings.gradle | 8 +- src/java9/java/module-info.java | 10 + wson-cli/build.gradle | 17 +- wson-cli/src/java9/java/module-info.java | 8 + .../java9/java/net/woggioni/wson/cli/Foo.java | 4 + wson-cli/src/main/java9/module-info.java | 9 + .../main/java9/net/woggioni/wson/cli/Foo.java | 4 + wson-w3c-json/build.gradle | 9 + .../wson/jakarta/WorthJsonNumber.java | 91 +++++ .../wson/jakarta/WorthJsonString.java | 25 ++ .../wson/jakarta/WsonArrayBuilder.java | 75 ++++ .../woggioni/wson/jakarta/WsonJsonParser.java | 58 +++ .../wson/jakarta/WsonJsonProvider.java | 99 +++++ .../woggioni/wson/jakarta/WsonJsonValue.java | 376 ++++++++++++++++++ 17 files changed, 800 insertions(+), 13 deletions(-) create mode 100644 src/java9/java/module-info.java create mode 100644 wson-cli/src/java9/java/module-info.java create mode 100644 wson-cli/src/java9/java/net/woggioni/wson/cli/Foo.java create mode 100644 wson-cli/src/main/java9/module-info.java create mode 100644 wson-cli/src/main/java9/net/woggioni/wson/cli/Foo.java create mode 100644 wson-w3c-json/build.gradle create mode 100644 wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WorthJsonNumber.java create mode 100644 wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WorthJsonString.java create mode 100644 wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonArrayBuilder.java create mode 100644 wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonParser.java create mode 100644 wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonProvider.java create mode 100644 wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonValue.java diff --git a/Jenkinsfile b/Jenkinsfile index 7cb6770..938b9ca 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -6,7 +6,7 @@ pipeline { stages { stage("Build") { steps { - sh "./gradlew clean build" + sh "./gradlew clean assemble build" junit testResults: "build/test-results/test/*.xml" javadoc javadocDir: "build/docs/javadoc", keepAll: true archiveArtifacts artifacts: 'build/libs/*.jar,benchmark/build/libs/*.jar,wson-cli/build/distributions/wson-cli-envelope-*.jar', diff --git a/build.gradle b/build.gradle index bb952a6..d108118 100644 --- a/build.gradle +++ b/build.gradle @@ -19,8 +19,9 @@ allprojects { maven { url = "https://woggioni.net/mvn/" content { - includeGroup 'net.woggioni' + includeGroup 'com.beust' includeGroup 'com.lys' + includeGroup 'net.woggioni' } } mavenCentral() @@ -38,6 +39,14 @@ allprojects { test { useJUnitPlatform() } + + java { + modularity.inferModulePath = true + } +} + +ext { + setProperty('jpms.module.name', 'net.woggioni.wson') } dependencies { @@ -54,7 +63,6 @@ java { } compileJava { - options.release = 8 options.compilerArgs << '-parameters' } diff --git a/gradle.properties b/gradle.properties index f157ff3..a6819fc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,14 +1,10 @@ gradle.version=7.4.2 wson.version = 1.0-SNAPSHOT -net.woggioni.gradle.lombok.version = 0.1 -net.woggioni.gradle.envelope.version = 1.0-SNAPSHOT -net.woggioni.gradle.multi-release-jar = 0.1 +lys-gradle-plugins.version = 2022.06 lys.version = 0.1-SNAPSHOT lombok.version = 1.18.22 kotlin.version = 1.7.0 -jpms.module.name = net.woggioni.wson - diff --git a/settings.gradle b/settings.gradle index 4c60edf..ec85e6d 100644 --- a/settings.gradle +++ b/settings.gradle @@ -13,16 +13,16 @@ pluginManagement { } plugins { - id 'net.woggioni.gradle.envelope' version getProperty('net.woggioni.gradle.envelope.version') - id 'net.woggioni.gradle.lombok' version getProperty('net.woggioni.gradle.lombok.version') - id 'net.woggioni.gradle.multi-release-jar' version getProperty('net.woggioni.gradle.multi-release-jar') + id 'net.woggioni.gradle.envelope' version getProperty('lys-gradle-plugins.version') + id 'net.woggioni.gradle.lombok' version getProperty('lys-gradle-plugins.version') + id 'net.woggioni.gradle.multi-release-jar' version getProperty('lys-gradle-plugins.version') id 'org.jetbrains.kotlin.jvm' version getProperty('kotlin.version') } } rootProject.name = 'wson' -def includeDirs = ['antlr', 'benchmark', 'test-utils', 'wson-cli'] +def includeDirs = ['antlr', 'benchmark', 'test-utils', 'wson-cli', 'wson-w3c-json'] includeDirs.each { include(it) diff --git a/src/java9/java/module-info.java b/src/java9/java/module-info.java new file mode 100644 index 0000000..a7cb49a --- /dev/null +++ b/src/java9/java/module-info.java @@ -0,0 +1,10 @@ +module net.woggioni.wson { + requires net.woggioni.jwo; + + exports net.woggioni.wson.xface; + exports net.woggioni.wson.value; + exports net.woggioni.wson.exception; + exports net.woggioni.wson.serialization; + exports net.woggioni.wson.serialization.json; + exports net.woggioni.wson.serialization.binary; +} \ No newline at end of file diff --git a/wson-cli/build.gradle b/wson-cli/build.gradle index 1f62ddf..5a551ca 100644 --- a/wson-cli/build.gradle +++ b/wson-cli/build.gradle @@ -2,10 +2,15 @@ plugins { id 'maven-publish' id 'net.woggioni.gradle.envelope' id 'org.jetbrains.kotlin.jvm' + id 'net.woggioni.gradle.multi-release-jar' +} + +ext { + setProperty('jpms.module.name', 'net.woggioni.wson.cli') } dependencies { - implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib', version: getProperty('kotlin.version') + implementation group: 'org.jetbrains.kotlin', name: 'kotlin-stdlib-jdk8', version: getProperty('kotlin.version') implementation group: 'com.beust', name: 'jcommander' implementation group: "org.slf4j", name: "slf4j-simple" implementation rootProject @@ -13,8 +18,12 @@ dependencies { envelopeJar { mainClass = 'net.woggioni.wson.cli.MainKt' + mainModule = 'net.woggioni.wson.cli' } +java { + modularity.inferModulePath = true +} compileKotlin { kotlinOptions.with { @@ -33,4 +42,10 @@ publishing { artifact envelopeJar } } +} + +tasks.register('listConfigurations') { + configurations.each { + println(it.name) + } } \ No newline at end of file diff --git a/wson-cli/src/java9/java/module-info.java b/wson-cli/src/java9/java/module-info.java new file mode 100644 index 0000000..e82b73c --- /dev/null +++ b/wson-cli/src/java9/java/module-info.java @@ -0,0 +1,8 @@ +module net.woggioni.wson.cli { + requires kotlin.stdlib; + requires kotlin.stdlib.jdk8; + requires net.woggioni.wson; + requires com.beust.jcommander; + + opens net.woggioni.wson.cli to com.beust.jcommander; +} \ No newline at end of file diff --git a/wson-cli/src/java9/java/net/woggioni/wson/cli/Foo.java b/wson-cli/src/java9/java/net/woggioni/wson/cli/Foo.java new file mode 100644 index 0000000..b33c521 --- /dev/null +++ b/wson-cli/src/java9/java/net/woggioni/wson/cli/Foo.java @@ -0,0 +1,4 @@ +package net.woggioni.wson.cli; + +public class Foo { +} diff --git a/wson-cli/src/main/java9/module-info.java b/wson-cli/src/main/java9/module-info.java new file mode 100644 index 0000000..7a4bf32 --- /dev/null +++ b/wson-cli/src/main/java9/module-info.java @@ -0,0 +1,9 @@ +module net.woggioni.wson.cli { + requires kotlin.stdlib; + requires kotlin.stdlib.jdk8; + requires net.woggioni.wson; + requires com.beust.jcommander; + exports net.woggioni.wson.cli; + + opens net.woggioni.wson.cli to com.beust.jcommander; +} \ No newline at end of file diff --git a/wson-cli/src/main/java9/net/woggioni/wson/cli/Foo.java b/wson-cli/src/main/java9/net/woggioni/wson/cli/Foo.java new file mode 100644 index 0000000..b33c521 --- /dev/null +++ b/wson-cli/src/main/java9/net/woggioni/wson/cli/Foo.java @@ -0,0 +1,4 @@ +package net.woggioni.wson.cli; + +public class Foo { +} diff --git a/wson-w3c-json/build.gradle b/wson-w3c-json/build.gradle new file mode 100644 index 0000000..1ca9db1 --- /dev/null +++ b/wson-w3c-json/build.gradle @@ -0,0 +1,9 @@ +plugins { + id 'java-library' +} + +dependencies { + implementation rootProject + implementation group: 'jakarta.json', name: 'jakarta.json-api', version: '2.1.0' + implementation group: "net.woggioni", name: "jwo" +} \ No newline at end of file diff --git a/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WorthJsonNumber.java b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WorthJsonNumber.java new file mode 100644 index 0000000..e9e016f --- /dev/null +++ b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WorthJsonNumber.java @@ -0,0 +1,91 @@ +package net.woggioni.wson.jakarta; + +import jakarta.json.JsonNumber; +import net.woggioni.wson.value.FloatValue; +import net.woggioni.wson.value.IntegerValue; +import net.woggioni.wson.xface.Value; + +import java.math.BigDecimal; +import java.math.BigInteger; + + +public class WorthJsonNumber implements JsonNumber { + private final Value value; + + public WorthJsonNumber(IntegerValue value) { + this.value = value; + } + + public WorthJsonNumber(FloatValue value) { + this.value = value; + } + + @Override + public boolean isIntegral() { + return value.type() == Value.Type.INTEGER; + } + + @Override + public int intValue() { + return (int) value.asInteger(); + } + + @Override + public int intValueExact() { + if(isIntegral()) return intValue(); + else { + double res = value.asFloat(); + double res2 = Math.floor(res); + if(res != res2) throw new ArithmeticException(); + else return (int) res; + } + } + + @Override + public long longValue() { + return value.asInteger(); + } + + @Override + public long longValueExact() { + if(isIntegral()) return intValue(); + else { + double res = value.asFloat(); + double res2 = Math.floor(res); + if(res != res2) throw new ArithmeticException(); + else return (long) res; + } + } + + @Override + public BigInteger bigIntegerValue() { + return bigDecimalValue().toBigInteger(); + } + + @Override + public BigInteger bigIntegerValueExact() { + if(isIntegral()) return bigDecimalValue().toBigInteger(); + else { + double res = value.asFloat(); + double res2 = Math.floor(res); + if(res != res2) throw new ArithmeticException(); + else return BigInteger.valueOf((long) res); + } + } + + @Override + public double doubleValue() { + return value.asFloat(); + } + + @Override + public BigDecimal bigDecimalValue() { + if(isIntegral()) return BigDecimal.valueOf(value.asInteger()); + else return BigDecimal.valueOf(value.asFloat()); + } + + @Override + public ValueType getValueType() { + return ValueType.NUMBER; + } +} diff --git a/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WorthJsonString.java b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WorthJsonString.java new file mode 100644 index 0000000..01f519c --- /dev/null +++ b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WorthJsonString.java @@ -0,0 +1,25 @@ +package net.woggioni.wson.jakarta; + +import jakarta.json.JsonString; +import lombok.RequiredArgsConstructor; +import net.woggioni.wson.value.StringValue; + +@RequiredArgsConstructor +public class WorthJsonString implements JsonString { + private final StringValue value; + + @Override + public String getString() { + return value.asString(); + } + + @Override + public CharSequence getChars() { + return value.asString(); + } + + @Override + public ValueType getValueType() { + return ValueType.STRING; + } +} diff --git a/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonArrayBuilder.java b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonArrayBuilder.java new file mode 100644 index 0000000..6eb4e4f --- /dev/null +++ b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonArrayBuilder.java @@ -0,0 +1,75 @@ +package net.woggioni.wson.jakarta; + +import jakarta.json.JsonArray; +import jakarta.json.JsonArrayBuilder; +import jakarta.json.JsonObjectBuilder; +import jakarta.json.JsonValue; +import net.woggioni.wson.value.ArrayValue; + +import java.math.BigDecimal; +import java.math.BigInteger; + +public class WsonArrayBuilder implements JsonArrayBuilder { + + private final ArrayValue arrayValue = new ArrayValue(); + + @Override + public JsonArrayBuilder add(JsonValue value) { + return null; + } + + @Override + public JsonArrayBuilder add(String value) { + return null; + } + + @Override + public JsonArrayBuilder add(BigDecimal value) { + return null; + } + + @Override + public JsonArrayBuilder add(BigInteger value) { + return null; + } + + @Override + public JsonArrayBuilder add(int value) { + return null; + } + + @Override + public JsonArrayBuilder add(long value) { + return null; + } + + @Override + public JsonArrayBuilder add(double value) { + return null; + } + + @Override + public JsonArrayBuilder add(boolean value) { + return null; + } + + @Override + public JsonArrayBuilder addNull() { + return null; + } + + @Override + public JsonArrayBuilder add(JsonObjectBuilder builder) { + return null; + } + + @Override + public JsonArrayBuilder add(JsonArrayBuilder builder) { + return null; + } + + @Override + public JsonArray build() { + return null; + } +} diff --git a/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonParser.java b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonParser.java new file mode 100644 index 0000000..49c4b03 --- /dev/null +++ b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonParser.java @@ -0,0 +1,58 @@ +package net.woggioni.wson.jakarta; + +import jakarta.json.stream.JsonLocation; +import jakarta.json.stream.JsonParser; +import lombok.RequiredArgsConstructor; + +import java.io.Reader; +import java.math.BigDecimal; + +@RequiredArgsConstructor +class WsonJsonParser implements JsonParser { + private final Reader reader; + + @Override + public boolean hasNext() { + return false; + } + + @Override + public Event next() { + return null; + } + + @Override + public String getString() { + return null; + } + + @Override + public boolean isIntegralNumber() { + return false; + } + + @Override + public int getInt() { + return 0; + } + + @Override + public long getLong() { + return 0; + } + + @Override + public BigDecimal getBigDecimal() { + return null; + } + + @Override + public JsonLocation getLocation() { + return null; + } + + @Override + public void close() { + + } +} diff --git a/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonProvider.java b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonProvider.java new file mode 100644 index 0000000..8bf575c --- /dev/null +++ b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonProvider.java @@ -0,0 +1,99 @@ +package net.woggioni.wson.jakarta; + +import jakarta.json.JsonArrayBuilder; +import jakarta.json.JsonBuilderFactory; +import jakarta.json.JsonObjectBuilder; +import jakarta.json.JsonReader; +import jakarta.json.JsonReaderFactory; +import jakarta.json.JsonWriter; +import jakarta.json.JsonWriterFactory; +import jakarta.json.spi.JsonProvider; +import jakarta.json.stream.JsonGenerator; +import jakarta.json.stream.JsonGeneratorFactory; +import jakarta.json.stream.JsonParser; +import jakarta.json.stream.JsonParserFactory; +import net.woggioni.wson.value.ObjectValue; + +import java.io.InputStream; +import java.io.OutputStream; +import java.io.Reader; +import java.io.Writer; +import java.util.Map; + +public class WsonJsonProvider extends JsonProvider { + @Override + public JsonParser createParser(Reader reader) { + return null; + } + + @Override + public JsonParser createParser(InputStream in) { + return null; + } + + @Override + public JsonParserFactory createParserFactory(Map config) { + return null; + } + + @Override + public JsonGenerator createGenerator(Writer writer) { + return null; + } + + @Override + public JsonGenerator createGenerator(OutputStream out) { + return null; + } + + @Override + public JsonGeneratorFactory createGeneratorFactory(Map config) { + return null; + } + + @Override + public JsonReader createReader(Reader reader) { + return null; + } + + @Override + public JsonReader createReader(InputStream in) { + return null; + } + + @Override + public JsonWriter createWriter(Writer writer) { + return null; + } + + @Override + public JsonWriter createWriter(OutputStream out) { + return null; + } + + @Override + public JsonWriterFactory createWriterFactory(Map config) { + return null; + } + + @Override + public JsonReaderFactory createReaderFactory(Map config) { + return null; + } + + @Override + public JsonObjectBuilder createObjectBuilder() { + return null; + } + + @Override + public JsonArrayBuilder createArrayBuilder() { + + return null; + } + + @Override + public JsonBuilderFactory createBuilderFactory(Map config) { + return null; + } +} diff --git a/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonValue.java b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonValue.java new file mode 100644 index 0000000..b1a0c40 --- /dev/null +++ b/wson-w3c-json/src/main/java/net/woggioni/wson/jakarta/WsonJsonValue.java @@ -0,0 +1,376 @@ +package net.woggioni.wson.jakarta; + +import jakarta.json.JsonArray; +import jakarta.json.JsonNumber; +import jakarta.json.JsonObject; +import jakarta.json.JsonString; +import jakarta.json.JsonValue; +import lombok.RequiredArgsConstructor; +import net.woggioni.jwo.CollectionUtils; +import net.woggioni.jwo.JWO; +import net.woggioni.wson.xface.Value; + +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.ListIterator; +import java.util.Map; +import java.util.Set; + +import static net.woggioni.jwo.JWO.newThrowable; + +@RequiredArgsConstructor +public class WsonJsonValue implements JsonValue { + private final Value value; + + @Override + public ValueType getValueType() { + ValueType result; + switch (value.type()) { + case NULL: + result = ValueType.NULL; + break; + case OBJECT: + result = ValueType.OBJECT; + break; + case ARRAY: + result = ValueType.ARRAY; + break; + case STRING: + result = ValueType.STRING; + break; + case BOOLEAN: + result = value.asBoolean() ? ValueType.TRUE : ValueType.FALSE; + break; + case DOUBLE: + case INTEGER: + result = ValueType.NUMBER; + break; + default: + throw new UnsupportedOperationException("This should never happen"); + } + return result; + } +// +// @Override +// public JsonObject getJsonObject(int index) { +// return new WsonJsonValue(value.get(index)); +// } +// +// @Override +// public JsonArray getJsonArray(int index) { +// return new WsonJsonValue(value.get(index)); +// } +// +// @Override +// public JsonNumber getJsonNumber(int index) { +// return new WsonJsonValue(value.get(index)); +// } +// +// @Override +// public JsonString getJsonString(int index) { +// return new WsonJsonValue(value.get(index)); +// } +// +// @Override +// public List getValuesAs(Class clazz) { +// return (List) JWO.iterable2Stream(value.asArray()).map(WsonJsonValue::new) +// .collect(CollectionUtils.toUnmodifiableList()); +// } +// +// @Override +// public String getString(int index) { +// return value.get(index).asString(); +// } +// +// @Override +// public String getString(int index, String defaultValue) { +// if(index < value.size()) return value.get(index).asString(); +// else return defaultValue; +// } +// +// @Override +// public int getInt(int index) { +// return (int) value.get(index).asInteger(); +// } +// +// @Override +// public int getInt(int index, int defaultValue) { +// if(index < value.size()) return (int) value.get(index).asInteger(); +// else return defaultValue; +// } +// +// @Override +// public boolean getBoolean(int index) { +// return value.get(index).asBoolean(); +// } +// +// @Override +// public boolean getBoolean(int index, boolean defaultValue) { +// if(index < value.size()) return value.get(index).asBoolean(); +// else return defaultValue; +// } +// +// @Override +// public boolean isNull(int index) { +// return false; +// } +// +// @Override +// public JsonArray getJsonArray(String name) { +// return new WsonJsonValue(value.get(name)); +// } +// +// @Override +// public JsonObject getJsonObject(String name) { +// return new WsonJsonValue(value.get(name)); +// } +// +// @Override +// public JsonNumber getJsonNumber(String name) { +// return new WsonJsonValue(value.get(name)); +// } +// +// @Override +// public JsonString getJsonString(String name) { +// return new WsonJsonValue(value.get(name)); +// } +// +// @Override +// public String getString(String name) { +// return value.get(name).asString(); +// } +// +// @Override +// public String getString(String name, String defaultValue) { +// Value result = value.getOrDefault(name, Value.Null); +// if(result.isNull()) return defaultValue; +// else return result.asString(); +// } +// +// @Override +// public int getInt(String name) { +// return (int) value.get(name).asInteger(); +// } +// +// @Override +// public int getInt(String name, int defaultValue) { +// Value result = value.getOrDefault(name, Value.Null); +// if(result.isNull()) return defaultValue; +// else return (int) result.asInteger(); +// } +// +// @Override +// public boolean getBoolean(String name) { +// return value.get(name).asBoolean(); +// } +// +// @Override +// public boolean getBoolean(String name, boolean defaultValue) { +// Value result = value.getOrDefault(name, Value.Null); +// if(result.isNull()) return defaultValue; +// else return result.asBoolean(); +// } +// +// @Override +// public boolean isNull(String name) { +// return value.isNull(); +// } +// +// @Override +// public int size() { +// return value.size(); +// } +// +// @Override +// public boolean isEmpty() { +// return value.size() == 0; +// } +// +// @Override +// public boolean contains(Object o) { +// boolean result = false; +// switch (value.type()) { +// case ARRAY: +// for(Value v : value.asArray()) { +// if(v == o) { +// result = true; +// break; +// } +// } +// break; +// case OBJECT: +// for(Map.Entry entry : value.asObject()) { +// if(entry.getValue() == o) { +// result = true; +// break; +// } +// } +// break; +// default: +// throw newThrowable(ClassCastException.class, "This value is not of type %s", ValueType.ARRAY); +// } +// return result; +// } +// +// @Override +// public Iterator iterator() { +// return new Iterator<>() { +// private final Iterator it = value.asArray().iterator(); +// @Override +// public boolean hasNext() { +// return it.hasNext(); +// } +// +// @Override +// public JsonValue next() { +// return new WsonJsonValue(it.next()); +// } +// }; +// } +// +// @Override +// public Object[] toArray() { +// return new Object[0]; +// } +// +// @Override +// public T[] toArray(T[] a) { +// return null; +// } +// +// @Override +// public boolean add(JsonValue jsonValue) { +// return false; +// } +// +// @Override +// public boolean remove(Object o) { +// return false; +// } +// +// @Override +// public boolean containsAll(Collection c) { +// return false; +// } +// +// @Override +// public boolean addAll(Collection c) { +// return false; +// } +// +// @Override +// public boolean addAll(int index, Collection c) { +// return false; +// } +// +// @Override +// public boolean removeAll(Collection c) { +// return false; +// } +// +// @Override +// public boolean retainAll(Collection c) { +// return false; +// } +// +// @Override +// public void clear() { +// +// } +// +// @Override +// public JsonValue get(int index) { +// return null; +// } +// +// @Override +// public JsonValue set(int index, JsonValue element) { +// return null; +// } +// +// @Override +// public void add(int index, JsonValue element) { +// +// } +// +// @Override +// public JsonValue remove(int index) { +// return null; +// } +// +// @Override +// public int indexOf(Object o) { +// return 0; +// } +// +// @Override +// public int lastIndexOf(Object o) { +// return 0; +// } +// +// @Override +// public ListIterator listIterator() { +// return null; +// } +// +// @Override +// public ListIterator listIterator(int index) { +// return null; +// } +// +// @Override +// public List subList(int fromIndex, int toIndex) { +// return null; +// } +// +// @Override +// public boolean containsKey(Object key) { +// return false; +// } +// +// @Override +// public boolean containsValue(Object value) { +// return false; +// } +// +// @Override +// public JsonValue get(Object key) { +// return null; +// } +// +// @Override +// public JsonValue put(String key, JsonValue value) { +// return null; +// } +// +// @Override +// public void putAll(Map m) { +// +// } +// +// @Override +// public Set keySet() { +// return null; +// } +// +// @Override +// public Collection values() { +// return null; +// } +// +// @Override +// public Set> entrySet() { +// return null; +// } +// +// @Override +// public JsonObject asJsonObject() { +// return this; +// } +// +// @Override +// public JsonArray asJsonArray() { +// return this; +// } +}