| MethodPatternPointcut.java |
package org.mockejb.interceptor;
import java.lang.reflect.Method;
/**
* Tests if the string representation of the given method
* matches the regexp. This pointcut uses "toString"
* representation of the method and then checks
* if it contains the regexp given to the constructor.
* Example of string representation:
* "public boolean java.lang.Object.equals(java.lang.Object)"
*
* @author Alexander Ananiev
*/
public class MethodPatternPointcut implements Pointcut {
private RegexpWrapper regexpWrapper;
/**
* Creates a new instance of MethodPatternPoincut
* @param regexpPattern regexp pattern that will be matched against the
* string representation of the method
*/
public MethodPatternPointcut( String regexpPattern ) {
regexpWrapper = new RegexpWrapper( regexpPattern );
}
/**
* Tests if the string representation of the given method
* matches the pattern.
*
* @return true if the provided method should be intercepted
*/
public boolean matchesJointpoint( Method method ) {
return regexpWrapper.containedInString( method.toString() );
}
/**
* Returns true if the given object is of the same type and
* it has the same pattern.
*/
public boolean equals( Object obj ){
if ( ! (obj instanceof MethodPatternPointcut) )
return false;
MethodPatternPointcut methodPatternPointcut = (MethodPatternPointcut ) obj;
return ( regexpWrapper.equals( methodPatternPointcut.regexpWrapper ));
}
public int hashCode() {
return regexpWrapper.hashCode();
}
}