package org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json.deserialize.PortMapJSONDeserializer;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json.deserialize.LogicalPortsWrapperJSONDeserializer;
import org.codehaus.jackson.Version;
import org.codehaus.jackson.jaxrs.JacksonJsonProvider;
import org.codehaus.jackson.map.ObjectMapper;
import org.codehaus.jackson.map.module.SimpleModule;
import org.opennaas.extensions.opendaylight.vtn.model.Boundary;
import org.opennaas.extensions.opendaylight.vtn.model.OpenDaylightvBridge;
import org.opennaas.extensions.opendaylight.vtn.model.PortMap;
import org.opennaas.extensions.opendaylight.vtn.model.vLink;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json.deserialize.BoundaryJSONDeserializer;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json.deserialize.BoundaryWrapperJSONDeserializer;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json.deserialize.SwitchesWrapperJSONDeserializer;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json.deserialize.vBridgeInterfacesWrapperJSONDeserializer;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json.deserialize.vBridgeJSONDeserializer;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json.deserialize.vBridgesWrapperJSONDeserializer;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json.deserialize.vLinkJSONDeserializer;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.serializers.json.deserialize.vLinksWrapperJSONDeserializer;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.wrappers.BoundaryWrapper;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.wrappers.LogicalPortsOFFlowsWrapper;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.wrappers.SwitchesWrapper;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.wrappers.vBridgeInterfacesWrapper;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.wrappers.vBridgesWrapper;
import org.opennaas.extensions.opendaylight.vtn.protocol.client.wrappers.vLinksWrapper;
public class CustomJSONProvider extends JacksonJsonProvider {
public CustomJSONProvider() {
super();
ObjectMapper mapper = new ObjectMapper();
SimpleModule myModule = new SimpleModule("MyOpenDaylightVTNJSONSerializerDeserializerModule", new Version(1, 0, 0, null));
myModule.addSerializer(new VTNJSONSerializer()); // assuming OpenDaylightOFFlowJSONSerializer declares correct class to bind to
myModule.addSerializer(new ControllerJSONSerializer());
myModule.addSerializer(new vBridgeJSONSerializer());
myModule.addSerializer(new vbrInterfaceJSONSerializer());
myModule.addSerializer(new BoundaryJSONSerializer());
myModule.addSerializer(new vLinkJSONSerializer());
myModule.addSerializer(new PortMapJSONSerializer());
myModule.addDeserializer(LogicalPortsOFFlowsWrapper.class, new LogicalPortsWrapperJSONDeserializer());
myModule.addDeserializer(vBridgesWrapper.class, new vBridgesWrapperJSONDeserializer());
myModule.addDeserializer(vBridgeInterfacesWrapper.class, new vBridgeInterfacesWrapperJSONDeserializer());
myModule.addDeserializer(OpenDaylightvBridge.class, new vBridgeJSONDeserializer());
myModule.addDeserializer(Boundary.class, new BoundaryJSONDeserializer());
myModule.addDeserializer(BoundaryWrapper.class, new BoundaryWrapperJSONDeserializer());
myModule.addDeserializer(vLink.class, new vLinkJSONDeserializer());
myModule.addDeserializer(vLinksWrapper.class, new vLinksWrapperJSONDeserializer());
myModule.addDeserializer(PortMap.class, new PortMapJSONDeserializer());
myModule.addDeserializer(SwitchesWrapper.class, new SwitchesWrapperJSONDeserializer());
mapper.registerModule(myModule);
mapper.configure(org.codehaus.jackson.map.SerializationConfig.Feature.WRAP_ROOT_VALUE, false);
mapper.configure(org.codehaus.jackson.map.SerializationConfig.Feature.INDENT_OUTPUT, true);
// mapper.configure(org.codehaus.jackson.map.DeserializationConfig.Feature.UNWRAP_ROOT_VALUE, true);
mapper.configure(org.codehaus.jackson.map.DeserializationConfig.Feature.FAIL_ON_UNKNOWN_PROPERTIES, true);
super.setMapper(mapper);
}
}