VisibilityChecker
Date: 2016-12-04

com.fasterxml.jackson.databind.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.

- - ### 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(java.lang.reflect.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(java.lang.reflect.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(java.lang.reflect.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(java.lang.reflect.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(java.lang.reflect.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(com.fasterxml.jackson.annotation.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(com.fasterxml.jackson.annotation.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(com.fasterxml.jackson.annotation.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(com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility v)` Builder method that will return a checker instance that has specified minimum visibility level for fields.
    `T` | `withGetterVisibility(com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility v)` Builder method that will return a checker instance that has specified minimum visibility level for regular ("getXxx") getters.
    `T` | `withIsGetterVisibility(com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility v)` Builder method that will return a checker instance that has specified minimum visibility level for "is-getters" ("isXxx").
    `T` | `withSetterVisibility(com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility v)` Builder method that will return a checker instance that has specified minimum visibility level for setters.
    `T` | `withVisibility(com.fasterxml.jackson.annotation.PropertyAccessor method, com.fasterxml.jackson.annotation.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(com.fasterxml.jackson.annotation.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(com.fasterxml.jackson.annotation.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)

    - #### withVisibility

          T withVisibility(com.fasterxml.jackson.annotation.PropertyAccessor method,
                         com.fasterxml.jackson.annotation.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)

    - #### withGetterVisibility

          T withGetterVisibility(com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility v)

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

    - #### withIsGetterVisibility

          T withIsGetterVisibility(com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility v)

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

    - #### withSetterVisibility

          T withSetterVisibility(com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility v)

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

    - #### withCreatorVisibility

          T withCreatorVisibility(com.fasterxml.jackson.annotation.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(com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility v)

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

    - #### isGetterVisible

          boolean isGetterVisible(java.lang.reflect.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(java.lang.reflect.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(java.lang.reflect.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(java.lang.reflect.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(java.lang.reflect.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)