lukaszlenart commented on code in PR #766:
URL: https://github.com/apache/struts/pull/766#discussion_r1360728599


##########
core/src/main/java/com/opensymphony/xwork2/ognl/OgnlCacheFactory.java:
##########
@@ -19,12 +19,52 @@
  * Used by {@link com.opensymphony.xwork2.ognl.OgnlUtil} to create appropriate 
OGNL
  * caches based on configuration.
  *
- * @param <Key> The type for the cache key entries
+ * @param <Key>   The type for the cache key entries
  * @param <Value> The type for the cache value entries
  */
-interface OgnlCacheFactory<Key, Value> {
+public interface OgnlCacheFactory<Key, Value> {
     OgnlCache<Key, Value> buildOgnlCache();
-    OgnlCache<Key, Value> buildOgnlCache(int evictionLimit, int 
initialCapacity, float loadFactor, boolean lruCache);
+
+    /**
+     * Note that if {@code lruCache} is {@code false}, the cache type could 
still be LRU if the default cache type is
+     * configured as such.
+     * @deprecated since 6.4.0, use {@link #buildOgnlCache(int, int, float, 
CacheType)}
+     */
+    @Deprecated
+    default OgnlCache<Key, Value> buildOgnlCache(int evictionLimit,
+                                                 int initialCapacity,
+                                                 float loadFactor,
+                                                 boolean lruCache) {
+        return buildOgnlCache(evictionLimit,
+                initialCapacity,
+                loadFactor,
+                lruCache ? CacheType.SYNC_LINKED_LRU : getDefaultCacheType());
+    }
+
+    /**
+     * @param evictionLimit   maximum capacity of the cache where applicable 
for cache type chosen
+     * @param initialCapacity initial capacity of the cache where applicable 
for cache type chosen
+     * @param loadFactor      load factor of the cache where applicable for 
cache type chosen
+     * @param cacheType       type of cache to build
+     * @return a new cache instance
+     */
+    OgnlCache<Key, Value> buildOgnlCache(int evictionLimit, int 
initialCapacity, float loadFactor, CacheType cacheType);
+
     int getCacheMaxSize();
-    boolean getUseLRUCache();
+
+    /**
+     * @deprecated since 6.4.0
+     */
+    @Deprecated
+    default boolean getUseLRUCache() {
+        return CacheType.SYNC_LINKED_LRU.equals(getDefaultCacheType());
+    }
+
+    CacheType getDefaultCacheType();
+
+    enum CacheType {
+        CONCURRENT_BASIC,
+        SYNC_LINKED_LRU,
+        CAFFEINE_WTLFU

Review Comment:
   Are these different implementations of cache layer? Shouldn't this go 
through the extension point?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@struts.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org

Reply via email to