/* * This code is distributed under The GNU Lesser General Public License (LGPLv3) * Please visit GNU site for LGPLv3 http://www.gnu.org/copyleft/lesser.html * * Copyright Denis Pavlov 2009 * Web: http://www.genericdtoassembler.org * SVN: https://svn.code.sf.net/p/geda-genericdto/code/trunk/ * SVN (mirror): http://geda-genericdto.googlecode.com/svn/trunk/ */ package com.inspiresoftware.lib.dto.geda.interceptor.impl; import com.inspiresoftware.lib.dto.geda.annotations.Occurrence; import com.inspiresoftware.lib.dto.geda.interceptor.AdviceConfig; import com.inspiresoftware.lib.dto.geda.interceptor.AdviceConfigRepository; import com.inspiresoftware.lib.dto.geda.interceptor.AdviceConfigResolver; import java.lang.reflect.Method; import java.util.Collections; import java.util.Map; /** * This implementation works in pair with {@link GeDABootstrapAdvicePostProcessor} * bean post processor. * <p/> * User: denispavlov * Date: Jan 26, 2012 * Time: 1:03:36 PM */ public class BootstrapAdviceConfigResolverImpl implements AdviceConfigResolver { private AdviceConfigRepository repository; public BootstrapAdviceConfigResolverImpl() { } /** {@inheritDoc} */ public Map<Occurrence, AdviceConfig> resolve(final Method method, final Class<?> targetClass) { final Integer methodCacheKey = this.repository.methodCacheKey(method, targetClass); final Map<Integer, Map<Occurrence, AdviceConfig>> advisable = repository.getAdvisableMethodsConfigurations(targetClass); if (advisable.containsKey(methodCacheKey)) { return advisable.get(methodCacheKey); } return Collections.emptyMap(); } /** * @param repository IoC method. */ public void setRepository(final AdviceConfigRepository repository) { this.repository = repository; } }