Advertisement
Guest User

Untitled

a guest
Nov 18th, 2010
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Diff 4.98 KB | None | 0 0
  1. Index: src/main/java/pl/koziolekweb/loggerservice/Log4jLogger.java
  2. ===================================================================
  3. --- src/main/java/pl/koziolekweb/loggerservice/Log4jLogger.java (wersja 0)
  4. +++ src/main/java/pl/koziolekweb/loggerservice/Log4jLogger.java (wersja 0)
  5. @@ -0,0 +1,15 @@
  6. +package pl.koziolekweb.loggerservice;
  7. +
  8. +import java.lang.annotation.Documented;
  9. +import java.lang.annotation.ElementType;
  10. +import java.lang.annotation.Retention;
  11. +import java.lang.annotation.RetentionPolicy;
  12. +import java.lang.annotation.Target;
  13. +
  14. +@Retention(RetentionPolicy.RUNTIME)
  15. +@Target(ElementType.FIELD)
  16. +@Documented
  17. +@LogService(loggerFactoryAdapterClass = Log4jAdapter.class)
  18. +public @interface Log4jLogger {
  19. +
  20. +}
  21. Index: src/main/java/pl/koziolekweb/loggerservice/LogService.java
  22. ===================================================================
  23. --- src/main/java/pl/koziolekweb/loggerservice/LogService.java  (wersja 24)
  24. +++ src/main/java/pl/koziolekweb/loggerservice/LogService.java  (kopia robocza)
  25. @@ -7,11 +7,11 @@
  26.  import java.lang.annotation.Target;
  27.  
  28.  @Retention(RetentionPolicy.RUNTIME)
  29. -@Target(ElementType.FIELD)
  30. +@Target({ ElementType.FIELD, ElementType.ANNOTATION_TYPE })
  31.  @Documented
  32.  public @interface LogService {
  33.  
  34.     String loggerFactoryAdapterClassName() default "";
  35.  
  36. -   Class<?> loggerFactoryAdapterClass() default Void.class;
  37. +   Class< ? > loggerFactoryAdapterClass() default Void.class;
  38.  }
  39. Index: src/main/java/pl/koziolekweb/loggerservice/LogServicePostProcessor.java
  40. ===================================================================
  41. --- src/main/java/pl/koziolekweb/loggerservice/LogServicePostProcessor.java (wersja 24)
  42. +++ src/main/java/pl/koziolekweb/loggerservice/LogServicePostProcessor.java (kopia robocza)
  43. @@ -1,6 +1,8 @@
  44.  package pl.koziolekweb.loggerservice;
  45.  
  46. +import java.lang.annotation.Annotation;
  47.  import java.lang.reflect.Field;
  48. +import java.util.Arrays;
  49.  
  50.  import org.springframework.beans.BeansException;
  51.  import org.springframework.beans.factory.config.BeanPostProcessor;
  52. @@ -18,11 +20,23 @@
  53.             ReflectionUtils.doWithFields(bean.getClass(), new FieldCallback() {
  54.                 public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
  55.                     LogService logServiceAnnotation = field.getAnnotation(LogService.class);
  56. +                  
  57. +                   if ( logServiceAnnotation == null ) {
  58. +                       Annotation[] annotations = field.getAnnotations();
  59. +                       for ( int i = 0; i < annotations.length; ++i ) {
  60. +                           Annotation a = annotations[ i ];
  61. +                           Class<? extends Annotation> annotationType = a.annotationType();
  62. +                           System.out.println( Arrays.toString( annotationType.getAnnotations() ) );
  63. +                           logServiceAnnotation = annotationType.getAnnotation( LogService.class );
  64. +                           if ( logServiceAnnotation != null )
  65. +                               break;
  66. +                       }
  67. +                   }
  68. +                  
  69.                     if (logServiceAnnotation != null) {
  70.                         try {
  71.                             Class<LoggerFactoryAdapter<Object>> loggerFactoryAdapterClass = null;
  72.                             if (logServiceAnnotation.loggerFactoryAdapterClass().equals(Void.class)) {
  73. -                               Class<LoggerFactoryAdapter> loggerFactoryAdapterClassLoader = LoggerFactoryAdapter.class;
  74.                                 loggerFactoryAdapterClass = (Class<LoggerFactoryAdapter<Object>>) Class
  75.                                         .forName(logServiceAnnotation.loggerFactoryAdapterClassName());
  76.                             } else {
  77. Index: src/test/java/pl/koziolekweb/loggerservice/Log4jLogBeanSimple.java
  78. ===================================================================
  79. --- src/test/java/pl/koziolekweb/loggerservice/Log4jLogBeanSimple.java  (wersja 0)
  80. +++ src/test/java/pl/koziolekweb/loggerservice/Log4jLogBeanSimple.java  (wersja 0)
  81. @@ -0,0 +1,15 @@
  82. +package pl.koziolekweb.loggerservice;
  83. +
  84. +import org.apache.log4j.Logger;
  85. +
  86. +
  87. +public class Log4jLogBeanSimple {
  88. +
  89. +   @Log4jLogger
  90. +   private Logger logger;
  91. +
  92. +   public Logger getLogger() {
  93. +       return logger;
  94. +   }
  95. +
  96. +}
  97. \ No newline at end of file
  98. Index: src/test/java/pl/koziolekweb/loggerservice/LogServicePostProcessorTest.java
  99. ===================================================================
  100. --- src/test/java/pl/koziolekweb/loggerservice/LogServicePostProcessorTest.java (wersja 24)
  101. +++ src/test/java/pl/koziolekweb/loggerservice/LogServicePostProcessorTest.java (kopia robocza)
  102. @@ -1,7 +1,6 @@
  103.  package pl.koziolekweb.loggerservice;
  104.  
  105.  import static org.testng.Assert.assertNotNull;
  106. -
  107.  import static org.testng.Assert.assertSame;
  108.  import static org.testng.Assert.fail;
  109.  
  110. @@ -30,6 +29,7 @@
  111.         testSfl4J();
  112.         testCommons();
  113.         testLog4j();
  114. +       testLog4jSimple();
  115.     }
  116.  
  117.     @Test(expectedExceptions = { BeansException.class })
  118. @@ -48,6 +48,13 @@
  119.     }
  120.  
  121.     @Test
  122. +   public void testLog4jSimple() {
  123. +       Log4jLogBeanSimple log4jBean = new Log4jLogBeanSimple();
  124. +       logServicePostProcessor.postProcessBeforeInitialization(log4jBean, "");
  125. +       assertNotNull(log4jBean.getLogger());
  126. +   }
  127. +
  128. +   @Test
  129.     public void testCommons() {
  130.         CommonsLogBean commonsBean = new CommonsLogBean();
  131.         logServicePostProcessor.postProcessBeforeInitialization(commonsBean, "");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement