[ 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 below). 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. !classpathrepository_code_duplicate.png! 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 !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. > 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 below). 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. > !classpathrepository_code_duplicate.png! -- This message was sent by Atlassian JIRA (v7.6.3#76005)