Java Code Examples for com.fasterxml.jackson.databind.InjectableValues#Std

The following examples show how to use com.fasterxml.jackson.databind.InjectableValues#Std . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: ObjectMapperResolver.java    From clouditor with Apache License 2.0 6 votes vote down vote up
public static void configureObjectMapper(ObjectMapper mapper) {
  mapper.registerModule(new JavaTimeModule());
  mapper.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);
  mapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
  mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
  mapper.enable(SerializationFeature.INDENT_OUTPUT);
  mapper.setSerializationInclusion(Include.NON_NULL);
  mapper.setConfig(mapper.getSerializationConfig().withView(ApiOnly.class));

  // add all sub types of CloudAccount
  for (var type : REFLECTIONS_SUBTYPE_SCANNER.getSubTypesOf(CloudAccount.class)) {
    mapper.registerSubtypes(type);
  }

  // set injectable value to null
  var values = new InjectableValues.Std();
  values.addValue("hash", null);

  mapper.setInjectableValues(values);
}
 
Example 2
Source File: PhysicalPlanReader.java    From dremio-oss with Apache License 2.0 5 votes vote down vote up
public FragmentRoot readFragmentOperator(com.google.protobuf.ByteString json, FragmentCodec codec) throws JsonProcessingException, IOException {
  final InjectableValues.Std injectableValues = new InjectableValues.Std(new HashMap<>(injectables));
  PhysicalOperator op = readValue(mapper.readerFor(PhysicalOperator.class).with(injectableValues), json, codec);
  if(op instanceof FragmentRoot){
    return (FragmentRoot) op;
  }else{
    throw new UnsupportedOperationException(String.format("The provided json fragment doesn't have a FragmentRoot as its root operator.  The operator was %s.", op.getClass().getCanonicalName()));
  }
}
 
Example 3
Source File: DigdagClient.java    From digdag with Apache License 2.0 5 votes vote down vote up
public static ObjectMapper objectMapper()
{
    ObjectMapper mapper = new ObjectMapper();
    mapper.registerModule(new GuavaModule());
    mapper.registerModule(new JacksonTimeModule());
    mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

    // InjectableValues makes @JacksonInject work which is used at io.digdag.client.config.Config.<init>
    InjectableValues.Std injects = new InjectableValues.Std();
    injects.addValue(ObjectMapper.class, mapper);
    mapper.setInjectableValues(injects);

    return mapper;
}
 
Example 4
Source File: PhysicalPlanReader.java    From dremio-oss with Apache License 2.0 4 votes vote down vote up
public PhysicalPlanReader(
    SabotConfig config,
    ScanResult scanResult,
    LogicalPlanPersistence lpPersistance,
    final NodeEndpoint endpoint,
    final Provider<CatalogService> catalogService,
    SabotContext context) {

  this.lpPersistance = lpPersistance;

  final ObjectMapper lpMapper = lpPersistance.getMapper();

  // automatic serialization of protobuf.
  lpMapper.registerModule(new ProtobufModule());

  final SimpleModule deserModule = new SimpleModule("CustomSerializers")
      .addSerializer(MajorType.class, new MajorTypeSerDe.Se())
      .addSerializer(ByteString.class, new ByteStringSer())
      .addDeserializer(ByteString.class, new ByteStringDeser())
      .addDeserializer(MajorType.class, new MajorTypeSerDe.De());


  ProtoSerializers.registerSchema(deserModule, SourceConfig.getSchema());


  lpMapper.registerModule(deserModule);

  ConnectionConf.registerSubTypes(lpMapper, context.getConnectionReaderProvider().get());

  Set<Class<? extends PhysicalOperator>> subTypes = PhysicalOperatorUtil.getSubTypes(scanResult);
  for (Class<? extends PhysicalOperator> subType : subTypes) {
    lpMapper.registerSubtypes(subType);
  }

  // store this map so that we can use later for fragment plan reader
  this.injectables = new HashMap<>();
  this.injectables.put(CatalogService.class.getName(), catalogService.get());
  this.injectables.put(ConnectionReader.class.getName(), context.getConnectionReaderProvider().get());
  this.injectables.put(SabotContext.class.getName(), context);
  this.injectables.put(NodeEndpoint.class.getName(), endpoint);

  InjectableValues.Std injectableValues = new InjectableValues.Std(this.injectables);
  this.injectables.forEach(injectableValues::addValue);

  this.mapper = lpMapper;
  this.physicalPlanReader = mapper.readerFor(PhysicalPlan.class).with(injectableValues);
  this.optionListReader = mapper.readerFor(OptionList.class).with(injectableValues);
  this.operatorReader = mapper.readerFor(PhysicalOperator.class).with(injectableValues);
}
 
Example 5
Source File: GridJettyRestHandler.java    From ignite with Apache License 2.0 4 votes vote down vote up
/**
 * @param type Optional value type.
 * @param str String to convert.
 * @return Converted value.
 * @throws IgniteCheckedException If failed to convert.
 */
private Object convert(@Nullable String type, @Nullable String str) throws IgniteCheckedException {
    if (F.isEmpty(type) || str == null)
        return str;

    try {
        switch (type.toLowerCase()) {
            case "boolean":
            case "java.lang.boolean":
                return Boolean.valueOf(str);

            case "byte":
            case "java.lang.byte":
                return Byte.valueOf(str);

            case "short":
            case "java.lang.short":
                return Short.valueOf(str);

            case "int":
            case "integer":
            case "java.lang.integer":
                return Integer.valueOf(str);

            case "long":
            case "java.lang.long":
                return Long.valueOf(str);

            case "float":
            case "java.lang.float":
                return Float.valueOf(str);

            case "double":
            case "java.lang.double":
                return Double.valueOf(str);

            case "date":
            case "java.sql.date":
                return Date.valueOf(str);

            case "time":
            case "java.sql.time":
                return Time.valueOf(str);

            case "timestamp":
            case "java.sql.timestamp":
                return Timestamp.valueOf(str);

            case "uuid":
            case "java.util.uuid":
                return UUID.fromString(str);

            case "igniteuuid":
            case "org.apache.ignite.lang.igniteuuid":
                return IgniteUuid.fromString(str);

            case "string":
            case "java.lang.string":
                return str;
        }

        // Creating an object of the specified type, if its class is available.
        Class<?> cls = U.classForName(type, null);

        if (cls != null)
            return jsonMapper.readValue(str, cls);

        // Creating a binary object if the type is not a class name or it cannot be loaded.
        InjectableValues.Std prop = new InjectableValues.Std()
            .addValue(IgniteBinaryObjectJsonDeserializer.BINARY_TYPE_PROPERTY, type)
            .addValue(IgniteBinaryObjectJsonDeserializer.CACHE_NAME_PROPERTY, cacheName);

        return jsonMapper.reader(prop).forType(BinaryObject.class).readValue(str);
    }
    catch (Throwable e) {
        throw new IgniteCheckedException("Failed to convert value to specified type [type=" + type +
            ", val=" + str + ", reason=" + e.getClass().getName() + ": " + e.getMessage() + "]", e);
    }
}