001/* 002 * SPDX-FileCopyrightText: none 003 * SPDX-License-Identifier: CC0-1.0 004 */ 005 006package gov.nist.secauto.metaschema.databind.model; 007 008import gov.nist.secauto.metaschema.core.model.IBoundObject; 009import gov.nist.secauto.metaschema.core.model.IContainerFlagSupport; 010import gov.nist.secauto.metaschema.core.model.IFeatureDefinitionInstanceInlined; 011import gov.nist.secauto.metaschema.core.util.ObjectUtils; 012import gov.nist.secauto.metaschema.databind.model.info.IFeatureScalarItemValueHandler; 013import gov.nist.secauto.metaschema.databind.model.info.IItemReadHandler; 014import gov.nist.secauto.metaschema.databind.model.info.IItemWriteHandler; 015 016import java.io.IOException; 017 018public interface IBoundInstanceModelFieldScalar 019 extends IBoundInstanceModelField<Object>, 020 IBoundDefinitionModelField<Object>, IFeatureScalarItemValueHandler, 021 IFeatureDefinitionInstanceInlined<IBoundDefinitionModelField<Object>, IBoundInstanceModelFieldScalar> { 022 023 // integrate above 024 @Override 025 default IBoundDefinitionModelField<Object> getDefinition() { 026 return IFeatureDefinitionInstanceInlined.super.getDefinition(); 027 } 028 029 @Override 030 default IBoundInstanceModelFieldScalar getInlineInstance() { 031 return IFeatureDefinitionInstanceInlined.super.getInlineInstance(); 032 } 033 034 @Override 035 IBoundDefinitionModelAssembly getContainingDefinition(); 036 037 @Override 038 default IContainerFlagSupport<IBoundInstanceFlag> getFlagContainer() { 039 return IContainerFlagSupport.empty(); 040 } 041 042 @Override 043 default IBoundInstanceFlag getJsonKey() { 044 // no flags 045 return null; 046 } 047 048 @Override 049 default IBoundInstanceFlag getItemJsonKey(Object item) { 050 // no flags, no JSON key 051 return null; 052 } 053 054 @Override 055 default Object getFieldValue(Object item) { 056 // the item is the field value 057 return item; 058 } 059 060 @Override 061 default String getJsonValueKeyName() { 062 // no bound value, no value key name 063 return null; 064 } 065 066 @Override 067 default IBoundInstanceFlag getJsonValueKeyFlagInstance() { 068 // no bound value, no value key name 069 return null; 070 } 071 072 @Override 073 default Object readItem(IBoundObject parent, IItemReadHandler handler) throws IOException { 074 return handler.readItemField(ObjectUtils.requireNonNull(parent, "parent"), this); 075 } 076 077 @Override 078 default void writeItem(Object item, IItemWriteHandler handler) throws IOException { 079 handler.writeItemField(item, this); 080 } 081}