|
14 | 14 |
|
15 | 15 | import cz.cvut.kbss.jsonld.common.BeanAnnotationProcessor;
|
16 | 16 | import cz.cvut.kbss.jsonld.common.BeanClassProcessor;
|
17 |
| -import cz.cvut.kbss.jsonld.common.EnumUtil; |
18 | 17 | import cz.cvut.kbss.jsonld.common.IdentifierUtil;
|
19 | 18 | import cz.cvut.kbss.jsonld.exception.MissingIdentifierException;
|
20 | 19 |
|
@@ -87,19 +86,22 @@ void traverseSingular(SerializationContext<?> ctx) {
|
87 | 86 | if (!shouldTraverse) {
|
88 | 87 | return;
|
89 | 88 | }
|
| 89 | + if (isIndividual(ctx)) { |
| 90 | + visitor.visitIndividual(ctx); |
| 91 | + return; |
| 92 | + } |
90 | 93 | openInstance(ctx);
|
91 | 94 | visitIdentifier(ctx);
|
92 |
| - if (shouldTraverseObject(ctx, firstEncounter)) { |
| 95 | + if (firstEncounter) { |
93 | 96 | visitTypes(ctx);
|
94 | 97 | serializeFields(ctx);
|
95 | 98 | serializePropertiesField(ctx);
|
96 | 99 | }
|
97 | 100 | closeInstance(ctx);
|
98 | 101 | }
|
99 | 102 |
|
100 |
| - private boolean shouldTraverseObject(SerializationContext<?> ctx, boolean firstEncounter) { |
101 |
| - return firstEncounter && !BeanClassProcessor.isIdentifierType(ctx.getValue().getClass()) && |
102 |
| - !ctx.getValue().getClass().isEnum(); |
| 103 | + private static boolean isIndividual(SerializationContext<?> ctx) { |
| 104 | + return BeanClassProcessor.isIdentifierType(ctx.getValue().getClass()) || ctx.getValue().getClass().isEnum(); |
103 | 105 | }
|
104 | 106 |
|
105 | 107 | private void serializeFields(SerializationContext<?> ctx) {
|
@@ -185,18 +187,10 @@ public void visitIdentifier(SerializationContext<?> ctx) {
|
185 | 187 | final Class<?> idCls = identifier.getClass();
|
186 | 188 | final String id;
|
187 | 189 | final SerializationContext<String> idContext;
|
188 |
| - if (BeanClassProcessor.isIdentifierType(idCls)) { |
189 |
| - id = identifier.toString(); |
190 |
| - idContext = serializationContextFactory.createForIdentifier(null, id, ctx); |
191 |
| - } else if (idCls.isEnum()) { |
192 |
| - id = EnumUtil.resolveMappedIndividual((Enum<?>) identifier); |
193 |
| - idContext = serializationContextFactory.createForIdentifier(null, id, ctx); |
194 |
| - } else { |
195 |
| - id = resolveIdentifier(identifier); |
196 |
| - idContext = serializationContextFactory.createForIdentifier( |
197 |
| - BeanAnnotationProcessor.getIdentifierField(idCls).orElse(null), id, ctx); |
198 |
| - knownInstances.put(identifier, id); |
199 |
| - } |
| 190 | + id = resolveIdentifier(identifier); |
| 191 | + idContext = serializationContextFactory.createForIdentifier( |
| 192 | + BeanAnnotationProcessor.getIdentifierField(idCls).orElse(null), id, ctx); |
| 193 | + knownInstances.put(identifier, id); |
200 | 194 | visitor.visitIdentifier(idContext);
|
201 | 195 | }
|
202 | 196 |
|
|
0 commit comments