Mega Code Archive

 
Categories / Java / Spring
 

After Advice Example

/* Pro Spring By Rob Harrop Jan Machacek ISBN: 1-59059-461-4 Publisher: Apress */ //////////////////////////////////////////////////////// import java.util.Random; public class KeyGenerator {     public static final long WEAK_KEY = 0xFFFFFFF0000000L;     public static final long STRONG_KEY = 0xACDF03F590AE56L;          public long getKey() {         Random rand = new Random();         int x = rand.nextInt(3);                  if(x == 1) {             return WEAK_KEY;         } else {             return STRONG_KEY;         }     } } //////////////////////////////////////////////////////// import java.lang.reflect.Method; import org.springframework.aop.AfterReturningAdvice; public class WeakKeyCheckAdvice implements AfterReturningAdvice {     public void afterReturning(Object returnValue, Method method,             Object[] args, Object target) throws Throwable {         if ((target instanceof KeyGenerator)                 && ("getKey".equals(method.getName()))) {             long key = ((Long) returnValue).longValue();             if (key == KeyGenerator.WEAK_KEY) {                 throw new SecurityException(                         "Key Generator generated a weak key. Try again");             }         }     } } //////////////////////////////////////////////////////// import org.springframework.aop.framework.ProxyFactory; public class AfterAdviceExample {     public static void main(String[] args) {         KeyGenerator keyGen = getKeyGenerator();                  for(int x = 0; x < 10; x++) {             try {                 long key = keyGen.getKey();                 System.out.println("Key: " + key);             } catch(SecurityException ex) {                 System.out.println("Weak Key Generated!");             }         }              }          private static KeyGenerator getKeyGenerator() {                  KeyGenerator target = new KeyGenerator();                  ProxyFactory factory = new ProxyFactory();         factory.setTarget(target);         factory.addAdvice(new WeakKeyCheckAdvice());                  return (KeyGenerator)factory.getProxy();     } }                     AfterAdviceExample.zip( 1,479 k)