Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,6 @@ You can find the current docs on our [website](https://docs.javawebstack.org/fra
<dependency>
<groupId>org.javawebstack</groupId>
<artifactId>abstract-data</artifactId>
<version>1.0.2</version>
<version>1.0.3</version>
</dependency>
```
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<buildVersion>1.0.2-SNAPSHOT</buildVersion>
<buildVersion>1.0.3-SNAPSHOT</buildVersion>
</properties>

<groupId>org.javawebstack</groupId>
Expand Down
34 changes: 18 additions & 16 deletions src/main/java/org/javawebstack/abstractdata/AbstractObject.java
Original file line number Diff line number Diff line change
Expand Up @@ -65,10 +65,22 @@ public boolean isObject() {
return true;
}

public AbstractObject object() {
public AbstractObject object(boolean strict) throws AbstractCoercingException {
return this;
}

public AbstractArray array(boolean strict) throws AbstractCoercingException {
if(strict)
throw new AbstractCoercingException(Type.ARRAY, Type.OBJECT);
AbstractArray array = new AbstractArray();
for (int i = 0; i < size(); i++) {
if (!has(String.valueOf(i)))
throw new AbstractCoercingException(Type.ARRAY, this);
array.add(get(String.valueOf(i)));
}
return array;
}

public AbstractElement get(String key) {
return entries.get(key);
}
Expand All @@ -91,6 +103,8 @@ public AbstractElement query(String query) {
}

public AbstractElement query(String query, AbstractElement orElse) {
if(orElse == null)
orElse = AbstractNull.VALUE;
AbstractElement value = query(query);
return (value != null && !value.isNull()) ? value : orElse;
}
Expand Down Expand Up @@ -127,18 +141,6 @@ public int size() {
return entries.size();
}

public AbstractArray array(boolean strict) throws AbstractCoercingException {
if(strict)
throw new AbstractCoercingException(Type.ARRAY, Type.OBJECT);
AbstractArray array = new AbstractArray();
for (int i = 0; i < size(); i++) {
if (!has(String.valueOf(i)))
throw new AbstractCoercingException(Type.ARRAY, this);
array.add(get(String.valueOf(i)));
}
return array;
}

public AbstractObject object(String key) throws AbstractCoercingException {
return query(key, AbstractNull.VALUE).object();
}
Expand Down Expand Up @@ -168,23 +170,23 @@ public String string(String key) throws AbstractCoercingException {
}

public String string(String key, String orElse) throws AbstractCoercingException {
return query(key, new AbstractPrimitive(orElse)).string();
return query(key, orElse == null ? AbstractNull.VALUE : new AbstractPrimitive(orElse)).string();
}

public Boolean bool(String key) throws AbstractCoercingException {
return query(key, AbstractNull.VALUE).bool();
}

public Boolean bool(String key, Boolean orElse) throws AbstractCoercingException {
return query(key, new AbstractPrimitive(orElse)).bool();
return query(key, orElse == null ? AbstractNull.VALUE : new AbstractPrimitive(orElse)).bool();
}

public Number number(String key) throws AbstractCoercingException {
return query(key, AbstractNull.VALUE).number();
}

public Number number(String key, Number orElse) throws AbstractCoercingException {
return query(key, new AbstractPrimitive(orElse)).number();
return query(key, orElse == null ? AbstractNull.VALUE : new AbstractPrimitive(orElse)).number();
}

public Object toObject() {
Expand Down