VisibilityChecker (Jackson JSON Processor)
Date: 2013-07-14

org.codehaus.jackson.map.introspect

## Interface VisibilityChecker<T extends VisibilityChecker<T>>

- All Known Implementing Classes:
    VisibilityChecker.Std

      public interface VisibilityChecker<T extends VisibilityChecker<T>>

  Interface for object used for determine which property elements (methods, fields, constructors) can be auto-detected, with respect to their visibility modifiers.

  Note on type declaration: funky recursive type is necessary to support builder/fluent pattern.

  Note on compatibility: 1.9 introduced overloaded "with" method (which takes `JsonAutoDetect.Visibility` as value to assign); which could be potential issue, but assumption here is that all custom implementations are based on "Std" base class

  Since:
    1.5
  Author:
    tatu

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Interface and Description
    --- | ---
    `static class` | `VisibilityChecker.Std` Default standard implementation is purely based on visibility modifier of given class members, and its configured minimum levels.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `boolean` | `isCreatorVisible(AnnotatedMember m)`
    `boolean` | `isCreatorVisible(Member m)` Method for checking whether given method is auto-detectable as Creator, with respect to its visibility (not considering method signature or name, just visibility)
    `boolean` | `isFieldVisible(AnnotatedField f)`
    `boolean` | `isFieldVisible(Field f)` Method for checking whether given field is auto-detectable as property, with respect to its visibility (not considering method signature or name, just visibility)
    `boolean` | `isGetterVisible(AnnotatedMethod m)`
    `boolean` | `isGetterVisible(Method m)` Method for checking whether given method is auto-detectable as regular getter, with respect to its visibility (not considering method signature or name, just visibility)
    `boolean` | `isIsGetterVisible(AnnotatedMethod m)`
    `boolean` | `isIsGetterVisible(Method m)` Method for checking whether given method is auto-detectable as is-getter, with respect to its visibility (not considering method signature or name, just visibility)
    `boolean` | `isSetterVisible(AnnotatedMethod m)`
    `boolean` | `isSetterVisible(Method m)` Method for checking whether given method is auto-detectable as setter, with respect to its visibility (not considering method signature or name, just visibility)
    `T` | `with(JsonAutoDetect.Visibility v)` Builder method that will create and return an instance that has specified `JsonAutoDetect.Visibility` value to use for all property elements.
    `T` | `with(JsonAutoDetect ann)` Builder method that will return an instance that has same settings as this instance has, except for values that given annotation overrides.
    `T` | `withCreatorVisibility(JsonAutoDetect.Visibility v)` Builder method that will return a checker instance that has specified minimum visibility level for creator methods (constructors, factory methods)
    `T` | `withFieldVisibility(JsonAutoDetect.Visibility v)` Builder method that will return a checker instance that has specified minimum visibility level for fields.
    `T` | `withGetterVisibility(JsonAutoDetect.Visibility v)` Builder method that will return a checker instance that has specified minimum visibility level for regular ("getXxx") getters.
    `T` | `withIsGetterVisibility(JsonAutoDetect.Visibility v)` Builder method that will return a checker instance that has specified minimum visibility level for "is-getters" ("isXxx").
    `T` | `withSetterVisibility(JsonAutoDetect.Visibility v)` Builder method that will return a checker instance that has specified minimum visibility level for setters.
    `T` | `withVisibility(JsonMethod method, JsonAutoDetect.Visibility v)` Builder method that will create and return an instance that has specified `JsonAutoDetect.Visibility` value to use for specified property.

- - ### Method Detail

    - #### with

          T with(JsonAutoDetect ann)

      Builder method that will return an instance that has same settings as this instance has, except for values that given annotation overrides.

    - #### with

          T with(JsonAutoDetect.Visibility v)

      Builder method that will create and return an instance that has specified `JsonAutoDetect.Visibility` value to use for all property elements. Typical usage would be something like:

            mapper.setVisibilityChecker(
               mapper.getVisibilityChecker().with(Visibility.NONE));

      (which would basically disable all auto-detection)
      Since:
        1.9

    - #### withVisibility

          T withVisibility(JsonMethod method,
                         JsonAutoDetect.Visibility v)

      Builder method that will create and return an instance that has specified `JsonAutoDetect.Visibility` value to use for specified property. Typical usage would be:

            mapper.setVisibilityChecker(
               mapper.getVisibilityChecker().withVisibility(JsonMethod.FIELD, Visibility.ANY));

      (which would basically enable auto-detection for all member fields)
      Since:
        1.9

    - #### withGetterVisibility

          T withGetterVisibility(JsonAutoDetect.Visibility v)

      Builder method that will return a checker instance that has specified minimum visibility level for regular ("getXxx") getters.

    - #### withIsGetterVisibility

          T withIsGetterVisibility(JsonAutoDetect.Visibility v)

      Builder method that will return a checker instance that has specified minimum visibility level for "is-getters" ("isXxx").

    - #### withSetterVisibility

          T withSetterVisibility(JsonAutoDetect.Visibility v)

      Builder method that will return a checker instance that has specified minimum visibility level for setters.

    - #### withCreatorVisibility

          T withCreatorVisibility(JsonAutoDetect.Visibility v)

      Builder method that will return a checker instance that has specified minimum visibility level for creator methods (constructors, factory methods)

    - #### withFieldVisibility

          T withFieldVisibility(JsonAutoDetect.Visibility v)

      Builder method that will return a checker instance that has specified minimum visibility level for fields.

    - #### isGetterVisible

          boolean isGetterVisible(Method m)

      Method for checking whether given method is auto-detectable as regular getter, with respect to its visibility (not considering method signature or name, just visibility)

    - #### isGetterVisible

          boolean isGetterVisible(AnnotatedMethod m)

    - #### isIsGetterVisible

          boolean isIsGetterVisible(Method m)

      Method for checking whether given method is auto-detectable as is-getter, with respect to its visibility (not considering method signature or name, just visibility)

    - #### isIsGetterVisible

          boolean isIsGetterVisible(AnnotatedMethod m)

    - #### isSetterVisible

          boolean isSetterVisible(Method m)

      Method for checking whether given method is auto-detectable as setter, with respect to its visibility (not considering method signature or name, just visibility)

    - #### isSetterVisible

          boolean isSetterVisible(AnnotatedMethod m)

    - #### isCreatorVisible

          boolean isCreatorVisible(Member m)

      Method for checking whether given method is auto-detectable as Creator, with respect to its visibility (not considering method signature or name, just visibility)

    - #### isCreatorVisible

          boolean isCreatorVisible(AnnotatedMember m)

    - #### isFieldVisible

          boolean isFieldVisible(Field f)

      Method for checking whether given field is auto-detectable as property, with respect to its visibility (not considering method signature or name, just visibility)

    - #### isFieldVisible

          boolean isFieldVisible(AnnotatedField f)