You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by bu...@apache.org on 2002/12/13 04:43:53 UTC
DO NOT REPLY [Bug 15345] New: -
Validator not formsets by locale
DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG
RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT
<http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15345>.
ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND
INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=15345
Validator not formsets by locale
Summary: Validator not formsets by locale
Product: Commons
Version: Nightly Builds
Platform: All
OS/Version: Other
Status: NEW
Severity: Normal
Priority: Other
Component: Validator
AssignedTo: commons-dev@jakarta.apache.org
ReportedBy: gary.frost@ssmb.com.au
org.apache.commons.validator.ValidatorResources:get(String, String, String,
Object)
This method seems to be searching the hFormSet entries incorrectly for finding
a form with the given key, using a formset with the given locale.
The method bails out straight away if it does not find a formset with the
language + country + variant passed in, rather than trying
1) language + country + variant
2) language + country
3) language
4) default locale
The following diffs seem to fix it up, but I could be misunderstanding the
problem.
--- ValidatorResources.java Wed Dec 4 02:27:36 2002
+++ /home/gf06866/projects/webATLAS/src/java/org/apache/commons/validator/Valida
torResources.java Fri Dec 13 11:06:01 2002
@@ -244,63 +244,61 @@
* </ol>
*/
public Form get(String language, String country, String variant, Object
formKey) {
- FormSet fs = null;
Form f = null;
- String key = null;
- Object o = null;
-
- key = ((language != null && language.length() > 0) ? language : "") +
- ((country != null && country.length() > 0) ? "_" + country : "") +
- ((variant != null && variant.length() > 0) ? "_" + variant : "");
-
- Vector v = (Vector) hFormSets.get(key);
+ String localeKey = null;
- if (v == null) return f;
-
- Enumeration formsets = v.elements();
- while (formsets.hasMoreElements()) {
- o = formsets.nextElement();
- if (o != null) {
- fs = (FormSet)o;
- if ((fs != null) && (fs.getForm(formKey) != null)) {
- return fs.getForm(formKey);
+ // Try language + country + variant
+ if (!GenericValidator.isBlankOrNull(language) &&
+ !GenericValidator.isBlankOrNull(country) &&
+ !GenericValidator.isBlankOrNull(variant)) {
+ localeKey = language + "_" + country + "_" + variant;
+ f = getForm(localeKey, formKey);
+ if (f != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Form with key " + formKey + " found
in formset with locale " + localeKey);
}
+ return f;
}
}
- key = ((language != null && language.length() > 0) ? language : "") +
- ((country != null && country.length() > 0) ? "_" + country : "");
- formsets = v.elements();
- while (formsets.hasMoreElements()) {
- o = formsets.nextElement();
- if (o != null) {
- fs = (FormSet)o;
- if ((fs != null) && (fs.getForm(formKey) != null)) {
- return fs.getForm(formKey);
+ // Try language + country
+ if (!GenericValidator.isBlankOrNull(language) &&
+ !GenericValidator.isBlankOrNull(country)) {
+ localeKey = language + "_" + country;
+ f = getForm(localeKey, formKey);
+ if (f != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Form with key " + formKey + " found
in formset with locale " + localeKey);
}
+ return f;
}
}
- key = ((language != null && language.length() > 0) ? language : "");
- formsets = v.elements();
- while (formsets.hasMoreElements()) {
- o = formsets.nextElement();
- if (o != null) {
- fs = (FormSet)o;
- if ((fs != null) && (fs.getForm(formKey) != null)) {
- return fs.getForm(formKey);
+
+ // Try language only
+ if (!GenericValidator.isBlankOrNull(language)) {
+ localeKey = language;
+ f = getForm(localeKey, formKey);
+ if (f != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Form with key " + formKey + " found
in formset with locale " + localeKey);
}
+ return f;
}
}
- key = defaultLocale.toString();
- formsets = v.elements();
- while (formsets.hasMoreElements()) {
- o = formsets.nextElement();
- if (o != null) {
- fs = (FormSet)o;
- if ((fs != null) && (fs.getForm(formKey) != null)) {
- return fs.getForm(formKey);
+
+ // Try default locale
+ localeKey = defaultLocale.toString();
+ f = getForm(localeKey, formKey);
+ if (f != null) {
+ if (log.isDebugEnabled()) {
+ log.debug("Form with key " + formKey + " found in
formset with locale " + localeKey);
}
+ return f;
}
+
+ // No form found
+ if (log.isDebugEnabled()) {
+ log.debug("No Form with key " + formKey);
}
return null;
}
@@ -425,5 +423,30 @@
return field;
}
+
+ /**
+ * Find a <code>FormSet</code in the collection of stored formsets with the
given
+ * locale key, if a <code>FormSet</code> it found search it for a
<code>Form</code>
+ * with the given formKey
+ */
+ protected Form getForm(String localeKey, Object formKey) {
+ Object o = null;
+ Vector v = (Vector) hFormSets.get(localeKey);
+ FormSet fs = null;
+
+ if (v == null) return null;
+
+ Enumeration formsets = v.elements();
+ while (formsets.hasMoreElements()) {
+ o = formsets.nextElement();
+ if (o != null) {
+ fs = (FormSet)o;
+ if (fs.getForm(formKey) != null) {
+ return fs.getForm(formKey);
+ }
+ }
+ }
+ return null;
+ }
}
--
To unsubscribe, e-mail: <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>