@SuppressWarnings({"unchecked"})
public void applyAttachedObject(FacesContext context, UIComponent parent) {
FaceletContext ctx = (FaceletContext) context.getAttributes().get(FaceletContext.FACELET_CONTEXT_KEY);
EditableValueHolder evh = (EditableValueHolder) parent;
if (owner.isDisabled(ctx)) {
Set<String> disabledIds = (Set<String>)
RequestStateManager.get(context, RequestStateManager.DISABLED_VALIDATORS);
if (disabledIds == null) {
disabledIds = new HashSet<String>(3);
RequestStateManager.set(context,
RequestStateManager.DISABLED_VALIDATORS,
disabledIds);
}
disabledIds.add(owner.getValidatorId(ctx));
return;
}
ValueExpression ve = null;
Validator v = null;
if (owner.getBinding() != null) {
ve = owner.getBinding().getValueExpression(ctx, Validator.class);
v = (Validator) ve.getValue(ctx);
}
if (v == null) {
v = this.createValidator(ctx);
if (ve != null) {
ve.setValue(ctx, v);
}
}
if (v == null) {
throw new TagException(owner.getTag(), "No Validator was created");
}
owner.setAttributes(ctx, v);
evh.addValidator(v);
}