/** * @param cls * @param advisor */ public void removeAdvisor(Class cls, Advisor advisor) { Advised advisedService = (Advised) services.get(cls); advisedService.removeAdvisor(advisor); getAddedAdvisors(cls).remove(advisor); }
/** * @param cls * @param advisor */ public void addAdvisor(Class cls, Advisor advisor) { Advised advisedService = (Advised) services.get(cls); if (advisedService.indexOf(advisor) < 0) { advisedService.addAdvisor(advisor); } addedAdvisors.computeIfAbsent(cls, k -> new HashSet<>()); getAddedAdvisors(cls).add(advisor); }
/** * Moves advisors and advice added by ServiceContext from the source service to the target one. * * @param source the existing service * @param target the new service */ private void moveAddedAOP(Advised source, Advised target) { Class serviceClass = source.getClass(); Set<Advisor> existingAdvisors = getAddedAdvisors(serviceClass); for (Advisor advisor : existingAdvisors) { target.addAdvisor(advisor); source.removeAdvisor(advisor); } Set<Advice> existingAdvice = getAddedAdvice(serviceClass); for (Advice advice : existingAdvice) { target.addAdvice(advice); source.removeAdvice(advice); } }