1
2
3
4
5
6 package dev.metaschema.databind.model;
7
8 import java.io.IOException;
9
10 import dev.metaschema.core.model.IBoundObject;
11 import dev.metaschema.core.qname.IEnhancedQName;
12 import dev.metaschema.core.util.ObjectUtils;
13 import dev.metaschema.databind.io.BindingException;
14 import dev.metaschema.databind.model.info.IFeatureScalarItemValueHandler;
15 import dev.metaschema.databind.model.info.IItemReadHandler;
16 import dev.metaschema.databind.model.info.IItemWriteHandler;
17 import edu.umd.cs.findbugs.annotations.NonNull;
18 import edu.umd.cs.findbugs.annotations.Nullable;
19
20
21
22
23
24
25
26 public interface IBoundFieldValue extends IFeatureScalarItemValueHandler, IBoundProperty<Object> {
27 @Override
28 @Nullable
29 Object getDefaultValue();
30
31
32
33
34
35
36 @NonNull
37 IBoundDefinitionModelFieldComplex getParentFieldDefinition();
38
39
40
41
42
43
44
45
46
47
48 @Nullable
49 String getJsonValueKeyFlagName();
50
51
52
53
54
55
56
57
58
59
60 @NonNull
61 String getJsonValueKeyName();
62
63 @Override
64 default Object getEffectiveDefaultValue() {
65 return getDefaultValue();
66 }
67
68 @Override
69 default Object readItem(IBoundObject parent, IItemReadHandler handler) throws IOException {
70 return handler.readItemFieldValue(ObjectUtils.requireNonNull(parent, "parent"), this);
71 }
72
73 @Override
74 default void writeItem(Object item, IItemWriteHandler handler) throws IOException {
75 handler.writeItemFieldValue(item, this);
76 }
77
78 @Override
79 default void deepCopy(@NonNull IBoundObject fromInstance, @NonNull IBoundObject toInstance) throws BindingException {
80 Object value = getValue(fromInstance);
81 if (value != null) {
82 setValue(toInstance, value);
83 }
84 }
85
86 @Override
87 default boolean canHandleXmlQName(IEnhancedQName qname) {
88
89 return getJavaTypeAdapter().canHandleQName(qname);
90 }
91
92 }