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.PropertyUpdateActionBeanValidator.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_OPNO_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, setRequiredPredicateassertAlphanumeric, 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, setPropertyValuepublic 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 contextPropertyNotFoundExceptionpublic T validateValue(java.lang.String pPropertyName, java.lang.Object pPropertyValue, ValidatorContext<?> pContext)
ValidatorvalidateValue 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)
UpdatingValidatorValidatorManager. 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.ValidatorImplvalidateBeanProperty 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()
ParentablegetChildValidators in interface Parentablepublic java.util.Map<java.lang.Object,Validator<?>> getChildValidatorMap()
ParentablegetChildValidatorMap in interface Parentablepublic void setChildValidatorMap(java.util.Map<?,Validator<?>> pChildMap)
setChildValidatorMap in interface ParentablepChildMap - the child validator map.OperationNotSupportedException - if not supported.public java.lang.Object getDefaultKeyForChildValidatorMap()
ParentablegetDefaultKeyForChildValidatorMap in interface Parentableprotected BeanValidator getBeanValidatorForValidator(Validator<?> pValidator)
java.lang.ClassCastException - if pValidator is neitherpublic void validateBean(java.lang.Object pBean,
ValidatorContext<?> pContext)
BeanValidatorvalidateBean in interface BeanValidatorpBean - 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)
BeanValidatorupdateBean in interface BeanValidatorpSource - 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 AdditionalAllowedPropertiesProviderpSource - the source object.pTarget - the target object.pContext - the validator context.