类com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair源码实例Demo

下面列出了怎么用com.fasterxml.jackson.databind.introspect.AnnotationIntrospectorPair的API类实例代码及写法,或者点击链接到github查看源代码。

源代码1 项目: jackson-modules-base   文件: ObjectMapperModule.java
@Override
public ObjectMapper get()
{
    ObjectMapper mapper = objectMapper;
    if (mapper == null) {
        final GuiceAnnotationIntrospector guiceIntrospector = new GuiceAnnotationIntrospector();
        AnnotationIntrospector defaultAI = new JacksonAnnotationIntrospector();
        MapperBuilder<?,?> builder = JsonMapper.builder()
                .injectableValues(new GuiceInjectableValues(injector))
                .annotationIntrospector(new AnnotationIntrospectorPair(guiceIntrospector, defaultAI))
                .addModules(modulesToAdd);
        for (Provider<? extends Module> provider : providedModules) {
            builder = builder.addModule(provider.get());
        }
        mapper = builder.build();

      /*
  } else {
        // 05-Feb-2017, tatu: _Should_ be fine, considering instances are now (3.0) truly immutable.
      //    But if this turns out to be problematic, may need to consider addition of `copy()`
      //    back in databind
      mapper = mapper.copy();
      */
  }
  return mapper;
}
 
源代码2 项目: jackson-modules-base   文件: TestJaxbAutoDetect.java
public void testJaxbAnnotatedObject() throws Exception
{
    AnnotationIntrospector primary = new JaxbAnnotationIntrospector();
    AnnotationIntrospector secondary = new JacksonAnnotationIntrospector();
    AnnotationIntrospector pair = new AnnotationIntrospectorPair(primary, secondary);
    ObjectMapper mapper = objectMapperBuilder()
            .annotationIntrospector(pair)
            .build();

    JaxbAnnotatedObject original = new JaxbAnnotatedObject("123");
    
    String json = mapper.writeValueAsString(original);
    assertFalse("numberString field in JSON", json.contains("numberString")); // kinda hack-y :)
    JaxbAnnotatedObject result = mapper.readValue(json, JaxbAnnotatedObject.class);
    assertEquals(new BigDecimal("123"), result.number);
}
 
源代码3 项目: jackson-modules-base   文件: TestUnwrapping.java
public void testXmlElementAndXmlElementRefs() throws Exception
    {
        Bean<A> bean = new Bean<A>();
        bean.r = new A(12);
        bean.name = "test";
        AnnotationIntrospector pair = new AnnotationIntrospectorPair(
                new JacksonAnnotationIntrospector(),
                new JaxbAnnotationIntrospector());
        ObjectMapper mapper = objectMapperBuilder()
                .annotationIntrospector(pair)
                .build();
            
//            mapper.setAnnotationIntrospector(new JacksonAnnotationIntrospector());
            // mapper.setAnnotationIntrospector(new JaxbAnnotationIntrospector());

        String json = mapper.writeValueAsString(bean);
        // !!! TODO: verify
        assertNotNull(json);
    }
 
public void testSimpleIgnore() throws Exception
{
    // first: only Jackson introspector (default)
    ObjectMapper mapper = new ObjectMapper();
    Map<String,Object> result = writeAndMap(mapper, new IgnoreBean());
    assertEquals(2, result.size());
    assertEquals("abc", result.get("text"));
    assertEquals(Boolean.TRUE, result.get("any"));

    // Then JAXB only
    mapper = objectMapperBuilder()
            .annotationIntrospector(_jaxbAI)
            .build();

    // jackson one should have priority
    result = writeAndMap(mapper, new IgnoreBean());
    assertEquals(2, result.size());
    assertEquals(Integer.valueOf(13), result.get("number"));
    assertEquals(Boolean.TRUE, result.get("any"));

    // then both, Jackson first
    mapper = objectMapperBuilder()
            .annotationIntrospector(new AnnotationIntrospectorPair(_jacksonAI, _jaxbAI))
            .build();

    result = writeAndMap(mapper, new IgnoreBean());
    assertEquals(1, result.size());
    assertEquals(Boolean.TRUE, result.get("any"));

    // then both, JAXB first
    mapper = objectMapperBuilder()
            .annotationIntrospector(new AnnotationIntrospectorPair(_jaxbAI, _jacksonAI))
            .build();

    result = writeAndMap(mapper, new IgnoreBean());
    assertEquals(1, result.size());
    assertEquals(Boolean.TRUE, result.get("any"));
}
 
