com.jdon.aop.interceptor.InterceptorsChain Maven / Gradle / Ivy
/*
* Copyright 2003-2006 the original author or authors.
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.jdon.aop.interceptor;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import com.jdon.container.pico.Startable;
import com.jdon.util.Debug;
/**
* Interceptors chain
*
* all interceptors will add in this collection
*
* @author banq
*
*/
public class InterceptorsChain implements Startable {
private final static String module = InterceptorsChain.class.getName();
public final static String NAME = "InterceptorsChain";
/**
* the key is target name
*/
private final Map> chain;
public InterceptorsChain() {
chain = new ConcurrentHashMap>();
}
public void start() {
Debug.logVerbose("[JdonFramework]InterceptorsChain start..", module);
}
public void stop() {
chain.clear();
}
public void addInterceptor(String pointcut, String InterceptorName) {
if (pointcut == null) {
System.err.print("pointcut is null in InterceptorsChain");
return;
}
List interceptors = (List) chain.get(pointcut);
if (interceptors == null) {
interceptors = new ArrayList();
chain.put(pointcut, interceptors);
}
Advisor advisor = new Advisor(InterceptorName, pointcut);
interceptors.add(advisor);
}
public boolean findInterceptorFromChainByName(String pointcut, String InterceptorName) {
boolean ok = false;
List interceptors = (List) chain.get(pointcut);
for (Advisor advisor : interceptors) {
if (advisor.getAdviceName().equals(InterceptorName)) {
ok = true;
break;
}
}
return ok;
}
/**
* @return Returns the interceptors.
*/
public List getAdvisors(String pointcut) {
return chain.get(pointcut);
}
public int size() {
return chain.size();
}
}