Details

    • Type: Feature Request
    • Status: Closed (View Workflow)
    • Priority: Major
    • Resolution: Rejected
    • Affects Version/s: 2.0.0.BETA1
    • Fix Version/s: None
    • Component/s: Spring
    • Labels:
      None

      Description

      It would be nice if spring beans could be scanned for @Logger and injected with Log instances just like seam components.

      Using the code below, you can add this to applicationContext.xml...

      <bean class="org.jboss.seam.ioc.spring.LoggerPostProcessor" />

      ...to have all spring beans scanned for @Logger and have a Log instance injected, just like seam components. Then you can access the same context and log functionallity in your spring beans as in your seam components.

      I guess the seam spring namespace could be extended with <seam:logger/> to make it even more simple to use.

      package org.jboss.seam.ioc.spring;

      import java.lang.reflect.Field;

      import org.jboss.seam.annotations.Logger;
      import org.jboss.seam.log.Logging;
      import org.springframework.beans.BeansException;
      import org.springframework.beans.factory.config.BeanPostProcessor;
      import org.springframework.util.ReflectionUtils;
      import org.springframework.util.StringUtils;
      import org.springframework.util.ReflectionUtils.FieldCallback;

      public class LoggerPostProcessor implements BeanPostProcessor {

      public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException

      { return bean; }

      public Object postProcessBeforeInitialization(final Object bean, final String beanName) throws BeansException {
      ReflectionUtils.doWithFields(bean.getClass(), new FieldCallback() {
      public void doWith(Field field) throws IllegalArgumentException, IllegalAccessException {
      if (field.isAnnotationPresent(Logger.class)) {

      String category = field.getAnnotation(Logger.class).value();

      if(!StringUtils.hasText(category))

      { category = bean.getClass().getName(); }

      ReflectionUtils.makeAccessible(field);
      field.set(bean, Logging.getLog(category));
      }
      }
      });
      return bean;
      }
      }

        Gliffy Diagrams

          Attachments

            Activity

              People

              • Assignee:
                youngm youngm
                Reporter:
                magnusheino Magnus Heino
              • Votes:
                0 Vote for this issue
                Watchers:
                1 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: