public abstract class ValidatorContext<E extends java.lang.Exception>
extends java.lang.Object
Created: August 07 2014
Modifier and Type | Class and Description |
---|---|
class |
ValidatorContext.StackRestorer
A utility class for restoring the stack.
|
static class |
ValidatorContext.UpdateMode
The update mode.
|
static class |
ValidatorContext.ValidatorContextImpl |
Modifier and Type | Field and Description |
---|---|
static java.lang.String |
CLASS_VERSION
Class version string
|
protected static VariableArgumentApplicationLogging |
LOGGER
The logger to use.
|
Constructor and Description |
---|
ValidatorContext(boolean pCreate)
Create a new validator context.
|
Modifier and Type | Method and Description |
---|---|
void |
addException(Validator<?> pValidator,
java.lang.String pMessage,
java.lang.String pPropertyName,
java.lang.Throwable pRootCause)
Add an exception with the specified message.
|
void |
addPropertyValueChangeListeners(PropertyValueChangeListener pListener)
Add new property change listener
|
void |
addValidatorListener(ValidatorListener pListener)
Add the specified validator listener.
|
protected void |
appendPropertyPath(java.lang.StringBuilder pBuilder)
Append the current parent property path to pBuilder.
|
boolean |
canApplyUpdatesToTarget()
Returns property applyUpdatesToTarget.
|
void |
checkForPropertyValueChange(java.lang.Object pBean,
java.lang.String pPropertyName,
java.lang.Object pNewValue)
Called by the framework to determine if a property value
has changed.
|
protected abstract E |
createException(Validator<?> pValidator,
java.lang.String pMessage,
java.lang.String pPropertyName,
java.lang.Throwable pRootCause)
Create an exception of the parameterized subtype.
|
void |
dumpWherePushed() |
void |
dumpWherePushedNames() |
boolean |
forceValidationOfExistingProperty(java.lang.String pPropertyName,
java.lang.Object pSource,
java.lang.Object pDestination)
Give all listeners a chance to say whether a property should be
validated.
|
java.util.Set<java.lang.String> |
getAllowableUnknownPropertyNames()
Gets the allowable unknown property names.
|
int |
getAncestorCount()
Return the number of ancestors on the stack.
|
java.lang.Object |
getAncestorDst(int pIndex)
Get the specified destination ancester, relative to the size.
|
java.lang.Object |
getAncestorSrc(int pIndex)
Get the specified source ancester, relative to the size.
|
<T> T |
getAttribute(java.lang.String pName)
Get the specified attribute to the specified name.
|
java.util.Map<java.lang.String,java.lang.Object> |
getAttributes()
Returns property attributes.
|
java.lang.String |
getDefaultErrorCode()
Returns property defaultErrorCode.
|
<T> T |
getDstParentOfClass(java.lang.Class<T> pParentClass)
Return the parent of the specified class.
|
int |
getErrorCount()
Return the error count property.
|
java.util.List<E> |
getErrors()
Return the exceptions property.
|
java.util.List<java.lang.String> |
getFilter()
Returns property filter.
|
int |
getParentCount()
Get a count of the number of parents.
|
java.lang.Object |
getParentDst()
Get the immediate parent.
|
protected <T> T |
getParentOfClass(java.lang.Class<T> pParentClass,
java.util.List<java.lang.Object> pParents)
Get a parent of the specified class.
|
java.lang.String |
getParentPropertyName()
Get the parent property name.
|
atg.core.util.ArrayStack<java.lang.Object> |
getParentsDst()
The current set of desination parent beans being
updated.
|
java.lang.Object |
getParentSrc()
Get the immediate parent.
|
atg.core.util.ArrayStack<java.lang.Object> |
getParentsSrc()
The current set of source parent beans being
updated.
|
atg.core.util.ArrayStack<java.lang.String> |
getPropertyNames()
Get the stack of property names.
|
java.lang.String |
getPropertyPath()
Get the parent current property path.
|
java.lang.String |
getPropertyPath(java.lang.String pPropertyName)
Get the property path, with pPropertyName as the last property.
|
atg.service.validator.RepositoryItemHelper |
getRepositoryItemHelper()
Get Repository Item Helper
|
<T> T |
getSrcParentOfClass(java.lang.Class<T> pParentClass)
Return the source parent of the specified class.
|
ValidatorContext.UpdateMode |
getUpdateMode()
Returns property updateMode.
|
java.util.List<ValidatorListener> |
getValidatorListeners()
Returns property validatorListeners.
|
boolean |
hasErrors()
Whether we have any errors on our context.
|
boolean |
isCreate()
Whether this is a create operation.
|
boolean |
isFetchingValueForCopy()
Returns property fetchingValueForCopy.
|
boolean |
isFilterForInclude()
Returns property filterForInclude.
|
boolean |
isModifiedValue()
Returns property modifiedValue.
|
boolean |
isNullOutPresentButNullProperties()
Returns property nullOutPresentButNullProperties.
|
boolean |
isShouldRecurse()
Returns property shouldRecurse.
|
boolean |
isSourceUsesExternalPropertyNames()
Returns property sourceUsesExternalPropertyNames.
|
boolean |
isSuccess()
Whether or not we are successful.
|
boolean |
isTreatUnknownPropertiesAsErrors()
Returns property treatUnknownPropertiesAsErrors.
|
boolean |
isUpdate()
Whether this is an update operation.
|
boolean |
isUpdating()
Returns property updating.
|
boolean |
isValidateExistingProperties()
Returns property validateExistingProperties.
|
boolean |
notifyIfPropertyValueChanged(java.lang.Object pBean,
java.lang.String pPropertyName,
java.lang.Object pNewValue,
java.lang.Object pOldValue)
Called by the framework to determine if a property value
has changed.
|
java.lang.String |
peekPropertyName()
Return the most recently added property name on the property names stack.
|
void |
popParents()
Pop pair of src/dst parents from the context stack.
|
void |
popParents(java.lang.Object pSrc,
java.lang.Object pDst)
Pop pair of src/dst parents from the context stack.
|
java.lang.String |
popPropertyName()
Pop the current property name from the stack.
|
void |
pushParents(java.lang.Object pParentSrc,
java.lang.Object pParentDst)
Push a parent onto the context stack.
|
ValidatorContext.StackRestorer |
pushParentsIfNeeded(java.lang.Object pParentSrc,
java.lang.Object pParentDst)
Push parents if needed.
|
void |
pushPropertyName(java.lang.String pPropertyName)
Push the current property name being processed onto the stack.
|
<T> T |
removeAttribute(java.lang.String pName)
remove the specified attribute.
|
void |
removePropertyValueChangeListeners(PropertyValueChangeListener pListener)
Remove a property change listener
|
void |
removeValidatorListener(ValidatorListener pListener)
Remove the specified validator listener.
|
void |
replaceParentDst(java.lang.Object pNew)
Replace the current destination parent.
|
void |
setAllowableUnknownPropertyNames(java.util.Set<java.lang.String> pAllowableUnknownPropertyNames)
Sets the allowable unknown property names.
|
void |
setApplyUpdatesToTarget(boolean pApplyUpdatesToTarget)
Sets property applyUpdatesToTarget.
|
void |
setAttribute(java.lang.String pName,
java.lang.Object pValue)
Set the specified attribute to the specified name.
|
void |
setCreate(boolean pCreate)
Set the create flag.
|
void |
setDefaultErrorCode(java.lang.String pDefaultErrorCode)
Sets property defaultErrorCode.
|
void |
setErrors(java.util.List<E> pErrors)
Replace our list of errors.
|
void |
setFetchingValueForCopy(boolean pFetchingValueForCopy)
Sets property fetchingValueForCopy.
|
void |
setFilter(java.util.List<java.lang.String> pFilter)
Sets property filter.
|
void |
setFilterForInclude(boolean pFilterForInclude)
Sets property filterForInclude.
|
void |
setModifiedValue(boolean pModifiedValue)
Sets property modifiedValue.
|
void |
setNullOutPresentButNullProperties(boolean pNullOutPresentButNullProperties)
Sets property nullOutPresentButNullProperties.
|
void |
setRepositoryItemHelper(atg.service.validator.RepositoryItemHelper pRepositoryItemHelper)
Set Repository Item Helper
|
void |
setShouldRecurse(boolean pShouldRecurse)
Sets property shouldRecurse.
|
void |
setSourceUsesExternalPropertyNames(boolean pSourceUsesExternalPropertyNames)
Sets property sourceUsesExternalPropertyNames.
|
void |
setTreatUnknownPropertiesAsErrors(boolean pTreatUnknownPropertiesAsErrors)
Sets property treatUnknownPropertiesAsErrors.
|
void |
setUpdateMode(ValidatorContext.UpdateMode pUpdateMode)
Sets property updateMode.
|
void |
setUpdating(boolean pUpdating)
Sets property updating.
|
void |
setValidateExistingProperties(boolean pValidateExistingProperties)
Sets property validateExistingProperties.
|
void |
setValidatorListeners(java.util.List<ValidatorListener> pValidatorListeners)
Sets property validatorListeners.
|
void |
throwException() |
void |
validateBeanPropertyCalled(Validator pValidator,
java.lang.String pPropertyName,
java.lang.Object pBean,
java.lang.Object pResult)
Should be called after a beanProperty has been validated.
|
static boolean |
valuesDiffer(java.lang.Object pObj1,
java.lang.Object pObj2)
Utility method for checking equality between 2 objects
|
public static java.lang.String CLASS_VERSION
protected static final VariableArgumentApplicationLogging LOGGER
public ValidatorContext(boolean pCreate)
pCreate
- if true, this is for a create, if false, is for an update.public java.util.Map<java.lang.String,java.lang.Object> getAttributes()
public void setAttribute(java.lang.String pName, java.lang.Object pValue)
public <T> T getAttribute(java.lang.String pName)
public <T> T removeAttribute(java.lang.String pName)
public void setCreate(boolean pCreate)
public boolean isCreate()
public boolean isUpdate()
public java.util.List<E> getErrors()
public void setErrors(java.util.List<E> pErrors)
pList
- the list to use. Any errors will be added to this instance.public void setFetchingValueForCopy(boolean pFetchingValueForCopy)
public boolean isFetchingValueForCopy()
public void setNullOutPresentButNullProperties(boolean pNullOutPresentButNullProperties)
public boolean isNullOutPresentButNullProperties()
public void setSourceUsesExternalPropertyNames(boolean pSourceUsesExternalPropertyNames)
public boolean isSourceUsesExternalPropertyNames()
public int getErrorCount()
public boolean hasErrors()
public boolean isSuccess()
public void setShouldRecurse(boolean pShouldRecurse)
public boolean isShouldRecurse()
public void setFilter(java.util.List<java.lang.String> pFilter)
public java.util.List<java.lang.String> getFilter()
public void setFilterForInclude(boolean pFilterForInclude)
public boolean isFilterForInclude()
public void setModifiedValue(boolean pModifiedValue)
public boolean isModifiedValue()
public void setTreatUnknownPropertiesAsErrors(boolean pTreatUnknownPropertiesAsErrors)
public boolean isTreatUnknownPropertiesAsErrors()
public void setDefaultErrorCode(java.lang.String pDefaultErrorCode)
public java.lang.String getDefaultErrorCode()
public void setValidateExistingProperties(boolean pValidateExistingProperties)
public boolean isValidateExistingProperties()
public void setUpdating(boolean pUpdating)
public boolean isUpdating()
public boolean canApplyUpdatesToTarget()
public void setApplyUpdatesToTarget(boolean pApplyUpdatesToTarget)
pCanApplyUpdateToTarget
- property value to setpublic void addPropertyValueChangeListeners(PropertyValueChangeListener pListener)
pListener
- of type PropertyValueChangeListenerpublic void removePropertyValueChangeListeners(PropertyValueChangeListener pListener)
pListener
- of type PropertyValueChangeListenerpublic void setRepositoryItemHelper(atg.service.validator.RepositoryItemHelper pRepositoryItemHelper)
pRepositoryItemHelper
- of type RepositoryItemHelperpublic atg.service.validator.RepositoryItemHelper getRepositoryItemHelper()
public atg.core.util.ArrayStack<java.lang.Object> getParentsSrc()
public int getParentCount()
public java.lang.String getParentPropertyName()
protected <T> T getParentOfClass(java.lang.Class<T> pParentClass, java.util.List<java.lang.Object> pParents)
pParentClass
- class to return the first parent ofpParents
- the stack of parents.public <T> T getSrcParentOfClass(java.lang.Class<T> pParentClass)
public atg.core.util.ArrayStack<java.lang.Object> getParentsDst()
public <T> T getDstParentOfClass(java.lang.Class<T> pParentClass)
public void pushParents(java.lang.Object pParentSrc, java.lang.Object pParentDst)
pParentSrc
- our source beanpParentDst
- our destination beanpublic ValidatorContext.StackRestorer pushParentsIfNeeded(java.lang.Object pParentSrc, java.lang.Object pParentDst)
pParentSrc
- our source beanpParentDst
- our destination bean (may be null).public void popParents()
public void popParents(java.lang.Object pSrc, java.lang.Object pDst)
public void dumpWherePushed()
public void dumpWherePushedNames()
public int getAncestorCount()
public java.lang.Object getParentSrc()
public java.lang.Object getAncestorSrc(int pIndex)
pIndex
- the index specifying how many generations to go up. Must be at least
1 (for immediate parent).public java.lang.Object getParentDst()
public java.lang.Object getAncestorDst(int pIndex)
pIndex
- the index specifying how many generations to go up. Must be at least
1 (for immediate parent).public void replaceParentDst(java.lang.Object pNew)
pNew
- the new destination parent.public void pushPropertyName(java.lang.String pPropertyName)
pPropertyName
- the property name to push. Should not be null.public java.lang.String popPropertyName()
public java.lang.String peekPropertyName()
public atg.core.util.ArrayStack<java.lang.String> getPropertyNames()
protected void appendPropertyPath(java.lang.StringBuilder pBuilder)
pBuilder
- the string build to append the property path to.public java.lang.String getPropertyPath()
public java.lang.String getPropertyPath(java.lang.String pPropertyName)
pPropertyName
- the property name to use as the last property name
in the property path.public void setUpdateMode(ValidatorContext.UpdateMode pUpdateMode)
public ValidatorContext.UpdateMode getUpdateMode()
public java.util.Set<java.lang.String> getAllowableUnknownPropertyNames()
public void setAllowableUnknownPropertyNames(java.util.Set<java.lang.String> pAllowableUnknownPropertyNames)
pAllowableUnknownPropertyNames
- - allowable
unknown property names to setpublic void setValidatorListeners(java.util.List<ValidatorListener> pValidatorListeners)
public java.util.List<ValidatorListener> getValidatorListeners()
public void addValidatorListener(ValidatorListener pListener)
pListener
- the listener to add.public void removeValidatorListener(ValidatorListener pListener)
pListener
- the listener to add.public void checkForPropertyValueChange(java.lang.Object pBean, java.lang.String pPropertyName, java.lang.Object pNewValue)
pBean
- - target beanpPropertyName
- - property namepNewValue
- - new valuepublic boolean notifyIfPropertyValueChanged(java.lang.Object pBean, java.lang.String pPropertyName, java.lang.Object pNewValue, java.lang.Object pOldValue)
pBean
- - target beanpPropertyName
- - property namepNewValue
- - new valuepExistingValue
- - existing valuepublic static boolean valuesDiffer(java.lang.Object pObj1, java.lang.Object pObj2)
pObj1
- - 1st object to comparepObj2
- - 2nd object to comparepublic void addException(Validator<?> pValidator, java.lang.String pMessage, java.lang.String pPropertyName, java.lang.Throwable pRootCause)
pValidator
- the validator on whose behalf the exception
is being added (can provide an errorCode to use).pMessage
- the user visible message (should be localized)pPropertyName
- the property name to append to the pushed
property path on the context. May be null if there is nothing to add.pRootCause
- the throwable to use as a root cause. If non-null,
then pRootCause becomes the nested/caused-by exception.protected abstract E createException(Validator<?> pValidator, java.lang.String pMessage, java.lang.String pPropertyName, java.lang.Throwable pRootCause)
pValidator
- the validator on whose behalf the exception
is being added (can provide an errorCode to use).pMessage
- the user visible message (should be localized)pPropertyName
- the property name to append to the pushed
property path on the context. May be null if there is nothing to add.pRootCause
- the throwable to use as a root cause. If non-null,
then pRootCause becomes the nested/caused-by exception.public void throwException() throws E extends java.lang.Exception
E extends java.lang.Exception
public void validateBeanPropertyCalled(Validator pValidator, java.lang.String pPropertyName, java.lang.Object pBean, java.lang.Object pResult)
Note that callers of validateBeanProperty() must invoke ValidatorContext.validateBeanPropertyCalled() in order for listeners to get this notification. ValidatorManager (the core bean-property validator) already does so, but not every validator may do so.
pValidator
- the validator that did the validation.pPropertyName
- the name of the property that was validated.pBean
- the bean whose property wasvalidated.pResult
- the result of validation (may be null).public boolean forceValidationOfExistingProperty(java.lang.String pPropertyName, java.lang.Object pSource, java.lang.Object pDestination)
pPropertyName
- the name of the property to be validated.pSource
- the bean containing new property values.pDestination
- the bean containing original property values.