T
- the (super-)type of the objects to being validated.public class SwitchingUpdatingValidator<T> extends Validators.RequiredValidator<T> implements UpdatingValidator<T>, ParentValidator<T>, BeanValidator, AdditionalAllowedPropertiesProvider
Note that while this class implements BeanValidator, successfully invoking validateBean() or updateBean() requires that the direct child validators implement BeanValidator, or are an instance of ValidatorManager.ValidatorManagerValidator.
Created: September 22 2014
UpdatingValidator.NoOpValidator<T>, UpdatingValidator.NullObjectIfNulledUpdatingValidator, UpdatingValidator.PropertyUpdateAction
BeanValidator.NoOpBeanValidator
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLASS_VERSION
Class version string
|
static java.lang.String |
DEFAULT_OPTION_KEY
Our default option.
|
protected static VariableArgumentApplicationLogging |
LOGGER |
NO_OP
NO_OP_BEAN_VALIDATOR
Constructor and Description |
---|
SwitchingUpdatingValidator() |
SwitchingUpdatingValidator(java.lang.String pErrorCode,
boolean pRequired,
java.lang.String pSwitchingPropertyName,
java.util.Map<?,Validator<? extends T>> pSwitchValueToValidator,
Validator<? extends T> pDefaultValidator)
Create a new instance.
|
Modifier and Type | Method and Description |
---|---|
protected java.lang.Object |
createInstanceOrUpdateType(java.lang.Object pTypeValue,
java.lang.String pPropertyName,
java.lang.Object pSourceValue,
java.lang.Object pTargetValue,
ValidatorContext<?> pContext)
Create or replace pTargetValue.
|
boolean |
getAddCreatedBeanToTarget()
Returns property addCreatedBeanToTarget.
|
java.util.Set<java.lang.String> |
getAdditionalAllowedProperties(java.lang.Object pSource,
java.lang.Object pTarget,
ValidatorContext<?> pContext)
Return any additional allowed properties.
|
protected BeanValidator |
getBeanValidatorForValidator(Validator<?> pValidator)
Get the bean validator for the specified validator.
|
java.util.Map<java.lang.Object,Validator<?>> |
getChildValidatorMap()
Return a map form of the child validators, used for generating
a human readable representation of the parent-child relationship.
|
java.util.Collection<? extends Validator<?>> |
getChildValidators()
Get any child validators.
|
java.lang.Object |
getDefaultKeyForChildValidatorMap()
Return the default key for the childValidatorMap, if any.
|
Validator<? extends T> |
getDefaultValidator()
Returns property defaultValidator.
|
java.util.Map<java.lang.Object,java.util.Set<java.lang.String>> |
getOptionToAdditionalAllowedProperties()
Returns property optionToAdditionalAllowedProperties.
|
java.lang.String |
getSwitchingPropertyName()
Returns property switchingPropertyName.
|
protected java.lang.Object |
getSwitchingValue(java.lang.Object pBean,
ValidatorContext<?> pContext)
Get the switching value from pBean.
|
java.util.Map<?,Validator<? extends T>> |
getSwitchValueToValidatorMap()
Get the switch value to validator map.
|
protected Validator<? extends T> |
getValidatorForBean(java.lang.Object pSourceBean,
java.lang.Object pTargetBean,
java.lang.String pPropertyName,
ValidatorContext<?> pContext)
Get the appropriate validator for the specified bean.
|
atg.service.validator.GenericUpdatingValidatorHelper |
getValidatorHelper()
Returns property validatorHelper.
|
UpdatingValidator.PropertyUpdateAction |
handleTargetDeletion(java.lang.String pPropertyName,
java.lang.Object pSourceValue,
java.lang.Object pTargetValue,
ValidatorContext<?> pContext) |
boolean |
isAllowTypeChange()
Returns property allowTypeChange.
|
boolean |
isAllowUnknownTypes()
Returns property allowUnknownTypes.
|
void |
setAddCreatedBeanToTarget(boolean pAddCreatedBeanToTarget)
Sets property addCreatedBeanToTarget.
|
void |
setAllowTypeChange(boolean pAllowTypeChange)
Sets property allowTypeChange.
|
void |
setAllowUnknownTypes(boolean pAllowUnknownTypes)
Sets property allowUnknownTypes.
|
void |
setChildValidatorMap(java.util.Map<?,Validator<?>> pChildMap)
Set the child validator map.
|
void |
setDefaultValidator(Validator<? extends T> pDefaultValidator)
Sets property defaultValidator.
|
void |
setOptionToAdditionalAllowedProperties(java.util.Map<java.lang.Object,java.util.Set<java.lang.String>> pOptionToAdditionalAllowedProperties)
Sets property optionToAdditionalAllowedProperties.
|
void |
setSwitchingPropertyName(java.lang.String pSwitchingPropertyName)
Sets property switchingPropertyName.
|
void |
setSwitchValueToValidatorMap(java.util.Map<?,Validator<? extends T>> pSwitchValueToValidatorMap)
Set the switch value to validator map.
|
void |
setValidatorHelper(atg.service.validator.GenericUpdatingValidatorHelper pUpdateHelper)
Sets property validatorHelper.
|
void |
updateBean(java.lang.Object pSource,
java.lang.Object pTarget,
ValidatorContext<?> pContext)
Update the target bean with properties from pSource.
|
UpdatingValidator.PropertyUpdateAction |
updateBeanValue(java.lang.String pPropertyName,
java.lang.Object pSourceValue,
java.lang.Object pTargetValue,
ValidatorContext<?> pContext)
Typically invoked by
ValidatorManager . |
void |
validateBean(java.lang.Object pBean,
ValidatorContext<?> pContext)
Validate the specified bean.
|
T |
validateBeanProperty(java.lang.String pPropertyName,
java.lang.Object pBean,
ValidatorContext<?> pContext)
Validate a property of the bean pPropertyValue.
|
T |
validateValue(java.lang.String pPropertyName,
java.lang.Object pPropertyValue,
ValidatorContext<?> pContext)
Validate (and possibly convert) the specified property value.
|
getClassRequired, getRequiredOption, getRequiredPredicate, isRequired, keyMustBePresent, setClassRequired, setRequired, setRequiredOption, setRequiredPredicate
assertAlphanumeric, assertBoolean, assertDateTime, assertDouble, assertInstanceOf, assertInteger, assertLong, assertNotBlankString, assertNotEmpty, assertNotEmpty, assertNotNull, assertNotNull, assertString, assertString, assertString, createInstance, getBeanPropertyValueForValidation, getErrorCode, getNameForClass, getPropertyNames, getPropertyValue, getPropertyValue, hasProperty, isDigits, isRequired, setErrorCode, setPropertyValue
public static java.lang.String CLASS_VERSION
public static final java.lang.String DEFAULT_OPTION_KEY
protected static final VariableArgumentApplicationLogging LOGGER
public SwitchingUpdatingValidator(java.lang.String pErrorCode, boolean pRequired, java.lang.String pSwitchingPropertyName, java.util.Map<?,Validator<? extends T>> pSwitchValueToValidator, Validator<? extends T> pDefaultValidator)
pPropertyName
- the switching property name to switch onepublic SwitchingUpdatingValidator()
public void setOptionToAdditionalAllowedProperties(java.util.Map<java.lang.Object,java.util.Set<java.lang.String>> pOptionToAdditionalAllowedProperties)
public java.util.Map<java.lang.Object,java.util.Set<java.lang.String>> getOptionToAdditionalAllowedProperties()
public void setAllowTypeChange(boolean pAllowTypeChange)
public boolean isAllowTypeChange()
public void setAllowUnknownTypes(boolean pAllowUnknownTypes)
public boolean isAllowUnknownTypes()
public java.util.Map<?,Validator<? extends T>> getSwitchValueToValidatorMap()
public void setSwitchValueToValidatorMap(java.util.Map<?,Validator<? extends T>> pSwitchValueToValidatorMap)
public void setSwitchingPropertyName(java.lang.String pSwitchingPropertyName)
public java.lang.String getSwitchingPropertyName()
public void setDefaultValidator(Validator<? extends T> pDefaultValidator)
public Validator<? extends T> getDefaultValidator()
public void setValidatorHelper(atg.service.validator.GenericUpdatingValidatorHelper pUpdateHelper)
public atg.service.validator.GenericUpdatingValidatorHelper getValidatorHelper()
public void setAddCreatedBeanToTarget(boolean pAddCreatedBeanToTarget)
public boolean getAddCreatedBeanToTarget()
protected java.lang.Object getSwitchingValue(java.lang.Object pBean, ValidatorContext<?> pContext) throws PropertyNotFoundException
pBean
- the object to get the switching value from.pContext
- the update contextPropertyNotFoundException
public T validateValue(java.lang.String pPropertyName, java.lang.Object pPropertyValue, ValidatorContext<?> pContext)
Validator
validateValue
in interface Validator<T>
validateValue
in class Validators.RequiredValidator<T>
pPropertyName
- the name of the property being validated. This
is typically used as a key for fetching the value from pProperties.pPropertyValue
- the fetched property valuepContext
- the current validation context.public UpdatingValidator.PropertyUpdateAction updateBeanValue(java.lang.String pPropertyName, java.lang.Object pSourceValue, java.lang.Object pTargetValue, ValidatorContext<?> pContext)
UpdatingValidator
ValidatorManager
. Update
a bean value from a source value. Note that if a new target bean
is created, pContext.replaceParentDst() may need to be invoked.updateBeanValue
in interface UpdatingValidator<T>
pSourceValue
- the value of pPropertyName property of the source
beanpTargetValue
- the existing value of pPropertyName of the target
beanpContext
- the current update context (with the
current source/target parent beans).public T validateBeanProperty(java.lang.String pPropertyName, java.lang.Object pBean, ValidatorContext<?> pContext)
Validators.ValidatorImpl
validateBeanProperty
in interface Validator<T>
validateBeanProperty
in class Validators.ValidatorImpl<T>
pPropertyName
- the property of pBean to validatepBean
- the bean to fetch pPropertyName from and validatepContext
- the current validation context.protected Validator<? extends T> getValidatorForBean(java.lang.Object pSourceBean, java.lang.Object pTargetBean, java.lang.String pPropertyName, ValidatorContext<?> pContext)
pSourceBean
- the source bean to get a validator for.pTargetBean
- the target bean to use if validator is null for source bean.pPropertyName
- the name of the property to switch onpContext
- the current validator context.public UpdatingValidator.PropertyUpdateAction handleTargetDeletion(java.lang.String pPropertyName, java.lang.Object pSourceValue, java.lang.Object pTargetValue, ValidatorContext<?> pContext)
protected java.lang.Object createInstanceOrUpdateType(java.lang.Object pTypeValue, java.lang.String pPropertyName, java.lang.Object pSourceValue, java.lang.Object pTargetValue, ValidatorContext<?> pContext)
pTypeValue
- the type-determining valuepPropertyName
- the property namepSourceValue
- the source valuepTargetValue
- the target valuepContext
- the update contextpublic java.util.Collection<? extends Validator<?>> getChildValidators()
Parentable
getChildValidators
in interface Parentable
public java.util.Map<java.lang.Object,Validator<?>> getChildValidatorMap()
Parentable
getChildValidatorMap
in interface Parentable
public void setChildValidatorMap(java.util.Map<?,Validator<?>> pChildMap)
setChildValidatorMap
in interface Parentable
pChildMap
- the child validator map.OperationNotSupportedException
- if not supported.public java.lang.Object getDefaultKeyForChildValidatorMap()
Parentable
getDefaultKeyForChildValidatorMap
in interface Parentable
protected BeanValidator getBeanValidatorForValidator(Validator<?> pValidator)
java.lang.ClassCastException
- if pValidator is neitherpublic void validateBean(java.lang.Object pBean, ValidatorContext<?> pContext)
BeanValidator
validateBean
in interface BeanValidator
pBean
- the bean to validatepContext
- the validator context to which any validation
errors will be added.public void updateBean(java.lang.Object pSource, java.lang.Object pTarget, ValidatorContext<?> pContext)
BeanValidator
updateBean
in interface BeanValidator
pSource
- the source beanpTarget
- the target beanpContext
- the validator context.public java.util.Set<java.lang.String> getAdditionalAllowedProperties(java.lang.Object pSource, java.lang.Object pTarget, ValidatorContext<?> pContext)
getAdditionalAllowedProperties
in interface AdditionalAllowedPropertiesProvider
pSource
- the source object.pTarget
- the target object.pContext
- the validator context.