/* * (c) Copyright Reserved EVRYTHNG Limited 2016. All rights reserved. * Use of this material is subject to license. * Copying and unauthorised use of this material strictly prohibited. */ package com.evrythng.java.wrapper.mapping; import com.evrythng.thng.resource.model.store.BatchPopulatingTask; import com.evrythng.thng.resource.model.store.Property; import com.evrythng.thng.resource.model.store.ShortIdTemplate; import com.evrythng.thng.resource.model.store.Task; import com.evrythng.thng.resource.model.store.TaskOnBatch; import com.evrythng.thng.resource.model.store.action.Action; import com.evrythng.thng.resource.model.store.action.Actions; import com.evrythng.thng.resource.model.store.action.CheckinAction; import com.evrythng.thng.resource.model.store.action.CustomAction; import com.evrythng.thng.resource.model.store.action.ImplicitScanAction; import com.evrythng.thng.resource.model.store.action.ScanAction; import com.evrythng.thng.resource.model.store.action.ShareAction; import com.evrythng.thng.resource.model.store.action.jobs.creation.ActionJob; import com.evrythng.thng.resource.model.store.action.jobs.creation.CreateActionJob; import com.evrythng.thng.resource.model.store.geojson.GeoJson; import com.evrythng.thng.resource.model.store.geojson.GeoJsonMultiPoint; import com.evrythng.thng.resource.model.store.geojson.GeoJsonPoint; import com.evrythng.thng.resource.model.store.geojson.GeoJsonPolygon; import com.evrythng.thng.resource.model.store.geojson.GeoJsonType; import com.evrythng.thng.resource.model.store.rule.reaction.Reaction; import com.evrythng.thng.resource.model.store.rule.reaction.RedirectionReaction; import com.fasterxml.jackson.core.Version; import com.fasterxml.jackson.databind.Module; import com.fasterxml.jackson.databind.module.SimpleModule; /** * EVRYTHNG jackson module. */ public class EvrythngJacksonModuleImpl extends SimpleModule implements EvrythngJacksonModule { private static final long serialVersionUID = 4396301763122454156L; ActionDeserializerImpl actionDeserializer; ReactionDeserializerImpl reactionDeserializer; GeoJsonDeserializerImpl geoJSONDeserializer; public EvrythngJacksonModuleImpl() { this("EVRYTHNG wrapper", new Version(1, 0, 0, "", "", "")); // TODO __MY__ } public EvrythngJacksonModuleImpl(final String name, final Version version) { super(name, version); actionDeserializer = createActionDeserializer(); addDeserializer(Action.class, actionDeserializer); addDeserializer(Actions.class, new ActionsDeserializer()); reactionDeserializer = createReactionDeserializer(); geoJSONDeserializer = createGeoJSONDeserializer(); PropertyDeserializer propertyDeserializer = new PropertyDeserializer(); addDeserializer(Reaction.class, reactionDeserializer); addDeserializer(GeoJson.class, geoJSONDeserializer); addDeserializer(Property.class, propertyDeserializer); TaskOnBatchDeserializer taskOnBatchDeserializer = new TaskOnBatchDeserializer(); BatchPopulatingTaskInputParametersDeserializer batchPopulatingTaskInputParametersDeserializer = new BatchPopulatingTaskInputParametersDeserializer(); BatchPopulatingTaskOutputParametersDeserializer batchPopulatingTaskOutputParametersDeserializer = new BatchPopulatingTaskOutputParametersDeserializer(); TaskResultDeserializer taskResultDeserializer = new TaskResultDeserializer(); TaskNotificationWayDeserializer taskNotificationWayDeserializer = new TaskNotificationWayDeserializer(); ShortIdTemplateDeserializer shortIdTemplateDeserializer = new ShortIdTemplateDeserializer(); addDeserializer(TaskOnBatch.class, taskOnBatchDeserializer); addDeserializer(TaskOnBatch.BaseTaskResult.class, taskResultDeserializer); addDeserializer(BatchPopulatingTask.InputParameters.class, batchPopulatingTaskInputParametersDeserializer); addDeserializer(BatchPopulatingTask.OutputParameters.class, batchPopulatingTaskOutputParametersDeserializer); addDeserializer(Task.Notification.Way.class, taskNotificationWayDeserializer); addDeserializer(ShortIdTemplate.class, shortIdTemplateDeserializer); registerActionsJobDeserializers(); } public static ActionDeserializerImpl createActionDeserializer() { ActionDeserializerImpl actionDeserializer = new ActionDeserializerImpl(CustomAction.class); actionDeserializer.registerType(CheckinAction.TYPE, CheckinAction.class); actionDeserializer.registerType(ScanAction.TYPE, ScanAction.class); actionDeserializer.registerType(ImplicitScanAction.TYPE, ImplicitScanAction.class); actionDeserializer.registerType(ShareAction.TYPE, ShareAction.class); return actionDeserializer; } public static ReactionDeserializerImpl createReactionDeserializer() { ReactionDeserializerImpl reactionDeserializer = new ReactionDeserializerImpl(); reactionDeserializer.registerType(RedirectionReaction.TYPE, RedirectionReaction.class); return reactionDeserializer; } public static GeoJsonDeserializerImpl createGeoJSONDeserializer() { GeoJsonDeserializerImpl geoJSONDeserializer = new GeoJsonDeserializerImpl(); geoJSONDeserializer.registerType(GeoJsonType.POINT.toString(), GeoJsonPoint.class); geoJSONDeserializer.registerType(GeoJsonType.MULTI_POINT.toString(), GeoJsonMultiPoint.class); geoJSONDeserializer.registerType(GeoJsonType.POLYGON.toString(), GeoJsonPolygon.class); return geoJSONDeserializer; } private void registerActionsJobDeserializers() { ActionJobDeserializer base = new ActionJobDeserializer(); addDeserializer(ActionJob.class, base); // Creation CreateActionsJobInputDeserializer creationInput = new CreateActionsJobInputDeserializer(); addDeserializer(CreateActionJob.Input.class, creationInput); } @Override public ReactionDeserializerImpl getReactionDeserializer() { return reactionDeserializer; } @Override public GeoJsonDeserializerImpl getGeoJSONDeserializer() { return geoJSONDeserializer; } @Override public Module getModule() { return this; } @Override public ActionDeserializer getActionDeserializer() { return actionDeserializer; } }