# coding: utf-8

"""
    Adobe Experience Manager OSGI config (AEM) API

    Swagger AEM OSGI is an OpenAPI specification for Adobe Experience Manager (AEM) OSGI Configurations API  # noqa: E501

    OpenAPI spec version: 1.0.0-pre.0
    Contact: opensource@shinesolutions.com
    Generated by: https://openapi-generator.tech
"""


import pprint
import re  # noqa: F401

import six


class ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties(object):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.
    """

    """
    Attributes:
      openapi_types (dict): The key is attribute name
                            and the value is attribute type.
      attribute_map (dict): The key is attribute name
                            and the value is json key in definition.
    """
    openapi_types = {
        'parameter_whitelist': 'ConfigNodePropertyArray',
        'parameter_whitelist_prefixes': 'ConfigNodePropertyArray',
        'binary_parameter_whitelist': 'ConfigNodePropertyArray',
        'modifier_whitelist': 'ConfigNodePropertyArray',
        'operation_whitelist': 'ConfigNodePropertyArray',
        'operation_whitelist_prefixes': 'ConfigNodePropertyArray',
        'typehint_whitelist': 'ConfigNodePropertyArray',
        'resourcetype_whitelist': 'ConfigNodePropertyArray'
    }

    attribute_map = {
        'parameter_whitelist': 'parameter.whitelist',
        'parameter_whitelist_prefixes': 'parameter.whitelist.prefixes',
        'binary_parameter_whitelist': 'binary.parameter.whitelist',
        'modifier_whitelist': 'modifier.whitelist',
        'operation_whitelist': 'operation.whitelist',
        'operation_whitelist_prefixes': 'operation.whitelist.prefixes',
        'typehint_whitelist': 'typehint.whitelist',
        'resourcetype_whitelist': 'resourcetype.whitelist'
    }

    def __init__(self, parameter_whitelist=None, parameter_whitelist_prefixes=None, binary_parameter_whitelist=None, modifier_whitelist=None, operation_whitelist=None, operation_whitelist_prefixes=None, typehint_whitelist=None, resourcetype_whitelist=None):  # noqa: E501
        """ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties - a model defined in OpenAPI"""  # noqa: E501

        self._parameter_whitelist = None
        self._parameter_whitelist_prefixes = None
        self._binary_parameter_whitelist = None
        self._modifier_whitelist = None
        self._operation_whitelist = None
        self._operation_whitelist_prefixes = None
        self._typehint_whitelist = None
        self._resourcetype_whitelist = None
        self.discriminator = None

        if parameter_whitelist is not None:
            self.parameter_whitelist = parameter_whitelist
        if parameter_whitelist_prefixes is not None:
            self.parameter_whitelist_prefixes = parameter_whitelist_prefixes
        if binary_parameter_whitelist is not None:
            self.binary_parameter_whitelist = binary_parameter_whitelist
        if modifier_whitelist is not None:
            self.modifier_whitelist = modifier_whitelist
        if operation_whitelist is not None:
            self.operation_whitelist = operation_whitelist
        if operation_whitelist_prefixes is not None:
            self.operation_whitelist_prefixes = operation_whitelist_prefixes
        if typehint_whitelist is not None:
            self.typehint_whitelist = typehint_whitelist
        if resourcetype_whitelist is not None:
            self.resourcetype_whitelist = resourcetype_whitelist

    @property
    def parameter_whitelist(self):
        """Gets the parameter_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501


        :return: The parameter_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._parameter_whitelist

    @parameter_whitelist.setter
    def parameter_whitelist(self, parameter_whitelist):
        """Sets the parameter_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.


        :param parameter_whitelist: The parameter_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._parameter_whitelist = parameter_whitelist

    @property
    def parameter_whitelist_prefixes(self):
        """Gets the parameter_whitelist_prefixes of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501


        :return: The parameter_whitelist_prefixes of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._parameter_whitelist_prefixes

    @parameter_whitelist_prefixes.setter
    def parameter_whitelist_prefixes(self, parameter_whitelist_prefixes):
        """Sets the parameter_whitelist_prefixes of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.


        :param parameter_whitelist_prefixes: The parameter_whitelist_prefixes of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._parameter_whitelist_prefixes = parameter_whitelist_prefixes

    @property
    def binary_parameter_whitelist(self):
        """Gets the binary_parameter_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501


        :return: The binary_parameter_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._binary_parameter_whitelist

    @binary_parameter_whitelist.setter
    def binary_parameter_whitelist(self, binary_parameter_whitelist):
        """Sets the binary_parameter_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.


        :param binary_parameter_whitelist: The binary_parameter_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._binary_parameter_whitelist = binary_parameter_whitelist

    @property
    def modifier_whitelist(self):
        """Gets the modifier_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501


        :return: The modifier_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._modifier_whitelist

    @modifier_whitelist.setter
    def modifier_whitelist(self, modifier_whitelist):
        """Sets the modifier_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.


        :param modifier_whitelist: The modifier_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._modifier_whitelist = modifier_whitelist

    @property
    def operation_whitelist(self):
        """Gets the operation_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501


        :return: The operation_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._operation_whitelist

    @operation_whitelist.setter
    def operation_whitelist(self, operation_whitelist):
        """Sets the operation_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.


        :param operation_whitelist: The operation_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._operation_whitelist = operation_whitelist

    @property
    def operation_whitelist_prefixes(self):
        """Gets the operation_whitelist_prefixes of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501


        :return: The operation_whitelist_prefixes of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._operation_whitelist_prefixes

    @operation_whitelist_prefixes.setter
    def operation_whitelist_prefixes(self, operation_whitelist_prefixes):
        """Sets the operation_whitelist_prefixes of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.


        :param operation_whitelist_prefixes: The operation_whitelist_prefixes of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._operation_whitelist_prefixes = operation_whitelist_prefixes

    @property
    def typehint_whitelist(self):
        """Gets the typehint_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501


        :return: The typehint_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._typehint_whitelist

    @typehint_whitelist.setter
    def typehint_whitelist(self, typehint_whitelist):
        """Sets the typehint_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.


        :param typehint_whitelist: The typehint_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._typehint_whitelist = typehint_whitelist

    @property
    def resourcetype_whitelist(self):
        """Gets the resourcetype_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501


        :return: The resourcetype_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :rtype: ConfigNodePropertyArray
        """
        return self._resourcetype_whitelist

    @resourcetype_whitelist.setter
    def resourcetype_whitelist(self, resourcetype_whitelist):
        """Sets the resourcetype_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.


        :param resourcetype_whitelist: The resourcetype_whitelist of this ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties.  # noqa: E501
        :type: ConfigNodePropertyArray
        """

        self._resourcetype_whitelist = resourcetype_whitelist

    def to_dict(self):
        """Returns the model properties as a dict"""
        result = {}

        for attr, _ in six.iteritems(self.openapi_types):
            value = getattr(self, attr)
            if isinstance(value, list):
                result[attr] = list(map(
                    lambda x: x.to_dict() if hasattr(x, "to_dict") else x,
                    value
                ))
            elif hasattr(value, "to_dict"):
                result[attr] = value.to_dict()
            elif isinstance(value, dict):
                result[attr] = dict(map(
                    lambda item: (item[0], item[1].to_dict())
                    if hasattr(item[1], "to_dict") else item,
                    value.items()
                ))
            else:
                result[attr] = value

        return result

    def to_str(self):
        """Returns the string representation of the model"""
        return pprint.pformat(self.to_dict())

    def __repr__(self):
        """For `print` and `pprint`"""
        return self.to_str()

    def __eq__(self, other):
        """Returns true if both objects are equal"""
        if not isinstance(other, ComAdobeCqSocialUgcbaseSecurityImplSaferSlingPostValidatorImplProperties):
            return False

        return self.__dict__ == other.__dict__

    def __ne__(self, other):
        """Returns true if both objects are not equal"""
        return not self == other
