added envelope jar for wson-cli

This commit is contained in:
2022-06-27 01:59:54 +08:00
parent d15172d41a
commit d6ba855001
17 changed files with 800 additions and 13 deletions

2
Jenkinsfile vendored
View File

@@ -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',

View File

@@ -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'
}

View File

@@ -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

View File

@@ -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)

View File

@@ -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;
}

View File

@@ -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)
}
}

View File

@@ -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;
}

View File

@@ -0,0 +1,4 @@
package net.woggioni.wson.cli;
public class Foo {
}

View File

@@ -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;
}

View File

@@ -0,0 +1,4 @@
package net.woggioni.wson.cli;
public class Foo {
}

View File

@@ -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"
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}

View File

@@ -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() {
}
}

View File

@@ -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<String, ?> config) {
return null;
}
@Override
public JsonGenerator createGenerator(Writer writer) {
return null;
}
@Override
public JsonGenerator createGenerator(OutputStream out) {
return null;
}
@Override
public JsonGeneratorFactory createGeneratorFactory(Map<String, ?> 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<String, ?> config) {
return null;
}
@Override
public JsonReaderFactory createReaderFactory(Map<String, ?> config) {
return null;
}
@Override
public JsonObjectBuilder createObjectBuilder() {
return null;
}
@Override
public JsonArrayBuilder createArrayBuilder() {
return null;
}
@Override
public JsonBuilderFactory createBuilderFactory(Map<String, ?> config) {
return null;
}
}

View File

@@ -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 <T extends JsonValue> List<T> getValuesAs(Class<T> clazz) {
// return (List<T>) 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<String, Value> 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<JsonValue> iterator() {
// return new Iterator<>() {
// private final Iterator<Value> 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> 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<? extends JsonValue> c) {
// return false;
// }
//
// @Override
// public boolean addAll(int index, Collection<? extends JsonValue> 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<JsonValue> listIterator() {
// return null;
// }
//
// @Override
// public ListIterator<JsonValue> listIterator(int index) {
// return null;
// }
//
// @Override
// public List<JsonValue> 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<? extends String, ? extends JsonValue> m) {
//
// }
//
// @Override
// public Set<String> keySet() {
// return null;
// }
//
// @Override
// public Collection<JsonValue> values() {
// return null;
// }
//
// @Override
// public Set<Entry<String, JsonValue>> entrySet() {
// return null;
// }
//
// @Override
// public JsonObject asJsonObject() {
// return this;
// }
//
// @Override
// public JsonArray asJsonArray() {
// return this;
// }
}