View Javadoc

1   package net.sf.sapjcosupport;
2   
3   import org.springframework.util.MethodInvoker;
4   
5   import java.lang.reflect.Field;
6   import java.util.Collections;
7   import java.util.HashMap;
8   import java.util.Map;
9   
10  /**
11   * @author Niki Driessen
12   * @since May 24, 2006 - 1:52:39 PM  
13   */
14  public class SimpleReflectionCache {
15      private final static Map cache;
16      private static final String INVOKER_CACHE_KEY = "_invoker";
17      private static final String FIELD_CACHE_KEY = "_field";
18  
19      static {
20          cache = Collections.synchronizedMap(new HashMap());
21      }
22  
23      public MethodInvoker getCachedInvoker(SapFieldMapping sapFieldMapping) {
24          String cacheKey = String.valueOf(sapFieldMapping.hashCode());
25          return (MethodInvoker) cache.get(cacheKey + INVOKER_CACHE_KEY);
26      }
27  
28      public void cacheInvoker(SapFieldMapping sapFieldMapping, MethodInvoker invoker) {
29          String cacheKey = String.valueOf(sapFieldMapping.hashCode());
30          cache.put(cacheKey + INVOKER_CACHE_KEY, invoker);
31      }
32  
33      public Field getCachedField(SapFieldMapping sapFieldMapping) {
34          String cacheKey = String.valueOf(sapFieldMapping.hashCode());
35          return (Field) cache.get(cacheKey + FIELD_CACHE_KEY);
36      }
37  
38      public void cacheField(SapFieldMapping sapFieldMapping, Field field) {
39          String cacheKey = String.valueOf(sapFieldMapping.hashCode());
40          cache.put(cacheKey + FIELD_CACHE_KEY, field);
41      }
42  }