r1297 - in jaxx/trunk: jaxx-runtime-api/src/main/java/jaxx/runtime jaxx-runtime-validator/src/main/java/jaxx/runtime/validator/field
Author: tchemit Date: 2009-04-05 20:13:32 +0000 (Sun, 05 Apr 2009) New Revision: 1297 Modified: jaxx/trunk/jaxx-runtime-api/src/main/java/jaxx/runtime/DataContext.java jaxx/trunk/jaxx-runtime-validator/src/main/java/jaxx/runtime/validator/field/CollectionFieldExpressionValidator.java Log: add some usefull methods Modified: jaxx/trunk/jaxx-runtime-api/src/main/java/jaxx/runtime/DataContext.java =================================================================== --- jaxx/trunk/jaxx-runtime-api/src/main/java/jaxx/runtime/DataContext.java 2009-04-05 12:44:05 UTC (rev 1296) +++ jaxx/trunk/jaxx-runtime-api/src/main/java/jaxx/runtime/DataContext.java 2009-04-05 20:13:32 UTC (rev 1297) @@ -128,6 +128,32 @@ return null; } + public <T> T getContextValue(DataContextEntry<T> entry, String key) { + if (key == null) { + throw new NullPointerException("key parameter can not be null!"); + } + String contextKey = entry.hashCode() + "#" + key; + T result = delegate.getContextValue(entry.getKlass(), contextKey); + return result; + } + + public void setContextValue(DataContextEntry entry, Object value, String key) { + if (key == null) { + throw new NullPointerException("key parameter can not be null!"); + } + String contextKey = entry.hashCode() + "#" + key; + delegate.setContextValue(value, contextKey); + } + + public void removeContextValue(DataContextEntry entry, Object value, String key) { + if (key == null) { + throw new NullPointerException("key parameter can not be null!"); + } + String contextKey = entry.hashCode() + "#" + key; + delegate.removeContextValue(value.getClass(), contextKey); + } + + @SuppressWarnings("unchecked") public void updateSelectedData(String path, Object data, UpdateDataContext updator) { if (currentEntry != null) { @@ -139,7 +165,7 @@ if (log.isTraceEnabled()) { log.trace("remove entry " + s); } - updator.onRemovingData(delegate, s); + updator.onRemovingData(this, s); } } @@ -153,7 +179,7 @@ for (DataContextEntry<?> s : iterateToLevel(currentEntry.getLevel())) { - updator.onAddingData(delegate, s, path); + updator.onAddingData(this, s, path); } } } @@ -288,11 +314,11 @@ } } - public static interface UpdateDataContext { + public static interface UpdateDataContext<D extends DataContext> { - void onRemovingData(JAXXContext context, DataContextEntry entry); + void onRemovingData(D context, DataContextEntry entry); - void onAddingData(JAXXContext context, DataContextEntry entry, String path); + void onAddingData(D context, DataContextEntry entry, String path); } public static class DataContextEntryIterator implements Iterator<DataContextEntry<?>> { Modified: jaxx/trunk/jaxx-runtime-validator/src/main/java/jaxx/runtime/validator/field/CollectionFieldExpressionValidator.java =================================================================== --- jaxx/trunk/jaxx-runtime-validator/src/main/java/jaxx/runtime/validator/field/CollectionFieldExpressionValidator.java 2009-04-05 12:44:05 UTC (rev 1296) +++ jaxx/trunk/jaxx-runtime-validator/src/main/java/jaxx/runtime/validator/field/CollectionFieldExpressionValidator.java 2009-04-05 20:13:32 UTC (rev 1297) @@ -1,5 +1,6 @@ package jaxx.runtime.validator.field; +import com.opensymphony.xwork2.util.ValueStack; import com.opensymphony.xwork2.validator.ValidationException; import com.opensymphony.xwork2.validator.validators.FieldExpressionValidator; @@ -48,7 +49,7 @@ protected String expressionForLast; /** le context de parcours */ protected WalkerContext c; - private boolean useFirst, useLast; + private boolean useFirst, useLast; public Mode getMode() { return mode; @@ -107,6 +108,13 @@ boolean answer; + boolean pop = false; + + if (!stack.getRoot().contains(object)) { + stack.push(object); + pop = true; + } + switch (mode) { case ALL: answer = validateAllEntries(col); @@ -129,8 +137,34 @@ if (!answer) { addFieldError(fieldName, object); } + if (pop) { + stack.pop(); + } } + protected ValueStack stack; + @Override + public void setValueStack(ValueStack stack) { + super.setValueStack(stack); + this.stack = stack; + } + + @Override + public String getMessage(Object object) { + boolean pop = false; + + if (useSensitiveContext && !stack.getRoot().contains(c)) { + stack.push(c); + pop = true; + } + String message = super.getMessage(object); + + if (pop) { + stack.pop(); + } + return message; + } + protected Boolean validateAllEntries(Collection<?> col) throws ValidationException { boolean answer = true; for (Object entry : col) {
participants (1)
-
tchemit@users.labs.libre-entreprise.org