JBoss Rich Faces SVN: r9453 - in trunk/sandbox/ui/beanValidator/src: test/java/org/richfaces/validator and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: amarkhel
Date: 2008-07-08 10:58:16 -0400 (Tue, 08 Jul 2008)
New Revision: 9453
Modified:
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java
trunk/sandbox/ui/beanValidator/src/test/java/org/richfaces/validator/BeanValidatorTest.java
Log:
Refactor JUnits for beanValidator
Modified: trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java
===================================================================
--- trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java 2008-07-08 14:43:11 UTC (rev 9452)
+++ trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java 2008-07-08 14:58:16 UTC (rev 9453)
@@ -29,6 +29,8 @@
*/
public class BeanValidator {
+ private static final String RESOURCE_BUNDLE_IS_NOT_REGISTERED_FOR_CURRENT_LOCALE = "Resource bundle is not registered for current locale";
+
private static final String FACES_CONTEXT_IS_NULL = "Faces context is null";
private static final String INPUT_PARAMETERS_IS_NOT_CORRECT = "Input parameters is not correct.";
@@ -206,6 +208,9 @@
// TODO - cache validator instances.
// TODO - localization support.
ResourceBundle bundle = getCurrentResourceBundle(locale);
+ if(null == bundle){
+ throw new FacesException(RESOURCE_BUNDLE_IS_NOT_REGISTERED_FOR_CURRENT_LOCALE);
+ }
ValidatorKey key = new ValidatorKey(beanClass, bundle);
ClassValidator result = classValidators.get(key);
if (null == result) {
@@ -225,6 +230,9 @@
}
String appBundle = FacesContext.getCurrentInstance().getApplication()
.getMessageBundle();
+ if(null == appBundle || null == locale){
+ return null;
+ }
ResourceBundle bundle = ResourceBundle.getBundle(appBundle, locale);
return bundle;
}
Modified: trunk/sandbox/ui/beanValidator/src/test/java/org/richfaces/validator/BeanValidatorTest.java
===================================================================
--- trunk/sandbox/ui/beanValidator/src/test/java/org/richfaces/validator/BeanValidatorTest.java 2008-07-08 14:43:11 UTC (rev 9452)
+++ trunk/sandbox/ui/beanValidator/src/test/java/org/richfaces/validator/BeanValidatorTest.java 2008-07-08 14:58:16 UTC (rev 9453)
@@ -2,20 +2,31 @@
import java.util.Locale;
+import org.ajax4jsf.tests.AbstractAjax4JsfTestCase;
import org.hibernate.validator.ClassValidator;
import org.hibernate.validator.InvalidValue;
-import junit.framework.TestCase;
+public class BeanValidatorTest extends AbstractAjax4JsfTestCase {
-public class BeanValidatorTest extends TestCase {
+ public BeanValidatorTest(String name) {
+ super(name);
+ }
public void testValidate() {
}
+ public void setUp() throws Exception {
+ super.setUp();
+ }
+
+ public void tearDown() throws Exception {
+ super.tearDown();
+ }
+
public void testGetValidator() throws Exception {
BeanValidator beanValidator = BeanValidator.createInstance();
- ClassValidator<? extends Object> validator = beanValidator.getValidator(ValidableBean.class,Locale.getDefault());
+ ClassValidator<? extends Object> validator = beanValidator.getValidator(ValidableBean.class,Locale.ENGLISH);
assertNotNull(validator);
assertTrue(validator.hasValidationRules());
validator = beanValidator.getValidator(String.class,Locale.getDefault());
16 years, 2 months
JBoss Rich Faces SVN: r9452 - trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator.
by richfaces-svn-commits@lists.jboss.org
Author: amarkhel
Date: 2008-07-08 10:43:11 -0400 (Tue, 08 Jul 2008)
New Revision: 9452
Modified:
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java
Log:
Modified: trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java
===================================================================
--- trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java 2008-07-08 14:38:17 UTC (rev 9451)
+++ trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java 2008-07-08 14:43:11 UTC (rev 9452)
@@ -29,6 +29,8 @@
*/
public class BeanValidator {
+ private static final String FACES_CONTEXT_IS_NULL = "Faces context is null";
+
private static final String INPUT_PARAMETERS_IS_NOT_CORRECT = "Input parameters is not correct.";
private static final String LOCALE_IS_NOT_SET = "Locale is not set";
@@ -218,6 +220,9 @@
* locale - user locale @return ResourceBundle instance
*/
private ResourceBundle getCurrentResourceBundle(Locale locale) {
+ if(null == FacesContext.getCurrentInstance() || null == FacesContext.getCurrentInstance().getApplication()){
+ throw new FacesException(FACES_CONTEXT_IS_NULL);
+ }
String appBundle = FacesContext.getCurrentInstance().getApplication()
.getMessageBundle();
ResourceBundle bundle = ResourceBundle.getBundle(appBundle, locale);
16 years, 2 months
JBoss Rich Faces SVN: r9451 - trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator.
by richfaces-svn-commits@lists.jboss.org
Author: amarkhel
Date: 2008-07-08 10:38:17 -0400 (Tue, 08 Jul 2008)
New Revision: 9451
Modified:
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/FacesBeanValidator.java
Log:
Implement some TODO tasks in beanValidator project
Modified: trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java
===================================================================
--- trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java 2008-07-08 14:02:15 UTC (rev 9450)
+++ trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/BeanValidator.java 2008-07-08 14:38:17 UTC (rev 9451)
@@ -7,10 +7,14 @@
import java.util.Iterator;
import java.util.Locale;
import java.util.Map;
+import java.util.ResourceBundle;
+import java.util.concurrent.ConcurrentHashMap;
import javax.el.ELContext;
+import javax.el.ELException;
import javax.el.ELResolver;
import javax.el.ValueExpression;
+import javax.faces.FacesException;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
@@ -19,30 +23,42 @@
/**
* Perform validation by Hibernate Validator annotations
+ *
* @author asmirnov
- *
+ *
*/
public class BeanValidator {
-
+
+ private static final String INPUT_PARAMETERS_IS_NOT_CORRECT = "Input parameters is not correct.";
+
+ private static final String LOCALE_IS_NOT_SET = "Locale is not set";
+
+ private static final String VIEW_ROOT_IS_NOT_INITIALIZED = "ViewRoot is not initialized";
+
public static final String VALIDATOR_PARAM = BeanValidator.class.getName();
- private BeanValidator(){
+ private Map<ValidatorKey, ClassValidator<? extends Object>> classValidators = new ConcurrentHashMap<ValidatorKey, ClassValidator<? extends Object>>();
+
+ private BeanValidator() {
// This is a "singleton"-like class. Only factory methods allowed.
}
-
+
/**
* Create BeanValidator instance. For a Junit tests only.
+ *
* @return
*/
- static BeanValidator createInstance(){
+ static BeanValidator createInstance() {
// TODO - get instance class name from a "META-INF/service"
- // If the Seam framework is active, use org.jboss.seam.core.Validators component should be used.
+ // If the Seam framework is active, use org.jboss.seam.core.Validators
+ // component should be used.
return new BeanValidator();
}
-
+
/**
- * Return BeanValidator object from a ServletContext attribute.
- * Create new instance if noone is defined.
+ * Return BeanValidator object from a ServletContext attribute. Create new
+ * instance if none is defined.
+ *
* @param context
* @return
*/
@@ -52,9 +68,10 @@
BeanValidator instance;
// TODO - use properly synchronization mutex ?
synchronized (context) {
- Map<String, Object> applicationMap = externalContext.getApplicationMap();
+ Map<String, Object> applicationMap = externalContext
+ .getApplicationMap();
instance = (BeanValidator) applicationMap.get(VALIDATOR_PARAM);
- if(null == instance){
+ if (null == instance) {
// Vaildator not initialized - create and store new instance.
instance = createInstance();
applicationMap.put(VALIDATOR_PARAM, instance);
@@ -62,41 +79,75 @@
}
return instance;
}
-
+
/**
* Perform Validation for a new value.
- * @param context current faces context.
- * @param target {@link ValueExpression} for a value assigement.
- * @param value new value for validation
- * @return null if no validation errors. Array of the validation messages othervise.
+ *
+ * @param context
+ * current faces context.
+ * @param target
+ * {@link ValueExpression} for a value assignment.
+ * @param value
+ * new value for validation
+ * @return null if no validation errors. Array of the validation messages
+ * otherwise.
+ * @throws FacesException
+ * if locale or context not properly initialized
*/
- public String[] validate(FacesContext context, ValueExpression target, Object value) {
- // TODO -check null parameters.
+ public String[] validate(FacesContext context, ValueExpression target,
+ Object value) {
+ // TODO - check null parameters.
+ checkInputParameters(context, target, value);
ELContext elContext = context.getELContext();
- ValidationResolver validationResolver = new ValidationResolver(elContext.getELResolver());
- ELContextWrapper wrappedElContext = new ELContextWrapper(elContext,validationResolver);
+ ValidationResolver validationResolver = new ValidationResolver(
+ elContext.getELResolver());
+ ELContextWrapper wrappedElContext = new ELContextWrapper(elContext,
+ validationResolver);
// TODO - check null viewRoot and null Locale.
+ if (null == context.getViewRoot()) {
+ throw new FacesException(VIEW_ROOT_IS_NOT_INITIALIZED);
+ } else if (null == context.getViewRoot().getLocale()) {
+ throw new FacesException(LOCALE_IS_NOT_SET);
+ }
wrappedElContext.setLocale(context.getViewRoot().getLocale());
// TODO - handle ELExceptions ?
- target.setValue(wrappedElContext, value);
- if(validationResolver.isValid()){
+ try {
+ target.setValue(wrappedElContext, value);
+ } catch (ELException e) {
+ throw new FacesException(e);
+ }
+ if (validationResolver.isValid()) {
return null;
} else {
return validationResolver.getValidationMessages();
}
}
-
+
+ // Method for checking input parameters for prevent NPE
+ private void checkInputParameters(FacesContext context,
+ ValueExpression target, Object value) {
+ if (null == context || null == target || null == value) {
+ throw new FacesException(INPUT_PARAMETERS_IS_NOT_CORRECT);
+ }
+ }
+
/**
- * Validate bean property for a new value.
- * TODO - localisation ?
- * @param base - bean
- * @param property - bean property name.
- * @param value new value.
- * @return null for a valid value, array of the validation messages othervise.
+ * Validate bean property for a new value. TODO - localization ?
+ *
+ * @param base -
+ * bean
+ * @param property -
+ * bean property name.
+ * @param value
+ * new value.
+ * @return null for a valid value, array of the validation messages
+ * othervise.
*/
- public String[] validate(Object base, String property, Object value, Locale locale) {
- InvalidValue[] invalidValues = validateBean(base, property, value, locale);
- if(null == invalidValues){
+ public String[] validate(Object base, String property, Object value,
+ Locale locale) {
+ InvalidValue[] invalidValues = validateBean(base, property, value,
+ locale);
+ if (null == invalidValues) {
return null;
} else {
String[] result = new String[invalidValues.length];
@@ -110,6 +161,7 @@
/**
* Validate bean property of the base object aganist new value
+ *
* @param base
* @param property
* @param value
@@ -118,12 +170,14 @@
protected InvalidValue[] validateBean(Object base, String property,
Object value, Locale locale) {
Class<? extends Object> beanClass = base.getClass();
- InvalidValue[] invalidValues = validateClass(beanClass, property, value, locale);
+ InvalidValue[] invalidValues = validateClass(beanClass, property,
+ value, locale);
return invalidValues;
}
/**
* Validate bean property in the base class aganist new value.
+ *
* @param beanClass
* @param property
* @param value
@@ -131,37 +185,73 @@
*/
protected InvalidValue[] validateClass(Class<? extends Object> beanClass,
String property, Object value, Locale locale) {
- ClassValidator<? extends Object> classValidator = getValidator(beanClass, locale);
- InvalidValue[] invalidValues = classValidator.getPotentialInvalidValues( property, value );
+ ClassValidator<? extends Object> classValidator = getValidator(
+ beanClass, locale);
+ InvalidValue[] invalidValues = classValidator
+ .getPotentialInvalidValues(property, value);
return invalidValues;
}
/**
* Get ( or create ) {@link ClassValidator} for a given bean class.
+ *
* @param beanClass
* @return
*/
@SuppressWarnings("unchecked")
- protected ClassValidator<? extends Object> getValidator(Class<? extends Object> beanClass, Locale locale) {
+ protected ClassValidator<? extends Object> getValidator(
+ Class<? extends Object> beanClass, Locale locale) {
// TODO - cache validator instances.
// TODO - localization support.
- return new ClassValidator(beanClass);
+ ResourceBundle bundle = getCurrentResourceBundle(locale);
+ ValidatorKey key = new ValidatorKey(beanClass, bundle);
+ ClassValidator result = classValidators.get(key);
+ if (null == result) {
+ result = createValidator(beanClass, bundle);
+ classValidators.put(key, result);
+ }
+ return result;
}
+ /*
+ * This method determine ResourceBundle, used in current request @param
+ * locale - user locale @return ResourceBundle instance
+ */
+ private ResourceBundle getCurrentResourceBundle(Locale locale) {
+ String appBundle = FacesContext.getCurrentInstance().getApplication()
+ .getMessageBundle();
+ ResourceBundle bundle = ResourceBundle.getBundle(appBundle, locale);
+ return bundle;
+ }
+
+ /*
+ * Method for create new instance of ClassValidator, if same not in cache.
+ * @param beanClass - Class to validate @param bundle - Resource bundle,
+ * used during validation process @return ClassValidator instance
+ */
+ @SuppressWarnings("unchecked")
+ private ClassValidator<? extends Object> createValidator(
+ Class<? extends Object> beanClass, ResourceBundle bundle) {
+ return bundle == null ? new ClassValidator(beanClass)
+ : new ClassValidator(beanClass, bundle);
+ }
+
/**
- * Wrapper class for a {@link ELResolver}. For a setValue method, perform validation instead of real assigement.
+ * Wrapper class for a {@link ELResolver}. For a setValue method, perform
+ * validation instead of real assignment.
+ *
* @author asmirnov
- *
+ *
*/
final class ValidationResolver extends ELResolver {
-
+
/**
* Original resolver.
*/
private final ELResolver parent;
-
+
private boolean valid = true;
-
+
private String[] validationMessages = null;
/**
@@ -180,7 +270,8 @@
* @param context
* @param base
* @return
- * @see javax.el.ELResolver#getCommonPropertyType(javax.el.ELContext, java.lang.Object)
+ * @see javax.el.ELResolver#getCommonPropertyType(javax.el.ELContext,
+ * java.lang.Object)
*/
public Class<?> getCommonPropertyType(ELContext context, Object base) {
return parent.getCommonPropertyType(context, base);
@@ -190,7 +281,8 @@
* @param context
* @param base
* @return
- * @see javax.el.ELResolver#getFeatureDescriptors(javax.el.ELContext, java.lang.Object)
+ * @see javax.el.ELResolver#getFeatureDescriptors(javax.el.ELContext,
+ * java.lang.Object)
*/
public Iterator<FeatureDescriptor> getFeatureDescriptors(
ELContext context, Object base) {
@@ -202,7 +294,8 @@
* @param base
* @param property
* @return
- * @see javax.el.ELResolver#getType(javax.el.ELContext, java.lang.Object, java.lang.Object)
+ * @see javax.el.ELResolver#getType(javax.el.ELContext,
+ * java.lang.Object, java.lang.Object)
*/
public Class<?> getType(ELContext context, Object base, Object property) {
return parent.getType(context, base, property);
@@ -213,7 +306,8 @@
* @param base
* @param property
* @return
- * @see javax.el.ELResolver#getValue(javax.el.ELContext, java.lang.Object, java.lang.Object)
+ * @see javax.el.ELResolver#getValue(javax.el.ELContext,
+ * java.lang.Object, java.lang.Object)
*/
public Object getValue(ELContext context, Object base, Object property) {
return parent.getValue(context, base, property);
@@ -224,7 +318,8 @@
* @param base
* @param property
* @return
- * @see javax.el.ELResolver#isReadOnly(javax.el.ELContext, java.lang.Object, java.lang.Object)
+ * @see javax.el.ELResolver#isReadOnly(javax.el.ELContext,
+ * java.lang.Object, java.lang.Object)
*/
public boolean isReadOnly(ELContext context, Object base,
Object property) {
@@ -236,14 +331,17 @@
* @param base
* @param property
* @param value
- * @see javax.el.ELResolver#setValue(javax.el.ELContext, java.lang.Object, java.lang.Object, java.lang.Object)
+ * @see javax.el.ELResolver#setValue(javax.el.ELContext,
+ * java.lang.Object, java.lang.Object, java.lang.Object)
*/
public void setValue(ELContext context, Object base, Object property,
Object value) {
- if(null != base && null != property){
- context.setPropertyResolved(true);
- validationMessages = validate(base,property.toString(),value, context.getLocale());
- valid = null == validationMessages || 0 == validationMessages.length;
+ if (null != base && null != property) {
+ context.setPropertyResolved(true);
+ validationMessages = validate(base, property.toString(), value,
+ context.getLocale());
+ valid = null == validationMessages
+ || 0 == validationMessages.length;
}
}
@@ -253,6 +351,43 @@
public String[] getValidationMessages() {
return validationMessages;
}
-
+
}
+
+ /**
+ * Class for identify validator instance by resource bundle
+ *
+ * @author amarkhel
+ *
+ */
+ class ValidatorKey {
+ private Class<? extends Object> validatableClass;
+ private ResourceBundle bundle;
+
+ /**
+ * Constructor for ValidatorKey object
+ *
+ * @param validatableClass -
+ * class to validate
+ * @param bundle -
+ * Resource bundle, used during validation process
+ */
+ public ValidatorKey(Class<? extends Object> validatableClass,
+ ResourceBundle bundle) {
+ this.validatableClass = validatableClass;
+ this.bundle = bundle;
+ }
+
+ @Override
+ public boolean equals(Object other) {
+ ValidatorKey key = (ValidatorKey) other;
+ return key.validatableClass.equals(validatableClass)
+ && key.bundle.equals(bundle);
+ }
+
+ @Override
+ public int hashCode() {
+ return validatableClass.hashCode() + bundle.hashCode();
+ }
+ }
}
Modified: trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/FacesBeanValidator.java
===================================================================
--- trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/FacesBeanValidator.java 2008-07-08 14:02:15 UTC (rev 9450)
+++ trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/validator/FacesBeanValidator.java 2008-07-08 14:38:17 UTC (rev 9451)
@@ -3,7 +3,9 @@
*/
package org.richfaces.validator;
+import javax.el.ELException;
import javax.el.ValueExpression;
+import javax.faces.FacesException;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIComponent;
import javax.faces.component.UIInput;
@@ -12,34 +14,44 @@
import javax.faces.validator.ValidatorException;
/**
- * Implementation of the JSF validator to use with Bean Validation / Hibernate validator
+ * Implementation of the JSF validator to use with Bean Validation / Hibernate
+ * validator
+ *
* @author asmirnov
- *
+ *
*/
public class FacesBeanValidator implements Validator {
- /* (non-Javadoc)
- * @see javax.faces.validator.Validator#validate(javax.faces.context.FacesContext, javax.faces.component.UIComponent, java.lang.Object)
+ /*
+ * (non-Javadoc)
+ *
+ * @see javax.faces.validator.Validator#validate(javax.faces.context.FacesContext,
+ * javax.faces.component.UIComponent, java.lang.Object)
*/
- public void validate(FacesContext context, UIComponent component, Object convertedValue)
- throws ValidatorException {
+ public void validate(FacesContext context, UIComponent component,
+ Object convertedValue) throws ValidatorException {
if (component instanceof UIInput) {
// Validate input component
UIInput input = (UIInput) component;
- ValueExpression valueExpression = input.getValueExpression("value");
- if(null != valueExpression){
- // TODO - check EL Exceptions ?
- String[] messages = BeanValidator.getInstance(context).validate(context, valueExpression, convertedValue);
- if(null != messages){
- input.setValid(false);
- // TODO - send all validation messages.
- for (String msg : messages) {
- context.addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR, msg,""));
- }
+ try {
+ ValueExpression valueExpression = input
+ .getValueExpression("value");
+ if (null != valueExpression) {
+ // TODO - check EL Exceptions ?
+ String[] messages = BeanValidator.getInstance(context)
+ .validate(context, valueExpression, convertedValue);
+ if (null != messages) {
+ input.setValid(false);
+ // TODO - send all validation messages.
+ for (String msg : messages) {
+ context.addMessage(input.getClientId(context), new FacesMessage(
+ FacesMessage.SEVERITY_ERROR, msg, ""));
+ }
+ }
}
+ } catch (ELException e) {
+ throw new FacesException(e);
}
}
-
}
-
}
16 years, 2 months
JBoss Rich Faces SVN: r9450 - in trunk/ui/pickList/src/main: resources/org/richfaces/renderkit/html/scripts and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: vmolotkov
Date: 2008-07-08 10:02:15 -0400 (Tue, 08 Jul 2008)
New Revision: 9450
Modified:
trunk/ui/pickList/src/main/config/component/picklist.xml
trunk/ui/pickList/src/main/resources/org/richfaces/renderkit/html/scripts/PickList.js
trunk/ui/pickList/src/main/templates/htmlPickList.jspx
Log:
RF-3190
Modified: trunk/ui/pickList/src/main/config/component/picklist.xml
===================================================================
--- trunk/ui/pickList/src/main/config/component/picklist.xml 2008-07-08 12:27:22 UTC (rev 9449)
+++ trunk/ui/pickList/src/main/config/component/picklist.xml 2008-07-08 14:02:15 UTC (rev 9450)
@@ -217,15 +217,15 @@
<classname>int</classname>
</property>
- <property hidden="true" >
+ <property hidden="true">
<name>onchange</name>
<classname>java.lang.String</classname>
</property>
- <property hidden="true" >
+ <property>
<name>onfocus</name>
<classname>java.lang.String</classname>
</property>
- <property hidden="true" >
+ <property>
<name>onblur</name>
<classname>java.lang.String</classname>
</property>
Modified: trunk/ui/pickList/src/main/resources/org/richfaces/renderkit/html/scripts/PickList.js
===================================================================
--- trunk/ui/pickList/src/main/resources/org/richfaces/renderkit/html/scripts/PickList.js 2008-07-08 12:27:22 UTC (rev 9449)
+++ trunk/ui/pickList/src/main/resources/org/richfaces/renderkit/html/scripts/PickList.js 2008-07-08 14:02:15 UTC (rev 9450)
@@ -1,8 +1,8 @@
if(!window.Richfaces) window.Richfaces = {};
Richfaces.PickList = Class.create(Richfaces.ListShuttle, {
- initialize : function($super, targetList, sourceList, clientId, controlIds, switchByClick, onlistchanged, valueKeeperId) {
- $super(targetList, sourceList, clientId, controlIds, switchByClick, onlistchanged);
+ initialize : function($super, targetList, sourceList, clientId, controlIds, switchByClick, events, valueKeeperId) {
+ $super(targetList, sourceList, clientId, controlIds, switchByClick, events);
this.valueKeeper = $(valueKeeperId);
//this.controlListManager();
},
Modified: trunk/ui/pickList/src/main/templates/htmlPickList.jspx
===================================================================
--- trunk/ui/pickList/src/main/templates/htmlPickList.jspx 2008-07-08 12:27:22 UTC (rev 9449)
+++ trunk/ui/pickList/src/main/templates/htmlPickList.jspx 2008-07-08 14:02:15 UTC (rev 9450)
@@ -105,7 +105,7 @@
</td>
<td>
- <div class="rich-picklist-target-items #{component.listClass}" >
+ <div class="rich-picklist-target-items #{component.listClass}">
<input type="hidden" value=":" style="display: none;" name="#{baseClientId}" />
<f:call name="encodeHiddenField" />
<input id="#{clientId}tlFocusKeeper" type="button" value="" style="width: 1px; position: absolute; left: -32767px;"/>
@@ -151,6 +151,7 @@
</vcp:body>
</tbody>
</table>
+
<f:clientId var="clientId"/>
<span id="#{clientId}script">
@@ -165,7 +166,9 @@
new Richfaces.PickList.Target('#{clientId}', '#{clientId}tlInternal_tab', '#{clientId}tlInternal_header_tab', '#{clientId}tlFocusKeeper', undefined, Richfaces.PickList.Target.SelectItem, #{this:getColumnClassesAsJSArray(context, component)}, #{this:getRowClassesAsJSArray(context, component)}),
new Richfaces.PickList.Source('#{clientId}', '#{clientId}internal_tab', '#{clientId}internal_header_tab', '#{clientId}focusKeeper', undefined, Richfaces.PickList.Source.SelectItem, #{this:getColumnClassesAsJSArray(context, component)}, #{this:getRowClassesAsJSArray(context, component)}),
"#{clientId}", [['copy', 'discopy'], ['copyAll', 'discopyAll'], ['remove', 'disremove'], ['removeAll','disremoveAll']],
- "#{switchByClick}", {onlistchanged: #{this:getAsEventHandler(context, component, "onlistchanged")}},
+ "#{switchByClick}", {onlistchanged: #{this:getAsEventHandler(context, component, "onlistchanged")},
+ onfocus:#{this:getAsEventHandler(context, component, "onfocus")},
+ onblur:#{this:getAsEventHandler(context, component, "onblur")}},
"#{clientId}valueKeeper");
},
RichShuttleUtils.Condition.ElementPresent("#{clientId}"), 100
16 years, 2 months
JBoss Rich Faces SVN: r9449 - trunk/docs/userguide/en/src/main/docbook/included.
by richfaces-svn-commits@lists.jboss.org
Author: smukhina
Date: 2008-07-08 08:27:22 -0400 (Tue, 08 Jul 2008)
New Revision: 9449
Modified:
trunk/docs/userguide/en/src/main/docbook/included/panelMenu.xml
trunk/docs/userguide/en/src/main/docbook/included/tabPanel.xml
Log:
http://jira.jboss.com/jira/browse/RF-3248
http://jira.jboss.com/jira/browse/RF-3253
info about classes is added
Modified: trunk/docs/userguide/en/src/main/docbook/included/panelMenu.xml
===================================================================
--- trunk/docs/userguide/en/src/main/docbook/included/panelMenu.xml 2008-07-08 12:00:32 UTC (rev 9448)
+++ trunk/docs/userguide/en/src/main/docbook/included/panelMenu.xml 2008-07-08 12:27:22 UTC (rev 9449)
@@ -304,7 +304,10 @@
<entry>rich-pmenu</entry>
<entry>Defines styles for a wrapper <div> element of a component</entry>
</row>
-
+ <row>
+ <entry>rich-pmenu-top-group</entry>
+ <entry>Defines styles for a top group element of a component</entry>
+ </row>
</tbody>
</tgroup>
</table>
Modified: trunk/docs/userguide/en/src/main/docbook/included/tabPanel.xml
===================================================================
--- trunk/docs/userguide/en/src/main/docbook/included/tabPanel.xml 2008-07-08 12:00:32 UTC (rev 9448)
+++ trunk/docs/userguide/en/src/main/docbook/included/tabPanel.xml 2008-07-08 12:27:22 UTC (rev 9449)
@@ -300,6 +300,10 @@
<entry>rich-tabhdr-side-cell</entry>
<entry>Defines styles for a header internal element</entry>
</row>
+ <row>
+ <entry>rich-tab-bottom-line</entry>
+ <entry>Defines styles for a tab bottom line element of a tabPanel </entry>
+ </row>
</tbody>
</tgroup>
</table>
16 years, 2 months
JBoss Rich Faces SVN: r9448 - in trunk/sandbox/ui/beanValidator/src/main: java/org/richfaces/component and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: dsvyatobatsko
Date: 2008-07-08 08:00:32 -0400 (Tue, 08 Jul 2008)
New Revision: 9448
Modified:
trunk/sandbox/ui/beanValidator/src/main/config/component/beanValidator.xml
trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java
Log:
event property added
Modified: trunk/sandbox/ui/beanValidator/src/main/config/component/beanValidator.xml
===================================================================
--- trunk/sandbox/ui/beanValidator/src/main/config/component/beanValidator.xml 2008-07-08 11:59:25 UTC (rev 9447)
+++ trunk/sandbox/ui/beanValidator/src/main/config/component/beanValidator.xml 2008-07-08 12:00:32 UTC (rev 9448)
@@ -27,18 +27,15 @@
</taghandler>
-->
&ui_component_attributes;
- <!--
- <property>
+ <property>
<name>event</name>
<classname>java.lang.String</classname>
<description>
- Name of JavaScript event property ( onclick, onchange,
- etc.) of parent component by which validation will be
- triggered
+ Name of JavaScript event property ( onclick, onchange, etc.) of parent component by
+ which validation will be triggered
</description>
<defaultvalue><![CDATA["onblur"]]></defaultvalue>
- </property>
- -->
+ </property>
</component>
<validator generate="false">
<id>org.richfaces.BeanValidator</id>
Modified: trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java
===================================================================
--- trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java 2008-07-08 11:59:25 UTC (rev 9447)
+++ trunk/sandbox/ui/beanValidator/src/main/java/org/richfaces/component/UIBeanValidator.java 2008-07-08 12:00:32 UTC (rev 9448)
@@ -9,7 +9,6 @@
import javax.faces.component.UIComponent;
import javax.faces.component.UIComponentBase;
import javax.faces.context.FacesContext;
-import javax.faces.context.FacesContextFactory;
import javax.faces.validator.Validator;
import org.ajax4jsf.renderkit.AjaxRendererUtils;
@@ -27,10 +26,10 @@
public static final String COMPONENT_FAMILY = "org.richfaces.ui.BeanValidator";
- public String getEvent() {
- return "onblur";
- }
+ public abstract String getEvent();
+ public abstract void setEvent(String event);
+
public void setParent(UIComponent parent) {
super.setParent(parent);
16 years, 2 months
JBoss Rich Faces SVN: r9447 - in trunk/ui: tooltip/src/main/config/component and 1 other directories.
by richfaces-svn-commits@lists.jboss.org
Author: cluts
Date: 2008-07-08 07:59:25 -0400 (Tue, 08 Jul 2008)
New Revision: 9447
Modified:
trunk/ui/toolBar/src/main/config/component/toolBar.xml
trunk/ui/tooltip/src/main/config/component/toolTip.xml
trunk/ui/tree/src/main/config/component/tree.xml
Log:
RF-696 - corrected typos for some attributes of rich:toolTip; corrected description for separatorClass attribute (rich:toolBarGroup); added description for treeNodeState attribute (rich:tree)
Modified: trunk/ui/toolBar/src/main/config/component/toolBar.xml
===================================================================
--- trunk/ui/toolBar/src/main/config/component/toolBar.xml 2008-07-08 11:08:06 UTC (rev 9446)
+++ trunk/ui/toolBar/src/main/config/component/toolBar.xml 2008-07-08 11:59:25 UTC (rev 9447)
@@ -177,7 +177,7 @@
<name>itemSeparator</name>
<classname>java.lang.String</classname>
<description>
- <![CDATA["A separator for the items in a group. Possible
+ <![CDATA[A separator for the items in a group. Possible
values are "none", "line", "square", "disc" and "grid" Default value is "none".]]>
</description>
<defaultvalue>
@@ -188,14 +188,14 @@
<name>separatorClass</name>
<classname>java.lang.String</classname>
<description>
- <![CDATA["A CSS class to be applied to tool bar group separators."]]>
+ <![CDATA[A CSS class to be applied to tool bar group separators.]]>
</description>
</property>
<property>
<name>location</name>
<classname>java.lang.String</classname>
<description>
- <![CDATA["A location of a group on a tool bar. Possible values are "left" and "right". Default value is "left". ]]>
+ <![CDATA[A location of a group on a tool bar. Possible values are "left" and "right". Default value is "left". ]]>
</description>
<defaultvalue>
<![CDATA["left"]]>
Modified: trunk/ui/tooltip/src/main/config/component/toolTip.xml
===================================================================
--- trunk/ui/tooltip/src/main/config/component/toolTip.xml 2008-07-08 11:08:06 UTC (rev 9446)
+++ trunk/ui/tooltip/src/main/config/component/toolTip.xml 2008-07-08 11:59:25 UTC (rev 9447)
@@ -127,7 +127,7 @@
<property>
<name>followMouse</name>
<classname>boolean</classname>
- <description>If 'true' tooltip should follow the mouse while it moves over the parent element. Default value is "false"</description>
+ <description>If "true" tooltip should follow the mouse while it moves over the parent element. Default value is "false"</description>
<defaultvalue>false</defaultvalue>
</property>
<property>
@@ -208,8 +208,8 @@
<name>attached</name>
<classname>boolean</classname>
<description>
- If the value of the "attached" attribute is true, a component is attached to the parent component;
- if false, component does not listen to activating browser events, but could be activated externally. Default value is "true"
+ If the value of the "attached" attribute is "true", a component is attached to the parent component;
+ if "false", component does not listen to activating browser events, but could be activated externally. Default value is "true"
</description>
<defaultvalue>true</defaultvalue>
</property>
Modified: trunk/ui/tree/src/main/config/component/tree.xml
===================================================================
--- trunk/ui/tree/src/main/config/component/tree.xml 2008-07-08 11:08:06 UTC (rev 9446)
+++ trunk/ui/tree/src/main/config/component/tree.xml 2008-07-08 11:59:25 UTC (rev 9447)
@@ -79,6 +79,11 @@
<description>It defines EL-binding for a component state for saving or redefinition</description>
</property>
<property>
+ <name>treeNodeState</name>
+ <classname>org.ajax4jsf.model.DataComponentState</classname>
+ <description>This attribute defines EL-binding for a TreeNode state for saving or redefinition</description>
+ </property>
+ <property>
<name>nodeFace</name>
<classname>java.lang.String</classname>
<description>Node face facet name</description>
16 years, 2 months
JBoss Rich Faces SVN: r9446 - in trunk/docs/cdkguide/en/src/main/docbook: modules and 1 other directory.
by richfaces-svn-commits@lists.jboss.org
Author: artdaw
Date: 2008-07-08 07:08:06 -0400 (Tue, 08 Jul 2008)
New Revision: 9446
Modified:
trunk/docs/cdkguide/en/src/main/docbook/master.xml
trunk/docs/cdkguide/en/src/main/docbook/modules/intro.xml
trunk/docs/cdkguide/en/src/main/docbook/modules/roadmap.xml
Log:
http://jira.jboss.com/jira/browse/RF-3692 - Roadmap document was added. TOC and Introduction were changed.
Modified: trunk/docs/cdkguide/en/src/main/docbook/master.xml
===================================================================
--- trunk/docs/cdkguide/en/src/main/docbook/master.xml 2008-07-08 10:54:54 UTC (rev 9445)
+++ trunk/docs/cdkguide/en/src/main/docbook/master.xml 2008-07-08 11:08:06 UTC (rev 9446)
@@ -39,7 +39,6 @@
<toc/>
&intro;
&roadmap;
- &namingconv;
&setup;
@@ -120,6 +119,7 @@
</chapter>
&ide;
+ &namingconv;
&ref;
&temptags;
</book>
Modified: trunk/docs/cdkguide/en/src/main/docbook/modules/intro.xml
===================================================================
--- trunk/docs/cdkguide/en/src/main/docbook/modules/intro.xml 2008-07-08 10:54:54 UTC (rev 9445)
+++ trunk/docs/cdkguide/en/src/main/docbook/modules/intro.xml 2008-07-08 11:08:06 UTC (rev 9446)
@@ -78,8 +78,9 @@
</listitem>
<listitem>
<para>
- Add Ajax capability to the existing JSF applications and create a first-class rich components
- with built-in Ajax functionality.
+ Possibility to create a first-class rich components
+ with built-in Ajax functionality
+ and add Ajax capability to the existing JSF applications.
</para>
</listitem>
<listitem>
@@ -96,7 +97,7 @@
Optimization for different JSF implementations.
As soon as the most part of a result code is generated, the <property>Component Development Kit (CDK)</property>
becomes able to generate an implementation specific code along with a universal code.
- It makes sense if it"s necessary to optimize a result code using features specific for
+ It makes sense if it's necessary to optimize a result code using features specific for
the particular implementation. For example, for using with JSF 1.2 only.
</para>
</listitem>
Modified: trunk/docs/cdkguide/en/src/main/docbook/modules/roadmap.xml
===================================================================
--- trunk/docs/cdkguide/en/src/main/docbook/modules/roadmap.xml 2008-07-08 10:54:54 UTC (rev 9445)
+++ trunk/docs/cdkguide/en/src/main/docbook/modules/roadmap.xml 2008-07-08 11:08:06 UTC (rev 9446)
@@ -11,7 +11,34 @@
<title>Roadmap document</title>
<para>
- This document is aimed to describe components development with Ajax4jsf Component Factory and factory features.
+ This document is aimed to describe components development with
+ <property>Component Development Kit (CDK)</property> and its features.
</para>
-
+ <para>
+ In order to be successful in <property>Component Development Kit (CDK)</property> usage and components development,
+ it's necessary to be acquainted with Java Server Faces and <property>RichFaces</property> framework.
+ To read more on these topics, please, follow the links:
+ </para>
+ <itemizedlist>
+ <listitem>
+ <para>
+ <ulink url="http://java.sun.com/javaee/javaserverfaces">JavaServer Faces Technology</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="https://facelets.dev.java.net">Facelets Official Resource</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://java.sun.com/javaee/javaserverfaces/reference/api/index.html">JSF Official Resource of MyFaces implementation</ulink>
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ <ulink url="http://www.jboss.org/jbossrichfaces">RichFaces Official Site</ulink>
+ </para>
+ </listitem>
+ </itemizedlist>
</chapter>
\ No newline at end of file
16 years, 2 months
JBoss Rich Faces SVN: r9445 - trunk/framework/impl/src/main/java/org/ajax4jsf/webapp.
by richfaces-svn-commits@lists.jboss.org
Author: andrei_exadel
Date: 2008-07-08 06:54:54 -0400 (Tue, 08 Jul 2008)
New Revision: 9445
Modified:
trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseFilter.java
Log:
RF-3173
Modified: trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseFilter.java
===================================================================
--- trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseFilter.java 2008-07-08 10:54:45 UTC (rev 9444)
+++ trunk/framework/impl/src/main/java/org/ajax4jsf/webapp/BaseFilter.java 2008-07-08 10:54:54 UTC (rev 9445)
@@ -301,10 +301,15 @@
Map<String, MultipartRequest> sessionsMap = null;
Map<String, Object> percentMap = null;
boolean sendError = Boolean.parseBoolean(request.getParameter(SEND_HTTP_ERROR));
+ String mimeType = xmlFilter.getMimetype();
try {
if (isFileSizeRestricted(request, maxRequestSize)) {
if (sendError) {
+ //request.getInputStream().close();
+ //request.getInputStream().skip(request.getContentLength());
response.sendError(413);
+ System.out.println("413");
+ return;
} else {
printResponse(response,
"<html id=\"_richfaces_file_upload_size_restricted\"></html>");
@@ -336,9 +341,12 @@
// file
// entry uid
sessionsMap.put(uid, multipartRequest);
-
+
if (multipartRequest.parseRequest()) {
- handleRequest(multipartRequest, response, chain);
+
+ xmlFilter.setMimetype("text/html"); // We need set mimetype as HTML to avoid
+ // transforming response to XML tree under IE
+ handleRequest(multipartRequest, response, chain);
} else {
printResponse(response,
"<html id=\"_richfaces_file_upload_stopped\"></html>");
@@ -346,6 +354,7 @@
}
} finally {
if (sessionsMap != null) {
+ xmlFilter.setMimetype(mimeType); // Backup mimetype
sessionsMap.remove(uid);
percentMap.remove(uid);
}
@@ -362,7 +371,7 @@
multipartRequest.stop();
HttpServletResponse httpResponse = (HttpServletResponse) response;
httpResponse
- .setStatus(HttpServletResponse.SC_NO_CONTENT);
+ .setStatus(HttpServletResponse.SC_OK);
httpResponse.getOutputStream().close();
}
}
16 years, 2 months
JBoss Rich Faces SVN: r9444 - trunk/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js.
by richfaces-svn-commits@lists.jboss.org
Author: andrei_exadel
Date: 2008-07-08 06:54:45 -0400 (Tue, 08 Jul 2008)
New Revision: 9444
Modified:
trunk/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js
Log:
RF-3173
Modified: trunk/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js
===================================================================
--- trunk/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js 2008-07-08 10:43:49 UTC (rev 9443)
+++ trunk/ui/fileUpload/src/main/resources/org/richfaces/renderkit/html/js/FileUpload.js 2008-07-08 10:54:45 UTC (rev 9444)
@@ -348,9 +348,6 @@
var restr = iframeDocument.getElementById('_richfaces_file_upload_size_restricted');
var forb = iframeDocument.getElementById('_richfaces_file_upload_forbidden');
var state = iframeDocument.getElementById("javax.faces.ViewState");
- if (!state && this.iframe.document) {
- state = this.iframe.document.getElementById("javax.faces.ViewState")
- }
if (elt) {
this.callback(FileUploadEntry.UPLOAD_CANCELED);
16 years, 2 months