File tree Expand file tree Collapse file tree
asdf-core/src/main/java/org/asdfformat/asdf/node Expand file tree Collapse file tree Original file line number Diff line number Diff line change 77import java .time .Instant ;
88import java .util .List ;
99import java .util .Map ;
10+ import java .util .Optional ;
1011
1112
1213/**
@@ -138,6 +139,34 @@ public interface AsdfNode extends Iterable<AsdfNode> {
138139 */
139140 AsdfNode get (AsdfNode key );
140141
142+ /**
143+ * Get an optional mapping value as AsdfNode, indexed by String key.
144+ * @param key mapping key
145+ * @return value
146+ */
147+ Optional <AsdfNode > getOptional (String key );
148+
149+ /**
150+ * Get an optional sequence value or mapping value as AsdfNode, indexed by long key.
151+ * @param key sequence index or mapping key
152+ * @return value
153+ */
154+ Optional <AsdfNode > getOptional (long key );
155+
156+ /**
157+ * Get an optional mapping value as AsdfNode, indexed by boolean key.
158+ * @param key mapping key
159+ * @return value
160+ */
161+ Optional <AsdfNode > getOptional (boolean key );
162+
163+ /**
164+ * Get an optional mapping value as AsdfNode, indexed by AsdfNode key.
165+ * @param key mapping key
166+ * @return value
167+ */
168+ Optional <AsdfNode > getOptional (AsdfNode key );
169+
141170 /**
142171 * Get a NUMBER mapping value as BigDecimal, indexed by String key.
143172 * @param key mapping key
Original file line number Diff line number Diff line change 1111import java .util .Iterator ;
1212import java .util .List ;
1313import java .util .Map ;
14+ import java .util .Optional ;
1415
1516public abstract class AsdfNodeBase implements AsdfNode {
1617
@@ -99,6 +100,42 @@ public AsdfNode get(final AsdfNode key) {
99100 throw new IllegalStateException (makeGetErrorMessage ("AsdfNode" ));
100101 }
101102
103+ @ Override
104+ public Optional <AsdfNode > getOptional (final String key ) {
105+ if (containsKey (key )) {
106+ return Optional .of (get (key ));
107+ } else {
108+ return Optional .empty ();
109+ }
110+ }
111+
112+ @ Override
113+ public Optional <AsdfNode > getOptional (final long key ) {
114+ if (containsKey (key )) {
115+ return Optional .of (get (key ));
116+ } else {
117+ return Optional .empty ();
118+ }
119+ }
120+
121+ @ Override
122+ public Optional <AsdfNode > getOptional (final boolean key ) {
123+ if (containsKey (key )) {
124+ return Optional .of (get (key ));
125+ } else {
126+ return Optional .empty ();
127+ }
128+ }
129+
130+ @ Override
131+ public Optional <AsdfNode > getOptional (final AsdfNode key ) {
132+ if (containsKey (key )) {
133+ return Optional .of (get (key ));
134+ } else {
135+ return Optional .empty ();
136+ }
137+ }
138+
102139 @ Override
103140 public BigDecimal getBigDecimal (final String key ) {
104141 return get (key ).asBigDecimal ();
You can’t perform that action at this time.
0 commit comments