Package: ContextBuildingObjectPropertyValueSerializer
ContextBuildingObjectPropertyValueSerializer
name | instruction | branch | complexity | line | method | ||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ContextBuildingObjectPropertyValueSerializer(ObjectGraphTraverser) |
|
|
|
|
|
||||||||||||||||||||
configure(Configuration) |
|
|
|
|
|
||||||||||||||||||||
isIndividual(SerializationContext) |
|
|
|
|
|
||||||||||||||||||||
registerTermDefinition(SerializationContext) |
|
|
|
|
|
||||||||||||||||||||
serialize(Object, SerializationContext) |
|
|
|
|
|
Coverage
1: package cz.cvut.kbss.jsonld.serialization.serializer.context;
2:
3: import cz.cvut.kbss.jsonld.ConfigParam;
4: import cz.cvut.kbss.jsonld.Configuration;
5: import cz.cvut.kbss.jsonld.JsonLd;
6: import cz.cvut.kbss.jsonld.common.BeanClassProcessor;
7: import cz.cvut.kbss.jsonld.serialization.model.JsonNode;
8: import cz.cvut.kbss.jsonld.serialization.serializer.SerializerUtils;
9: import cz.cvut.kbss.jsonld.serialization.serializer.compact.ObjectPropertyValueSerializer;
10: import cz.cvut.kbss.jsonld.serialization.traversal.ObjectGraphTraverser;
11: import cz.cvut.kbss.jsonld.serialization.traversal.SerializationContext;
12:
13: import java.util.Collection;
14:
15: public class ContextBuildingObjectPropertyValueSerializer extends ObjectPropertyValueSerializer {
16:
17: private boolean serializeUsingExtendedDefinition;
18:
19: public ContextBuildingObjectPropertyValueSerializer(ObjectGraphTraverser graphTraverser) {
20: super(graphTraverser);
21: }
22:
23: @Override
24: public JsonNode serialize(Object value, SerializationContext ctx) {
25:• if (ctx.getTerm() != null) {
26: registerTermDefinition(ctx);
27: }
28: return super.serialize(value, ctx);
29: }
30:
31: private void registerTermDefinition(SerializationContext<?> ctx) {
32:• if (serializeUsingExtendedDefinition && isIndividual(ctx)) {
33: ctx.registerTermMapping(ctx.getFieldName(),
34: SerializerUtils.createTypedTermDefinition(ctx.getFieldName(), ctx.getTerm(),
35: JsonLd.ID));
36: } else {
37: ctx.registerTermMapping(ctx.getFieldName(), ctx.getTerm());
38: }
39: }
40:
41: private static boolean isIndividual(SerializationContext<?> ctx) {
42:• if (BeanClassProcessor.isIndividualType(ctx.getValue().getClass())) {
43: return true;
44: }
45:• if (ctx.getValue() instanceof Collection) {
46: final Collection<?> c = (Collection<?>) ctx.getValue();
47:• for (Object elem : c) {
48:• if (elem != null) {
49: return BeanClassProcessor.isIndividualType(elem.getClass());
50: }
51: }
52: }
53: return false;
54: }
55:
56: @Override
57: public void configure(Configuration config) {
58: this.serializeUsingExtendedDefinition = config.is(ConfigParam.SERIALIZE_INDIVIDUALS_USING_EXPANDED_DEFINITION);
59: }
60: }