1
2
3
4
5
6 package gov.nist.secauto.metaschema.databind.model;
7
8 import com.fasterxml.jackson.core.JsonFactory;
9 import com.fasterxml.jackson.core.JsonParseException;
10 import com.fasterxml.jackson.core.JsonParser;
11
12 import gov.nist.secauto.metaschema.core.model.IBoundObject;
13 import gov.nist.secauto.metaschema.core.util.ObjectUtils;
14 import gov.nist.secauto.metaschema.databind.DefaultBindingContext;
15 import gov.nist.secauto.metaschema.databind.IBindingContext;
16 import gov.nist.secauto.metaschema.databind.model.test.RootBoundAssembly;
17
18 import org.jmock.junit5.JUnit5Mockery;
19 import org.junit.jupiter.api.extension.RegisterExtension;
20
21 import java.io.IOException;
22 import java.io.Reader;
23
24 import edu.umd.cs.findbugs.annotations.NonNull;
25
26 public class AbstractBoundModelTestSupport {
27 @RegisterExtension
28 private final JUnit5Mockery context = new JUnit5Mockery();
29
30 @NonNull
31 private final IBindingContext bindingContext = DefaultBindingContext.instance();
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 @NonNull
48 protected JUnit5Mockery getJUnit5Mockery() {
49 return ObjectUtils.requireNonNull(context);
50 }
51
52 @NonNull
53 protected IBindingContext getBindingContext() {
54 return bindingContext;
55 }
56
57 @NonNull
58 protected IBoundDefinitionModelComplex registerClassBinding(@NonNull Class<? extends IBoundObject> clazz) {
59 IBoundDefinitionModelComplex definition = getBindingContext().getBoundDefinitionForClass(clazz);
60 if (definition == null) {
61 throw new IllegalArgumentException(String.format("Unable to find bound definition for class '%s'.",
62 clazz.getName()));
63 }
64 return definition;
65 }
66
67 @NonNull
68 protected IBoundModule registerModule(@NonNull Class<? extends IBoundModule> clazz) {
69 return getBindingContext().registerModule(clazz);
70 }
71
72 @NonNull
73 protected IBoundDefinitionModelAssembly getRootAssemblyClassBinding() {
74 return ObjectUtils.requireNonNull((IBoundDefinitionModelAssembly) getBindingContext()
75 .getBoundDefinitionForClass(RootBoundAssembly.class));
76 }
77
78 @SuppressWarnings("resource")
79 @NonNull
80 protected JsonParser newJsonParser(@NonNull Reader reader) throws JsonParseException, IOException {
81 JsonFactory factory = new JsonFactory();
82 JsonParser jsonParser = factory.createParser(reader);
83 return ObjectUtils.notNull(jsonParser);
84 }
85 }