use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.DeserializationContext in project samza by apache.
the class SamzaObjectMapper method getObjectMapper.
/**
* @return Returns a new ObjectMapper that's been configured to (de)serialize
* Samza's job data model, and simple data types such as TaskName,
* Partition, Config, and SystemStreamPartition.
*/
public static ObjectMapper getObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.WRAP_EXCEPTIONS, false);
mapper.configure(SerializationFeature.WRAP_EXCEPTIONS, false);
SimpleModule module = new SimpleModule("SamzaModule", new Version(1, 0, 0, ""));
// Setup custom serdes for simple data types.
module.addSerializer(Partition.class, new PartitionSerializer());
module.addSerializer(SystemStreamPartition.class, new SystemStreamPartitionSerializer());
module.addKeySerializer(SystemStreamPartition.class, new SystemStreamPartitionKeySerializer());
module.addSerializer(TaskName.class, new TaskNameSerializer());
module.addSerializer(TaskMode.class, new TaskModeSerializer());
module.addDeserializer(TaskName.class, new TaskNameDeserializer());
module.addDeserializer(Partition.class, new PartitionDeserializer());
module.addDeserializer(SystemStreamPartition.class, new SystemStreamPartitionDeserializer());
module.addKeyDeserializer(SystemStreamPartition.class, new SystemStreamPartitionKeyDeserializer());
module.addDeserializer(Config.class, new ConfigDeserializer());
module.addDeserializer(TaskMode.class, new TaskModeDeserializer());
module.addSerializer(CheckpointId.class, new CheckpointIdSerializer());
module.addDeserializer(CheckpointId.class, new CheckpointIdDeserializer());
// Setup mixins for data models.
mapper.addMixIn(TaskModel.class, JsonTaskModelMixIn.class);
mapper.addMixIn(ContainerModel.class, JsonContainerModelMixIn.class);
mapper.addMixIn(JobModel.class, JsonJobModelMixIn.class);
mapper.addMixIn(CheckpointV2.class, JsonCheckpointV2Mixin.class);
mapper.addMixIn(KafkaStateCheckpointMarker.class, KafkaStateCheckpointMarkerMixin.class);
module.addDeserializer(ContainerModel.class, new JsonDeserializer<ContainerModel>() {
@Override
public ContainerModel deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
ObjectCodec oc = jp.getCodec();
JsonNode node = oc.readTree(jp);
/*
* Before Samza 0.13, "container-id" was used.
* In Samza 0.13, "processor-id" was added to be the id to use and "container-id" was deprecated. However,
* "container-id" still needed to be checked for backwards compatibility in case "processor-id" was missing
* (i.e. from a job model corresponding to a version of the job that was on a pre Samza 0.13 version).
* In Samza 1.0, "container-id" was further cleaned up from ContainerModel. This logic is still being left here
* as a fallback for backwards compatibility with pre Samza 0.13. ContainerModel.getProcessorId was changed to
* ContainerModel.getId in the Java API, but "processor-id" still needs to be used as the JSON key for backwards
* compatibility with Samza 0.13 and Samza 0.14.
*/
String id;
if (node.get(JsonContainerModelMixIn.PROCESSOR_ID_KEY) == null) {
if (node.get(JsonContainerModelMixIn.CONTAINER_ID_KEY) == null) {
throw new SamzaException(String.format("JobModel was missing %s and %s. This should never happen. JobModel corrupt!", JsonContainerModelMixIn.PROCESSOR_ID_KEY, JsonContainerModelMixIn.CONTAINER_ID_KEY));
}
id = String.valueOf(node.get(JsonContainerModelMixIn.CONTAINER_ID_KEY).intValue());
} else {
id = node.get(JsonContainerModelMixIn.PROCESSOR_ID_KEY).textValue();
}
Map<TaskName, TaskModel> tasksMapping = OBJECT_MAPPER.readValue(OBJECT_MAPPER.treeAsTokens(node.get(JsonContainerModelMixIn.TASKS_KEY)), new TypeReference<Map<TaskName, TaskModel>>() {
});
return new ContainerModel(id, tasksMapping);
}
});
mapper.addMixIn(LocalityModel.class, JsonLocalityModelMixIn.class);
mapper.addMixIn(ProcessorLocality.class, JsonProcessorLocalityMixIn.class);
// Register mixins for job coordinator metadata model
mapper.addMixIn(JobCoordinatorMetadata.class, JsonJobCoordinatorMetadataMixIn.class);
// Convert camel case to hyphenated field names, and register the module.
mapper.setPropertyNamingStrategy(new CamelCaseToDashesStrategy());
mapper.registerModules(module, new Jdk8Module());
return mapper;
}
use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.DeserializationContext in project presto by prestodb.
the class TestTupleDomain method testJsonSerialization.
@Test
public void testJsonSerialization() throws Exception {
TestingTypeManager typeManager = new TestingTypeManager();
TestingBlockEncodingSerde blockEncodingSerde = new TestingBlockEncodingSerde();
ObjectMapper mapper = new JsonObjectMapperProvider().get().registerModule(new SimpleModule().addDeserializer(ColumnHandle.class, new JsonDeserializer<ColumnHandle>() {
@Override
public ColumnHandle deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
return new JsonObjectMapperProvider().get().readValue(jsonParser, TestingColumnHandle.class);
}
}).addDeserializer(Type.class, new TestingTypeDeserializer(typeManager)).addSerializer(Block.class, new TestingBlockJsonSerde.Serializer(blockEncodingSerde)).addDeserializer(Block.class, new TestingBlockJsonSerde.Deserializer(blockEncodingSerde)));
TupleDomain<ColumnHandle> tupleDomain = TupleDomain.all();
assertEquals(tupleDomain, mapper.readValue(mapper.writeValueAsString(tupleDomain), new TypeReference<TupleDomain<ColumnHandle>>() {
}));
tupleDomain = TupleDomain.none();
assertEquals(tupleDomain, mapper.readValue(mapper.writeValueAsString(tupleDomain), new TypeReference<TupleDomain<ColumnHandle>>() {
}));
tupleDomain = TupleDomain.fromFixedValues(ImmutableMap.of(A, NullableValue.of(BIGINT, 1L), B, NullableValue.asNull(VARCHAR)));
assertEquals(tupleDomain, mapper.readValue(mapper.writeValueAsString(tupleDomain), new TypeReference<TupleDomain<ColumnHandle>>() {
}));
}
use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.DeserializationContext in project samza by apache.
the class TestSamzaObjectMapper method getPreEleasticObjectMapper.
public static ObjectMapper getPreEleasticObjectMapper() {
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.WRAP_EXCEPTIONS, false);
mapper.configure(SerializationFeature.WRAP_EXCEPTIONS, false);
SimpleModule module = new SimpleModule("SamzaModule", new Version(1, 0, 0, ""));
// Setup custom serdes for simple data types.
module.addSerializer(Partition.class, new SamzaObjectMapper.PartitionSerializer());
module.addSerializer(SystemStreamPartition.class, new PreElasticitySystemStreamPartitionSerializer());
module.addKeySerializer(SystemStreamPartition.class, new SamzaObjectMapper.SystemStreamPartitionKeySerializer());
module.addSerializer(TaskName.class, new SamzaObjectMapper.TaskNameSerializer());
module.addSerializer(TaskMode.class, new SamzaObjectMapper.TaskModeSerializer());
module.addDeserializer(TaskName.class, new SamzaObjectMapper.TaskNameDeserializer());
module.addDeserializer(Partition.class, new SamzaObjectMapper.PartitionDeserializer());
module.addDeserializer(SystemStreamPartition.class, new PreElasticitySystemStreamPartitionDeserializer());
module.addKeyDeserializer(SystemStreamPartition.class, new SamzaObjectMapper.SystemStreamPartitionKeyDeserializer());
module.addDeserializer(Config.class, new SamzaObjectMapper.ConfigDeserializer());
module.addDeserializer(TaskMode.class, new SamzaObjectMapper.TaskModeDeserializer());
module.addSerializer(CheckpointId.class, new SamzaObjectMapper.CheckpointIdSerializer());
module.addDeserializer(CheckpointId.class, new SamzaObjectMapper.CheckpointIdDeserializer());
// Setup mixins for data models.
mapper.addMixIn(TaskModel.class, JsonTaskModelMixIn.class);
mapper.addMixIn(ContainerModel.class, JsonContainerModelMixIn.class);
mapper.addMixIn(JobModel.class, JsonJobModelMixIn.class);
mapper.addMixIn(CheckpointV2.class, JsonCheckpointV2Mixin.class);
mapper.addMixIn(KafkaStateCheckpointMarker.class, KafkaStateCheckpointMarkerMixin.class);
module.addDeserializer(ContainerModel.class, new JsonDeserializer<ContainerModel>() {
@Override
public ContainerModel deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonProcessingException {
ObjectCodec oc = jp.getCodec();
JsonNode node = oc.readTree(jp);
/*
* Before Samza 0.13, "container-id" was used.
* In Samza 0.13, "processor-id" was added to be the id to use and "container-id" was deprecated. However,
* "container-id" still needed to be checked for backwards compatibility in case "processor-id" was missing
* (i.e. from a job model corresponding to a version of the job that was on a pre Samza 0.13 version).
* In Samza 1.0, "container-id" was further cleaned up from ContainerModel. This logic is still being left here
* as a fallback for backwards compatibility with pre Samza 0.13. ContainerModel.getProcessorId was changed to
* ContainerModel.getId in the Java API, but "processor-id" still needs to be used as the JSON key for backwards
* compatibility with Samza 0.13 and Samza 0.14.
*/
String id;
if (node.get(JsonContainerModelMixIn.PROCESSOR_ID_KEY) == null) {
if (node.get(JsonContainerModelMixIn.CONTAINER_ID_KEY) == null) {
throw new SamzaException(String.format("JobModel was missing %s and %s. This should never happen. JobModel corrupt!", JsonContainerModelMixIn.PROCESSOR_ID_KEY, JsonContainerModelMixIn.CONTAINER_ID_KEY));
}
id = String.valueOf(node.get(JsonContainerModelMixIn.CONTAINER_ID_KEY).intValue());
} else {
id = node.get(JsonContainerModelMixIn.PROCESSOR_ID_KEY).textValue();
}
Map<TaskName, TaskModel> tasksMapping = OBJECT_MAPPER.readValue(OBJECT_MAPPER.treeAsTokens(node.get(JsonContainerModelMixIn.TASKS_KEY)), new TypeReference<Map<TaskName, TaskModel>>() {
});
return new ContainerModel(id, tasksMapping);
}
});
mapper.addMixIn(LocalityModel.class, JsonLocalityModelMixIn.class);
mapper.addMixIn(ProcessorLocality.class, JsonProcessorLocalityMixIn.class);
// Register mixins for job coordinator metadata model
mapper.addMixIn(JobCoordinatorMetadata.class, JsonJobCoordinatorMetadataMixIn.class);
// Convert camel case to hyphenated field names, and register the module.
mapper.setPropertyNamingStrategy(new SamzaObjectMapper.CamelCaseToDashesStrategy());
mapper.registerModule(module);
return mapper;
}
use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.DeserializationContext in project bson4jackson by michel-kraemer.
the class BsonParserTest method parseObjectId.
/**
* Check if org.bson.types.ObjectId can be serialized and deserialized as
* a byte array. See issue #38
* @throws Exception if something goes wrong
*/
@Test
public void parseObjectId() throws Exception {
class ObjectIdDeserializer extends StdDeserializer<org.bson.types.ObjectId> {
private static final long serialVersionUID = 6934309887169924897L;
protected ObjectIdDeserializer() {
super(org.bson.types.ObjectId.class);
}
@Override
public org.bson.types.ObjectId deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException, JsonGenerationException {
return new org.bson.types.ObjectId(jp.getBinaryValue());
}
}
org.bson.types.ObjectId oid = new org.bson.types.ObjectId();
BSONObject o = new BasicBSONObject();
o.put("oid", oid.toByteArray());
SimpleModule mod = new SimpleModule();
mod.addDeserializer(org.bson.types.ObjectId.class, new ObjectIdDeserializer());
ObjectIdClass res = parseBsonObject(o, ObjectIdClass.class, mod);
assertEquals(oid, res.oid);
}
use of org.apache.flink.shaded.jackson2.com.fasterxml.jackson.databind.DeserializationContext in project druid by druid-io.
the class GceAutoScalerTest method testConfig.
@Test
public void testConfig() {
final String json = "{\n" + " \"envConfig\" : {\n" + " \"numInstances\" : 1,\n" + " \"projectId\" : \"super-project\",\n" + " \"zoneName\" : \"winkie-country\",\n" + " \"managedInstanceGroupName\" : \"druid-mig\"\n" + " },\n" + " \"maxNumWorkers\" : 4,\n" + " \"minNumWorkers\" : 2,\n" + " \"type\" : \"gce\"\n" + "}";
final ObjectMapper objectMapper = new DefaultObjectMapper().registerModules((Iterable<Module>) new GceModule().getJacksonModules());
objectMapper.setInjectableValues(new InjectableValues() {
@Override
public Object findInjectableValue(Object o, DeserializationContext deserializationContext, BeanProperty beanProperty, Object o1) {
return null;
}
});
try {
final GceAutoScaler autoScaler = (GceAutoScaler) objectMapper.readValue(json, AutoScaler.class);
verifyAutoScaler(autoScaler);
final GceAutoScaler roundTripAutoScaler = (GceAutoScaler) objectMapper.readValue(objectMapper.writeValueAsBytes(autoScaler), AutoScaler.class);
verifyAutoScaler(roundTripAutoScaler);
Assert.assertEquals("Round trip equals", autoScaler, roundTripAutoScaler);
} catch (Exception e) {
Assert.fail(StringUtils.format("Got exception in test %s", e.getMessage()));
}
}
Aggregations