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 }