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
29 changes: 29 additions & 0 deletions asdf-core/src/main/java/org/asdfformat/asdf/node/AsdfNode.java
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.time.Instant;
import java.util.List;
import java.util.Map;
import java.util.Optional;


/**
Expand Down Expand Up @@ -138,6 +139,34 @@ public interface AsdfNode extends Iterable<AsdfNode> {
*/
AsdfNode get(AsdfNode key);

/**
* Get an optional mapping value as AsdfNode, indexed by String key.
* @param key mapping key
* @return value
*/
Optional<AsdfNode> getOptional(String key);

/**
* Get an optional sequence value or mapping value as AsdfNode, indexed by long key.
* @param key sequence index or mapping key
* @return value
*/
Optional<AsdfNode> getOptional(long key);

/**
* Get an optional mapping value as AsdfNode, indexed by boolean key.
* @param key mapping key
* @return value
*/
Optional<AsdfNode> getOptional(boolean key);

/**
* Get an optional mapping value as AsdfNode, indexed by AsdfNode key.
* @param key mapping key
* @return value
*/
Optional<AsdfNode> getOptional(AsdfNode key);

/**
* Get a NUMBER mapping value as BigDecimal, indexed by String key.
* @param key mapping key
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Optional;

public abstract class AsdfNodeBase implements AsdfNode {

Expand Down Expand Up @@ -99,6 +100,42 @@ public AsdfNode get(final AsdfNode key) {
throw new IllegalStateException(makeGetErrorMessage("AsdfNode"));
}

@Override
public Optional<AsdfNode> getOptional(final String key) {
if (containsKey(key)) {
return Optional.of(get(key));
} else {
return Optional.empty();
}
}

@Override
public Optional<AsdfNode> getOptional(final long key) {
if (containsKey(key)) {
return Optional.of(get(key));
} else {
return Optional.empty();
}
}

@Override
public Optional<AsdfNode> getOptional(final boolean key) {
if (containsKey(key)) {
return Optional.of(get(key));
} else {
return Optional.empty();
}
}

@Override
public Optional<AsdfNode> getOptional(final AsdfNode key) {
if (containsKey(key)) {
return Optional.of(get(key));
} else {
return Optional.empty();
}
}

@Override
public BigDecimal getBigDecimal(final String key) {
return get(key).asBigDecimal();
Expand Down