You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@struts.apache.org by dw...@apache.org on 2001/10/18 08:03:32 UTC
cvs commit: jakarta-struts/contrib/validator/src/share/com/wintecinc/struts/validation Field.java Validator.java ValidatorResources.java
dwinterfeldt 01/10/17 23:03:32
Modified: contrib/validator/src/share/com/wintecinc/struts/validation
Field.java Validator.java ValidatorResources.java
Log:
When indexed property support was added, it broke the cloning of non-default loccale FormSets. The getKey method in Field was returning null because the Field's process method hadn't been called yet.
Revision Changes Path
1.5 +36 -14 jakarta-struts/contrib/validator/src/share/com/wintecinc/struts/validation/Field.java
Index: Field.java
===================================================================
RCS file: /home/cvs/jakarta-struts/contrib/validator/src/share/com/wintecinc/struts/validation/Field.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Field.java 2001/09/25 21:23:56 1.4
+++ Field.java 2001/10/18 06:03:32 1.5
@@ -393,6 +393,9 @@
* Gets a unique key based on the property and indexedProperty fields.
*/
public String getKey() {
+ if (key == null)
+ generateKey();
+
return key;
}
@@ -415,8 +418,18 @@
else
return false;
}
-
+
/**
+ * Generate correct <code>key</code> value.
+ */
+ public void generateKey() {
+ if (isIndexed())
+ key = indexedProperty + TOKEN_INDEXED + "." + property;
+ else
+ key = property;
+ }
+
+ /**
* Replace constants with values in fields and process the depends field
* to create the dependency <code>Map</code>.
*/
@@ -428,13 +441,8 @@
hArg3.setFast(true);
hVars.setFast(true);
- // If the field is indexed, combine property and
- // indexedProperty to make a unique key.
- if (isIndexed())
- key = indexedProperty + TOKEN_INDEXED + "." + property;
- else
- key = property;
-
+ generateKey();
+
// Process FormSet Constants
for (Iterator i = constants.keySet().iterator(); i.hasNext(); ) {
String key = (String)i.next();
@@ -557,13 +565,22 @@
try {
Field field = (Field)super.clone();
+ if (key != null)
+ field.setKey(new String(key));
+
if (property != null)
field.setProperty(new String(property));
+
+ if (indexedProperty != null)
+ field.setIndexedProperty(new String(indexedProperty));
+
+ if (indexedListProperty != null)
+ field.setIndexedListProperty(new String(indexedListProperty));
if (depends != null)
field.setDepends(new String(depends));
-
- // page field taken care of by clone method
+
+ // page & fieldOrder should be taken care of by clone method
field.hDependencies = copyFastHashMap(hDependencies);
field.hVars = copyFastHashMap(hVars);
@@ -572,7 +589,7 @@
field.hArg1 = copyFastHashMap(hArg1);
field.hArg2 = copyFastHashMap(hArg2);
field.hArg3 = copyFastHashMap(hArg3);
-
+
return field;
} catch (CloneNotSupportedException e) {
throw new InternalError(e.toString());
@@ -610,9 +627,14 @@
}
public String toString() {
- String sReturn = "\t\tproperty= " + property + "\n" +
- "\t\tdepends= " + depends + "\n";
-
+ String sReturn = "\t\tkey= " + key + "\n" +
+ "\t\tproperty= " + property + "\n" +
+ "\t\tindexedProperty= " + indexedProperty + "\n" +
+ "\t\tindexedListProperty= " + indexedListProperty + "\n" +
+ "\t\tdepends= " + depends + "\n" +
+ "\t\tpage= " + page + "\n" +
+ "\t\tfieldOrder= " + fieldOrder + "\n";
+
if (hVars != null) {
sReturn += "\t\tVars:\n";
for (Iterator i = hVars.keySet().iterator(); i.hasNext(); ) {
1.5 +15 -10 jakarta-struts/contrib/validator/src/share/com/wintecinc/struts/validation/Validator.java
Index: Validator.java
===================================================================
RCS file: /home/cvs/jakarta-struts/contrib/validator/src/share/com/wintecinc/struts/validation/Validator.java,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- Validator.java 2001/09/25 20:08:48 1.4
+++ Validator.java 2001/10/18 06:03:32 1.5
@@ -209,10 +209,12 @@
String depend = st.nextToken().trim();
Object o = hActionsRun.get(depend);
- //logger.info("***### Validator main - " + va.getName() + " - " + va.getDepends());
+ //if (logger.getDebug() > 10)
+ // logger.info("***### Validator main - " + va.getName() + " - " + va.getDepends());
if (o == null) {
- //logger.info("***### Validator o==null - " + va.getName() + " - " + va.getDepends());
+ //if (logger.getDebug() > 10)
+ // logger.info("***### Validator o==null - " + va.getName() + " - " + va.getDepends());
lActions.clear();
va = null;
@@ -221,7 +223,8 @@
} else {
boolean bContinue = ((Boolean)o).booleanValue();
- //logger.info("***### Validator - " + va.getName() + " depend=" + depend + " bContinue=" + bContinue);
+ //if (logger.getDebug() > 10)
+ // logger.info("***### Validator - " + va.getName() + " depend=" + depend + " bContinue=" + bContinue);
if (!bContinue) {
lActions.clear();
@@ -237,7 +240,7 @@
}
// For debug
- /*if (logger.getDebug() > 0) {
+ /**if (logger.getDebug() > 10) {
logger.info("***Order ******************************");
for (Iterator actions = lActions.iterator(); actions.hasNext(); ) {
@@ -251,14 +254,14 @@
if (va != null) {
for (Iterator i = form.getFields().iterator(); i.hasNext(); ) {
Field field = (Field)i.next();
-
+
if (field.getPage() <= page && (field.getDepends() != null && field.isDependency(va.getName()))) {
try {
// Add these two Objects to the resources since they reference
// the current validator action and field
hResources.put(VALIDATOR_ACTION_KEY, va);
hResources.put(FIELD_KEY, field);
-
+
Class c = Class.forName(va.getClassname(), true, this.getClass().getClassLoader());
List lParams = va.getMethodParamsList();
@@ -296,7 +299,7 @@
"of class " + va.getClassname() + ". " + ex.getMessage());
}
}
-
+
Object result = null;
if (field.isIndexed()) {
@@ -328,7 +331,7 @@
}
} else {
result = m.invoke(va.getClassnameInstance(), paramValue);
-
+
if (result instanceof Boolean) {
Boolean valid = (Boolean)result;
if (!valid.booleanValue())
@@ -352,12 +355,14 @@
hActionsRun.put(va.getName(), new Boolean(false));
}
- //logger.info("*** Validator - " + va.getName() + " size=" + lActions.size());
+ if (logger.getDebug() > 10)
+ logger.info("*** Validator - " + va.getName() + " size=" + lActions.size());
if (lActions.size() > 0)
lActions.remove(0);
- //logger.info("*** Validator - after remove - " + va.getName() + " size=" + lActions.size());
+ if (logger.getDebug() > 10)
+ logger.info("*** Validator - after remove - " + va.getName() + " size=" + lActions.size());
}
if (lActions.size() == 0)
1.4 +0 -2 jakarta-struts/contrib/validator/src/share/com/wintecinc/struts/validation/ValidatorResources.java
Index: ValidatorResources.java
===================================================================
RCS file: /home/cvs/jakarta-struts/contrib/validator/src/share/com/wintecinc/struts/validation/ValidatorResources.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- ValidatorResources.java 2001/09/25 18:03:12 1.3
+++ ValidatorResources.java 2001/10/18 06:03:32 1.4
@@ -395,8 +395,6 @@
!GenericValidator.isBlankOrNull(variant)) {
Form form = get(language, country, null, formKey);
- // FIX ME - getFieldMap() can be removed if method in this class
- // can loop through and find the matching field based on the Field.getProperty()
if (form.getFieldMap().containsKey(fieldKey))
field = (Field)form.getFieldMap().get(fieldKey);
}