From 81cf27a95af793f178b9614890a1c66a50379095 Mon Sep 17 00:00:00 2001 From: Edward Slavich Date: Fri, 18 Jul 2025 16:47:40 -0800 Subject: [PATCH 1/3] Add convenience methods for fetching optional values --- .../org/asdfformat/asdf/node/AsdfNode.java | 57 +++++++++++++++++++ .../asdf/node/impl/AsdfNodeBase.java | 37 ++++++++++++ 2 files changed, 94 insertions(+) diff --git a/asdf-core/src/main/java/org/asdfformat/asdf/node/AsdfNode.java b/asdf-core/src/main/java/org/asdfformat/asdf/node/AsdfNode.java index eec05df..a0d13b8 100644 --- a/asdf-core/src/main/java/org/asdfformat/asdf/node/AsdfNode.java +++ b/asdf-core/src/main/java/org/asdfformat/asdf/node/AsdfNode.java @@ -7,6 +7,7 @@ import java.time.Instant; import java.util.List; import java.util.Map; +import java.util.Optional; /** @@ -138,6 +139,34 @@ public interface AsdfNode extends Iterable { */ AsdfNode get(AsdfNode key); + /** + * Get an optional mapping value as AsdfNode, indexed by String key. + * @param key mapping key + * @return value + */ + Optional 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 getOptional(long key); + + /** + * Get an optional mapping value as AsdfNode, indexed by boolean key. + * @param key mapping key + * @return value + */ + Optional getOptional(boolean key); + + /** + * Get an optional mapping value as AsdfNode, indexed by AsdfNode key. + * @param key mapping key + * @return value + */ + Optional getOptional(AsdfNode key); + /** * Get a NUMBER mapping value as BigDecimal, indexed by String key. * @param key mapping key @@ -166,6 +195,34 @@ public interface AsdfNode extends Iterable { */ BigDecimal getBigDecimal(AsdfNode key); + /** + * Get a NUMBER mapping value as BigDecimal, indexed by String key. + * @param key mapping key + * @return value + */ + Optional getBigDecimalOptional(String key); + + /** + * Get a NUMBER sequence value or mapping value as BigDecimal, indexed by long key. + * @param key sequence index or mapping key + * @return value + */ + Optional getBigDecimalOptional(long key); + + /** + * Get a NUMBER mapping value as BigDecimal, indexed by boolean key. + * @param key mapping key + * @return value + */ + Optional getBigDecimalOptional(boolean key); + + /** + * Get a NUMBER sequence value or mapping value as BigDecimal, indexed by AsdfNode key. + * @param key mapping key + * @return value + */ + Optional getBigDecimalOptional(AsdfNode key); + /** * Get a NUMBER mapping value as BigInteger, indexed by String key. * @param key mapping key diff --git a/asdf-core/src/main/java/org/asdfformat/asdf/node/impl/AsdfNodeBase.java b/asdf-core/src/main/java/org/asdfformat/asdf/node/impl/AsdfNodeBase.java index dbfaa1c..9371787 100644 --- a/asdf-core/src/main/java/org/asdfformat/asdf/node/impl/AsdfNodeBase.java +++ b/asdf-core/src/main/java/org/asdfformat/asdf/node/impl/AsdfNodeBase.java @@ -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 { @@ -99,6 +100,42 @@ public AsdfNode get(final AsdfNode key) { throw new IllegalStateException(makeGetErrorMessage("AsdfNode")); } + @Override + public Optional getOptional(final String key) { + if (containsKey(key)) { + return Optional.empty(); + } else { + return Optional.of(get(key)); + } + } + + @Override + public Optional getOptional(final long key) { + if (containsKey(key)) { + return Optional.empty(); + } else { + return Optional.of(get(key)); + } + } + + @Override + public Optional getOptional(final boolean key) { + if (containsKey(key)) { + return Optional.empty(); + } else { + return Optional.of(get(key)); + } + } + + @Override + public Optional getOptional(final AsdfNode key) { + if (containsKey(key)) { + return Optional.empty(); + } else { + return Optional.of(get(key)); + } + } + @Override public BigDecimal getBigDecimal(final String key) { return get(key).asBigDecimal(); From dd57f41b01e3ce1eb6a19307d31578df2f433018 Mon Sep 17 00:00:00 2001 From: Edward Slavich Date: Fri, 18 Jul 2025 16:48:31 -0800 Subject: [PATCH 2/3] Remove wayward BigDecimal optional methods --- .../org/asdfformat/asdf/node/AsdfNode.java | 28 ------------------- 1 file changed, 28 deletions(-) diff --git a/asdf-core/src/main/java/org/asdfformat/asdf/node/AsdfNode.java b/asdf-core/src/main/java/org/asdfformat/asdf/node/AsdfNode.java index a0d13b8..683b851 100644 --- a/asdf-core/src/main/java/org/asdfformat/asdf/node/AsdfNode.java +++ b/asdf-core/src/main/java/org/asdfformat/asdf/node/AsdfNode.java @@ -195,34 +195,6 @@ public interface AsdfNode extends Iterable { */ BigDecimal getBigDecimal(AsdfNode key); - /** - * Get a NUMBER mapping value as BigDecimal, indexed by String key. - * @param key mapping key - * @return value - */ - Optional getBigDecimalOptional(String key); - - /** - * Get a NUMBER sequence value or mapping value as BigDecimal, indexed by long key. - * @param key sequence index or mapping key - * @return value - */ - Optional getBigDecimalOptional(long key); - - /** - * Get a NUMBER mapping value as BigDecimal, indexed by boolean key. - * @param key mapping key - * @return value - */ - Optional getBigDecimalOptional(boolean key); - - /** - * Get a NUMBER sequence value or mapping value as BigDecimal, indexed by AsdfNode key. - * @param key mapping key - * @return value - */ - Optional getBigDecimalOptional(AsdfNode key); - /** * Get a NUMBER mapping value as BigInteger, indexed by String key. * @param key mapping key From 2ae003bdaba48cb11f98d58ff845cce190fd10da Mon Sep 17 00:00:00 2001 From: Edward Slavich Date: Fri, 18 Jul 2025 16:49:56 -0800 Subject: [PATCH 3/3] Whoops --- .../asdfformat/asdf/node/impl/AsdfNodeBase.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/asdf-core/src/main/java/org/asdfformat/asdf/node/impl/AsdfNodeBase.java b/asdf-core/src/main/java/org/asdfformat/asdf/node/impl/AsdfNodeBase.java index 9371787..a3e04a5 100644 --- a/asdf-core/src/main/java/org/asdfformat/asdf/node/impl/AsdfNodeBase.java +++ b/asdf-core/src/main/java/org/asdfformat/asdf/node/impl/AsdfNodeBase.java @@ -103,36 +103,36 @@ public AsdfNode get(final AsdfNode key) { @Override public Optional getOptional(final String key) { if (containsKey(key)) { - return Optional.empty(); - } else { return Optional.of(get(key)); + } else { + return Optional.empty(); } } @Override public Optional getOptional(final long key) { if (containsKey(key)) { - return Optional.empty(); - } else { return Optional.of(get(key)); + } else { + return Optional.empty(); } } @Override public Optional getOptional(final boolean key) { if (containsKey(key)) { - return Optional.empty(); - } else { return Optional.of(get(key)); + } else { + return Optional.empty(); } } @Override public Optional getOptional(final AsdfNode key) { if (containsKey(key)) { - return Optional.empty(); - } else { return Optional.of(get(key)); + } else { + return Optional.empty(); } }