Example usage for com.fasterxml.jackson.databind InjectableValues InjectableValues

List of usage examples for com.fasterxml.jackson.databind InjectableValues InjectableValues

Introduction

In this page you can find the example usage for com.fasterxml.jackson.databind InjectableValues InjectableValues.

Prototype

InjectableValues

Source Link

Usage

From source file:com.sonatype.nexus.perftest.PerformanceTestRunner.java

public static void main(String[] args) throws Exception {
    final Nexus nexus = new Nexus();
    ObjectMapper mapper = new XmlMapper();
    mapper.setInjectableValues(new InjectableValues() {
        @Override/*from   w  ww  .  j  a v a  2s .c  om*/
        public Object findInjectableValue(Object valueId, DeserializationContext ctxt, BeanProperty forProperty,
                Object beanInstance) {
            if (Nexus.class.getName().equals(valueId)) {
                return nexus;
            }
            return null;
        }
    });
    File src = new File(args[0]).getCanonicalFile();
    System.out.format("Using test configuration %s\n", src);
    PerformanceTest test = mapper.readValue(src, PerformanceTest.class);
    test.run();
    System.out.println("Exit");
    System.exit(0);
}

From source file:com.sonatype.nexus.perftest.PerformanceTestAsserter.java

public static void main(String[] args) throws Exception {

    final Nexus nexus = new Nexus();
    ObjectMapper mapper = new XmlMapper();

    mapper.setInjectableValues(new InjectableValues() {
        @Override/*from w  w  w. j  a  v  a  2  s  .c o  m*/
        public Object findInjectableValue(Object valueId, DeserializationContext ctxt, BeanProperty forProperty,
                Object beanInstance) {
            if (Nexus.class.getName().equals(valueId)) {
                return nexus;
            }
            return null;
        }
    });

    File src = new File(args[0]).getCanonicalFile();
    String name = src.getName().substring(0, src.getName().lastIndexOf("."));

    Collection<ClientSwarm> swarms = mapper.readValue(src, PerformanceTest.class).getSwarms();

    List<Metric> metrics = new ArrayList<>();
    for (ClientSwarm swarm : swarms) {
        metrics.add(swarm.getMetric());
    }

    System.out.println("Test " + name + " metrics:" + metrics);
    assertTest(name, metrics);
    System.out.println("Exit");
    System.exit(0);
}

From source file:com.netflix.suro.jackson.TestJackson.java

@Test
public void test() throws IOException {
    String spec = "{\"a\":\"aaa\", \"b\":\"bbb\"}";

    ObjectMapper mapper = new DefaultObjectMapper();
    final Map<String, Object> injectables = Maps.newHashMap();

    injectables.put("test", "test");
    injectables.put("b", "binjected");
    mapper.setInjectableValues(new InjectableValues() {
        @Override/*from  ww  w . j  a  v a2s  .c  om*/
        public Object findInjectableValue(Object valueId, DeserializationContext ctxt, BeanProperty forProperty,
                Object beanInstance) {
            return injectables.get(valueId);
        }
    });

    TestClass test = mapper.readValue(spec, new TypeReference<TestClass>() {
    });
    assertEquals(test.getTest(), "test");
    assertEquals(test.getB(), "bbb");
}

From source file:com.netflix.suro.jackson.DefaultObjectMapper.java

@Inject
public DefaultObjectMapper(final Injector injector, Set<TypeHolder> crossInjectable) {
    SimpleModule serializerModule = new SimpleModule("SuroServer default serializers");
    serializerModule.addSerializer(ByteOrder.class, ToStringSerializer.instance);
    serializerModule.addDeserializer(ByteOrder.class, new JsonDeserializer<ByteOrder>() {
        @Override/*from  www . j a  v a 2s .  c  o m*/
        public ByteOrder deserialize(JsonParser jp, DeserializationContext ctxt)
                throws IOException, JsonProcessingException {
            if (ByteOrder.BIG_ENDIAN.toString().equals(jp.getText())) {
                return ByteOrder.BIG_ENDIAN;
            }
            return ByteOrder.LITTLE_ENDIAN;
        }
    });
    registerModule(serializerModule);
    registerModule(new GuavaModule());

    if (injector != null) {
        setInjectableValues(new InjectableValues() {
            @Override
            public Object findInjectableValue(Object valueId, DeserializationContext ctxt,
                    BeanProperty forProperty, Object beanInstance) {
                LOG.info("Looking for " + valueId);
                try {
                    return injector.getInstance(
                            Key.get(forProperty.getType().getRawClass(), Names.named((String) valueId)));
                } catch (Exception e) {
                    try {
                        return injector.getInstance(forProperty.getType().getRawClass());
                    } catch (Exception ex) {
                        LOG.info("No implementation found, returning null");
                    }
                    return null;
                }
            }
        });
    }

    configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
    configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    configure(MapperFeature.AUTO_DETECT_GETTERS, false);
    configure(MapperFeature.AUTO_DETECT_CREATORS, false);
    configure(MapperFeature.AUTO_DETECT_FIELDS, false);
    configure(MapperFeature.AUTO_DETECT_IS_GETTERS, false);
    configure(MapperFeature.AUTO_DETECT_SETTERS, false);
    configure(SerializationFeature.INDENT_OUTPUT, false);

    if (crossInjectable != null) {
        for (TypeHolder entry : crossInjectable) {
            LOG.info("Registering subtype : " + entry.getName() + " -> "
                    + entry.getRawType().getCanonicalName());
            registerSubtypes(new NamedType(entry.getRawType(), entry.getName()));
        }
    }
}