Skip to content

Commit

Permalink
Bugfix/referable list serialization (#56)
Browse files Browse the repository at this point in the history

Signed-off-by: Frank Schnicke <frank.schnicke@iese.fraunhofer.de>
  • Loading branch information
FrankSchnicke committed Mar 2, 2023
1 parent f7df7b4 commit 3dd8ec0
Show file tree
Hide file tree
Showing 4 changed files with 34 additions and 14 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,24 +15,22 @@
*/
package org.eclipse.digitaltwin.aas4j.v3.dataformat.json;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;
import com.google.common.reflect.TypeToken;
import java.util.Collection;
import org.eclipse.digitaltwin.aas4j.v3.dataformat.core.util.ReflectionHelper;
import java.util.List;

import org.eclipse.digitaltwin.aas4j.v3.dataformat.SerializationException;
import org.eclipse.digitaltwin.aas4j.v3.dataformat.Serializer;
import org.eclipse.digitaltwin.aas4j.v3.dataformat.core.serialization.EnumSerializer;
import org.eclipse.digitaltwin.aas4j.v3.dataformat.core.util.ReflectionHelper;
import org.eclipse.digitaltwin.aas4j.v3.model.Environment;
import org.eclipse.digitaltwin.aas4j.v3.model.Referable;

import java.util.List;
import org.eclipse.digitaltwin.aas4j.v3.dataformat.core.util.AasUtils;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.fasterxml.jackson.databind.json.JsonMapper;
import com.fasterxml.jackson.databind.module.SimpleModule;

/**
* Class for serializing an instance of AssetAdministrationShellEnvironment or Referables to JSON.
Expand Down Expand Up @@ -80,10 +78,13 @@ public String write(Referable referable) throws SerializationException {
}

@Override
public String write(Collection<? extends Referable> referables) throws SerializationException {
if (referables == null || referables.isEmpty()) {
public String write(Collection<? extends Referable> referables) throws SerializationException {
if (referables == null) {
return null;
}
} else if (referables.isEmpty()) {
return mapper.createArrayNode().toString();
}

try {
return mapper.writerFor(mapper.getTypeFactory().constructCollectionType(List.class, referables.iterator().next().getClass()))
.writeValueAsString(referables);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,11 @@
import static org.junit.Assert.assertEquals;

import java.io.IOException;
import java.util.Collections;
import java.util.List;

import org.eclipse.digitaltwin.aas4j.v3.model.AssetAdministrationShell;
import org.eclipse.digitaltwin.aas4j.v3.model.Referable;
import org.eclipse.digitaltwin.aas4j.v3.model.Submodel;
import org.eclipse.digitaltwin.aas4j.v3.model.SubmodelElement;
import org.eclipse.digitaltwin.aas4j.v3.model.SubmodelElementList;
Expand Down Expand Up @@ -88,4 +90,11 @@ public void testReadSubmodelElementCollection() throws IOException, Deserializat
SubmodelElementCollection actual = new JsonDeserializer().readReferable(Examples.SUBMODEL_ELEMENT_COLLECTION.fileContentStream(), SubmodelElementCollection.class);
assertEquals(expected, actual);
}

@Test
public void testReadEmptyReferableList() throws DeserializationException {
List<Referable> emptyList = Collections.emptyList();
List<Referable> deserialized = new JsonDeserializer().readReferables("[]", Referable.class);
assertEquals(emptyList, deserialized);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@

import java.io.File;
import java.io.IOException;
import java.util.Collections;
import java.util.List;
import java.util.Set;

import org.eclipse.digitaltwin.aas4j.v3.dataformat.core.AASSimple;
Expand All @@ -38,6 +40,7 @@
import org.eclipse.digitaltwin.aas4j.v3.dataformat.json.util.ExampleData;
import org.eclipse.digitaltwin.aas4j.v3.dataformat.json.util.Examples;
import org.eclipse.digitaltwin.aas4j.v3.model.Environment;
import org.eclipse.digitaltwin.aas4j.v3.model.Referable;

public class JsonSerializerTest {

Expand Down Expand Up @@ -73,6 +76,13 @@ public void testSerializeFullExample() throws SerializationException, JSONExcept
validateAndCompare(Examples.EXAMPLE_FULL);
}

@Test
public void testSerializeEmptyReferableList() throws SerializationException {
List<Referable> emptyList = Collections.emptyList();
String serialized = new JsonSerializer().write(emptyList);
assertEquals("[]", serialized);
}

private void validateAndCompare(ExampleData<Environment> exampleData) throws IOException, SerializationException, JSONException {
String expected = exampleData.fileContent();
String actual = new JsonSerializer().write(exampleData.getModel());
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@
<revision.major>1</revision.major>
<revision.minor>0</revision.minor>
<revision.patch>0</revision.patch>
<revision.suffix>-milestone-01</revision.suffix>
<revision.suffix>-milestone-02-SNAPSHOT</revision.suffix>
<revision>${revision.major}.${revision.minor}.${revision.patch}${revision.suffix}</revision>
<model.version>1.0.0-milestone-02-SNAPSHOT</model.version>

Expand Down

0 comments on commit 3dd8ec0

Please sign in to comment.