You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwebbeans.apache.org by ta...@apache.org on 2018/10/16 15:08:55 UTC
svn commit: r1844018 - in
/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans:
annotation/AnnotationManager.java config/BeansDeployer.java
Author: tandraschko
Date: Tue Oct 16 15:08:55 2018
New Revision: 1844018
URL: http://svn.apache.org/viewvc?rev=1844018&view=rev
Log:
OWB-1265
Modified:
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java
openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java?rev=1844018&r1=1844017&r2=1844018&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/annotation/AnnotationManager.java Tue Oct 16 15:08:55 2018
@@ -61,6 +61,7 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.CopyOnWriteArraySet;
/**
* Manages annotation usage by classes in this application.
@@ -72,6 +73,9 @@ public final class AnnotationManager
private Map<Class<? extends Annotation>, Boolean> checkedStereotypeAnnotations =
new ConcurrentHashMap<>();
+ private CopyOnWriteArraySet<Class<?>> repeatableMethodCheckedTypes = new CopyOnWriteArraySet<>();
+ private Map<Class<?>, Method> repeatableMethodCache = new ConcurrentHashMap<>();
+
private final BeanManagerImpl beanManagerImpl;
private final WebBeansContext webBeansContext;
@@ -929,9 +933,30 @@ public final class AnnotationManager
}
}
}
+
+ public void clearStartupCache()
+ {
+ repeatableMethodCheckedTypes.clear();
+ repeatableMethodCache.clear();
+ }
public Method getRepeatableMethod(Class<?> type)
{
+ if (repeatableMethodCheckedTypes.contains(type))
+ {
+ return repeatableMethodCache.get(type);
+ }
+
+ Method method = resolveRepeatableMethod(type);
+
+ repeatableMethodCheckedTypes.add(type);
+ repeatableMethodCache.put(type, method);
+
+ return method;
+ }
+
+ protected Method resolveRepeatableMethod(Class<?> type)
+ {
Method value;
try
{
@@ -953,4 +978,6 @@ public final class AnnotationManager
}
return value;
}
+
+
}
Modified: openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java
URL: http://svn.apache.org/viewvc/openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java?rev=1844018&r1=1844017&r2=1844018&view=diff
==============================================================================
--- openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java (original)
+++ openwebbeans/trunk/webbeans-impl/src/main/java/org/apache/webbeans/config/BeansDeployer.java Tue Oct 16 15:08:55 2018
@@ -330,6 +330,7 @@ public class BeansDeployer
validateNames();
webBeansContext.getNotificationManager().clearCaches();
+ webBeansContext.getAnnotationManager().clearStartupCache();
if (webBeansContext.getNotificationManager().getObserverMethods().stream()
.anyMatch(ObserverMethod::isAsync))