From ca66c15f2193eaf8eae183808c7c2dce9298e567 Mon Sep 17 00:00:00 2001 From: pkupczyk <pkupczyk> Date: Wed, 13 Jun 2012 06:48:07 +0000 Subject: [PATCH] SP-111 / BIS-49: JSON-RPC - properly handle circular dependencies SVN: 25665 --- datastore_server/.classpath | 7 +- .../generic/shared/api/v1/FileInfoDssDTO.java | 6 +- openbis-common/.classpath | 7 +- .../deserializer/JsonDeserializerFactory.java | 123 +++++++++--------- .../JsonDeserializerProvider.java | 33 ----- .../JsonTypeAndClassDeserializer.java | 91 ++++++++----- ...sonTypeAndClassAnnotationIntrospector.java | 11 +- .../IJsonBaseTypeToSubTypesMapping.java | 2 +- ...nReflectionsBaseTypeToSubTypesMapping.java | 3 +- .../JsonReflectionsSubTypeResolver.java | 12 +- .../JsonTypeAndClassResolverBuilder.java | 22 ++-- .../serializer/JsonSerializerFactory.java | 86 +++++------- .../server/json/JsonDeserializationTest.java | 5 +- .../server/json/JsonSerializationTest.java | 3 +- .../api/server/json/JsonTestObjectMapper.java | 28 ++-- .../object/ObjectWithIgnoredProperties.java | 2 +- .../object/ObjectWithRenamedProperties.java | 2 +- openbis/.classpath | 7 +- .../shared/api/json/GenericObjectMapper.java | 9 +- .../customcolumn/CustomColumnJSONBuilder.java | 2 +- .../shared/api/v1/dto/QueryTableModel.java | 4 +- openbis_api/.classpath | 4 +- .../generic/shared/api/v1/dto/DataSet.java | 3 +- .../shared/api/v1/dto/MaterialIdentifier.java | 2 +- .../generic/shared/api/v1/dto/Project.java | 3 +- .../generic/shared/api/v1/dto/Sample.java | 16 ++- .../SpaceWithProjectsAndRoleAssignments.java | 5 +- .../shared/basic/dto/VocabularyTerm.java | 4 +- openbis_knime/.classpath | 4 +- screening/.classpath | 5 +- .../api/json/ScreeningObjectMapper.java | 10 +- .../api/v1/dto/ExperimentIdentifier.java | 2 +- .../shared/api/v1/dto/FeatureVector.java | 2 +- .../screening/shared/api/v1/dto/Geometry.java | 2 +- .../shared/api/v1/dto/ImageChannel.java | 2 +- .../api/v1/dto/ImageDatasetReference.java | 4 - .../api/v1/dto/ImageTransformationInfo.java | 2 +- .../shared/api/v1/dto/MaterialIdentifier.java | 2 +- .../api/v1/dto/PermanentIdentifier.java | 4 - .../screening/shared/api/v1/dto/Plate.java | 2 - .../shared/api/v1/dto/PlateIdentifier.java | 4 +- .../api/v1/dto/PlateWellMaterialMapping.java | 2 +- .../systemtests/JsonAnnotationTest.java | 13 +- 43 files changed, 273 insertions(+), 289 deletions(-) delete mode 100644 openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonDeserializerProvider.java diff --git a/datastore_server/.classpath b/datastore_server/.classpath index 720dd545d69..6181d5782e0 100644 --- a/datastore_server/.classpath +++ b/datastore_server/.classpath @@ -67,9 +67,6 @@ <classpathentry kind="lib" path="/libraries/mina/mina-core.jar" sourcepath="/libraries/mina/mina-core-src.zip"/> <classpathentry kind="lib" path="/libraries/jython/jython.jar" sourcepath="/libraries/jython/jython_src.zip"/> <classpathentry kind="lib" path="/libraries/pngj/pngj.jar" sourcepath="/libraries/pngj/pngj_src.zip"/> - <classpathentry kind="lib" path="/libraries/jackson/jackson-core-asl.jar"/> - <classpathentry kind="lib" path="/libraries/jackson/jackson-mapper-asl.jar"/> - <classpathentry kind="lib" path="/libraries/jsonrpc4j/jsonrpc4j.jar" sourcepath="/libraries/jsonrpc4j/jsonrpc4j-sources.jar"/> <classpathentry kind="lib" path="/libraries/gwt2.4/gwt-isserializable.jar"/> <classpathentry kind="lib" path="/libraries/sshd/sshd-core.jar" sourcepath="/libraries/sshd/sshd-core-src.zip"/> <classpathentry kind="lib" path="/libraries/spring/spring-core.jar"/> @@ -80,6 +77,10 @@ <classpathentry kind="lib" path="/libraries/spring/webmvc/spring-webmvc.jar"/> <classpathentry kind="lib" path="/libraries/hibernate-core/hibernate-core.jar"/> <classpathentry kind="lib" path="/libraries/jmock/hamcrest/hamcrest-integration.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-annotations.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-core.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-databind.jar"/> + <classpathentry kind="lib" path="/libraries/jsonrpc4j/jsonrpc4j.jar" sourcepath="/libraries/jsonrpc4j/jsonrpc4j-sources.jar"/> <classpathentry kind="lib" path="/libraries/cisd-jhdf5/cisd-jhdf5-core.jar"/> <classpathentry kind="lib" path="/libraries/cisd-jhdf5/cisd-jhdf5-tools.jar"/> <classpathentry kind="lib" path="/libraries/cisd-jhdf5/hdf5-linux-intel.jar"/> diff --git a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileInfoDssDTO.java b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileInfoDssDTO.java index 912f996a067..6969699fa85 100644 --- a/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileInfoDssDTO.java +++ b/datastore_server/source/java/ch/systemsx/cisd/openbis/dss/generic/shared/api/v1/FileInfoDssDTO.java @@ -20,7 +20,8 @@ import java.io.Serializable; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; -import org.codehaus.jackson.annotate.JsonProperty; + +import com.fasterxml.jackson.annotation.JsonProperty; import ch.systemsx.cisd.base.annotation.JsonObject; @@ -73,7 +74,7 @@ public class FileInfoDssDTO implements Serializable /** * Return true if this FileInfo represents a folder. */ - @JsonProperty(value = "isDirectory") + @JsonProperty("isDirectory") public boolean isDirectory() { return isDirectory; @@ -116,6 +117,7 @@ public class FileInfoDssDTO implements Serializable this.pathInListing = pathInListing; } + @JsonProperty("isDirectory") private void setIsDirectory(boolean isDirectory) { this.isDirectory = isDirectory; diff --git a/openbis-common/.classpath b/openbis-common/.classpath index 7f99895192b..8dbf1601c92 100644 --- a/openbis-common/.classpath +++ b/openbis-common/.classpath @@ -21,9 +21,6 @@ <classpathentry kind="lib" path="/libraries/jetty7/lib/server/servlet-api-2.5.jar"/> <classpathentry kind="lib" path="/libraries/hibernate-search/jms.jar"/> <classpathentry kind="lib" path="/libraries/eodsql/eodsql.jar" sourcepath="/libraries/eodsql/eodsql_src.zip"/> - <classpathentry kind="lib" path="/libraries/jsonrpc4j/jsonrpc4j.jar" sourcepath="/libraries/jsonrpc4j/jsonrpc4j-sources.jar"/> - <classpathentry kind="lib" path="/libraries/jackson/jackson-core-asl.jar"/> - <classpathentry kind="lib" path="/libraries/jackson/jackson-mapper-asl.jar"/> <classpathentry kind="lib" path="/libraries/gwt2.4/gwt-servlet.jar"/> <classpathentry exported="true" kind="lib" path="/libraries/hibernate-search/jsr250-api.jar"/> <classpathentry kind="lib" path="/libraries/spring/spring-core.jar"/> @@ -52,5 +49,9 @@ <classpathentry kind="lib" path="/libraries/reflections/lib/xml-apis-1.0.b2.jar"/> <classpathentry kind="lib" path="/libraries/reflections/reflections.jar"/> <classpathentry kind="lib" path="/libraries/slf4j/slf4j.jar" sourcepath="/libraries/slf4j/src.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-annotations.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-core.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-databind.jar"/> + <classpathentry kind="lib" path="/libraries/jsonrpc4j/jsonrpc4j.jar" sourcepath="/libraries/jsonrpc4j/jsonrpc4j-sources.jar"/> <classpathentry kind="output" path="targets/classes"/> </classpath> diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonDeserializerFactory.java b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonDeserializerFactory.java index 683565ab836..b4a1ed0a0f7 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonDeserializerFactory.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonDeserializerFactory.java @@ -20,30 +20,30 @@ import java.io.IOException; import java.io.StringWriter; import java.util.Collection; -import org.codehaus.jackson.JsonFactory; -import org.codehaus.jackson.JsonGenerator; -import org.codehaus.jackson.JsonNode; -import org.codehaus.jackson.JsonParser; -import org.codehaus.jackson.map.AnnotationIntrospector; -import org.codehaus.jackson.map.BeanProperty; -import org.codehaus.jackson.map.DeserializationConfig; -import org.codehaus.jackson.map.DeserializationContext; -import org.codehaus.jackson.map.DeserializerProvider; -import org.codehaus.jackson.map.JsonDeserializer; -import org.codehaus.jackson.map.JsonMappingException; -import org.codehaus.jackson.map.TypeDeserializer; -import org.codehaus.jackson.map.deser.BeanDeserializerFactory; -import org.codehaus.jackson.map.introspect.AnnotatedClass; -import org.codehaus.jackson.map.introspect.BasicBeanDescription; -import org.codehaus.jackson.map.jsontype.NamedType; -import org.codehaus.jackson.map.jsontype.TypeIdResolver; -import org.codehaus.jackson.map.jsontype.impl.TypeNameIdResolver; -import org.codehaus.jackson.map.type.ArrayType; -import org.codehaus.jackson.map.type.CollectionLikeType; -import org.codehaus.jackson.map.type.CollectionType; -import org.codehaus.jackson.map.type.MapLikeType; -import org.codehaus.jackson.map.type.MapType; -import org.codehaus.jackson.type.JavaType; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.databind.AnnotationIntrospector; +import com.fasterxml.jackson.databind.BeanDescription; +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.databind.DeserializationConfig; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonNode; +import com.fasterxml.jackson.databind.cfg.DeserializerFactoryConfig; +import com.fasterxml.jackson.databind.deser.BeanDeserializerFactory; +import com.fasterxml.jackson.databind.introspect.AnnotatedClass; +import com.fasterxml.jackson.databind.jsontype.NamedType; +import com.fasterxml.jackson.databind.jsontype.TypeDeserializer; +import com.fasterxml.jackson.databind.jsontype.TypeIdResolver; +import com.fasterxml.jackson.databind.jsontype.impl.TypeNameIdResolver; +import com.fasterxml.jackson.databind.type.ArrayType; +import com.fasterxml.jackson.databind.type.CollectionLikeType; +import com.fasterxml.jackson.databind.type.CollectionType; +import com.fasterxml.jackson.databind.type.MapLikeType; +import com.fasterxml.jackson.databind.type.MapType; import ch.systemsx.cisd.base.annotation.JsonObject; import ch.systemsx.cisd.common.api.server.json.common.JsonConstants; @@ -62,62 +62,57 @@ public class JsonDeserializerFactory extends BeanDeserializerFactory public JsonDeserializerFactory( IJsonClassValueToClassObjectsMapping classValueToClassObjectsMapping) { - super(null); + super(new DeserializerFactoryConfig()); this.classValueToClassObjectsMapping = classValueToClassObjectsMapping; } @Override - public JsonDeserializer<?> createArrayDeserializer(DeserializationConfig config, - DeserializerProvider p, ArrayType type, BeanProperty property) - throws JsonMappingException + public JsonDeserializer<?> createArrayDeserializer(DeserializationContext ctxt, ArrayType type, + BeanDescription beanDesc) throws JsonMappingException { ArrayType newType = - type.withContentTypeHandler(createContentTypeDeserializer(config, type, property)); - return super.createArrayDeserializer(config, p, newType, property); + type.withContentTypeHandler(createContentTypeDeserializer(ctxt, type, beanDesc)); + return super.createArrayDeserializer(ctxt, newType, beanDesc); } @Override - public JsonDeserializer<?> createCollectionDeserializer(DeserializationConfig config, - DeserializerProvider p, CollectionType type, BeanProperty property) - throws JsonMappingException + public JsonDeserializer<?> createCollectionDeserializer(DeserializationContext ctxt, + CollectionType type, BeanDescription beanDesc) throws JsonMappingException { CollectionType newType = - type.withContentTypeHandler(createContentTypeDeserializer(config, type, property)); - return super.createCollectionDeserializer(config, p, newType, property); + type.withContentTypeHandler(createContentTypeDeserializer(ctxt, type, beanDesc)); + return super.createCollectionDeserializer(ctxt, newType, beanDesc); } @Override - public JsonDeserializer<?> createCollectionLikeDeserializer(DeserializationConfig config, - DeserializerProvider p, CollectionLikeType type, BeanProperty property) - throws JsonMappingException + public JsonDeserializer<?> createCollectionLikeDeserializer(DeserializationContext ctxt, + CollectionLikeType type, BeanDescription beanDesc) throws JsonMappingException { CollectionLikeType newType = - type.withContentTypeHandler(createContentTypeDeserializer(config, type, property)); - return super.createCollectionLikeDeserializer(config, p, newType, property); + type.withContentTypeHandler(createContentTypeDeserializer(ctxt, type, beanDesc)); + return super.createCollectionLikeDeserializer(ctxt, newType, beanDesc); } @Override - public JsonDeserializer<?> createMapDeserializer(DeserializationConfig config, - DeserializerProvider p, MapType type, BeanProperty property) - throws JsonMappingException + public JsonDeserializer<?> createMapDeserializer(DeserializationContext ctxt, MapType type, + BeanDescription beanDesc) throws JsonMappingException { MapType newType = - type.withContentTypeHandler(createContentTypeDeserializer(config, type, property)); - return super.createMapDeserializer(config, p, newType, property); + type.withContentTypeHandler(createContentTypeDeserializer(ctxt, type, beanDesc)); + return super.createMapDeserializer(ctxt, newType, beanDesc); } @Override - public JsonDeserializer<?> createMapLikeDeserializer(DeserializationConfig config, - DeserializerProvider p, MapLikeType type, BeanProperty property) - throws JsonMappingException + public JsonDeserializer<?> createMapLikeDeserializer(DeserializationContext ctxt, + MapLikeType type, BeanDescription beanDesc) throws JsonMappingException { MapLikeType newType = - type.withContentTypeHandler(createContentTypeDeserializer(config, type, property)); - return super.createMapLikeDeserializer(config, p, newType, property); + type.withContentTypeHandler(createContentTypeDeserializer(ctxt, type, beanDesc)); + return super.createMapLikeDeserializer(ctxt, newType, beanDesc); } - private TypeDeserializer createContentTypeDeserializer(DeserializationConfig config, - JavaType containerType, BeanProperty property) + private TypeDeserializer createContentTypeDeserializer(DeserializationContext ctxt, + JavaType containerType, BeanDescription beanDesc) { JavaType contentType = containerType.getContentType(); @@ -130,8 +125,9 @@ public class JsonDeserializerFactory extends BeanDeserializerFactory if (contentClass.equals(Object.class) || contentClass.isAnnotationPresent(JsonObject.class)) { - BasicBeanDescription bean = - config.introspectClassAnnotations(contentType.getRawClass()); + DeserializationConfig config = ctxt.getConfig(); + + BeanDescription bean = config.introspectClassAnnotations(contentType.getRawClass()); AnnotatedClass ac = bean.getClassInfo(); AnnotationIntrospector ai = config.getAnnotationIntrospector(); Collection<NamedType> subtypes = @@ -140,7 +136,7 @@ public class JsonDeserializerFactory extends BeanDeserializerFactory TypeNameIdResolver.construct(config, contentType, subtypes, false, true); JsonTypeAndClassWithFallbackDeserializer deserializer = new JsonTypeAndClassWithFallbackDeserializer(contentType, subtypes, resolver, - property, JsonConstants.getTypeField()); + JsonConstants.getTypeField()); deserializer.setClassValueToClassObjectsMapping(this.classValueToClassObjectsMapping); return deserializer; } else @@ -152,11 +148,22 @@ public class JsonDeserializerFactory extends BeanDeserializerFactory private class JsonTypeAndClassWithFallbackDeserializer extends JsonTypeAndClassDeserializer { + public JsonTypeAndClassWithFallbackDeserializer( + JsonTypeAndClassWithFallbackDeserializer src, BeanProperty property) + { + super(src, property); + } + public JsonTypeAndClassWithFallbackDeserializer(JavaType type, - Collection<NamedType> subtypes, TypeIdResolver idRes, BeanProperty property, - String typePropName) + Collection<NamedType> subtypes, TypeIdResolver idRes, String typePropName) + { + super(type, subtypes, idRes, typePropName, false); + } + + @Override + public TypeDeserializer forProperty(BeanProperty prop) { - super(type, subtypes, idRes, property, typePropName); + return new JsonTypeAndClassWithFallbackDeserializer(this, prop); } @Override diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonDeserializerProvider.java b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonDeserializerProvider.java deleted file mode 100644 index a649d11e4d1..00000000000 --- a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonDeserializerProvider.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2012 ETH Zuerich, CISD - * - * 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.systemsx.cisd.common.api.server.json.deserializer; - -import org.codehaus.jackson.map.DeserializerFactory; -import org.codehaus.jackson.map.deser.StdDeserializerProvider; - -/** - * @author pkupczyk - */ -public class JsonDeserializerProvider extends StdDeserializerProvider -{ - - public JsonDeserializerProvider(DeserializerFactory f) - { - super(f); - } - -} diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonTypeAndClassDeserializer.java b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonTypeAndClassDeserializer.java index 4f704616c03..feeab4de70d 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonTypeAndClassDeserializer.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/deserializer/JsonTypeAndClassDeserializer.java @@ -21,19 +21,20 @@ import java.util.ArrayList; import java.util.Collection; import java.util.List; -import org.codehaus.jackson.JsonParser; -import org.codehaus.jackson.JsonProcessingException; -import org.codehaus.jackson.JsonToken; -import org.codehaus.jackson.map.BeanProperty; -import org.codehaus.jackson.map.DeserializationContext; -import org.codehaus.jackson.map.JsonDeserializer; -import org.codehaus.jackson.map.JsonMappingException; -import org.codehaus.jackson.map.jsontype.NamedType; -import org.codehaus.jackson.map.jsontype.TypeIdResolver; -import org.codehaus.jackson.map.jsontype.impl.AsPropertyTypeDeserializer; -import org.codehaus.jackson.type.JavaType; -import org.codehaus.jackson.util.JsonParserSequence; -import org.codehaus.jackson.util.TokenBuffer; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.core.util.JsonParserSequence; +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.jsontype.NamedType; +import com.fasterxml.jackson.databind.jsontype.TypeDeserializer; +import com.fasterxml.jackson.databind.jsontype.TypeIdResolver; +import com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeDeserializer; +import com.fasterxml.jackson.databind.util.TokenBuffer; import ch.systemsx.cisd.base.annotation.JsonObject; import ch.systemsx.cisd.common.api.server.json.common.JsonConstants; @@ -59,30 +60,49 @@ public class JsonTypeAndClassDeserializer extends AsPropertyTypeDeserializer private IJsonClassValueToClassObjectsMapping classValueToClassObjectsMapping = new JsonStaticClassValueToClassObjectsMapping(); + public JsonTypeAndClassDeserializer(JsonTypeAndClassDeserializer src, BeanProperty property) + { + super(src, property); + hasSubtypes = src.hasSubtypes; + classValueToClassObjectsMapping = src.classValueToClassObjectsMapping; + } + public JsonTypeAndClassDeserializer(JavaType type, Collection<NamedType> subtypes, - TypeIdResolver idRes, BeanProperty property, String typePropName) + TypeIdResolver idRes, String typePropName, boolean typeIdVisible) { - super(type, idRes, property, typePropName); + super(type, idRes, typePropName, typeIdVisible, null); hasSubtypes = subtypes != null && subtypes.size() > 1; } + @Override + public TypeDeserializer forProperty(BeanProperty prop) + { + return new JsonTypeAndClassDeserializer(this, prop); + } + @Override public Object deserializeTypedFromObject(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException { // but first, sanity check to ensure we have START_OBJECT or FIELD_NAME JsonToken t = jp.getCurrentToken(); - if (t == JsonToken.START_OBJECT) { t = jp.nextToken(); + } else if (t == JsonToken.START_ARRAY) + { + /* + * This is most likely due to the fact that not all Java types are serialized as JSON + * Objects; so if "as-property" inclusion is requested, serialization of things like + * Lists must be instead handled as if "as-wrapper-array" was requested. But this can + * also be due to some custom handling: so, if "defaultImpl" is defined, it will be + * asked to handle this case. + */ + return _deserializeTypedUsingDefaultImpl(jp, ctxt, null); } else if (t != JsonToken.FIELD_NAME) { - throw ctxt.wrongTokenException(jp, JsonToken.START_OBJECT, - "need JSON Object to contain As.PROPERTY type information (for class " - + baseTypeName() + ")"); + return _deserializeTypedUsingDefaultImpl(jp, ctxt, null); } - // Ok, let's try to find the property. But first, need token buffer... TokenBuffer tb = null; @@ -121,19 +141,23 @@ public class JsonTypeAndClassDeserializer extends AsPropertyTypeDeserializer private Object deserializeWithType(JsonParser jp, DeserializationContext ctxt, TokenBuffer tb, String type) throws IOException, JsonProcessingException { - final JsonParser actualJp; - final JsonDeserializer<Object> deser = _findDeserializer(ctxt, type); - // deserializer should take care of closing END_OBJECT as well - if (tb != null) - { - actualJp = JsonParserSequence.createFlattened(tb.asParser(jp), jp); - } else - { - actualJp = jp; + JsonParser actualJp = jp; + TokenBuffer actualTb = tb; + JsonDeserializer<Object> deser = _findDeserializer(ctxt, type); + if (_typeIdVisible) + { // need to merge id back in JSON input? + if (actualTb == null) + { + actualTb = new TokenBuffer(null); + } + actualTb.writeFieldName(actualJp.getCurrentName()); + actualTb.writeString(type); + } + if (actualTb != null) + { // need to put back skipped properties? + actualJp = JsonParserSequence.createFlattened(actualTb.asParser(actualJp), actualJp); } - /* - * Must point to the next value; tb had no current, jp pointed to VALUE_STRING: - */ + // Must point to the next value; tb had no current, jp pointed to VALUE_STRING: actualJp.nextToken(); // to skip past String value // deserializer should take care of closing END_OBJECT as well return deser.deserialize(actualJp, ctxt); @@ -189,8 +213,7 @@ public class JsonTypeAndClassDeserializer extends AsPropertyTypeDeserializer { final JsonParser actualJp; final JsonDeserializer<Object> deserializer = - ctxt.getDeserializerProvider().findValueDeserializer(ctxt.getConfig(), _baseType, - _property); + ctxt.findContextualValueDeserializer(_baseType, _property); if (tb != null) { diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/introspector/JsonTypeAndClassAnnotationIntrospector.java b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/introspector/JsonTypeAndClassAnnotationIntrospector.java index 6ab37227e18..0d48932df94 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/introspector/JsonTypeAndClassAnnotationIntrospector.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/introspector/JsonTypeAndClassAnnotationIntrospector.java @@ -17,14 +17,13 @@ package ch.systemsx.cisd.common.api.server.json.introspector; import java.util.HashMap; - import java.util.List; -import org.codehaus.jackson.map.MapperConfig; -import org.codehaus.jackson.map.introspect.AnnotatedClass; -import org.codehaus.jackson.map.introspect.JacksonAnnotationIntrospector; -import org.codehaus.jackson.map.jsontype.TypeResolverBuilder; -import org.codehaus.jackson.type.JavaType; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.cfg.MapperConfig; +import com.fasterxml.jackson.databind.introspect.AnnotatedClass; +import com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector; +import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder; import ch.systemsx.cisd.base.annotation.JsonObject; import ch.systemsx.cisd.common.api.server.json.mapping.IJsonClassValueToClassObjectsMapping; diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/mapping/IJsonBaseTypeToSubTypesMapping.java b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/mapping/IJsonBaseTypeToSubTypesMapping.java index b2319df222e..3f40b6e34de 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/mapping/IJsonBaseTypeToSubTypesMapping.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/mapping/IJsonBaseTypeToSubTypesMapping.java @@ -18,7 +18,7 @@ package ch.systemsx.cisd.common.api.server.json.mapping; import java.util.Set; -import org.codehaus.jackson.map.jsontype.NamedType; +import com.fasterxml.jackson.databind.jsontype.NamedType; /** * @author pkupczyk diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/mapping/JsonReflectionsBaseTypeToSubTypesMapping.java b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/mapping/JsonReflectionsBaseTypeToSubTypesMapping.java index f31feba089c..5752aac432b 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/mapping/JsonReflectionsBaseTypeToSubTypesMapping.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/mapping/JsonReflectionsBaseTypeToSubTypesMapping.java @@ -21,9 +21,10 @@ import java.util.HashSet; import java.util.Map; import java.util.Set; -import org.codehaus.jackson.map.jsontype.NamedType; import org.reflections.Reflections; +import com.fasterxml.jackson.databind.jsontype.NamedType; + import ch.systemsx.cisd.base.annotation.JsonObject; import ch.systemsx.cisd.common.api.server.json.common.JsonConstants; diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/resolver/JsonReflectionsSubTypeResolver.java b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/resolver/JsonReflectionsSubTypeResolver.java index 83f94e6623c..ef0545dfe09 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/resolver/JsonReflectionsSubTypeResolver.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/resolver/JsonReflectionsSubTypeResolver.java @@ -18,12 +18,12 @@ package ch.systemsx.cisd.common.api.server.json.resolver; import java.util.Collection; -import org.codehaus.jackson.map.AnnotationIntrospector; -import org.codehaus.jackson.map.MapperConfig; -import org.codehaus.jackson.map.introspect.AnnotatedClass; -import org.codehaus.jackson.map.introspect.AnnotatedMember; -import org.codehaus.jackson.map.jsontype.NamedType; -import org.codehaus.jackson.map.jsontype.SubtypeResolver; +import com.fasterxml.jackson.databind.AnnotationIntrospector; +import com.fasterxml.jackson.databind.cfg.MapperConfig; +import com.fasterxml.jackson.databind.introspect.AnnotatedClass; +import com.fasterxml.jackson.databind.introspect.AnnotatedMember; +import com.fasterxml.jackson.databind.jsontype.NamedType; +import com.fasterxml.jackson.databind.jsontype.SubtypeResolver; import ch.systemsx.cisd.common.api.server.json.mapping.IJsonBaseTypeToSubTypesMapping; diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/resolver/JsonTypeAndClassResolverBuilder.java b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/resolver/JsonTypeAndClassResolverBuilder.java index 121845480a1..f899bc8f8db 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/resolver/JsonTypeAndClassResolverBuilder.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/resolver/JsonTypeAndClassResolverBuilder.java @@ -18,15 +18,14 @@ package ch.systemsx.cisd.common.api.server.json.resolver; import java.util.Collection; -import org.codehaus.jackson.annotate.JsonTypeInfo.As; -import org.codehaus.jackson.annotate.JsonTypeInfo.Id; -import org.codehaus.jackson.map.BeanProperty; -import org.codehaus.jackson.map.DeserializationConfig; -import org.codehaus.jackson.map.TypeDeserializer; -import org.codehaus.jackson.map.jsontype.NamedType; -import org.codehaus.jackson.map.jsontype.TypeIdResolver; -import org.codehaus.jackson.map.jsontype.impl.StdTypeResolverBuilder; -import org.codehaus.jackson.type.JavaType; +import com.fasterxml.jackson.annotation.JsonTypeInfo.As; +import com.fasterxml.jackson.annotation.JsonTypeInfo.Id; +import com.fasterxml.jackson.databind.DeserializationConfig; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.jsontype.NamedType; +import com.fasterxml.jackson.databind.jsontype.TypeDeserializer; +import com.fasterxml.jackson.databind.jsontype.TypeIdResolver; +import com.fasterxml.jackson.databind.jsontype.impl.StdTypeResolverBuilder; import ch.systemsx.cisd.common.api.server.json.deserializer.JsonTypeAndClassDeserializer; import ch.systemsx.cisd.common.api.server.json.mapping.IJsonClassValueToClassObjectsMapping; @@ -49,11 +48,12 @@ public class JsonTypeAndClassResolverBuilder extends StdTypeResolverBuilder @Override public TypeDeserializer buildTypeDeserializer(DeserializationConfig config, JavaType baseType, - Collection<NamedType> subtypes, BeanProperty property) + Collection<NamedType> subtypes) { TypeIdResolver idRes = idResolver(config, baseType, subtypes, false, true); JsonTypeAndClassDeserializer deserializer = - new JsonTypeAndClassDeserializer(baseType, subtypes, idRes, property, _typeProperty); + new JsonTypeAndClassDeserializer(baseType, subtypes, idRes, _typeProperty, + _typeIdVisible); deserializer.setClassValueToClassObjectsMapping(classValueToClassObjectsMapping); return deserializer; } diff --git a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/serializer/JsonSerializerFactory.java b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/serializer/JsonSerializerFactory.java index 667ee4e99c6..96a01ad9c1e 100644 --- a/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/serializer/JsonSerializerFactory.java +++ b/openbis-common/source/java/ch/systemsx/cisd/common/api/server/json/serializer/JsonSerializerFactory.java @@ -18,24 +18,23 @@ package ch.systemsx.cisd.common.api.server.json.serializer; import java.util.Collection; -import org.codehaus.jackson.map.AnnotationIntrospector; -import org.codehaus.jackson.map.BeanProperty; -import org.codehaus.jackson.map.JsonSerializer; -import org.codehaus.jackson.map.SerializationConfig; -import org.codehaus.jackson.map.TypeSerializer; -import org.codehaus.jackson.map.introspect.AnnotatedClass; -import org.codehaus.jackson.map.introspect.BasicBeanDescription; -import org.codehaus.jackson.map.jsontype.NamedType; -import org.codehaus.jackson.map.jsontype.TypeIdResolver; -import org.codehaus.jackson.map.jsontype.impl.AsPropertyTypeSerializer; -import org.codehaus.jackson.map.jsontype.impl.TypeNameIdResolver; -import org.codehaus.jackson.map.ser.BeanSerializerFactory; -import org.codehaus.jackson.map.type.ArrayType; -import org.codehaus.jackson.map.type.CollectionLikeType; -import org.codehaus.jackson.map.type.CollectionType; -import org.codehaus.jackson.map.type.MapLikeType; -import org.codehaus.jackson.map.type.MapType; -import org.codehaus.jackson.type.JavaType; +import com.fasterxml.jackson.databind.AnnotationIntrospector; +import com.fasterxml.jackson.databind.BeanDescription; +import com.fasterxml.jackson.databind.BeanProperty; +import com.fasterxml.jackson.databind.JavaType; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.SerializationConfig; +import com.fasterxml.jackson.databind.introspect.AnnotatedClass; +import com.fasterxml.jackson.databind.jsontype.NamedType; +import com.fasterxml.jackson.databind.jsontype.TypeIdResolver; +import com.fasterxml.jackson.databind.jsontype.TypeSerializer; +import com.fasterxml.jackson.databind.jsontype.impl.AsPropertyTypeSerializer; +import com.fasterxml.jackson.databind.jsontype.impl.TypeNameIdResolver; +import com.fasterxml.jackson.databind.ser.BeanSerializerFactory; +import com.fasterxml.jackson.databind.type.ArrayType; +import com.fasterxml.jackson.databind.type.CollectionType; +import com.fasterxml.jackson.databind.type.MapType; import ch.systemsx.cisd.base.annotation.JsonObject; import ch.systemsx.cisd.common.api.server.json.common.JsonConstants; @@ -53,20 +52,20 @@ public class JsonSerializerFactory extends BeanSerializerFactory @Override protected JsonSerializer<?> buildArraySerializer(SerializationConfig config, ArrayType type, - BasicBeanDescription beanDesc, BeanProperty property, boolean staticTyping, - TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer) + BeanDescription beanDesc, boolean staticTyping, TypeSerializer elementTypeSerializer, + JsonSerializer<Object> elementValueSerializer) throws JsonMappingException { ArrayType newType = - type.withContentTypeHandler(createContentTypeSerializer(config, type, property)); - return super.buildArraySerializer(config, newType, beanDesc, property, staticTyping, + type.withContentTypeHandler(createContentTypeSerializer(config, type, null)); + return super.buildArraySerializer(config, newType, beanDesc, staticTyping, elementTypeSerializer, elementValueSerializer); } @Override protected JsonSerializer<?> buildCollectionSerializer(SerializationConfig config, - CollectionType type, BasicBeanDescription beanDesc, BeanProperty property, + CollectionType type, BeanDescription beanDesc, BeanProperty property, boolean staticTyping, TypeSerializer elementTypeSerializer, - JsonSerializer<Object> elementValueSerializer) + JsonSerializer<Object> elementValueSerializer) throws JsonMappingException { CollectionType newType = type.withContentTypeHandler(createContentTypeSerializer(config, type, property)); @@ -74,40 +73,16 @@ public class JsonSerializerFactory extends BeanSerializerFactory elementTypeSerializer, elementValueSerializer); } - @Override - protected JsonSerializer<?> buildCollectionLikeSerializer(SerializationConfig config, - CollectionLikeType type, BasicBeanDescription beanDesc, BeanProperty property, - boolean staticTyping, TypeSerializer elementTypeSerializer, - JsonSerializer<Object> elementValueSerializer) - { - CollectionLikeType newType = - type.withContentTypeHandler(createContentTypeSerializer(config, type, property)); - return super.buildCollectionLikeSerializer(config, newType, beanDesc, property, - staticTyping, elementTypeSerializer, elementValueSerializer); - } - @Override protected JsonSerializer<?> buildMapSerializer(SerializationConfig config, MapType type, - BasicBeanDescription beanDesc, BeanProperty property, boolean staticTyping, - JsonSerializer<Object> keySerializer, TypeSerializer elementTypeSerializer, - JsonSerializer<Object> elementValueSerializer) - { - MapType newType = - type.withContentTypeHandler(createContentTypeSerializer(config, type, property)); - return super.buildMapSerializer(config, newType, beanDesc, property, staticTyping, - keySerializer, elementTypeSerializer, elementValueSerializer); - } - - @Override - protected JsonSerializer<?> buildMapLikeSerializer(SerializationConfig config, - MapLikeType type, BasicBeanDescription beanDesc, BeanProperty property, - boolean staticTyping, JsonSerializer<Object> keySerializer, + BeanDescription beanDesc, boolean staticTyping, JsonSerializer<Object> keySerializer, TypeSerializer elementTypeSerializer, JsonSerializer<Object> elementValueSerializer) + throws JsonMappingException { - MapLikeType newType = - type.withContentTypeHandler(createContentTypeSerializer(config, type, property)); - return super.buildMapLikeSerializer(config, newType, beanDesc, property, staticTyping, - keySerializer, elementTypeSerializer, elementValueSerializer); + MapType newType = + type.withContentTypeHandler(createContentTypeSerializer(config, type, null)); + return super.buildMapSerializer(config, newType, beanDesc, staticTyping, keySerializer, + elementTypeSerializer, elementValueSerializer); } private TypeSerializer createContentTypeSerializer(SerializationConfig config, @@ -124,8 +99,7 @@ public class JsonSerializerFactory extends BeanSerializerFactory if (contentClass.equals(Object.class) || contentClass.isAnnotationPresent(JsonObject.class)) { - BasicBeanDescription bean = - config.introspectClassAnnotations(contentType.getRawClass()); + BeanDescription bean = config.introspectClassAnnotations(contentType.getRawClass()); AnnotatedClass ac = bean.getClassInfo(); AnnotationIntrospector ai = config.getAnnotationIntrospector(); Collection<NamedType> subtypes = diff --git a/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonDeserializationTest.java b/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonDeserializationTest.java index b9327ad5294..8eaee1d809e 100644 --- a/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonDeserializationTest.java +++ b/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonDeserializationTest.java @@ -28,11 +28,12 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; -import org.codehaus.jackson.map.JsonMappingException; -import org.codehaus.jackson.map.ObjectMapper; import org.testng.Assert; import org.testng.annotations.Test; +import com.fasterxml.jackson.databind.JsonMappingException; +import com.fasterxml.jackson.databind.ObjectMapper; + import ch.systemsx.cisd.common.api.server.json.object.ObjectWithContainerTypes; import ch.systemsx.cisd.common.api.server.json.object.ObjectWithDateTypes; import ch.systemsx.cisd.common.api.server.json.object.ObjectWithEnumTypes; diff --git a/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonSerializationTest.java b/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonSerializationTest.java index 717ef681f6b..909a4288e15 100644 --- a/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonSerializationTest.java +++ b/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonSerializationTest.java @@ -22,10 +22,11 @@ import java.util.EnumSet; import java.util.LinkedHashMap; import java.util.Map; -import org.codehaus.jackson.map.ObjectMapper; import org.testng.Assert; import org.testng.annotations.Test; +import com.fasterxml.jackson.databind.ObjectMapper; + import ch.systemsx.cisd.common.api.server.json.object.ObjectWithEnumTypes; import ch.systemsx.cisd.common.api.server.json.object.ObjectWithEnumTypes.NestedEnum; import ch.systemsx.cisd.common.api.server.json.object.ObjectWithNestedTypes; diff --git a/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonTestObjectMapper.java b/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonTestObjectMapper.java index 80beb5f5873..e1a41e6aae8 100644 --- a/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonTestObjectMapper.java +++ b/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/JsonTestObjectMapper.java @@ -16,11 +16,13 @@ package ch.systemsx.cisd.common.api.server.json; -import org.codehaus.jackson.map.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.deser.DefaultDeserializationContext; import ch.systemsx.cisd.common.api.server.json.deserializer.JsonDeserializerFactory; -import ch.systemsx.cisd.common.api.server.json.deserializer.JsonDeserializerProvider; import ch.systemsx.cisd.common.api.server.json.introspector.JsonTypeAndClassAnnotationIntrospector; +import ch.systemsx.cisd.common.api.server.json.mapping.IJsonBaseTypeToSubTypesMapping; +import ch.systemsx.cisd.common.api.server.json.mapping.IJsonClassValueToClassObjectsMapping; import ch.systemsx.cisd.common.api.server.json.mapping.JsonReflectionsBaseTypeToSubTypesMapping; import ch.systemsx.cisd.common.api.server.json.mapping.JsonStaticClassValueToClassObjectsMapping; import ch.systemsx.cisd.common.api.server.json.object.ObjectWithContainerTypes; @@ -51,12 +53,17 @@ public class JsonTestObjectMapper extends ObjectMapper public JsonTestObjectMapper() { - JsonReflectionsBaseTypeToSubTypesMapping subTypesMapping = - new JsonReflectionsBaseTypeToSubTypesMapping(getClass().getPackage().getName()); + super(null, null, new DefaultDeserializationContext.Impl(new JsonDeserializerFactory( + getClassMapping()))); + setAnnotationIntrospector(new JsonTypeAndClassAnnotationIntrospector(getClassMapping())); + setSubtypeResolver(new JsonReflectionsSubTypeResolver(getTypeMapping())); + setSerializerFactory(new JsonSerializerFactory()); + } + private static IJsonClassValueToClassObjectsMapping getClassMapping() + { JsonStaticClassValueToClassObjectsMapping classMapping = new JsonStaticClassValueToClassObjectsMapping(); - classMapping.addClass(".LegacyObjectWithType", ObjectWithType.class); classMapping.addClass(".LegacyObjectWithTypeA", ObjectWithTypeA.class); classMapping.addClass(".LegacyObjectWithTypeA", ObjectWithTypeALegalDuplicate.class); @@ -77,12 +84,13 @@ public class JsonTestObjectMapper extends ObjectMapper classMapping.addClass(".LegacyObjectWithRenamedProperties", ObjectWithRenamedProperties.class); classMapping.addClass(".LegacyObjectWithPrivateAccess", ObjectWithPrivateAccess.class); + return classMapping; + } - setAnnotationIntrospector(new JsonTypeAndClassAnnotationIntrospector(classMapping)); - setSubtypeResolver(new JsonReflectionsSubTypeResolver(subTypesMapping)); - setDeserializerProvider(new JsonDeserializerProvider(new JsonDeserializerFactory( - classMapping))); - setSerializerFactory(new JsonSerializerFactory()); + private static IJsonBaseTypeToSubTypesMapping getTypeMapping() + { + return new JsonReflectionsBaseTypeToSubTypesMapping(JsonTestObjectMapper.class.getPackage() + .getName()); } } diff --git a/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/object/ObjectWithIgnoredProperties.java b/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/object/ObjectWithIgnoredProperties.java index c3335b05f87..f10e09f8d14 100644 --- a/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/object/ObjectWithIgnoredProperties.java +++ b/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/object/ObjectWithIgnoredProperties.java @@ -16,7 +16,7 @@ package ch.systemsx.cisd.common.api.server.json.object; -import org.codehaus.jackson.annotate.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnore; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/object/ObjectWithRenamedProperties.java b/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/object/ObjectWithRenamedProperties.java index d53f694ab3c..863baae6de3 100644 --- a/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/object/ObjectWithRenamedProperties.java +++ b/openbis-common/sourceTest/java/ch/systemsx/cisd/common/api/server/json/object/ObjectWithRenamedProperties.java @@ -16,7 +16,7 @@ package ch.systemsx.cisd.common.api.server.json.object; -import org.codehaus.jackson.annotate.JsonProperty; +import com.fasterxml.jackson.annotation.JsonProperty; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/openbis/.classpath b/openbis/.classpath index 79e4cde9bf4..a26484a7c4c 100644 --- a/openbis/.classpath +++ b/openbis/.classpath @@ -47,9 +47,6 @@ <classpathentry kind="lib" path="/libraries/poi/poi-ooxml-schemas-3.7-20101029.jar"/> <classpathentry kind="lib" path="/libraries/gwt-image-loader/gwt-image-loader.jar"/> <classpathentry kind="lib" path="/libraries/mail/mail.jar"/> - <classpathentry kind="lib" path="/libraries/jackson/jackson-core-asl.jar"/> - <classpathentry kind="lib" path="/libraries/jackson/jackson-mapper-asl.jar"/> - <classpathentry kind="lib" path="/libraries/jsonrpc4j/jsonrpc4j.jar"/> <classpathentry kind="lib" path="/libraries/jetty7/lib/server/jetty-server.jar" sourcepath="/libraries/jetty7/src/jetty_src.zip"/> <classpathentry kind="lib" path="/libraries/jetty7/lib/server/jetty-servlet.jar" sourcepath="/libraries/jetty7/src/jetty_src.zip"/> <classpathentry kind="lib" path="/libraries/jetty7/lib/server/servlet-api-2.5.jar"/> @@ -78,5 +75,9 @@ <classpathentry kind="lib" path="/libraries/spring/spring.jar"/> <classpathentry kind="lib" path="/libraries/jmock/hamcrest/hamcrest-integration.jar"/> <classpathentry kind="lib" path="/libraries/hibernate-search/jsr250-api.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-annotations.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-core.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-databind.jar"/> + <classpathentry kind="lib" path="/libraries/jsonrpc4j/jsonrpc4j.jar" sourcepath="/libraries/jsonrpc4j/jsonrpc4j-sources.jar"/> <classpathentry kind="output" path="targets/www/WEB-INF/classes"/> </classpath> diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/json/GenericObjectMapper.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/json/GenericObjectMapper.java index b419b9beee4..eecac1b22b2 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/json/GenericObjectMapper.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/api/json/GenericObjectMapper.java @@ -16,10 +16,10 @@ package ch.systemsx.cisd.openbis.generic.shared.api.json; -import org.codehaus.jackson.map.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.deser.DefaultDeserializationContext; import ch.systemsx.cisd.common.api.server.json.deserializer.JsonDeserializerFactory; -import ch.systemsx.cisd.common.api.server.json.deserializer.JsonDeserializerProvider; import ch.systemsx.cisd.common.api.server.json.introspector.JsonTypeAndClassAnnotationIntrospector; import ch.systemsx.cisd.common.api.server.json.mapping.JsonReflectionsBaseTypeToSubTypesMapping; import ch.systemsx.cisd.common.api.server.json.resolver.JsonReflectionsSubTypeResolver; @@ -35,12 +35,13 @@ public class GenericObjectMapper extends ObjectMapper public GenericObjectMapper() { + super(null, null, new DefaultDeserializationContext.Impl(new JsonDeserializerFactory( + GenericJsonClassValueToClassObjectsMapping.getInstance()))); + setAnnotationIntrospector(new JsonTypeAndClassAnnotationIntrospector( GenericJsonClassValueToClassObjectsMapping.getInstance())); setSubtypeResolver(new JsonReflectionsSubTypeResolver( JsonReflectionsBaseTypeToSubTypesMapping.getInstance())); - setDeserializerProvider(new JsonDeserializerProvider(new JsonDeserializerFactory( - GenericJsonClassValueToClassObjectsMapping.getInstance()))); setSerializerFactory(new JsonSerializerFactory()); } } diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/calculator/customcolumn/CustomColumnJSONBuilder.java b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/calculator/customcolumn/CustomColumnJSONBuilder.java index b670f263c98..7e0d25a2cbc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/calculator/customcolumn/CustomColumnJSONBuilder.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/generic/shared/calculator/customcolumn/CustomColumnJSONBuilder.java @@ -20,7 +20,7 @@ import java.io.IOException; import java.util.HashMap; import java.util.Map; -import org.codehaus.jackson.map.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectMapper; import ch.systemsx.cisd.common.utilities.ExceptionUtils; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.customcolumn.core.CustomColumnParam; diff --git a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/api/v1/dto/QueryTableModel.java b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/api/v1/dto/QueryTableModel.java index 7151915cbee..077b258f3dc 100644 --- a/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/api/v1/dto/QueryTableModel.java +++ b/openbis/source/java/ch/systemsx/cisd/openbis/plugin/query/shared/api/v1/dto/QueryTableModel.java @@ -20,8 +20,8 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.annotate.JsonProperty; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/openbis_api/.classpath b/openbis_api/.classpath index 5b24d8fb62a..69c8b7fc0ca 100644 --- a/openbis_api/.classpath +++ b/openbis_api/.classpath @@ -4,9 +4,11 @@ <classpathentry kind="src" path="sourceTest/java"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="lib" path="/libraries/commons-lang/commons-lang.jar" sourcepath="/libraries/commons-lang/src.zip"/> - <classpathentry kind="lib" path="/libraries/jackson/jackson-core-asl.jar" sourcepath="/libraries/jackson/jackson-src.zip"/> <classpathentry combineaccessrules="false" kind="src" path="/common"/> <classpathentry kind="lib" path="/libraries/spring/spring-core.jar"/> <classpathentry kind="lib" path="/libraries/cisd-base/cisd-base.jar" sourcepath="/libraries/cisd-base/cisd-base-src.zip"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-annotations.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-core.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-databind.jar"/> <classpathentry kind="output" path="targets/classes"/> </classpath> diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java index 1784ff876a6..1a690eae52c 100644 --- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/DataSet.java @@ -29,7 +29,8 @@ import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; -import org.codehaus.jackson.annotate.JsonIgnore; + +import com.fasterxml.jackson.annotation.JsonIgnore; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/MaterialIdentifier.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/MaterialIdentifier.java index b417046e281..4e4079baf92 100644 --- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/MaterialIdentifier.java +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/MaterialIdentifier.java @@ -18,7 +18,7 @@ package ch.systemsx.cisd.openbis.generic.shared.api.v1.dto; import java.io.Serializable; -import org.codehaus.jackson.annotate.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnore; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Project.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Project.java index 2bcfd2489db..43cf39e5806 100644 --- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Project.java +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Project.java @@ -18,10 +18,9 @@ package ch.systemsx.cisd.openbis.generic.shared.api.v1.dto; import java.io.Serializable; -import org.codehaus.jackson.annotate.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnore; import ch.systemsx.cisd.base.annotation.JsonObject; - import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifierHolder; /** diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Sample.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Sample.java index d1c43b697c7..6c3dffe7f41 100644 --- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Sample.java +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/Sample.java @@ -28,12 +28,11 @@ import org.apache.commons.lang.builder.EqualsBuilder; import org.apache.commons.lang.builder.HashCodeBuilder; import org.apache.commons.lang.builder.ToStringBuilder; import org.apache.commons.lang.builder.ToStringStyle; -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.annotate.JsonProperty; -import ch.systemsx.cisd.base.annotation.JsonObject; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; -import ch.systemsx.cisd.openbis.generic.shared.api.v1.dto.DataSet.Connections; +import ch.systemsx.cisd.base.annotation.JsonObject; import ch.systemsx.cisd.openbis.generic.shared.basic.IIdentifierHolder; /** @@ -594,12 +593,13 @@ public final class Sample implements Serializable, IIdentifierHolder this.sampleTypeCode = sampleTypeCode; } - @JsonProperty(value = "properties") + @JsonProperty("properties") public Map<String, String> getPropertiesJson() { return retrievedFetchOptions.contains(SampleFetchOption.PROPERTIES) ? properties : null; } + @JsonProperty("properties") private void setProperties(HashMap<String, String> properties) { this.properties = properties; @@ -615,23 +615,25 @@ public final class Sample implements Serializable, IIdentifierHolder this.retrievedFetchOptions = fetchOptions; } - @JsonProperty(value = "children") + @JsonProperty("children") public List<Sample> getChildrenJson() { return retrievedFetchOptions.contains(SampleFetchOption.CHILDREN) ? children : null; } - @JsonProperty(value = "parents") + @JsonProperty("parents") public List<Sample> getParentsJson() { return retrievedFetchOptions.contains(SampleFetchOption.PARENTS) ? parents : null; } + @JsonProperty("parents") private void setParents(List<Sample> parents) { this.parents = parents; } + @JsonProperty("children") private void setChildren(List<Sample> children) { this.children = children; diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SpaceWithProjectsAndRoleAssignments.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SpaceWithProjectsAndRoleAssignments.java index 4aaa8b92c56..2952f5b0829 100644 --- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SpaceWithProjectsAndRoleAssignments.java +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/api/v1/dto/SpaceWithProjectsAndRoleAssignments.java @@ -25,11 +25,10 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.annotate.JsonProperty; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; import ch.systemsx.cisd.base.annotation.JsonObject; - import ch.systemsx.cisd.openbis.generic.shared.basic.ICodeHolder; /** diff --git a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/VocabularyTerm.java b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/VocabularyTerm.java index 37eb6a9cdad..4fb78ca1fcc 100644 --- a/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/VocabularyTerm.java +++ b/openbis_api/source/java/ch/systemsx/cisd/openbis/generic/shared/basic/dto/VocabularyTerm.java @@ -16,10 +16,10 @@ package ch.systemsx.cisd.openbis.generic.shared.basic.dto; -import org.codehaus.jackson.annotate.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnore; -import ch.systemsx.cisd.common.annotation.BeanProperty; import ch.systemsx.cisd.base.annotation.JsonObject; +import ch.systemsx.cisd.common.annotation.BeanProperty; /** * A vocabulary term. diff --git a/openbis_knime/.classpath b/openbis_knime/.classpath index f79691fcf05..b61dcb0bca8 100644 --- a/openbis_knime/.classpath +++ b/openbis_knime/.classpath @@ -22,6 +22,8 @@ <classpathentry kind="lib" path="/libraries/knime/eclipse-equinox-common.jar"/> <classpathentry kind="lib" path="/libraries/knime/eclipse-osgi.jar"/> <classpathentry kind="lib" path="/libraries/commons-io/commons-io.jar" sourcepath="/libraries/commons-io/src.zip"/> - <classpathentry kind="lib" path="/libraries/jackson/jackson-core-asl.jar" sourcepath="/libraries/jackson/jackson-src.zip"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-annotations.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-core.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-databind.jar"/> <classpathentry kind="output" path="targets/classes"/> </classpath> diff --git a/screening/.classpath b/screening/.classpath index c2a78068668..44da96f6b73 100644 --- a/screening/.classpath +++ b/screening/.classpath @@ -48,8 +48,6 @@ <classpathentry kind="lib" path="/libraries/gwt2.4/validation-api-1.0.0.GA.jar"/> <classpathentry kind="lib" path="/libraries/apgdiff/apgdiff.jar" sourcepath="/libraries/apgdiff/src.zip"/> <classpathentry kind="lib" path="/libraries/jsonrpc4j/jsonrpc4j.jar" sourcepath="/libraries/jsonrpc4j/jsonrpc4j-sources.jar"/> - <classpathentry kind="lib" path="/libraries/jackson/jackson-core-asl.jar"/> - <classpathentry kind="lib" path="/libraries/jackson/jackson-mapper-asl.jar"/> <classpathentry kind="lib" path="/libraries/hibernate-core/hibernate-core.jar"/> <classpathentry kind="lib" path="/libraries/spring/spring-beans.jar"/> <classpathentry kind="lib" path="/libraries/spring/spring-web.jar"/> @@ -68,6 +66,9 @@ <classpathentry kind="lib" path="/libraries/reflections/lib/xml-apis-1.0.b2.jar"/> <classpathentry kind="lib" path="/libraries/reflections/reflections.jar"/> <classpathentry kind="lib" path="/libraries/slf4j/slf4j.jar" sourcepath="/libraries/slf4j/src.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-annotations.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-core.jar"/> + <classpathentry kind="lib" path="/libraries/jackson/jackson-databind.jar"/> <classpathentry kind="lib" path="/libraries/cisd-jhdf5/cisd-jhdf5-core.jar"/> <classpathentry kind="lib" path="/libraries/cisd-jhdf5/cisd-jhdf5-tools.jar"/> <classpathentry kind="lib" path="/libraries/cisd-jhdf5/hdf5-linux-intel.jar"/> diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/json/ScreeningObjectMapper.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/json/ScreeningObjectMapper.java index 13c9b638c3d..b4500d9ee87 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/json/ScreeningObjectMapper.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/json/ScreeningObjectMapper.java @@ -16,15 +16,14 @@ package ch.systemsx.cisd.openbis.plugin.screening.shared.api.json; -import org.codehaus.jackson.map.ObjectMapper; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.deser.DefaultDeserializationContext; import ch.systemsx.cisd.common.api.server.json.deserializer.JsonDeserializerFactory; -import ch.systemsx.cisd.common.api.server.json.deserializer.JsonDeserializerProvider; import ch.systemsx.cisd.common.api.server.json.introspector.JsonTypeAndClassAnnotationIntrospector; import ch.systemsx.cisd.common.api.server.json.mapping.JsonReflectionsBaseTypeToSubTypesMapping; import ch.systemsx.cisd.common.api.server.json.resolver.JsonReflectionsSubTypeResolver; import ch.systemsx.cisd.common.api.server.json.serializer.JsonSerializerFactory; -import ch.systemsx.cisd.openbis.generic.shared.api.json.GenericJsonClassValueToClassObjectsMapping; /** * Jackson library object mapper used in screening OpenBIS. @@ -36,12 +35,13 @@ public class ScreeningObjectMapper extends ObjectMapper public ScreeningObjectMapper() { + super(null, null, new DefaultDeserializationContext.Impl(new JsonDeserializerFactory( + ScreeningJsonClassValueToClassObjectsMapping.getInstance()))); + setAnnotationIntrospector(new JsonTypeAndClassAnnotationIntrospector( ScreeningJsonClassValueToClassObjectsMapping.getInstance())); setSubtypeResolver(new JsonReflectionsSubTypeResolver( JsonReflectionsBaseTypeToSubTypesMapping.getInstance())); - setDeserializerProvider(new JsonDeserializerProvider(new JsonDeserializerFactory( - GenericJsonClassValueToClassObjectsMapping.getInstance()))); setSerializerFactory(new JsonSerializerFactory()); } diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ExperimentIdentifier.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ExperimentIdentifier.java index 3ecb95f2f02..171472cdfea 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ExperimentIdentifier.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ExperimentIdentifier.java @@ -16,7 +16,7 @@ package ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto; -import org.codehaus.jackson.annotate.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnore; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/FeatureVector.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/FeatureVector.java index f2fbcbfc981..acb2a8a59b2 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/FeatureVector.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/FeatureVector.java @@ -4,7 +4,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import org.codehaus.jackson.annotate.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnore; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/Geometry.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/Geometry.java index 191e0c2284d..3499f5fbe37 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/Geometry.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/Geometry.java @@ -18,7 +18,7 @@ package ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto; import java.io.Serializable; -import org.codehaus.jackson.annotate.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnore; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageChannel.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageChannel.java index 446b77d1e1e..06c6735de02 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageChannel.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageChannel.java @@ -20,7 +20,7 @@ import java.io.Serializable; import java.util.Collections; import java.util.List; -import org.codehaus.jackson.annotate.JsonProperty; +import com.fasterxml.jackson.annotation.JsonProperty; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetReference.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetReference.java index 8e414e4f86e..4e0c2d739c8 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetReference.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageDatasetReference.java @@ -19,10 +19,6 @@ package ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto; import java.util.Date; import java.util.Map; -import org.codehaus.jackson.annotate.JsonTypeInfo; -import org.codehaus.jackson.annotate.JsonTypeInfo.As; -import org.codehaus.jackson.annotate.JsonTypeInfo.Id; - import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageTransformationInfo.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageTransformationInfo.java index ddf93340dc6..37468ec3f87 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageTransformationInfo.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/ImageTransformationInfo.java @@ -18,7 +18,7 @@ package ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto; import java.io.Serializable; -import org.codehaus.jackson.annotate.JsonProperty; +import com.fasterxml.jackson.annotation.JsonProperty; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/MaterialIdentifier.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/MaterialIdentifier.java index 7dc2c1a4416..66da18644cf 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/MaterialIdentifier.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/MaterialIdentifier.java @@ -18,7 +18,7 @@ package ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto; import java.io.Serializable; -import org.codehaus.jackson.annotate.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonIgnore; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PermanentIdentifier.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PermanentIdentifier.java index bde98acdd40..9b021ac66a2 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PermanentIdentifier.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PermanentIdentifier.java @@ -18,10 +18,6 @@ package ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto; import java.io.Serializable; -import org.codehaus.jackson.annotate.JsonTypeInfo; -import org.codehaus.jackson.annotate.JsonTypeInfo.As; -import org.codehaus.jackson.annotate.JsonTypeInfo.Id; - /** * A class representing a permanent identifier in openBIS. * diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/Plate.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/Plate.java index dbd0a13bb23..ef3dde6495d 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/Plate.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/Plate.java @@ -3,8 +3,6 @@ package ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto; import java.io.IOException; import java.io.ObjectInputStream; -import org.codehaus.jackson.annotate.JsonSubTypes; - import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PlateIdentifier.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PlateIdentifier.java index c149f0c8347..f5a8430e916 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PlateIdentifier.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PlateIdentifier.java @@ -1,7 +1,7 @@ package ch.systemsx.cisd.openbis.plugin.screening.shared.api.v1.dto; -import org.codehaus.jackson.annotate.JsonIgnore; -import org.codehaus.jackson.annotate.JsonProperty; +import com.fasterxml.jackson.annotation.JsonIgnore; +import com.fasterxml.jackson.annotation.JsonProperty; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PlateWellMaterialMapping.java b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PlateWellMaterialMapping.java index f27b8d27a3a..01dfcdac3f9 100644 --- a/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PlateWellMaterialMapping.java +++ b/screening/source/java/ch/systemsx/cisd/openbis/plugin/screening/shared/api/v1/dto/PlateWellMaterialMapping.java @@ -20,7 +20,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.List; -import org.codehaus.jackson.annotate.JsonProperty; +import com.fasterxml.jackson.annotation.JsonProperty; import ch.systemsx.cisd.base.annotation.JsonObject; diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/JsonAnnotationTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/JsonAnnotationTest.java index b1935134ec3..564ee3c4159 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/JsonAnnotationTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/JsonAnnotationTest.java @@ -25,12 +25,13 @@ import java.util.HashMap; import java.util.HashSet; import java.util.Map; -import org.codehaus.jackson.annotate.JsonSubTypes; -import org.codehaus.jackson.annotate.JsonSubTypes.Type; import org.reflections.Reflections; import org.testng.annotations.BeforeClass; import org.testng.annotations.Test; +import com.fasterxml.jackson.annotation.JsonSubTypes; +import com.fasterxml.jackson.annotation.JsonSubTypes.Type; + import ch.systemsx.cisd.base.annotation.JsonObject; import ch.systemsx.cisd.common.api.server.json.JsonUniqueCheckIgnore; import ch.systemsx.cisd.common.api.server.json.util.ClassReferences; @@ -65,10 +66,10 @@ public class JsonAnnotationTest private void findAllClassesUsedByJsonRpcApi() { Class<?>[] jsonRpcInterfaces = - { IDssServiceRpcGeneric.class, IScreeningApiServer.class, - IGeneralInformationChangingService.class, - IGeneralInformationService.class, IWebInformationService.class, - IQueryApiServer.class, IDssServiceRpcScreening.class }; + { IDssServiceRpcGeneric.class, IScreeningApiServer.class, + IGeneralInformationChangingService.class, + IGeneralInformationService.class, IWebInformationService.class, + IQueryApiServer.class, IDssServiceRpcScreening.class }; for (Class<?> jsonClass : jsonRpcInterfaces) { -- GitLab