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.util.ObjectUtils;
12 import dev.metaschema.databind.io.BindingException;
13 import dev.metaschema.databind.model.info.IFeatureComplexItemValueHandler;
14 import dev.metaschema.databind.model.info.IItemReadHandler;
15 import dev.metaschema.databind.model.info.IItemWriteHandler;
16
17
18
19
20
21 public interface IBoundInstanceModelFieldComplex
22 extends IBoundInstanceModelField<IBoundObject>, IFeatureComplexItemValueHandler {
23
24 @Override
25 IBoundDefinitionModelFieldComplex getDefinition();
26
27 @Override
28 default boolean isEffectiveValueWrappedInXml() {
29
30 return true;
31 }
32
33 @Override
34 default IBoundObject readItem(IBoundObject parent, IItemReadHandler handler) throws IOException {
35 return handler.readItemField(ObjectUtils.requireNonNull(parent, "parent"), this);
36 }
37
38 @Override
39 default void writeItem(IBoundObject item, IItemWriteHandler handler) throws IOException {
40 handler.writeItemField(item, this);
41 }
42
43 @Override
44 default IBoundObject deepCopyItem(IBoundObject item, IBoundObject parentInstance) throws BindingException {
45 return getDefinition().deepCopyItem(item, parentInstance);
46 }
47
48 @Override
49 default Class<? extends IBoundObject> getBoundClass() {
50 return getDefinition().getBoundClass();
51 }
52
53 @Override
54 default void callBeforeDeserialize(IBoundObject targetObject, IBoundObject parentObject) throws BindingException {
55 getDefinition().callBeforeDeserialize(targetObject, parentObject);
56 }
57
58 @Override
59 default void callAfterDeserialize(IBoundObject targetObject, IBoundObject parentObject) throws BindingException {
60 getDefinition().callAfterDeserialize(targetObject, parentObject);
61 }
62 }