From eb95596aa29177c8ce133cabdb788f5acd944ee4 Mon Sep 17 00:00:00 2001
From: vkovtun <vkovtun@ethz.ch>
Date: Wed, 23 Aug 2023 16:03:37 +0200
Subject: [PATCH] SSDM-13926: Fixing the failing JS test.

---
 .../asapi/v3/dto/exporter/ExportResult.java   |  7 +++++++
 .../asapi/v3/dto/exporter/data/AllFields.java |  4 ++++
 .../v3/dto/exporter/data/ExportData.java      |  7 +++++++
 .../dto/exporter/data/ExportablePermId.java   |  7 +++++++
 .../v3/dto/exporter/data/SelectedFields.java  |  7 +++++++
 .../dto/exporter/options/ExportOptions.java   | 11 +++++++++++
 .../v3/dto/importer/ImportOperation.java      |  7 +++++++
 .../v3/dto/importer/data/ImportScript.java    |  7 +++++++
 .../importer/data/UncompressedImportData.java |  9 +++++++++
 .../v3/dto/importer/data/ZipImportData.java   |  7 +++++++
 .../dto/importer/options/ImportOptions.java   |  5 +++++
 .../as/dto/exporter/data/ExportablePermId.js  |  2 --
 .../html/test/test-dto-roundtrip.js           | 19 +++++++++++++++----
 13 files changed, 93 insertions(+), 6 deletions(-)

diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/ExportResult.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/ExportResult.java
index cf076159c00..bd88516237c 100644
--- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/ExportResult.java
+++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/ExportResult.java
@@ -19,6 +19,9 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter;
 import java.io.Serializable;
 import java.util.Collection;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
@@ -28,8 +31,10 @@ public class ExportResult implements Serializable
 
     private static final long serialVersionUID = 1L;
 
+    @JsonProperty
     final String downloadURL;
 
+    @JsonProperty
     final Collection<String> warnings;
 
     public ExportResult(final String downloadURL, final Collection<String> warnings)
@@ -38,11 +43,13 @@ public class ExportResult implements Serializable
         this.warnings = warnings;
     }
 
+    @JsonIgnore
     public String getDownloadURL()
     {
         return downloadURL;
     }
 
+    @JsonIgnore
     public Collection<String> getWarnings()
     {
         return warnings;
diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/AllFields.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/AllFields.java
index 96c084415e5..a7aad1ddd1b 100644
--- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/AllFields.java
+++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/AllFields.java
@@ -19,6 +19,8 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data;
 import java.io.Serializable;
 import java.util.List;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.PropertyTypePermId;
 import ch.systemsx.cisd.base.annotation.JsonObject;
@@ -29,11 +31,13 @@ public class AllFields implements Serializable, IExportableFields
 
     private static final long serialVersionUID = 1L;
 
+    @JsonIgnore
     public List<Attribute> getAttributes()
     {
         return null;
     }
 
+    @JsonIgnore
     public List<PropertyTypePermId> getProperties()
     {
         return null;
diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/ExportData.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/ExportData.java
index c0c922fa453..f267aa79e55 100644
--- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/ExportData.java
+++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/ExportData.java
@@ -19,6 +19,9 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data;
 import java.io.Serializable;
 import java.util.List;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
@@ -28,8 +31,10 @@ public class ExportData implements Serializable
 
     private static final long serialVersionUID = 1L;
 
+    @JsonProperty
     private List<ExportablePermId> permIds;
 
+    @JsonProperty
     private IExportableFields fields;
 
     @SuppressWarnings("unused")
@@ -43,11 +48,13 @@ public class ExportData implements Serializable
         this.fields = fields;
     }
 
+    @JsonIgnore
     public List<ExportablePermId> getPermIds()
     {
         return permIds;
     }
 
+    @JsonIgnore
     public IExportableFields getFields()
     {
         return fields;
diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/ExportablePermId.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/ExportablePermId.java
index e5f86585287..cc982e5d5a8 100644
--- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/ExportablePermId.java
+++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/ExportablePermId.java
@@ -19,6 +19,9 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data;
 import java.io.Serializable;
 import java.util.Objects;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.id.ObjectPermId;
 import ch.systemsx.cisd.base.annotation.JsonObject;
@@ -29,8 +32,10 @@ public class ExportablePermId implements Serializable
 
     private static final long serialVersionUID = 1L;
 
+    @JsonProperty
     private ExportableKind exportableKind;
 
+    @JsonProperty
     private ObjectPermId permId;
 
     @SuppressWarnings("unused")
@@ -44,11 +49,13 @@ public class ExportablePermId implements Serializable
         this.permId = Objects.requireNonNull(permId);
     }
 
+    @JsonIgnore
     public ExportableKind getExportableKind()
     {
         return exportableKind;
     }
 
+    @JsonIgnore
     public ObjectPermId getPermId()
     {
         return permId;
diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/SelectedFields.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/SelectedFields.java
index 9cb46d9cacd..161289a3f15 100644
--- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/SelectedFields.java
+++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/data/SelectedFields.java
@@ -19,6 +19,9 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.data;
 import java.io.Serializable;
 import java.util.List;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.property.id.PropertyTypePermId;
 import ch.systemsx.cisd.base.annotation.JsonObject;
@@ -29,8 +32,10 @@ public class SelectedFields implements Serializable, IExportableFields
 
     private static final long serialVersionUID = 1L;
 
+    @JsonProperty
     private List<Attribute> attributes;
 
+    @JsonProperty
     private List<PropertyTypePermId> properties;
 
     @SuppressWarnings("unused")
@@ -44,11 +49,13 @@ public class SelectedFields implements Serializable, IExportableFields
         this.properties = properties;
     }
 
+    @JsonIgnore
     public List<Attribute> getAttributes()
     {
         return attributes;
     }
 
+    @JsonIgnore
     public List<PropertyTypePermId> getProperties()
     {
         return properties;
diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/options/ExportOptions.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/options/ExportOptions.java
index 5e2d97adaa2..0685994b90a 100644
--- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/options/ExportOptions.java
+++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/exporter/options/ExportOptions.java
@@ -19,6 +19,9 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.exporter.options;
 import java.io.Serializable;
 import java.util.Set;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
@@ -28,12 +31,16 @@ public class ExportOptions implements Serializable
 
     private static final long serialVersionUID = 1L;
 
+    @JsonProperty
     final Set<ExportFormat> formats;
 
+    @JsonProperty
     final XlsTextFormat xlsTextFormat;
 
+    @JsonProperty
     final Boolean withReferredTypes;
 
+    @JsonProperty
     final Boolean withImportCompatibility;
 
     public ExportOptions(final Set<ExportFormat> formats, final XlsTextFormat xlsTextFormat, final Boolean withReferredTypes,
@@ -45,21 +52,25 @@ public class ExportOptions implements Serializable
         this.withImportCompatibility = withImportCompatibility;
     }
 
+    @JsonIgnore
     public Set<ExportFormat> getFormats()
     {
         return formats;
     }
 
+    @JsonIgnore
     public XlsTextFormat getXlsTextFormat()
     {
         return xlsTextFormat;
     }
 
+    @JsonIgnore
     public Boolean isWithReferredTypes()
     {
         return withReferredTypes;
     }
 
+    @JsonIgnore
     public Boolean isWithImportCompatibility()
     {
         return withImportCompatibility;
diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/ImportOperation.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/ImportOperation.java
index fe58f3cca4d..24e853e60ae 100644
--- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/ImportOperation.java
+++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/ImportOperation.java
@@ -19,6 +19,9 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.importer;
 
 import java.io.Serializable;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.operation.IOperation;
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.data.IImportData;
@@ -31,8 +34,10 @@ public class ImportOperation implements Serializable, IOperation
 
     private static final long serialVersionUID = 1L;
 
+    @JsonProperty
     private IImportData importData;
 
+    @JsonProperty
     private ImportOptions importOptions;
 
     @SuppressWarnings("unused")
@@ -52,11 +57,13 @@ public class ImportOperation implements Serializable, IOperation
         return toString();
     }
 
+    @JsonIgnore
     public IImportData getImportData()
     {
         return importData;
     }
 
+    @JsonIgnore
     public ImportOptions getImportOptions()
     {
         return importOptions;
diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/ImportScript.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/ImportScript.java
index f5e4878f69d..a8d051d76e5 100644
--- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/ImportScript.java
+++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/ImportScript.java
@@ -18,6 +18,9 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.data;
 
 import java.io.Serializable;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
@@ -27,8 +30,10 @@ public class ImportScript implements Serializable
 
     private static final long serialVersionUID = 1L;
 
+    @JsonProperty
     private String name;
 
+    @JsonProperty
     private String source;
 
     @SuppressWarnings("unused")
@@ -42,11 +47,13 @@ public class ImportScript implements Serializable
         this.source = source;
     }
 
+    @JsonIgnore
     public String getName()
     {
         return name;
     }
 
+    @JsonIgnore
     public String getSource()
     {
         return source;
diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/UncompressedImportData.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/UncompressedImportData.java
index 55f06e894ca..d2451161317 100644
--- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/UncompressedImportData.java
+++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/UncompressedImportData.java
@@ -19,6 +19,9 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.data;
 import java.io.Serializable;
 import java.util.Collection;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
@@ -27,10 +30,13 @@ public class UncompressedImportData implements Serializable, IImportData
 {
     private static final long serialVersionUID = 1L;
 
+    @JsonProperty
     private ImportFormat format;
 
+    @JsonProperty
     private byte[] file;
 
+    @JsonProperty
     private Collection<ImportScript> scripts;
 
     @SuppressWarnings("unused")
@@ -45,16 +51,19 @@ public class UncompressedImportData implements Serializable, IImportData
         this.scripts = scripts;
     }
 
+    @JsonIgnore
     public ImportFormat getFormat()
     {
         return format;
     }
 
+    @JsonIgnore
     public byte[] getFile()
     {
         return file;
     }
 
+    @JsonIgnore
     public Collection<ImportScript> getScripts()
     {
         return scripts;
diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/ZipImportData.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/ZipImportData.java
index 6af0370760f..9fab7fbeca4 100644
--- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/ZipImportData.java
+++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/data/ZipImportData.java
@@ -18,6 +18,9 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.data;
 
 import java.io.Serializable;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
@@ -26,8 +29,10 @@ public class ZipImportData implements Serializable, IImportData
 {
     private static final long serialVersionUID = 1L;
 
+    @JsonProperty
     private ImportFormat format;
 
+    @JsonProperty
     private byte[] file;
 
     @SuppressWarnings("unused")
@@ -41,11 +46,13 @@ public class ZipImportData implements Serializable, IImportData
         this.file = file;
     }
 
+    @JsonIgnore
     public ImportFormat getFormat()
     {
         return format;
     }
 
+    @JsonIgnore
     public byte[] getFile()
     {
         return file;
diff --git a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/options/ImportOptions.java b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/options/ImportOptions.java
index dec8080f3b1..b4cdf993740 100644
--- a/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/options/ImportOptions.java
+++ b/api-openbis-java/source/java/ch/ethz/sis/openbis/generic/asapi/v3/dto/importer/options/ImportOptions.java
@@ -18,6 +18,9 @@ package ch.ethz.sis.openbis.generic.asapi.v3.dto.importer.options;
 
 import java.io.Serializable;
 
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
 import ch.ethz.sis.openbis.generic.asapi.v3.dto.common.ObjectToString;
 import ch.systemsx.cisd.base.annotation.JsonObject;
 
@@ -27,6 +30,7 @@ public class ImportOptions implements Serializable
 
     private static final long serialVersionUID = 1L;
 
+    @JsonProperty
     private ImportMode mode;
 
     @SuppressWarnings("unused")
@@ -39,6 +43,7 @@ public class ImportOptions implements Serializable
         this.mode = mode;
     }
 
+    @JsonIgnore
     public ImportMode getMode()
     {
         return mode;
diff --git a/api-openbis-javascript/src/v3/as/dto/exporter/data/ExportablePermId.js b/api-openbis-javascript/src/v3/as/dto/exporter/data/ExportablePermId.js
index a8f742d9a76..27444ce65a6 100644
--- a/api-openbis-javascript/src/v3/as/dto/exporter/data/ExportablePermId.js
+++ b/api-openbis-javascript/src/v3/as/dto/exporter/data/ExportablePermId.js
@@ -17,9 +17,7 @@
 
 define(["stjs"], function (stjs) {
   var ExportablePermId = function(exportableKind, permId) {
-    exportableKind.constructor(); // Assert that the value is defined
     this.exportableKind = exportableKind;
-    permId.constructor(); // Assert that the value is defined
     this.permId = permId;
   }
 
diff --git a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-dto-roundtrip.js b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-dto-roundtrip.js
index baf16573439..0b05401ce27 100644
--- a/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-dto-roundtrip.js
+++ b/test-api-openbis-javascript/servers/common/core-plugins/tests/1/as/webapps/openbis-v3-api-test/html/test/test-dto-roundtrip.js
@@ -43,13 +43,24 @@ define(['jquery', 'underscore', 'openbis', 'test/common'], function($, _, openbi
 				actionFacade = facade;
 
 				return _.chain(
-						c.getDtos()
-					)
+					c.getDtos()
+				)
 					.map(function(proto) {
-						return new c.CustomASServiceExecutionOptions().withParameter("object", instantiate(proto));
+						try {
+							return new c.CustomASServiceExecutionOptions()
+								.withParameter("object", instantiate(proto));
+						} catch (error) {
+							c.fail(error.message);
+							c.finish();
+						}
 					})
 					.map(function(options) {
-						return facade.executeCustomASService(id, options);
+							try {
+								return facade.executeCustomASService(id, options);
+							} catch (error) {
+								c.fail(error.message);
+								c.finish();
+							}
 					})
 					.value();
 			}
-- 
GitLab