Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: src/main/java/pl/koziolekweb/loggerservice/Log4jLogger.java
- ===================================================================
- --- src/main/java/pl/koziolekweb/loggerservice/Log4jLogger.java (wersja 0)
- +++ src/main/java/pl/koziolekweb/loggerservice/Log4jLogger.java (wersja 0)
- @@ -0,0 +1,15 @@
- +package pl.koziolekweb.loggerservice;
- +
- +import java.lang.annotation.Documented;
- +import java.lang.annotation.ElementType;
- +import java.lang.annotation.Retention;
- +import java.lang.annotation.RetentionPolicy;
- +import java.lang.annotation.Target;
- +
- +@Retention(RetentionPolicy.RUNTIME)
- +@Target(ElementType.FIELD)
- +@Documented
- +@LogService(loggerFactoryAdapterClass = Log4jAdapter.class)
- +public @interface Log4jLogger {
- +
- +}
- Index: src/main/java/pl/koziolekweb/loggerservice/LogService.java
- ===================================================================
- --- src/main/java/pl/koziolekweb/loggerservice/LogService.java (wersja 24)
- +++ src/main/java/pl/koziolekweb/loggerservice/LogService.java (kopia robocza)
- @@ -7,11 +7,11 @@
- import java.lang.annotation.Target;
- @Retention(RetentionPolicy.RUNTIME)
- -@Target(ElementType.FIELD)
- +@Target({ ElementType.FIELD, ElementType.ANNOTATION_TYPE })
- @Documented
- public @interface LogService {
- String loggerFactoryAdapterClassName() default "";
- - Class<?> loggerFactoryAdapterClass() default Void.class;
- + Class< ? > loggerFactoryAdapterClass() default Void.class;
- }
- Index: src/main/java/pl/koziolekweb/loggerservice/LogServicePostProcessor.java
- ===================================================================
- --- src/main/java/pl/koziolekweb/loggerservice/LogServicePostProcessor.java (wersja 24)
- +++ src/main/java/pl/koziolekweb/loggerservice/LogServicePostProcessor.java (kopia robocza)
- @@ -1,6 +1,8 @@
- package pl.koziolekweb.loggerservice;
- +import java.lang.annotation.Annotation;
- import java.lang.reflect.Field;
- +import java.util.Arrays;
- import org.springframework.beans.BeansException;
- import org.springframework.beans.factory.config.BeanPostProcessor;
- @@ -18,11 +20,23 @@
- ReflectionUtils.doWithFields(bean.getClass(), new FieldCallback() {
- public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
- LogService logServiceAnnotation = field.getAnnotation(LogService.class);
- +
- + if ( logServiceAnnotation == null ) {
- + Annotation[] annotations = field.getAnnotations();
- + for ( int i = 0; i < annotations.length; ++i ) {
- + Annotation a = annotations[ i ];
- + Class<? extends Annotation> annotationType = a.annotationType();
- + System.out.println( Arrays.toString( annotationType.getAnnotations() ) );
- + logServiceAnnotation = annotationType.getAnnotation( LogService.class );
- + if ( logServiceAnnotation != null )
- + break;
- + }
- + }
- +
- if (logServiceAnnotation != null) {
- try {
- Class<LoggerFactoryAdapter<Object>> loggerFactoryAdapterClass = null;
- if (logServiceAnnotation.loggerFactoryAdapterClass().equals(Void.class)) {
- - Class<LoggerFactoryAdapter> loggerFactoryAdapterClassLoader = LoggerFactoryAdapter.class;
- loggerFactoryAdapterClass = (Class<LoggerFactoryAdapter<Object>>) Class
- .forName(logServiceAnnotation.loggerFactoryAdapterClassName());
- } else {
- Index: src/test/java/pl/koziolekweb/loggerservice/Log4jLogBeanSimple.java
- ===================================================================
- --- src/test/java/pl/koziolekweb/loggerservice/Log4jLogBeanSimple.java (wersja 0)
- +++ src/test/java/pl/koziolekweb/loggerservice/Log4jLogBeanSimple.java (wersja 0)
- @@ -0,0 +1,15 @@
- +package pl.koziolekweb.loggerservice;
- +
- +import org.apache.log4j.Logger;
- +
- +
- +public class Log4jLogBeanSimple {
- +
- + @Log4jLogger
- + private Logger logger;
- +
- + public Logger getLogger() {
- + return logger;
- + }
- +
- +}
- \ No newline at end of file
- Index: src/test/java/pl/koziolekweb/loggerservice/LogServicePostProcessorTest.java
- ===================================================================
- --- src/test/java/pl/koziolekweb/loggerservice/LogServicePostProcessorTest.java (wersja 24)
- +++ src/test/java/pl/koziolekweb/loggerservice/LogServicePostProcessorTest.java (kopia robocza)
- @@ -1,7 +1,6 @@
- package pl.koziolekweb.loggerservice;
- import static org.testng.Assert.assertNotNull;
- -
- import static org.testng.Assert.assertSame;
- import static org.testng.Assert.fail;
- @@ -30,6 +29,7 @@
- testSfl4J();
- testCommons();
- testLog4j();
- + testLog4jSimple();
- }
- @Test(expectedExceptions = { BeansException.class })
- @@ -48,6 +48,13 @@
- }
- @Test
- + public void testLog4jSimple() {
- + Log4jLogBeanSimple log4jBean = new Log4jLogBeanSimple();
- + logServicePostProcessor.postProcessBeforeInitialization(log4jBean, "");
- + assertNotNull(log4jBean.getLogger());
- + }
- +
- + @Test
- public void testCommons() {
- CommonsLogBean commonsBean = new CommonsLogBean();
- logServicePostProcessor.postProcessBeforeInitialization(commonsBean, "");
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement