Skip to content
This repository was archived by the owner on Feb 15, 2024. It is now read-only.

Commit c61a0c1

Browse files
author
Matthias Böckmann
committed
Repairing validation of Enums
1 parent d22e4c6 commit c61a0c1

4 files changed

Lines changed: 21 additions & 11 deletions

File tree

dataformat-jsonld/src/main/java/io/adminshell/aas/v3/dataformat/jsonld/JsonLDSerializer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ public void serializeWithType(Object bean, JsonGenerator gen, SerializerProvider
7373
}
7474
else
7575
{
76-
String randomUri = "https://admin-shell.io/autogen/" + UUID.randomUUID();
76+
String randomUri = "https://admin-shell.io/autogen/" + bean.getClass().getSimpleName() + "/" + UUID.randomUUID();
7777
idMap.put(bean, randomUri);
7878
gen.writeStringField("@id", randomUri);
7979
}

dataformat-jsonld/src/main/java/io/adminshell/aas/v3/dataformat/jsonld/JsonLdEnumSerializer.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,19 @@ public class JsonLdEnumSerializer extends JsonSerializer<Enum<?>> {
3030
public void serialize(Enum value, JsonGenerator gen, SerializerProvider provider) throws IOException {
3131
if(value.getClass().isEnum() && value.getClass().getName().startsWith("io.adminshell.aas."))
3232
{
33-
gen.writeString(translate(value.getClass(), value.name()));
33+
if(value.getClass().getAnnotation(IRI.class) != null && value.getClass().getAnnotation(IRI.class).value().length > 0)
34+
{
35+
gen.writeStartObject();
36+
gen.writeStringField("@type", value.getClass().getAnnotation(IRI.class).value()[0]);
37+
gen.writeStringField("@id", translate(value.getClass(), value.name()));
38+
gen.writeEndObject();
39+
}
40+
else
41+
{
42+
gen.writeString(translate(value.getClass(), value.name()));
43+
}
44+
45+
3446
} else {
3547
provider.findValueSerializer(Enum.class).serialize(value, gen, provider);
3648
}

validator/src/main/java/io/adminshell/aas/v3/model/validator/ShaclValidator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ public void validate(Object obj) throws ValidationException {
6868
ValidationReport report = validateGetReport(obj);
6969

7070
if (!report.conforms()) {
71-
throw new ValidationException(report.getEntries().stream().map(ReportEntry::toString).collect(Collectors.joining()));
71+
throw new ValidationException(report.getEntries().stream().map(ReportEntry::toString).collect(Collectors.joining("\n")));
7272
}
7373
}
7474
catch (IOException e)

validator/src/test/java/io/adminshell/aas/v3/model/validator/ShaclValidatorTest.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,15 +17,18 @@
1717

1818
import io.adminshell.aas.v3.model.AssetAdministrationShell;
1919
import io.adminshell.aas.v3.model.AssetKind;
20+
import io.adminshell.aas.v3.model.IdentifierType;
2021
import io.adminshell.aas.v3.model.LangString;
2122
import io.adminshell.aas.v3.model.impl.DefaultAssetAdministrationShell;
2223
import io.adminshell.aas.v3.model.impl.DefaultAssetInformation;
24+
import io.adminshell.aas.v3.model.impl.DefaultIdentifier;
2325
import org.junit.Assert;
2426
import org.junit.Test;
2527
import org.slf4j.Logger;
2628
import org.slf4j.LoggerFactory;
2729

2830

31+
2932
public class ShaclValidatorTest {
3033

3134
Logger logger = LoggerFactory.getLogger(getClass());
@@ -39,6 +42,7 @@ public void validationTest() throws ValidationException {
3942

4043
AssetAdministrationShell aas = new DefaultAssetAdministrationShell.Builder()
4144
.description(new LangString("TestDescription"))
45+
.identification(new DefaultIdentifier.Builder().identifier("test1234").idType(IdentifierType.CUSTOM).build())
4246
.build();
4347

4448
logger.info("Done. Starting validation.");
@@ -56,16 +60,10 @@ public void validationTest() throws ValidationException {
5660

5761
aas.setIdShort("test");
5862

63+
5964
aas.setAssetInformation(new DefaultAssetInformation.Builder()
6065
.assetKind(AssetKind.INSTANCE)
6166
.build());
62-
try {
63-
validator.validate(aas);
64-
}
65-
catch (ValidationException e)
66-
{
67-
e.printStackTrace();
68-
//TODO: The AssetKind.INSTANCE is not yet recognized properly. Either the serialization is not correct, or the shape has an error
69-
}
67+
validator.validate(aas);
7068
}
7169
}

0 commit comments

Comments
 (0)