1   /*
2    * SPDX-FileCopyrightText: none
3    * SPDX-License-Identifier: CC0-1.0
4    */
5   
6   package gov.nist.secauto.metaschema.databind.model;
7   
8   import gov.nist.secauto.metaschema.core.model.IBoundObject;
9   import gov.nist.secauto.metaschema.core.model.IContainerFlagSupport;
10  import gov.nist.secauto.metaschema.core.model.IFeatureDefinitionInstanceInlined;
11  import gov.nist.secauto.metaschema.core.util.ObjectUtils;
12  import gov.nist.secauto.metaschema.databind.model.info.IFeatureScalarItemValueHandler;
13  import gov.nist.secauto.metaschema.databind.model.info.IItemReadHandler;
14  import gov.nist.secauto.metaschema.databind.model.info.IItemWriteHandler;
15  
16  import java.io.IOException;
17  
18  public interface IBoundInstanceModelFieldScalar
19      extends IBoundInstanceModelField<Object>,
20      IBoundDefinitionModelField<Object>, IFeatureScalarItemValueHandler,
21      IFeatureDefinitionInstanceInlined<IBoundDefinitionModelField<Object>, IBoundInstanceModelFieldScalar> {
22  
23    // integrate above
24    @Override
25    default IBoundDefinitionModelField<Object> getDefinition() {
26      return IFeatureDefinitionInstanceInlined.super.getDefinition();
27    }
28  
29    @Override
30    default IBoundInstanceModelFieldScalar getInlineInstance() {
31      return IFeatureDefinitionInstanceInlined.super.getInlineInstance();
32    }
33  
34    @Override
35    IBoundDefinitionModelAssembly getContainingDefinition();
36  
37    @Override
38    default IContainerFlagSupport<IBoundInstanceFlag> getFlagContainer() {
39      return IContainerFlagSupport.empty();
40    }
41  
42    @Override
43    default IBoundInstanceFlag getJsonKey() {
44      // no flags
45      return null;
46    }
47  
48    @Override
49    default IBoundInstanceFlag getItemJsonKey(Object item) {
50      // no flags, no JSON key
51      return null;
52    }
53  
54    @Override
55    default Object getFieldValue(Object item) {
56      // the item is the field value
57      return item;
58    }
59  
60    @Override
61    default String getJsonValueKeyName() {
62      // no bound value, no value key name
63      return null;
64    }
65  
66    @Override
67    default IBoundInstanceFlag getJsonValueKeyFlagInstance() {
68      // no bound value, no value key name
69      return null;
70    }
71  
72    @Override
73    default Object readItem(IBoundObject parent, IItemReadHandler handler) throws IOException {
74      return handler.readItemField(ObjectUtils.requireNonNull(parent, "parent"), this);
75    }
76  
77    @Override
78    default void writeItem(Object item, IItemWriteHandler handler) throws IOException {
79      handler.writeItemField(item, this);
80    }
81  }