View Javadoc
1   package edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.databind;
2   
3   import java.io.IOException;
4   
5   import edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.core.*;
6   import edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.core.format.InputAccessor;
7   import edu.internet2.middleware.grouperClientExt.com.fasterxml.jackson.core.format.MatchStrength;
8   
9   /**
10   * Sub-class of {@link JsonFactory} that will create a proper
11   * {@link ObjectCodec} to allow seam-less conversions between
12   * JSON content and Java objects (POJOs).
13   * The only addition to regular {@link JsonFactory} currently
14   * is that {@link ObjectMapper} is constructed and passed as
15   * the codec to use.
16   */
17  public class MappingJsonFactory
18      extends JsonFactory
19  {
20      private static final long serialVersionUID = -1; // since 2.7
21  
22      public MappingJsonFactory()
23      {
24          this(null);
25      }
26  
27      public MappingJsonFactory(ObjectMapper mapper)
28      {
29          super(mapper);
30          if (mapper == null) {
31              setCodec(new ObjectMapper(this));
32          }
33      }
34  
35      public MappingJsonFactory(JsonFactory src, ObjectMapper mapper)
36      {
37          super(src, mapper);
38          if (mapper == null) {
39              setCodec(new ObjectMapper(this));
40          }
41      }
42  
43      /**
44       * We'll override the method to return more specific type; co-variance
45       * helps here
46       */
47      @Override
48      public final ObjectMappererClientExt/com/fasterxml/jackson/databind/ObjectMapper.html#ObjectMapper">ObjectMapper getCodec() { return (ObjectMapper) _objectCodec; }
49  
50      // @since 2.1
51      @Override
52      public JsonFactory copy()
53      {
54          _checkInvalidCopy(MappingJsonFactory.class);
55          // note: as with base class, must NOT copy mapper reference
56          return new MappingJsonFactory(this, null);
57      }
58      
59      /*
60      /**********************************************************
61      /* Format detection functionality (since 1.8)
62      /**********************************************************
63       */
64      
65      /**
66       * Sub-classes need to override this method
67       */
68      @Override
69      public String getFormatName()
70      {
71          /* since non-JSON factories typically should not extend this class,
72           * let's just always return JSON as name.
73           */
74          return FORMAT_NAME_JSON;
75      }
76  
77      /**
78       * Sub-classes need to override this method
79       */
80      @Override
81      public MatchStrength hasFormat(InputAccessor acc) throws IOException
82      {
83          if (getClass() == MappingJsonFactory.class) {
84              return hasJSONFormat(acc);
85          }
86          return null;
87      }
88  }