package io.oasp.gastronomy.restaurant.general.service.impl.rest; // BEGIN ARCHETYPE SKIP import io.oasp.gastronomy.restaurant.general.common.api.datatype.Money; import io.oasp.gastronomy.restaurant.offermanagement.logic.api.to.DrinkEto; import io.oasp.gastronomy.restaurant.offermanagement.logic.api.to.MealEto; import io.oasp.gastronomy.restaurant.offermanagement.logic.api.to.ProductEto; import io.oasp.gastronomy.restaurant.offermanagement.logic.api.to.SideDishEto; // END ARCHETYPE SKIP import io.oasp.module.rest.service.impl.json.ObjectMapperFactory; import javax.inject.Named; import com.fasterxml.jackson.databind.jsontype.NamedType; import com.fasterxml.jackson.databind.module.SimpleModule; /** * The MappingFactory class to resolve polymorphic conflicts within the restaurant application. * */ @Named("ApplicationObjectMapperFactory") public class ApplicationObjectMapperFactory extends ObjectMapperFactory { /** * The constructor. */ public ApplicationObjectMapperFactory() { super(); // register polymorphic base classes // BEGIN ARCHETYPE SKIP setBaseClasses(ProductEto.class); // END ARCHETYPE SKIP NamedType[] subtypes; // register mapping for polymorphic sub-classes // BEGIN ARCHETYPE SKIP subtypes = new NamedType[] { new NamedType(MealEto.class, "Meal"), new NamedType(DrinkEto.class, "Drink"), new NamedType(SideDishEto.class, "SideDish") }; setSubtypes(subtypes); // register (de)serializers for custom datatypes SimpleModule module = getExtensionModule(); module.addDeserializer(Money.class, new MoneyJsonDeserializer()); module.addSerializer(Money.class, new MoneyJsonSerializer()); // END ARCHETYPE SKIP } }