Class BasicPolymorphicTypeValidator.Builder

    • Method Detail

      • allowIfBaseType

        public BasicPolymorphicTypeValidator.Builder allowIfBaseType​(java.lang.Class<?> baseOfBase)
        Method for appending matcher that will allow all subtypes in cases where nominal base type is specified class, or one of its subtypes. For example, call to
            builder.allowIfBaseType(MyBaseType.class)
        
        would indicate that any polymorphic properties where declared base type is MyBaseType (or subclass thereof) would allow all legal (assignment-compatible) subtypes.
      • allowIfBaseType

        public BasicPolymorphicTypeValidator.Builder allowIfBaseType​(java.util.regex.Pattern patternForBase)
        Method for appending matcher that will allow all subtypes in cases where nominal base type's class name matches given Pattern For example, call to
            builder.allowIfBaseType(Pattern.compile("com\\.mycompany\\..*")
        
        would indicate that any polymorphic properties where declared base type is in package com.mycompany would allow all legal (assignment-compatible) subtypes.

        NOTE! Pattern match is applied using if (patternForBase.matcher(typeId).matches()) { } that is, it must match the whole class name, not just part.

      • allowIfBaseType

        public BasicPolymorphicTypeValidator.Builder allowIfBaseType​(java.lang.String prefixForBase)
        Method for appending matcher that will allow all subtypes in cases where nominal base type's class name starts with specific prefix. For example, call to
            builder.allowIfBaseType("com.mycompany.")
        
        would indicate that any polymorphic properties where declared base type is in package com.mycompany would allow all legal (assignment-compatible) subtypes.
      • allowIfBaseType

        public BasicPolymorphicTypeValidator.Builder allowIfBaseType​(BasicPolymorphicTypeValidator.TypeMatcher matcher)
        Method for appending custom matcher called with base type: if matcher returns true, all possible subtypes will be accepted; if false, other matchers are applied.
        Parameters:
        matcher - Custom matcher to apply to base type
        Returns:
        This Builder to allow call chaining
        Since:
        2.11
      • denyForExactBaseType

        public BasicPolymorphicTypeValidator.Builder denyForExactBaseType​(java.lang.Class<?> baseTypeToDeny)
        Method for appending matcher that will mark any polymorphic properties with exact specific class to be invalid. For example, call to
            builder.denyforExactBaseType(Object.class)
        
        would indicate that any polymorphic properties where declared base type is java.lang.Object would be deemed invalid, and attempt to deserialize values of such types should result in an exception.
      • allowIfSubType

        public BasicPolymorphicTypeValidator.Builder allowIfSubType​(java.lang.Class<?> subTypeBase)
        Method for appending matcher that will allow specific subtype (regardless of declared base type) if it is subTypeBase or its subtype. For example, call to
            builder.allowIfSubType(MyImplType.class)
        
        would indicate that any polymorphic values with type of is MyImplType (or subclass thereof) would be allowed.
      • allowIfSubType

        public BasicPolymorphicTypeValidator.Builder allowIfSubType​(java.util.regex.Pattern patternForSubType)
        Method for appending matcher that will allow specific subtype (regardless of declared base type) in cases where subclass name matches given Pattern. For example, call to
            builder.allowIfSubType(Pattern.compile("com\\.mycompany\\.")
        
        would indicate that any polymorphic values in package com.mycompany would be allowed.

        NOTE! Pattern match is applied using if (patternForSubType.matcher(typeId).matches()) { } that is, it must match the whole class name, not just part.

      • allowIfSubType

        public BasicPolymorphicTypeValidator.Builder allowIfSubType​(java.lang.String prefixForSubType)
        Method for appending matcher that will allow specific subtype (regardless of declared base type) in cases where subclass name starts with specified prefix For example, call to
            builder.allowIfSubType("com.mycompany.")
        
        would indicate that any polymorphic values in package com.mycompany would be allowed.
      • allowIfSubType

        public BasicPolymorphicTypeValidator.Builder allowIfSubType​(BasicPolymorphicTypeValidator.TypeMatcher matcher)
        Method for appending custom matcher called with resolved subtype: if matcher returns true, type will be accepted; if false, other matchers are applied.
        Parameters:
        matcher - Custom matcher to apply to resolved subtype
        Returns:
        This Builder to allow call chaining
        Since:
        2.11
      • allowIfSubTypeIsArray

        public BasicPolymorphicTypeValidator.Builder allowIfSubTypeIsArray()
        Method for appending matcher that will allow all subtypes that are Java arrays (regardless of element type). Note that this does NOT validate element type itself as long as Polymorphic Type handling is enabled for element type: this is the case with all standard "Default Typing" inclusion criteria as well as for annotation (@JsonTypeInfo) use case (since annotation only applies to element types, not container).

        NOTE: not used with other Java collection types (Lists, Collections), mostly since use of generic types as polymorphic values is not (well) supported.

        Since:
        2.11