Class MixInHandler

java.lang.Object
tools.jackson.databind.introspect.MixInHandler
All Implemented Interfaces:
Serializable, Snapshottable<MixInResolver>, MixInResolver

public class MixInHandler extends Object implements MixInResolver, Serializable
Basic MixInResolver implementation that both allows simple "local" override definitions (with simple Mix-in class over Target class mapping) and allows optional custom overrides for lookup.

Implementation is only thread-safe after initialization (that is, when underlying Map is not modified but only read).

See Also:
  • Field Details

    • _overrides

      protected final MixInResolver _overrides
      External resolver that gets called before looking at any locally defined mix-in target classes.
    • _localMixIns

      protected Map<ClassKey,Class<?>> _localMixIns
      Simple mix-in targets defined locally.
  • Constructor Details

  • Method Details

    • withOverrides

      public MixInHandler withOverrides(MixInResolver overrides)
      Mutant factory for constructor a new resolver instance with given mix-in resolver override.
    • withoutLocalDefinitions

      public MixInHandler withoutLocalDefinitions()
      Mutant factory method that constructs a new instance that has no locally defined mix-in/target mappings.
    • addLocalDefinitions

      public MixInHandler addLocalDefinitions(Map<Class<?>,Class<?>> sourceMixins)
    • addLocalDefinition

      public MixInHandler addLocalDefinition(Class<?> target, Class<?> mixinSource)
    • clearLocalDefinitions

      public MixInHandler clearLocalDefinitions(Map<Class<?>,Class<?>> sourceMixins)
    • snapshot

      public MixInHandler snapshot()
      Description copied from interface: MixInResolver
      Method called to create a new, non-shared copy, to be used by different ObjectMapper instance, and one that should not be connected to this instance, if resolver has mutable state. If resolver is immutable may simply return `this`.
      Specified by:
      snapshot in interface MixInResolver
      Specified by:
      snapshot in interface Snapshottable<MixInResolver>
    • findMixInClassFor

      public Class<?> findMixInClassFor(Class<?> cls)
      Description copied from interface: MixInResolver
      Method that will check if there are "mix-in" classes (with mix-in annotations) for given class
      Specified by:
      findMixInClassFor in interface MixInResolver
    • hasMixIns

      public boolean hasMixIns()
      Description copied from interface: MixInResolver
      Method that may be called for optimization purposes, to see if calls to mix-in resolver may be avoided. Return value of true means that it is possible that a mix-in class will be found; false that no mix-in will ever be found. In latter case caller can avoid calls altogether.

      Note that the reason for "empty" resolvers is to use "null object" for simplifying calling code.

      Specified by:
      hasMixIns in interface MixInResolver
      Returns:
      True, if this resolver MAY have mix-ins to apply; false if not (it is "empty")
    • localSize

      public int localSize()