You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@bval.apache.org by mb...@apache.org on 2011/02/21 19:06:57 UTC
svn commit: r1073097 - in
/incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic:
DynamicMetaGraphManagerImpl.java Timestamped.java
Author: mbenson
Date: Mon Feb 21 18:06:56 2011
New Revision: 1073097
URL: http://svn.apache.org/viewvc?rev=1073097&view=rev
Log:
tweaks
Modified:
incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java
incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/Timestamped.java
Modified: incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java
URL: http://svn.apache.org/viewvc/incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java?rev=1073097&r1=1073096&r2=1073097&view=diff
==============================================================================
--- incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java (original)
+++ incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/DynamicMetaGraphManagerImpl.java Mon Feb 21 18:06:56 2011
@@ -40,6 +40,7 @@ import javax.validation.ValidationExcept
import org.apache.bval.MetaBeanFinder;
import org.apache.bval.jsr303.AnnotationProcessor;
import org.apache.bval.jsr303.AppendValidationToMeta;
+import org.apache.bval.jsr303.Jsr303Features;
import org.apache.bval.jsr303.UnknownPropertyException;
import org.apache.bval.jsr303.util.ClassHelper;
import org.apache.bval.jsr303.util.NodeImpl;
@@ -121,8 +122,8 @@ final class DynamicMetaGraphManagerImpl
private static class TypePathIterator implements Iterator<Pair<? extends PathImpl, Class<?>>>,
Iterable<Pair<? extends PathImpl, Class<?>>> {
private final PathImpl fullPath;
- private ArrayList<Pair<? extends PathImpl, Class<?>>> cache;
private ArrayList<Path.Node> nodes;
+ private List<Pair<? extends PathImpl, Class<?>>> cache;
private Class<?> rawType;
private Type type;
@@ -144,11 +145,18 @@ final class DynamicMetaGraphManagerImpl
this.bean = rootBean;
this.pos = 0;
- nodes = new ArrayList<Path.Node>();
- for (Path.Node node : fullPath) {
- nodes.add(node);
+ if (fullPath.isRootPath()) {
+ nodes = null;
+ cache =
+ Collections.<Pair<? extends PathImpl, Class<?>>> singletonList(Pair.<PathImpl, Class<?>> of(
+ fullPath, rootType));
+ } else {
+ nodes = new ArrayList<Path.Node>();
+ for (Path.Node node : fullPath) {
+ nodes.add(node);
+ }
+ cache = new ArrayList<Pair<? extends PathImpl, Class<?>>>(nodes.size());
}
- cache = new ArrayList<Pair<? extends PathImpl, Class<?>>>(nodes.size());
}
/**
@@ -607,7 +615,6 @@ final class DynamicMetaGraphManagerImpl
if (mostSpecific instanceof CacheMeta) {
@SuppressWarnings("unchecked")
CacheMeta<MetaBean> cacheMeta = (CacheMeta<MetaBean>) mostSpecific;
- Timestamped.Utils.stamp(result);
cacheMeta.cache(result);
}
return result;
@@ -719,7 +726,7 @@ final class DynamicMetaGraphManagerImpl
* @param beanType
* @param propertyPath
* @param annotation
- * @return whether applying the specified annotation resulted in a change
+ * @return whether applying the specified annotation resulted in a change
*/
boolean constrain(Class<?> beanType, String propertyPath, Annotation annotation) {
final boolean setManager = DynamicModelManager.THREAD_BOUND_MANAGER.get() == null;
Modified: incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/Timestamped.java
URL: http://svn.apache.org/viewvc/incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/Timestamped.java?rev=1073097&r1=1073096&r2=1073097&view=diff
==============================================================================
--- incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/Timestamped.java (original)
+++ incubator/bval/sandbox/lang3-work/bval-jsr303d/src/main/java/org/apache/bval/jsr303/dynamic/Timestamped.java Mon Feb 21 18:06:56 2011
@@ -119,10 +119,14 @@ interface Timestamped {
* {@inheritDoc}
*/
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
+ Throwable caught = null;
try {
return method.invoke(iter, args);
+ } catch (Throwable t) {
+ caught = t;
+ throw t;
} finally {
- fireChange("remove".equals(method.getName()));
+ fireChange(caught == null && "remove".equals(method.getName()));
}
}
}
@@ -776,17 +780,6 @@ interface Timestamped {
};
/**
- * Stamp a {@link Timestamped} argument.
- *
- * @param o
- */
- public static void stamp(Object o) {
- if (o instanceof Timestamped) {
- ((Timestamped) o).touch();
- }
- }
-
- /**
* Get a usable timestamp value.
*
* @param o