public void testSimpleFieldIgnore() throws Exception
{
    ObjectMapper mapper;

    // first: only Jackson introspector (default)
    mapper = new ObjectMapper();
    Map<String,Object> result = writeAndMap(mapper, new IgnoreFieldBean());
    assertEquals(2, result.size());
    assertEquals("123", result.get("text"));
    assertEquals(Boolean.TRUE, result.get("any"));

    // Then JAXB only
    mapper = objectMapperBuilder()
            .annotationIntrospector(_jaxbAI)
            .build();

    // jackson one should have priority
    result = writeAndMap(mapper, new IgnoreFieldBean());
    assertEquals(2, result.size());
    assertEquals(Integer.valueOf(7), result.get("number"));
    assertEquals(Boolean.TRUE, result.get("any"));

    // then both, Jackson first
    mapper = objectMapperBuilder()
            .annotationIntrospector(new AnnotationIntrospectorPair(_jacksonAI, _jaxbAI))
            .build();

    result = writeAndMap(mapper, new IgnoreFieldBean());
    assertEquals(1, result.size());
    assertEquals(Boolean.TRUE, result.get("any"));

    // then both, JAXB first
    mapper = objectMapperBuilder()
            .annotationIntrospector(new AnnotationIntrospectorPair(_jaxbAI, _jacksonAI))
            .build();

    result = writeAndMap(mapper, new IgnoreFieldBean());
    assertEquals(1, result.size());
    assertEquals(Boolean.TRUE, result.get("any"));
}
 
/**
 * Test that will just use Jackson annotations, but did trigger [JACKSON-495] due to a bug
 * in JAXB annotation introspector.
 */
public void testIssue495() throws Exception
{
    ObjectMapper mapper = objectMapperBuilder()
            .annotationIntrospector(new AnnotationIntrospectorPair(_jacksonAI, _jaxbAI))
            .build();
    CreatorBean bean = mapper.readValue("{\"name\":\"foo\"}", CreatorBean.class);
    assertNotNull(bean);
}
 
源代码7 项目: jackson-modules-base   文件: BaseJaxbTest.java
protected MapperBuilder<?,?> getJaxbAndJacksonMapperBuilder()
{
    return JsonMapper.builder()
            .annotationIntrospector(new AnnotationIntrospectorPair(
                    new JaxbAnnotationIntrospector(),
                    new JacksonAnnotationIntrospector()));
}
 
源代码8 项目: proarc   文件: JsonUtils.java
/**
 * Creates a configured mapper supporting JAXB.
 * @see #createObjectMapper(com.fasterxml.jackson.databind.ObjectMapper)
 */
public static ObjectMapper createJaxbMapper() {
    ObjectMapper om = createObjectMapper(createObjectMapper());
    JaxbAnnotationIntrospector jaxbIntr = new JaxbAnnotationIntrospector(om.getTypeFactory());
    JacksonAnnotationIntrospector jsonIntr = new JacksonAnnotationIntrospector();
    om.setAnnotationIntrospector(new AnnotationIntrospectorPair(jsonIntr, jaxbIntr));
    return om;
}
 
源代码9 项目: lams   文件: BaseSettings.java
public BaseSettings withInsertedAnnotationIntrospector(AnnotationIntrospector ai) {
    return withAnnotationIntrospector(AnnotationIntrospectorPair.create(ai, _annotationIntrospector));
}
 
源代码10 项目: lams   文件: BaseSettings.java
public BaseSettings withAppendedAnnotationIntrospector(AnnotationIntrospector ai) {
    return withAnnotationIntrospector(AnnotationIntrospectorPair.create(_annotationIntrospector, ai));
}
 
源代码11 项目: jackson-modules-base   文件: BaseJaxbTest.java
protected MapperBuilder<?,?> getJacksonAndJaxbMapperBuilder()
{
    return JsonMapper.builder()
            .annotationIntrospector(new AnnotationIntrospectorPair(new JacksonAnnotationIntrospector(),
                    new JaxbAnnotationIntrospector()));
}
 
 同包方法