001/* 002 * SPDX-FileCopyrightText: none 003 * SPDX-License-Identifier: CC0-1.0 004 */ 005 006package gov.nist.secauto.metaschema.databind.model.info; 007 008import gov.nist.secauto.metaschema.core.datatype.IDataTypeAdapter; 009import gov.nist.secauto.metaschema.core.model.IBoundObject; 010import gov.nist.secauto.metaschema.databind.io.BindingException; 011import gov.nist.secauto.metaschema.databind.model.IValuedMutable; 012 013import edu.umd.cs.findbugs.annotations.NonNull; 014import edu.umd.cs.findbugs.annotations.Nullable; 015 016public interface IFeatureScalarItemValueHandler 017 extends IItemValueHandler<Object>, IValuedMutable { 018 019 default void setValue(@NonNull Object parent, @NonNull String text) { 020 Object item = getValueFromString(text); 021 setValue(parent, item); 022 } 023 024 @Nullable 025 default String toStringFromItem(@NonNull Object parent) { 026 Object item = getValue(parent); 027 return item == null ? null : getJavaTypeAdapter().asString(item); 028 } 029 030 default Object getValueFromString(@NonNull String text) { 031 return getJavaTypeAdapter().parse(text); 032 } 033 034 /** 035 * Get the data type adapter supporting the scalar value. 036 * 037 * @return the data type adapter 038 */ 039 @NonNull 040 IDataTypeAdapter<?> getJavaTypeAdapter(); 041 042 @Override 043 default Object deepCopyItem(Object source, IBoundObject parentInstance) throws BindingException { 044 return getJavaTypeAdapter().copy(source); 045 } 046}