EXTVAL-145 cache for renderer-interceptors - thx to Thomas Andraschko
git-svn-id: https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk@1359915 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java b/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java
index 9b4b62b..e19b493 100644
--- a/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java
+++ b/core/src/main/java/org/apache/myfaces/extensions/validator/core/ExtValContext.java
@@ -76,6 +76,8 @@
private SkipValidationEvaluator skipValidationEvaluator;
+ private List<RendererInterceptor> rendererInterceptorCache = null;
+
private Map<String, Object> globalProperties = new HashMap<String, Object>();
/**
@@ -249,7 +251,12 @@
*/
public List<RendererInterceptor> getRendererInterceptors()
{
- return new ArrayList<RendererInterceptor>(this.rendererInterceptors.values());
+ if (this.rendererInterceptorCache == null)
+ {
+ this.rendererInterceptorCache = new ArrayList<RendererInterceptor>(this.rendererInterceptors.values());
+ }
+
+ return this.rendererInterceptorCache;
}
public boolean registerRendererInterceptor(RendererInterceptor rendererInterceptor)
@@ -262,6 +269,7 @@
}
this.rendererInterceptors.put(rendererInterceptor.getInterceptorId(), rendererInterceptor);
+ this.rendererInterceptorCache = new ArrayList<RendererInterceptor>(this.rendererInterceptors.values());
}
return true;
}
@@ -273,6 +281,7 @@
synchronized (ExtValContext.class)
{
this.rendererInterceptors.remove(rendererInterceptor.getInterceptorId());
+ this.rendererInterceptorCache = new ArrayList<RendererInterceptor>(this.rendererInterceptors.values());
}
}