[ 
https://issues.apache.org/jira/browse/BCEL-321?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tomo Suzuki updated BCEL-321:
-----------------------------
    Description: 
(After implementing [BCEL-320|https://issues.apache.org/jira/browse/BCEL-320])

BCEL has different ClassPathRepository classes with slight modification in its 
underlying cache:

* ClassPathRepository uses HashMap<String, JavaClass> for JavaClass cache
* MemorySensitiveClassPathRepository uses HashMap<String, 
SoftReference<JavaClass>
* New LruCacheClassPathRepository by BCEL-320 will use LinkedHashMap<String, 
JavaClass> for JavaClass cache

The logic of loadClass, storeClass, and findClass methods are almost same 
(attached screenshot of ClassPathRepository and 
MemorySensitiveClassPathRepository as  !classpathrepository_code_duplicate.png! 
). I think they can leverage an abstraction over the internal cache so that 
they will have less duplicate code.


After BCEL-320, I'm thinking to create a PR for the abstraction.

  was:
(After implementing [BCEL-320|https://issues.apache.org/jira/browse/BCEL-320])

BCEL has different ClassPathRepository classes with slight modification in its 
underlying cache:

* ClassPathRepository uses HashMap<String, JavaClass> for JavaClass cache
* MemorySensitiveClassPathRepository uses HashMap<String, 
SoftReference<JavaClass>
* New LruCacheClassPathRepository by BCEL-320 will use LinkedHashMap<String, 
JavaClass> for JavaClass cache

The logic of loadClass, storeClass, and findClass methods are almost same 
(attached screenshot of ClassPathRepository and 
MemorySensitiveClassPathRepository as ). I think they can leverage an 
abstraction over the internal cache so that they will have less duplicate code.


After BCEL-320, I'm thinking to create a PR for the abstraction.


> Subclasses of ClassPathRepository only differ by its underlying cache?
> ----------------------------------------------------------------------
>
>                 Key: BCEL-321
>                 URL: https://issues.apache.org/jira/browse/BCEL-321
>             Project: Commons BCEL
>          Issue Type: Improvement
>            Reporter: Tomo Suzuki
>            Priority: Minor
>         Attachments: classpathrepository_code_duplicate.png
>
>
> (After implementing [BCEL-320|https://issues.apache.org/jira/browse/BCEL-320])
> BCEL has different ClassPathRepository classes with slight modification in 
> its underlying cache:
> * ClassPathRepository uses HashMap<String, JavaClass> for JavaClass cache
> * MemorySensitiveClassPathRepository uses HashMap<String, 
> SoftReference<JavaClass>
> * New LruCacheClassPathRepository by BCEL-320 will use LinkedHashMap<String, 
> JavaClass> for JavaClass cache
> The logic of loadClass, storeClass, and findClass methods are almost same 
> (attached screenshot of ClassPathRepository and 
> MemorySensitiveClassPathRepository as  
> !classpathrepository_code_duplicate.png! ). I think they can leverage an 
> abstraction over the internal cache so that they will have less duplicate 
> code.
> After BCEL-320, I'm thinking to create a PR for the abstraction.



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to