35
35
import static cz .cvut .kbss .jsonld .environment .TestUtil .readAndExpand ;
36
36
import static org .hamcrest .MatcherAssert .assertThat ;
37
37
import static org .hamcrest .Matchers .hasItem ;
38
+ import static org .hamcrest .Matchers .not ;
38
39
import static org .junit .jupiter .api .Assertions .assertFalse ;
39
40
import static org .junit .jupiter .api .Assertions .assertThrows ;
40
41
import static org .junit .jupiter .api .Assertions .assertTrue ;
@@ -45,6 +46,7 @@ class JsonLdDeserializerTest {
45
46
void constructionScansClasspathAndBuildsTypeMap () throws Exception {
46
47
final Configuration config = new Configuration ();
47
48
config .set (ConfigParam .SCAN_PACKAGE , "cz.cvut.kbss.jsonld" );
49
+ config .set (ConfigParam .DISABLE_TYPE_MAP_CACHE , "true" );
48
50
final JsonLdDeserializer deserializer = JsonLdDeserializer .createExpandedDeserializer (config );
49
51
assertFalse (typeMap (deserializer ).get (Vocabulary .STUDY ).isEmpty ());
50
52
assertTrue (typeMap (deserializer ).get (Vocabulary .STUDY ).contains (Study .class ));
@@ -60,6 +62,7 @@ private TypeMap typeMap(JsonLdDeserializer deserializer) throws Exception {
60
62
void constructionScansClasspathWithSpecifiedPackageAndBuildsTypeMap () throws Exception {
61
63
final Configuration config = new Configuration ();
62
64
config .set (ConfigParam .SCAN_PACKAGE , "cz.cvut.kbss.jsonld.deserialization" );
65
+ config .set (ConfigParam .DISABLE_TYPE_MAP_CACHE , "true" );
63
66
final JsonLdDeserializer deserializer = JsonLdDeserializer .createExpandedDeserializer (config );
64
67
assertTrue (typeMap (deserializer ).get (Vocabulary .GENERIC_MEMBER ).isEmpty ());
65
68
assertTrue (typeMap (deserializer ).get (Vocabulary .AGENT ).contains (TestClass .class ));
@@ -82,8 +85,38 @@ void deserializationThrowsJsonLdDeserializationExceptionWhenInputIsNotValidJsonL
82
85
void constructionExpandsCompactIrisWhenBuildingTypeMap () throws Exception {
83
86
final Configuration config = new Configuration ();
84
87
config .set (ConfigParam .SCAN_PACKAGE , "cz.cvut.kbss.jsonld.environment.model" );
88
+ config .set (ConfigParam .DISABLE_TYPE_MAP_CACHE , "true" );
85
89
final JsonLdDeserializer deserializer = JsonLdDeserializer .createExpandedDeserializer (config );
86
90
assertFalse (typeMap (deserializer ).get (Vocabulary .STUDY ).isEmpty ());
87
91
assertThat (typeMap (deserializer ).get (Vocabulary .STUDY ), hasItem (StudyWithNamespaces .class ));
88
92
}
93
+
94
+ @ Test
95
+ void constructionCachesTypeMapByDefault () throws Exception {
96
+ final Configuration config = new Configuration ();
97
+ config .set (ConfigParam .SCAN_PACKAGE , "cz.cvut.kbss.jsonld" );
98
+ final JsonLdDeserializer deserializerOne = JsonLdDeserializer .createExpandedDeserializer (config );
99
+ final TypeMap typeMapOne = typeMap (deserializerOne );
100
+ assertThat (typeMapOne .get (Vocabulary .STUDY ), hasItem (Study .class ));
101
+ config .set (ConfigParam .SCAN_PACKAGE , "cz.cvut.kbss.jsonld.deserialization" );
102
+ final JsonLdDeserializer deserializerTwo = JsonLdDeserializer .createExpandedDeserializer (config );
103
+ final TypeMap typeMapTwo = typeMap (deserializerTwo );
104
+ // If classpath scanning occurred again, the updated scan package would be too specific for Study
105
+ assertThat (typeMapTwo .get (Vocabulary .STUDY ), hasItem (Study .class ));
106
+ }
107
+
108
+ @ Test
109
+ void constructionBuildsFreshTypeMapWhenTypeMapCacheIsDisabled () throws Exception {
110
+ final Configuration config = new Configuration ();
111
+ config .set (ConfigParam .SCAN_PACKAGE , "cz.cvut.kbss.jsonld" );
112
+ final JsonLdDeserializer deserializerOne = JsonLdDeserializer .createExpandedDeserializer (config );
113
+ final TypeMap typeMapOne = typeMap (deserializerOne );
114
+ assertThat (typeMapOne .get (Vocabulary .STUDY ), hasItem (Study .class ));
115
+ config .set (ConfigParam .SCAN_PACKAGE , "cz.cvut.kbss.jsonld.deserialization" );
116
+ config .set (ConfigParam .DISABLE_TYPE_MAP_CACHE , "true" );
117
+ final JsonLdDeserializer deserializerTwo = JsonLdDeserializer .createExpandedDeserializer (config );
118
+ final TypeMap typeMapTwo = typeMap (deserializerTwo );
119
+ // If classpath scanning occurred again, the updated scan package would be too specific for Study
120
+ assertThat (typeMapTwo .get (Vocabulary .STUDY ), not (hasItem (Study .class )));
121
+ }
89
122
}
0 commit comments