From 3ba775b8797ebf50d3bb049683b5197def4eb148 Mon Sep 17 00:00:00 2001 From: alaskowski <alaskowski@ethz.ch> Date: Wed, 19 Jul 2023 16:31:40 +0200 Subject: [PATCH] SSDM-55: Refactored PropertiesDeserializer; fixed tests. --- ...{Util.java => PropertiesDeserializer.java} | 27 +++++++++-- .../PropertySerializableDeserializer.java | 46 ------------------- .../generic/asapi/v3/dto/dataset/DataSet.java | 11 ++--- .../dto/dataset/create/DataSetCreation.java | 7 ++- .../v3/dto/dataset/update/DataSetUpdate.java | 4 +- .../asapi/v3/dto/experiment/Experiment.java | 8 ++-- .../experiment/create/ExperimentCreation.java | 7 ++- .../experiment/update/ExperimentUpdate.java | 7 +-- .../asapi/v3/dto/material/Material.java | 7 +-- .../dto/material/create/MaterialCreation.java | 4 +- .../dto/material/update/MaterialUpdate.java | 4 +- .../generic/asapi/v3/dto/sample/Sample.java | 9 ++-- .../v3/dto/sample/create/SampleCreation.java | 7 ++- .../v3/dto/sample/update/SampleUpdate.java | 4 +- .../sharedapi/v3/ApiClassesProvider.java | 35 ++++++++------ 15 files changed, 73 insertions(+), 114 deletions(-) rename api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/property/{Util.java => PropertiesDeserializer.java} (65%) delete mode 100644 api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/property/PropertySerializableDeserializer.java diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/property/Util.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/property/PropertiesDeserializer.java similarity index 65% rename from api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/property/Util.java rename to api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/property/PropertiesDeserializer.java index d32e4ac8e3a..ec9c40296e4 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/property/Util.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/property/PropertiesDeserializer.java @@ -17,12 +17,30 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; + +import java.io.IOException; import java.io.Serializable; -import java.util.stream.Stream; +import java.util.ArrayList; -public final class Util +public class PropertiesDeserializer extends JsonDeserializer<Serializable> { - private Util() {} + @Override + public Serializable deserialize(JsonParser p, DeserializationContext ctxt) + throws IOException + { + JsonNode node = p.readValueAsTree(); + if(node.isArray()) { + ArrayList<String> list = new ArrayList<>(); + node.forEach(value -> list.add(value.textValue())); + return list.toArray(new String[0]); + } else { + return node.textValue(); + } + } public static String getPropertyAsString(Serializable propertyValue) { if(propertyValue == null) { @@ -43,7 +61,6 @@ public final class Util return (String) propertyValue; } } - - } + } diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/property/PropertySerializableDeserializer.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/property/PropertySerializableDeserializer.java deleted file mode 100644 index cfa48a147fc..00000000000 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/common/property/PropertySerializableDeserializer.java +++ /dev/null @@ -1,46 +0,0 @@ -/* - * Copyright ETH 2023 Zürich, Scientific IT Services - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -package ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property; - -import com.fasterxml.jackson.core.JsonParser; -import com.fasterxml.jackson.databind.DeserializationContext; -import com.fasterxml.jackson.databind.JsonDeserializer; -import com.fasterxml.jackson.databind.JsonNode; - -import java.io.IOException; -import java.io.Serializable; -import java.util.ArrayList; - -public class PropertySerializableDeserializer extends JsonDeserializer<Serializable> -{ - @Override - public Serializable deserialize(JsonParser p, DeserializationContext ctxt) - throws IOException - { - JsonNode node = p.readValueAsTree(); - if(node.isArray()) { - ArrayList<String> list = new ArrayList<>(); - node.forEach(value -> list.add(value.textValue())); - return list.toArray(new String[0]); - } else { - return node.textValue(); - } - } - - -} diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/DataSet.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/DataSet.java index cf8bcef5ca1..c4e0fabfe70 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/DataSet.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/DataSet.java @@ -28,12 +28,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IRegistrationD import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IRegistratorHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ISampleHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ITagsHolder; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.Util; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetKind; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetType; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.LinkedData; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.PhysicalData; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions.DataSetFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.DataSetPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.datastore.DataStore; @@ -121,7 +116,7 @@ public class DataSet implements Serializable, ICodeHolder, IEntityTypeHolder, IE private Sample sample; @JsonProperty - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties; @JsonProperty @@ -946,7 +941,7 @@ public class DataSet implements Serializable, ICodeHolder, IEntityTypeHolder, IE @Override public String getProperty(String propertyName) { - return getProperties() != null ? Util.getPropertyAsString(getProperties().get(propertyName)) : null; + return getProperties() != null ? PropertiesDeserializer.getPropertyAsString(getProperties().get(propertyName)) : null; } @Override diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/create/DataSetCreation.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/create/DataSetCreation.java index 5c4309020a8..484761aac72 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/create/DataSetCreation.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/create/DataSetCreation.java @@ -26,8 +26,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.create.IObjectCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.CreationId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ICreationIdHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPropertiesHolder; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.Util; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSetKind; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.id.IDataSetId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.datastore.id.IDataStoreId; @@ -71,7 +70,7 @@ public class DataSetCreation implements ICreation, ICreationIdHolder, IObjectCre private List<? extends ITagId> tagIds; - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties = new HashMap<String, Serializable>(); private List<? extends IDataSetId> containerIds; @@ -267,7 +266,7 @@ public class DataSetCreation implements ICreation, ICreationIdHolder, IObjectCre @Override public String getProperty(String propertyName) { - return getProperties() != null ? Util.getPropertyAsString(getProperties().get(propertyName)) : null; + return getProperties() != null ? PropertiesDeserializer.getPropertyAsString(getProperties().get(propertyName)) : null; } @Override diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/update/DataSetUpdate.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/update/DataSetUpdate.java index e6d4e62a877..854151d77d5 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/update/DataSetUpdate.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/dataset/update/DataSetUpdate.java @@ -21,7 +21,7 @@ import java.time.format.DateTimeFormatter; import java.util.*; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IMetaDataUpdateHolder; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.update.*; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -80,7 +80,7 @@ public class DataSetUpdate implements IUpdate, IObjectUpdate<IDataSetId>, IPrope private IdListUpdateValue<ITagId> tagIds = new IdListUpdateValue<ITagId>(); @JsonProperty - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties = new HashMap<String, Serializable>(); @JsonProperty diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/Experiment.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/Experiment.java index 83173f99b06..46a4389f362 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/Experiment.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/Experiment.java @@ -31,8 +31,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IRegistrationD import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IRegistratorHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ISamplesHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ITagsHolder; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.Util; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSet; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.fetchoptions.ExperimentFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.id.ExperimentIdentifier; @@ -60,7 +59,6 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Set; -import java.util.stream.Stream; /* * Class automatically generated with DtoGenerator @@ -131,7 +129,7 @@ public class Experiment implements Serializable, IAttachmentsHolder, ICodeHolder private List<HistoryEntry> unknownHistory; @JsonProperty - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties; @JsonProperty @@ -633,7 +631,7 @@ public class Experiment implements Serializable, IAttachmentsHolder, ICodeHolder @Override public String getProperty(String propertyName) { - return getProperties() != null ? Util.getPropertyAsString(getProperties().get(propertyName)) : null; + return getProperties() != null ? PropertiesDeserializer.getPropertyAsString(getProperties().get(propertyName)) : null; } @Override diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/create/ExperimentCreation.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/create/ExperimentCreation.java index b92605e65f3..b2f23c5bd31 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/create/ExperimentCreation.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/create/ExperimentCreation.java @@ -27,8 +27,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.create.IObjectCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.CreationId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ICreationIdHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPropertiesHolder; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.Util; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.id.IProjectId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; @@ -52,7 +51,7 @@ public class ExperimentCreation implements ICreation, IObjectCreation, ICreation private List<? extends ITagId> tagIds; - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties = new HashMap<>(); private List<AttachmentCreation> attachments; @@ -120,7 +119,7 @@ public class ExperimentCreation implements ICreation, IObjectCreation, ICreation @Override public String getProperty(String propertyName) { - return properties != null ? Util.getPropertyAsString(properties.get(propertyName)) : null; + return properties != null ? PropertiesDeserializer.getPropertyAsString(properties.get(propertyName)) : null; } @Override diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/update/ExperimentUpdate.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/update/ExperimentUpdate.java index 27bcfe6e42a..3b9819fde9f 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/update/ExperimentUpdate.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/experiment/update/ExperimentUpdate.java @@ -20,13 +20,10 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.*; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IMetaDataUpdateHolder; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IMetaDataUpdateHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.update.*; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; -import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; @@ -63,7 +60,7 @@ public class ExperimentUpdate implements IUpdate, IObjectUpdate<IExperimentId>, private boolean freezeForSamples; @JsonProperty - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties = new HashMap<>(); @JsonProperty diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/Material.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/Material.java index 5ee05f77e3b..78306cc86dc 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/Material.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/Material.java @@ -24,14 +24,11 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPropertiesHol import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IRegistrationDateHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IRegistratorHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ITagsHolder; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.history.HistoryEntry; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.Material; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.MaterialType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.fetchoptions.MaterialFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.id.MaterialPermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.Person; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.Sample; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.Tag; import ch.ethz.sis.openbis.generic.asapi.v3.exceptions.NotFetchedException; @@ -84,7 +81,7 @@ public class Material implements Serializable, ICodeHolder, IEntityTypeHolder, I private Date modificationDate; @JsonProperty - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties; @JsonProperty diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/create/MaterialCreation.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/create/MaterialCreation.java index c42a8610213..9d3349c44a6 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/create/MaterialCreation.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/create/MaterialCreation.java @@ -26,7 +26,7 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.create.IObjectCreation; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.CreationId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ICreationIdHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IPropertiesHolder; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.entitytype.id.IEntityTypeId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.tag.id.ITagId; @@ -49,7 +49,7 @@ public class MaterialCreation implements ICreation, IObjectCreation, ICreationId private List<? extends ITagId> tagIds; - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties = new HashMap<>(); private CreationId creationId; diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/update/MaterialUpdate.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/update/MaterialUpdate.java index 63451661841..4fd7aca3897 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/update/MaterialUpdate.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/material/update/MaterialUpdate.java @@ -20,7 +20,7 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.*; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; @@ -51,7 +51,7 @@ public class MaterialUpdate implements IUpdate, IObjectUpdate<IMaterialId>, IPro private IdListUpdateValue<ITagId> tagIds = new IdListUpdateValue<ITagId>(); @JsonProperty - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties = new HashMap<>(); @Override diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/Sample.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/Sample.java index a81bb8e37da..72716279c09 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/Sample.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/Sample.java @@ -34,16 +34,13 @@ import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IRegistrationD import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IRegistratorHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ISpaceHolder; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.ITagsHolder; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.Util; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.DataSet; import ch.ethz.sis.openbis.generic.asapi.v3.dto.experiment.Experiment; import ch.ethz.sis.openbis.generic.asapi.v3.dto.history.HistoryEntry; import ch.ethz.sis.openbis.generic.asapi.v3.dto.material.Material; import ch.ethz.sis.openbis.generic.asapi.v3.dto.person.Person; import ch.ethz.sis.openbis.generic.asapi.v3.dto.project.Project; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.Sample; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.SampleType; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions.SampleFetchOptions; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.ISampleId; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SampleIdentifier; @@ -121,7 +118,7 @@ public class Sample implements Serializable, IAttachmentsHolder, ICodeHolder, ID private Experiment experiment; @JsonProperty - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties; @JsonProperty @@ -945,7 +942,7 @@ public class Sample implements Serializable, IAttachmentsHolder, ICodeHolder, ID @Override public String getProperty(String propertyName) { - return getProperties() != null ? Util.getPropertyAsString(getProperties().get(propertyName)) : null; + return getProperties() != null ? PropertiesDeserializer.getPropertyAsString(getProperties().get(propertyName)) : null; } @Override diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/create/SampleCreation.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/create/SampleCreation.java index a5e3e280e2f..f3d93b0bccb 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/create/SampleCreation.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/create/SampleCreation.java @@ -20,8 +20,7 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; import java.util.*; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.Util; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.databind.annotation.JsonDeserialize; @@ -65,7 +64,7 @@ public class SampleCreation implements ICreation, ICreationIdHolder, IProperties private List<? extends ITagId> tagIds; - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties = new HashMap<>(); private ISampleId containerId; @@ -247,7 +246,7 @@ public class SampleCreation implements ICreation, ICreationIdHolder, IProperties @Override public String getProperty(String propertyName) { - return getProperties() != null ? Util.getPropertyAsString(getProperties().get(propertyName)) : null; + return getProperties() != null ? PropertiesDeserializer.getPropertyAsString(getProperties().get(propertyName)) : null; } @Override diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/update/SampleUpdate.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/update/SampleUpdate.java index 11e3ee92fa2..cb19ecf34f6 100644 --- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/update/SampleUpdate.java +++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/sample/update/SampleUpdate.java @@ -21,7 +21,7 @@ import java.time.format.DateTimeFormatter; import java.util.*; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.interfaces.IMetaDataUpdateHolder; -import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertySerializableDeserializer; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.update.*; import ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.id.SamplePermId; import com.fasterxml.jackson.annotation.JsonIgnore; @@ -80,7 +80,7 @@ public class SampleUpdate implements IUpdate, IPropertiesHolder, IObjectUpdate<I private IdListUpdateValue<ITagId> tagIds = new IdListUpdateValue<ITagId>(); @JsonProperty - @JsonDeserialize(contentUsing = PropertySerializableDeserializer.class) + @JsonDeserialize(contentUsing = PropertiesDeserializer.class) private Map<String, Serializable> properties = new HashMap<>(); @JsonProperty diff --git a/api-openbis-java/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/ApiClassesProvider.java b/api-openbis-java/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/ApiClassesProvider.java index 049067f4ffa..2a12ee95d7f 100644 --- a/api-openbis-java/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/ApiClassesProvider.java +++ b/api-openbis-java/sourceTest/java/ch/ethz/sis/openbis/generic/sharedapi/v3/ApiClassesProvider.java @@ -28,6 +28,7 @@ import java.util.Set; import java.util.TreeSet; import java.util.stream.Collectors; +import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.property.PropertiesDeserializer; import org.apache.commons.lang3.StringUtils; import org.reflections.ReflectionUtils; import org.reflections.Reflections; @@ -59,8 +60,9 @@ public class ApiClassesProvider }; private static final Set<Class<?>> NON_SERIALIZABLE_CLASSES = - new HashSet<>(Arrays.asList(FastDownloader.class, FastDownloadResult.class, FastDownloadUtils.class, - SampleIdDeserializer.class)); + new HashSet<>(Arrays.asList(FastDownloader.class, FastDownloadResult.class, + FastDownloadUtils.class, SampleIdDeserializer.class, + PropertiesDeserializer.class)); public static Collection<Class<?>> getPublicClasses() { @@ -80,20 +82,24 @@ public class ApiClassesProvider Reflections reflections = new Reflections(configBuilder); - Multimap<String, String> map = reflections.getStore().get(SubTypesScanner.class.getSimpleName()); + Multimap<String, String> map = + reflections.getStore().get(SubTypesScanner.class.getSimpleName()); - Collection<String> nonInnerClassesAndTestClasses = Collections2.filter(map.values(), new Predicate<String>() - { - - @Override - public boolean apply(String item) + Collection<String> nonInnerClassesAndTestClasses = + Collections2.filter(map.values(), new Predicate<String>() { - return false == (item.contains("$") || item.endsWith("Test")); - } - }); + + @Override + public boolean apply(String item) + { + return false == (item.contains("$") || item.endsWith("Test")); + } + }); Collection<String> uniqueClassNames = new TreeSet<String>(nonInnerClassesAndTestClasses); - Collection<Class<?>> uniqueClasses = ImmutableSet.copyOf(ReflectionUtils.forNames(uniqueClassNames)) - .stream().filter(c -> Modifier.isPublic(c.getModifiers())).collect(Collectors.toList()); + Collection<Class<?>> uniqueClasses = + ImmutableSet.copyOf(ReflectionUtils.forNames(uniqueClassNames)) + .stream().filter(c -> Modifier.isPublic(c.getModifiers())) + .collect(Collectors.toList()); Set<Class<?>> nonSerializableConcreteClasses = new HashSet<Class<?>>(); for (Class<?> uniqueClass : uniqueClasses) @@ -112,7 +118,8 @@ public class ApiClassesProvider if (false == nonSerializableConcreteClasses.isEmpty()) { - Assert.fail("Non serializable classes found:\n" + StringUtils.join(nonSerializableConcreteClasses, ",\n")); + Assert.fail("Non serializable classes found:\n" + StringUtils.join( + nonSerializableConcreteClasses, ",\n")); } return uniqueClasses; -- GitLab