View Javadoc
1   package info.ejava.examples.ejb.interceptor.interceptors;
2   
3   import info.ejava.examples.ejb.interceptor.bo.Contact;
4   import info.ejava.examples.ejb.interceptor.bo.PhoneInfo;
5   import info.ejava.examples.ejb.interceptor.bo.PostalInfo;
6   import info.ejava.examples.ejb.interceptor.normalizer.ContactNormalizer;
7   
8   import javax.annotation.PostConstruct;
9   import javax.annotation.PreDestroy;
10  import javax.interceptor.AroundInvoke;
11  import javax.interceptor.Interceptor;
12  import javax.interceptor.InvocationContext;
13  
14  import org.slf4j.Logger;
15  import org.slf4j.LoggerFactory;
16  
17  @Validation
18  @Interceptor
19  public class ContactsNormalizerInterceptor {
20      private static final Logger logger = LoggerFactory.getLogger(ContactsNormalizerInterceptor.class);
21      private ContactNormalizer contactNormalizer=new ContactNormalizer();
22  
23      @PostConstruct
24      public void init() {
25          logger.debug("{}:init({})", getClass().getSimpleName(), super.hashCode());
26      }
27      @PreDestroy
28      public void destroy() {
29          logger.debug("{}:destroy({})", getClass().getSimpleName(), super.hashCode());
30      }
31      
32      @AroundInvoke
33      public Object invoke(InvocationContext ctx) throws Exception {
34          logger.debug("intercepting: {}", ctx.getMethod());
35          try {
36              for (Object param: ctx.getParameters()) {
37                  if (param instanceof Contact) {
38                      logger.debug("normalizing: {}", param);
39                      contactNormalizer.normalize((Contact) param);
40                      logger.debug("normalized: {}", param);
41                  } else if (param instanceof PostalInfo) {
42                      logger.debug("normalizing: {}", param);
43                      contactNormalizer.normalize((PostalInfo) param);
44                      logger.debug("normalized: {}", param);
45                  } else if (param instanceof PhoneInfo) {
46                      logger.debug("normalizing: {}", param);
47                      contactNormalizer.normalize((PhoneInfo) param);
48                      logger.debug("normalized: {}", param);
49                  }
50              }
51              return ctx.proceed();
52          } finally {
53              
54          }
55      }
56  }