Skip to content

Commit 948be91

Browse files
committed
[Enhancement #54] Minor code cleanup, add some tests.
1 parent 273985a commit 948be91

File tree

5 files changed

+69
-17
lines changed

5 files changed

+69
-17
lines changed

src/main/java/cz/cvut/kbss/jsonld/serialization/serializer/compact/IndividualSerializer.java

+10-11
Original file line numberDiff line numberDiff line change
@@ -21,22 +21,21 @@ public class IndividualSerializer implements ValueSerializer {
2121
public JsonNode serialize(Object value, SerializationContext ctx) {
2222
assert BeanClassProcessor.isIdentifierType(value.getClass()) || value.getClass().isEnum();
2323
if (BeanClassProcessor.isIdentifierType(value.getClass())) {
24-
final ObjectNode node = JsonNodeFactory.createObjectNode(ctx.getTerm());
25-
node.addItem(JsonNodeFactory.createObjectIdNode(idAttribute(ctx), value));
26-
return node;
24+
return serializeValue(value, ctx);
2725
} else {
28-
return serializeEnumConstant((Enum<?>) value, ctx);
26+
assert value instanceof Enum;
27+
final String iri = EnumUtil.resolveMappedIndividual((Enum<?>) value);
28+
return serialize(iri, ctx);
2929
}
3030
}
3131

32-
private String idAttribute(SerializationContext<?> ctx) {
33-
return ctx.getJsonLdContext().getMappedTerm(JsonLd.ID).orElse(JsonLd.ID);
34-
}
35-
36-
protected JsonNode serializeEnumConstant(Enum<?> constant, SerializationContext<?> ctx) {
37-
final String iri = EnumUtil.resolveMappedIndividual(constant);
32+
private JsonNode serializeValue(Object value, SerializationContext<?> ctx) {
3833
final ObjectNode node = JsonNodeFactory.createObjectNode(ctx.getTerm());
39-
node.addItem(JsonNodeFactory.createObjectIdNode(idAttribute(ctx), iri));
34+
node.addItem(JsonNodeFactory.createObjectIdNode(idAttribute(ctx), value));
4035
return node;
4136
}
37+
38+
private String idAttribute(SerializationContext<?> ctx) {
39+
return ctx.getJsonLdContext().getMappedTerm(JsonLd.ID).orElse(JsonLd.ID);
40+
}
4241
}

src/main/java/cz/cvut/kbss/jsonld/serialization/serializer/compact/ObjectPropertyValueSerializer.java

-4
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,7 @@
1212
*/
1313
package cz.cvut.kbss.jsonld.serialization.serializer.compact;
1414

15-
import cz.cvut.kbss.jsonld.JsonLd;
16-
import cz.cvut.kbss.jsonld.common.EnumUtil;
17-
import cz.cvut.kbss.jsonld.serialization.JsonNodeFactory;
1815
import cz.cvut.kbss.jsonld.serialization.model.JsonNode;
19-
import cz.cvut.kbss.jsonld.serialization.model.ObjectNode;
2016
import cz.cvut.kbss.jsonld.serialization.serializer.ValueSerializer;
2117
import cz.cvut.kbss.jsonld.serialization.traversal.ObjectGraphTraverser;
2218
import cz.cvut.kbss.jsonld.serialization.traversal.SerializationContext;

src/main/java/cz/cvut/kbss/jsonld/serialization/serializer/context/ContextBuildingIndividualSerializer.java

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ public class ContextBuildingIndividualSerializer extends IndividualSerializer {
1515

1616
@Override
1717
public JsonNode serialize(Object value, SerializationContext ctx) {
18+
// Assume term has been already registered in context
1819
if (serializeUsingExtendedDefinition) {
1920
if (BeanClassProcessor.isIdentifierType(value.getClass())) {
2021
return JsonNodeFactory.createStringLiteralNode(ctx.getTerm(), value.toString());

src/main/java/cz/cvut/kbss/jsonld/serialization/traversal/ObjectGraphTraverser.java

+6-2
Original file line numberDiff line numberDiff line change
@@ -81,15 +81,15 @@ void traverseSingular(SerializationContext<?> ctx) {
8181
if (ctx.getValue() == null) {
8282
return;
8383
}
84-
final boolean firstEncounter = !knownInstances.containsKey(ctx.getValue());
8584
final boolean shouldTraverse = visitInstance(ctx);
8685
if (!shouldTraverse) {
8786
return;
8887
}
8988
if (isIndividual(ctx)) {
90-
visitor.visitIndividual(ctx);
89+
visitIndividual(ctx);
9190
return;
9291
}
92+
final boolean firstEncounter = !knownInstances.containsKey(ctx.getValue());
9393
openInstance(ctx);
9494
visitIdentifier(ctx);
9595
if (firstEncounter) {
@@ -161,6 +161,10 @@ public boolean visitInstance(SerializationContext<?> ctx) {
161161
return visitor.visitObject(ctx);
162162
}
163163

164+
public void visitIndividual(SerializationContext<?> ctx) {
165+
visitor.visitIndividual(ctx);
166+
}
167+
164168
public void openInstance(SerializationContext<?> ctx) {
165169
if (!BeanClassProcessor.isIdentifierType(ctx.getValue().getClass())) {
166170
final String identifier = resolveIdentifier(ctx.getValue());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
package cz.cvut.kbss.jsonld.serialization.serializer.context;
2+
3+
import cz.cvut.kbss.jopa.vocabulary.OWL;
4+
import cz.cvut.kbss.jsonld.ConfigParam;
5+
import cz.cvut.kbss.jsonld.Configuration;
6+
import cz.cvut.kbss.jsonld.environment.Generator;
7+
import cz.cvut.kbss.jsonld.environment.Vocabulary;
8+
import cz.cvut.kbss.jsonld.environment.model.OwlPropertyType;
9+
import cz.cvut.kbss.jsonld.serialization.context.DummyJsonLdContext;
10+
import cz.cvut.kbss.jsonld.serialization.model.JsonNode;
11+
import cz.cvut.kbss.jsonld.serialization.model.StringLiteralNode;
12+
import cz.cvut.kbss.jsonld.serialization.traversal.SerializationContext;
13+
import org.junit.jupiter.api.Test;
14+
15+
import java.net.URI;
16+
17+
import static org.junit.jupiter.api.Assertions.*;
18+
19+
class ContextBuildingIndividualSerializerTest {
20+
21+
private final ContextBuildingIndividualSerializer sut = new ContextBuildingIndividualSerializer();
22+
23+
@Test
24+
void serializeSerializesUriValueAsStringWhenSerializationWithExtendedTermDefinitionInContextIsEnabled() {
25+
final URI individual = Generator.generateUri();
26+
final SerializationContext<URI> ctx =
27+
new SerializationContext<>(Vocabulary.ORIGIN, individual, DummyJsonLdContext.INSTANCE);
28+
final Configuration config = new Configuration();
29+
config.set(ConfigParam.SERIALIZE_INDIVIDUALS_USING_EXPANDED_DEFINITION, Boolean.TRUE.toString());
30+
31+
sut.configure(config);
32+
final JsonNode result = sut.serialize(individual, ctx);
33+
assertInstanceOf(StringLiteralNode.class, result);
34+
final StringLiteralNode node = (StringLiteralNode) result;
35+
assertEquals(individual.toString(), node.getValue());
36+
}
37+
38+
@Test
39+
void serializeSerializesEnumValueMappedToIndividualAsStringWhenSerializationWithExtendedTermDefinitionInContextIsEnabled() {
40+
final OwlPropertyType value = OwlPropertyType.OBJECT_PROPERTY;
41+
final SerializationContext<OwlPropertyType> ctx =
42+
new SerializationContext<>(Vocabulary.HAS_PROPERTY_TYPE, value, DummyJsonLdContext.INSTANCE);
43+
final Configuration config = new Configuration();
44+
config.set(ConfigParam.SERIALIZE_INDIVIDUALS_USING_EXPANDED_DEFINITION, Boolean.TRUE.toString());
45+
46+
sut.configure(config);
47+
final JsonNode result = sut.serialize(value, ctx);
48+
assertInstanceOf(StringLiteralNode.class, result);
49+
final StringLiteralNode node = (StringLiteralNode) result;
50+
assertEquals(OWL.OBJECT_PROPERTY, node.getValue());
51+
}
52+
}

0 commit comments

Comments
 (0)