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 }