Author: chris.laprun(a)jboss.com
Date: 2009-05-16 17:16:01 -0400 (Sat, 16 May 2009)
New Revision: 13385
Modified:
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/gui/ManagedBean.java
Log:
- Added PropertyValidator to ManagedBean to allow for more flexible property validation.
Modified:
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/gui/ManagedBean.java
===================================================================
---
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/gui/ManagedBean.java 2009-05-16
20:58:53 UTC (rev 13384)
+++
branches/JBoss_Portal_Branch_2_7/faces/src/main/org/jboss/portal/faces/gui/ManagedBean.java 2009-05-16
21:16:01 UTC (rev 13385)
@@ -40,6 +40,33 @@
public static final String INVALID_NAME = "INVALID_NAME_ERROR";
public static final String DUPLICATE = "DUPLICATE_ERROR";
+ public static interface PropertyValidator
+ {
+ boolean checkForDuplicates();
+
+ String getObjectTypeName();
+
+ boolean isAlreadyExisting(String propertyName);
+ }
+
+ public final PropertyValidator DEFAULT_PROPERTY_VALIDATOR = new PropertyValidator()
+ {
+ public boolean checkForDuplicates()
+ {
+ return true;
+ }
+
+ public String getObjectTypeName()
+ {
+ return ManagedBean.this.getObjectTypeName();
+ }
+
+ public boolean isAlreadyExisting(String propertyName)
+ {
+ return ManagedBean.this.isAlreadyExisting(propertyName);
+ }
+ };
+
public void setBeanContext(BeanContext beanContext)
{
this.beanContext = beanContext;
@@ -47,14 +74,17 @@
public String checkNameValidity(String name, String targetForErrorMessage)
{
- return checkNameValidity(name, targetForErrorMessage, true);
+ return checkNameValidity(name, targetForErrorMessage, DEFAULT_PROPERTY_VALIDATOR);
}
- public String checkNameValidity(String name, String targetForErrorMessage, boolean
checkForDuplicates)
+ public String checkNameValidity(String name, String targetForErrorMessage,
PropertyValidator validator)
{
+ ParameterValidation.throwIllegalArgExceptionIfNull(validator,
"PropertyValidator");
+
+ String objectTypeName = validator.getObjectTypeName();
if (ParameterValidation.isNullOrEmpty(name))
{
- beanContext.createTargetedErrorMessage(targetForErrorMessage, INVALID_NAME,
name, getLocalizedType());
+ beanContext.createTargetedErrorMessage(targetForErrorMessage, INVALID_NAME,
name, getLocalizedType(objectTypeName));
return null;
}
else
@@ -64,7 +94,7 @@
// "sanitize" name: if it's invalid, return null and output
message
name = ParameterValidation.sanitizeFromPatternWithHandler(name,
ParameterValidation.XSS_CHECK,
- new MessageValidationHandler(null, targetForErrorMessage, name));
+ new MessageValidationHandler(null, targetForErrorMessage, name,
objectTypeName));
// we got an invalid name, fail!
if (name == null)
@@ -73,9 +103,9 @@
}
// Check for duplicate
- if (checkForDuplicates && isAlreadyExisting(name))
+ if (validator.checkForDuplicates() &&
validator.isAlreadyExisting(name))
{
- beanContext.createTargetedErrorMessage(targetForErrorMessage, DUPLICATE,
name, getLocalizedType());
+ getDuplicateErrorMessage(name, targetForErrorMessage, objectTypeName);
return null;
}
@@ -83,11 +113,21 @@
}
}
+ protected void getDuplicateErrorMessage(String name, String targetForErrorMessage,
String objectTypeName)
+ {
+ beanContext.createTargetedErrorMessage(targetForErrorMessage, DUPLICATE, name,
getLocalizedType(objectTypeName));
+ }
+
private String getLocalizedType()
{
- return beanContext.getMessageFromBundle(getObjectTypeName());
+ return getLocalizedType(getObjectTypeName());
}
+ private String getLocalizedType(String objectTypeName)
+ {
+ return beanContext.getMessageFromBundle(objectTypeName);
+ }
+
protected abstract String getObjectTypeName();
public abstract boolean isAlreadyExisting(String objectName);
@@ -137,17 +177,19 @@
{
private String targetForErrorMessage;
private String validatedName;
+ private String objectTypeName;
- private MessageValidationHandler(String defaultValue, String targetForErrorMessage,
String validatedName)
+ private MessageValidationHandler(String defaultValue, String targetForErrorMessage,
String validatedName, String objectTypeName)
{
super(defaultValue);
this.targetForErrorMessage = targetForErrorMessage;
this.validatedName = validatedName;
+ this.objectTypeName = objectTypeName;
}
protected String internalValidationErrorHandling(String s)
{
- beanContext.createTargetedErrorMessage(targetForErrorMessage, INVALID_NAME,
validatedName, getLocalizedType());
+ beanContext.createTargetedErrorMessage(targetForErrorMessage, INVALID_NAME,
validatedName, getLocalizedType(objectTypeName));
return null;
}
}