diff --git a/.github/workflows/maven-deploy-release.yml b/.github/workflows/maven-deploy-release.yml
index 2dd9cd8..49b71b5 100644
--- a/.github/workflows/maven-deploy-release.yml
+++ b/.github/workflows/maven-deploy-release.yml
@@ -20,7 +20,6 @@ jobs:
- name: Deploy to OSSRH Repository
run: mvn deploy -DbuildVersion=${{ github.event.release.tag_name }} -s build/settings.xml
env:
- DEPLOYMENT_USERNAME: ${{ secrets.DEPLOYMENT_USERNAME }}
- DEPLOYMENT_PASSWORD: ${{ secrets.DEPLOYMENT_PASSWORD }}
- GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
\ No newline at end of file
+ CENTRAL_USERNAME: ${{ secrets.CENTRAL_USERNAME }}
+ CENTRAL_PASSWORD: ${{ secrets.CENTRAL_PASSWORD }}
+ GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
\ No newline at end of file
diff --git a/.github/workflows/maven-deploy.yml b/.github/workflows/maven-deploy.yml
index 1141b8d..4554782 100644
--- a/.github/workflows/maven-deploy.yml
+++ b/.github/workflows/maven-deploy.yml
@@ -21,7 +21,6 @@ jobs:
- name: Deploy to OSSRH Repository
run: mvn deploy -s build/settings.xml
env:
- DEPLOYMENT_USERNAME: ${{ secrets.DEPLOYMENT_USERNAME }}
- DEPLOYMENT_PASSWORD: ${{ secrets.DEPLOYMENT_PASSWORD }}
- GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
- OSSRH_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
\ No newline at end of file
+ CENTRAL_USERNAME: ${{ secrets.CENTRAL_USERNAME }}
+ CENTRAL_PASSWORD: ${{ secrets.CENTRAL_PASSWORD }}
+ GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
\ No newline at end of file
diff --git a/README.md b/README.md
index 021e4ff..4ca0d32 100644
--- a/README.md
+++ b/README.md
@@ -22,6 +22,6 @@ You can find the current docs on our [website](https://docs.javawebstack.org/fra
org.javawebstack
abstract-data
- 1.0.6
+ 1.0.7
```
diff --git a/build/settings.xml b/build/settings.xml
index 07e7726..88571fa 100644
--- a/build/settings.xml
+++ b/build/settings.xml
@@ -5,19 +5,9 @@
>
- javawebstack-snapshots
- ${env.DEPLOYMENT_USERNAME}
- ${env.DEPLOYMENT_PASSWORD}
-
-
- javawebstack-releases
- ${env.DEPLOYMENT_USERNAME}
- ${env.DEPLOYMENT_PASSWORD}
-
-
- ossrh
- JavaWebStack
- ${env.OSSRH_PASSWORD}
+ central
+ ${env.CENTRAL_USERNAME}
+ ${env.CENTRAL_PASSWORD}
gpg
diff --git a/pom.xml b/pom.xml
index 401f5c6..5353647 100644
--- a/pom.xml
+++ b/pom.xml
@@ -7,7 +7,7 @@
8
8
- 1.0.6-SNAPSHOT
+ 1.0.7-SNAPSHOT
org.javawebstack
@@ -49,7 +49,7 @@
org.mongodb
bson
- 4.10.2
+ 5.0.0
true
@@ -58,22 +58,24 @@
5.10.0
test
+
+ org.mockito
+ mockito-core
+ 4.11.0
+ test
+
- maven-deploy-plugin
- 2.7
-
-
- default-deploy
- deploy
-
- deploy
-
-
-
+ org.sonatype.central
+ central-publishing-maven-plugin
+ 0.9.0
+ true
+
+ central
+
org.apache.maven.plugins
@@ -104,7 +106,7 @@
org.apache.maven.plugins
maven-gpg-plugin
- 3.0.1
+ 3.2.4
sign-artifacts
@@ -113,7 +115,7 @@
sign
- A313520526A8DFE1C2A30399C35A3D43C557B112
+ EC9CCFF8901F0AA22191DCEDD619376246C066D0
gpg
--no-tty
@@ -129,13 +131,9 @@
- ossrh
- https://s01.oss.sonatype.org/content/repositories/snapshots
+ central
+ https://central.sonatype.com/repository/maven-snapshots/
-
- ossrh
- https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
-
-
\ No newline at end of file
+
diff --git a/src/main/java/org/javawebstack/abstractdata/AbstractArray.java b/src/main/java/org/javawebstack/abstractdata/AbstractArray.java
index 2d97ea4..c92fa98 100644
--- a/src/main/java/org/javawebstack/abstractdata/AbstractArray.java
+++ b/src/main/java/org/javawebstack/abstractdata/AbstractArray.java
@@ -22,84 +22,117 @@ public AbstractArray array(boolean strict) throws AbstractCoercingException {
}
public AbstractObject object(boolean strict) throws AbstractCoercingException {
- if(strict)
+ if (strict)
throw new AbstractCoercingException(Type.OBJECT, Type.ARRAY);
AbstractObject object = new AbstractObject();
- for(int i=0; i< elements.size(); i++)
+ for (int i = 0; i < elements.size(); i++)
object.set(String.valueOf(i), elements.get(i));
return object;
}
+ @Deprecated
public AbstractObject object(String key) throws AbstractCoercingException {
- return query(key).object();
+ AbstractElement e = query(key);
+ return e != null ? e.object() : null;
}
+ @Deprecated
public AbstractArray array(String key) throws AbstractCoercingException {
- return query(key).array();
+ AbstractElement e = query(key);
+ return e != null ? e.array() : null;
}
+ @Deprecated
public AbstractPrimitive primitive(String key) throws AbstractCoercingException {
- return query(key).primitive();
+ AbstractElement e = query(key);
+ return e != null ? e.primitive() : null;
}
+ @Deprecated
public String string(String key) throws AbstractCoercingException {
- return query(key).string();
+ AbstractElement e = query(key);
+ return e != null ? e.string() : null;
}
+ @Deprecated
public Boolean bool(String key) throws AbstractCoercingException {
- return query(key).bool();
+ AbstractElement e = query(key);
+ return e != null ? e.bool() : null;
}
+ @Deprecated
public Number number(String key) throws AbstractCoercingException {
- return query(key).number();
+ AbstractElement e = query(key);
+ return e != null ? e.number() : null;
}
+ @Deprecated
public AbstractObject object(String key, AbstractObject orElse) throws AbstractCoercingException {
- return query(key, orElse).object();
+ AbstractElement e = query(key, orElse);
+ return e != null ? e.object() : null;
}
+ @Deprecated
public AbstractArray array(String key, AbstractArray orElse) throws AbstractCoercingException {
- return query(key, orElse).array();
+ AbstractElement e = query(key, orElse);
+ return e != null ? e.array() : null;
}
+ @Deprecated
public AbstractPrimitive primitive(String key, AbstractPrimitive orElse) throws AbstractCoercingException {
- return query(key, orElse).primitive();
+ AbstractElement e = query(key, orElse);
+ return e != null ? e.primitive() : null;
}
+ @Deprecated
public String string(String key, String orElse) throws AbstractCoercingException {
- return query(key, new AbstractPrimitive(orElse)).string();
+ AbstractPrimitive orElsePrimitive = orElse != null ? new AbstractPrimitive(orElse) : null;
+ AbstractElement e = primitive(key, orElsePrimitive);
+ return e != null ? e.string() : null;
}
+ @Deprecated
public Boolean bool(String key, Boolean orElse) throws AbstractCoercingException {
- return query(key, new AbstractPrimitive(orElse)).bool();
+ AbstractPrimitive orElsePrimitive = orElse != null ? new AbstractPrimitive(orElse) : null;
+ AbstractElement e = primitive(key, orElsePrimitive);
+ return e != null ? e.bool() : null;
}
+ @Deprecated
public Number number(String key, Number orElse) throws AbstractCoercingException {
- return query(key, new AbstractPrimitive(orElse)).number();
+ AbstractPrimitive orElsePrimitive = orElse != null ? new AbstractPrimitive(orElse) : null;
+ AbstractElement e = primitive(key, orElsePrimitive);
+ return e != null ? e.number() : null;
}
public AbstractObject object(int index) throws AbstractCoercingException {
- return get(index).object();
+ AbstractElement e = get(index);
+ return e != null ? e.object() : null;
}
public AbstractArray array(int index) throws AbstractCoercingException {
- return get(index).array();
+ AbstractElement e = get(index);
+ return e != null ? e.array() : null;
}
public AbstractPrimitive primitive(int index) throws AbstractCoercingException {
- return get(index).primitive();
+ AbstractElement e = get(index);
+ return e != null ? e.primitive() : null;
}
public String string(int index) throws AbstractCoercingException {
- return get(index).string();
+ AbstractElement e = get(index);
+ return e != null ? e.string() : null;
}
public Boolean bool(int index) throws AbstractCoercingException {
- return get(index).bool();
+ AbstractElement e = get(index);
+ return e != null ? e.bool() : null;
}
public Number number(int index) throws AbstractCoercingException {
- return get(index).number();
+ AbstractElement e = get(index);
+ return e != null ? e.number() : null;
}
public AbstractObject object(int index, AbstractObject orElse) throws AbstractCoercingException {
@@ -214,6 +247,8 @@ public AbstractElement[] toArray() {
}
public AbstractElement get(int i) {
+ if(i >= elements.size())
+ return null;
return elements.get(i);
}
@@ -223,15 +258,17 @@ public AbstractElement get(int index, AbstractElement orElse) {
}
public AbstractElement query(String query) {
+ if(query == null)
+ throw new IllegalArgumentException("query can not be null");
String[] q = query.split("\\.", 2);
try {
int index = Integer.parseInt(q[0]);
AbstractElement e = get(index);
- if(e == null || q.length == 1)
+ if (e == null || q.length == 1)
return e;
- if(e.isObject())
+ if (e.isObject())
return e.object().query(q[1]);
- if(e.isArray())
+ if (e.isArray())
return e.array().query(q[1]);
return null;
} catch (NumberFormatException nfe) {
@@ -281,7 +318,7 @@ public List toStringList() {
public List toStringList(boolean strict) {
List list = new ArrayList<>();
- for(AbstractElement e : elements)
+ for (AbstractElement e : elements)
list.add(e.string(strict));
return list;
}
@@ -292,7 +329,7 @@ public List toObjectList() {
public List toObjectList(boolean strict) {
List list = new ArrayList<>();
- for(AbstractElement e : elements)
+ for (AbstractElement e : elements)
list.add(e.object(strict));
return list;
}
@@ -365,11 +402,13 @@ public boolean equals(Object obj, boolean strict) {
}
}
- public boolean equals (Object obj) {
+ public boolean equals(Object obj) {
return equals(obj, false);
}
public AbstractArray addAll(AbstractArray array) {
+ if(array == null)
+ throw new IllegalArgumentException("array may not be null");
elements.addAll(array.elements);
return this;
}
diff --git a/src/main/java/org/javawebstack/abstractdata/AbstractElement.java b/src/main/java/org/javawebstack/abstractdata/AbstractElement.java
index 852a783..2db30ca 100644
--- a/src/main/java/org/javawebstack/abstractdata/AbstractElement.java
+++ b/src/main/java/org/javawebstack/abstractdata/AbstractElement.java
@@ -7,6 +7,8 @@
import org.javawebstack.abstractdata.json.JsonDumper;
import org.javawebstack.abstractdata.json.JsonParser;
import org.javawebstack.abstractdata.util.QueryString;
+import org.javawebstack.abstractdata.yaml.YamlDumper;
+import org.javawebstack.abstractdata.yaml.YamlParser;
import org.yaml.snakeyaml.DumperOptions;
import org.yaml.snakeyaml.Yaml;
@@ -110,16 +112,7 @@ default String toJsonString() {
Object toObject();
default String toYaml(boolean pretty) {
- Yaml yaml;
- if (pretty) {
- DumperOptions options = new DumperOptions();
- options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
- options.setPrettyFlow(true);
- yaml = new Yaml(options);
- } else {
- yaml = new Yaml();
- }
- return yaml.dump(toObject());
+ return new YamlDumper().setPretty(pretty).dump(this);
}
default String toYaml() {
@@ -127,24 +120,23 @@ default String toYaml() {
}
static AbstractElement fromYaml(String source, boolean singleRoot) {
- Yaml yaml = new Yaml();
- Object object = yaml.load(source);
- if (singleRoot && object instanceof List) {
- List