[seam-dev] Re: [seam-commits] Seam SVN: r10542 - in modules/trunk: logging and 15 other directories.

Pete Muir pmuir at redhat.com
Tue Apr 21 06:06:15 EDT 2009


The Web Beans version is implementation independent (check out the  
Extensions chapter :-)

On 21 Apr 2009, at 11:00, Shane Bryzak wrote:

> Do we want a dependency on webbeans though? I thought this stuff was  
> supposed to be implementation-independent.
>
> Pete Muir wrote:
>> Shane,
>>
>> We've already developed the logging module for webbeans - see  
>> org.jboss.webbeans:webbeans-logger and org.jboss.webbeans:webbeans- 
>> logging
>>
>> On 21 Apr 2009, at 10:38, seam-commits at lists.jboss.org wrote:
>>
>>> Author: shane.bryzak at jboss.com
>>> Date: 2009-04-21 05:38:36 -0400 (Tue, 21 Apr 2009)
>>> New Revision: 10542
>>>
>>> Added:
>>>  modules/trunk/logging/
>>>  modules/trunk/logging/pom.xml
>>>  modules/trunk/logging/src/
>>>  modules/trunk/logging/src/main/
>>>  modules/trunk/logging/src/main/java/
>>>  modules/trunk/logging/src/main/java/org/
>>>  modules/trunk/logging/src/main/java/org/jboss/
>>>  modules/trunk/logging/src/main/java/org/jboss/seam/
>>>  modules/trunk/logging/src/main/java/org/jboss/seam/log/
>>>  modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> JDKProvider.java
>>>  modules/trunk/logging/src/main/java/org/jboss/seam/log/Log.java
>>>  modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> Log4JProvider.java
>>>  modules/trunk/logging/src/main/java/org/jboss/seam/log/LogImpl.java
>>>  modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> LogProvider.java
>>>  modules/trunk/logging/src/main/java/org/jboss/seam/log/Logging.java
>>>  modules/trunk/logging/target/
>>>  modules/trunk/logging/target/classes/
>>>  modules/trunk/logging/target/classes/org/
>>>  modules/trunk/logging/target/classes/org/jboss/
>>>  modules/trunk/logging/target/classes/org/jboss/seam/
>>>  modules/trunk/logging/target/classes/org/jboss/seam/log/
>>>  modules/trunk/parent/
>>>  modules/trunk/parent/pom.xml
>>> Modified:
>>>  modules/trunk/security/pom.xml
>>>  modules/trunk/version-matrix/pom.xml
>>> Log:
>>> added logging module, parent pom, updated version-matrix pom
>>>
>>> Added: modules/trunk/logging/pom.xml
>>> ===================================================================
>>> --- modules/trunk/logging/pom.xml                            (rev 0)
>>> +++ modules/trunk/logging/pom.xml    2009-04-21 09:38:36 UTC (rev  
>>> 10542)
>>> @@ -0,0 +1,22 @@
>>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance 
>>> " xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd 
>>> ">
>>> +   <parent>
>>> +      <artifactId>seam-parent</artifactId>
>>> +      <groupId>org.jboss.seam</groupId>
>>> +      <version>3.0.0-SNAPSHOT</version>
>>> +   </parent>
>>> +
>>> +   <modelVersion>4.0.0</modelVersion>
>>> +   <groupId>org.jboss.seam</groupId>
>>> +   <artifactId>seam-logging</artifactId>
>>> +   <version>3.0.0-SNAPSHOT</version>
>>> +   <name>Seam Logging</name>
>>> +   <dependencies>
>>> +
>>> +      <dependency>
>>> +         <groupId>log4j</groupId>
>>> +         <artifactId>log4j</artifactId>
>>> +         <optional>true</optional>
>>> +      </dependency>
>>> +
>>> +   </dependencies>
>>> +</project>
>>>
>>> Added: modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> JDKProvider.java
>>> ===================================================================
>>> --- modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> JDKProvider.java                            (rev 0)
>>> +++ modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> JDKProvider.java    2009-04-21 09:38:36 UTC (rev 10542)
>>> @@ -0,0 +1,140 @@
>>> +package org.jboss.seam.log;
>>> +
>>> +import java.util.logging.Level;
>>> +import java.util.logging.Logger;
>>> +
>>> +/**
>>> + *
>>> + * @author Gavin King
>>> + *
>>> + */
>>> +class JDKProvider implements LogProvider
>>> +{
>>> +   private final Logger logger;
>>> +   private final boolean isWrapped;
>>> +
>>> +   JDKProvider(String category, boolean wrapped)
>>> +   {
>>> +      this.logger = Logger.getLogger(category);
>>> +      this.isWrapped = wrapped;
>>> +   }
>>> +
>>> +   private void log(Level level, Object object, Throwable ex)
>>> +   {
>>> +
>>> +      if (logger.isLoggable(level))
>>> +      {
>>> +         Throwable dummyException = new Throwable();
>>> +         StackTraceElement locations[] =  
>>> dummyException.getStackTrace();
>>> +         String className = "unknown";
>>> +         String methodName = "unknown";
>>> +         int depth = isWrapped ? 3 : 2;
>>> +         if (locations != null && locations.length > depth)
>>> +         {
>>> +            StackTraceElement caller = locations[depth];
>>> +            className = caller.getClassName();
>>> +            methodName = caller.getMethodName();
>>> +         }
>>> +         if (ex == null)
>>> +         {
>>> +            logger.logp(level, className, methodName,  
>>> String.valueOf(object));
>>> +         }
>>> +         else
>>> +         {
>>> +            logger.logp(level, className, methodName,  
>>> String.valueOf(object), ex);
>>> +         }
>>> +      }
>>> +
>>> +   }
>>> +
>>> +   public void debug(Object object, Throwable t)
>>> +   {
>>> +      log(Level.FINE, object, t);
>>> +   }
>>> +
>>> +   public void debug(Object object)
>>> +   {
>>> +      log(Level.FINE, object, null);
>>> +   }
>>> +
>>> +   public void error(Object object, Throwable t)
>>> +   {
>>> +      log(Level.SEVERE, object, t);
>>> +   }
>>> +
>>> +   public void error(Object object)
>>> +   {
>>> +      log(Level.SEVERE, object, null);
>>> +   }
>>> +
>>> +   public void fatal(Object object, Throwable t)
>>> +   {
>>> +      log(Level.SEVERE, object, t);
>>> +   }
>>> +
>>> +   public void fatal(Object object)
>>> +   {
>>> +      log(Level.SEVERE, object, null);
>>> +   }
>>> +
>>> +   public void info(Object object, Throwable t)
>>> +   {
>>> +      log(Level.INFO, object, t);
>>> +   }
>>> +
>>> +   public void info(Object object)
>>> +   {
>>> +      log(Level.INFO, object, null);
>>> +   }
>>> +
>>> +   public boolean isDebugEnabled()
>>> +   {
>>> +      return logger.isLoggable(Level.FINE);
>>> +   }
>>> +
>>> +   public boolean isErrorEnabled()
>>> +   {
>>> +      return logger.isLoggable(Level.SEVERE);
>>> +   }
>>> +
>>> +   public boolean isFatalEnabled()
>>> +   {
>>> +      return logger.isLoggable(Level.SEVERE);
>>> +   }
>>> +
>>> +   public boolean isInfoEnabled()
>>> +   {
>>> +      return logger.isLoggable(Level.INFO);
>>> +   }
>>> +
>>> +   public boolean isTraceEnabled()
>>> +   {
>>> +      return logger.isLoggable(Level.FINER);
>>> +   }
>>> +
>>> +   public boolean isWarnEnabled()
>>> +   {
>>> +      return logger.isLoggable(Level.WARNING);
>>> +   }
>>> +
>>> +   public void trace(Object object, Throwable t)
>>> +   {
>>> +      log(Level.FINER, object, t);
>>> +   }
>>> +
>>> +   public void trace(Object object)
>>> +   {
>>> +      log(Level.FINER, object, null);
>>> +   }
>>> +
>>> +   public void warn(Object object, Throwable t)
>>> +   {
>>> +      log(Level.WARNING, object, t);
>>> +   }
>>> +
>>> +   public void warn(Object object)
>>> +   {
>>> +      log(Level.WARNING, object, null);
>>> +   }
>>> +
>>> +}
>>>
>>> Added: modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> Log.java
>>> ===================================================================
>>> --- modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> Log.java                            (rev 0)
>>> +++ modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> Log.java    2009-04-21 09:38:36 UTC (rev 10542)
>>> @@ -0,0 +1,86 @@
>>> +package org.jboss.seam.log;
>>> +
>>> +/**
>>> + * <p>A <code>Log</code> object is used to log messages.
>>> + * They will be logged in any environment that has setup a  
>>> logging service
>>> + * such as Log4J or the standard JDK logging facilities.  In  
>>> fact, this
>>> + * logging interface is very similar to the other facilities with  
>>> the
>>> + * difference that logging methods also take any number of optional
>>> + * parameters beyond the message object for later interpolation
>>> + * into the message.</p>
>>> + *
>>> + * <p>The idea of using interpolation parameters is very  
>>> important for
>>> + * performance reasons in production code.  Normally developers  
>>> write
>>> + * logging messages similar to this one:
>>> + * <pre>
>>> + *    log.debug("Started processing of " + obj1 + " with action "  
>>> + obj2);
>>> + * </pre>
>>> + * The problem that arises at runtime in production systems, is  
>>> that DEBUG
>>> + * level logging may not be enabled.  And even if this logging is  
>>> going to
>>> + * be a no-op call, Java must still build the string dynamically  
>>> that is the
>>> + * argument to the call.  It is the building of this string that  
>>> can be quite
>>> + * time consuming.  The more complex the objects being  
>>> concatenated are, the
>>> + * worse the time penalty incurred is.  And this time is  
>>> completely wasted
>>> + * since the string may never be used.</p>
>>> + *
>>> + * <p>Normally to combat the problem of making this call and  
>>> building the
>>> + * string dynamically, the developer uses a conditional statement  
>>> to invoke
>>> + * the call only if the corresponding logging level is enabled.   
>>> So the above
>>> + * call may end up looking like:
>>> + * <pre>
>>> + *    if (log.isDebugEnabled())
>>> + *    {
>>> + *       log.debug("Started processing of " + obj1 + " with  
>>> action " + obj2);
>>> + *    }
>>> + * </pre>
>>> + * Ideally, this structure should always be used to avoid the  
>>> cost of building the
>>> + * dynamic string (concatenation) and making the unnecessary  
>>> call.  The only
>>> + * drawback to this is that code can become less readable.  In  
>>> some cases, there
>>> + * might be more code devoted to logging than the actual behavior  
>>> required by a
>>> + * method.</p>
>>> + *
>>> + * <p>A cleaner way to do the logging is to use this interface  
>>> where simple
>>> + * objects without any concatenation are passed as arguments.   
>>> Albeit the call
>>> + * itself may still be a no-op when the logging level is not  
>>> enabled, this is
>>> + * still much smaller than the concatenation process with dynamic  
>>> strings.  Each
>>> + * of the methods defined here will first check to see if the  
>>> logging level is enabled,
>>> + * if that feature exists in the underlying logging system.  If  
>>> and only if that logging
>>> + * level is enabled, will the implementation proceed with  
>>> concatenation of the strings
>>> + * and objects passed.  So the above code using this interface  
>>> becomes:
>>> + * <pre>
>>> + *    log.debug("Started processing of {0} with action {1}, obj1,  
>>> obj2);
>>> + * </pre>
>>> + * </p>
>>> + *
>>> + * <p>The interpolation of parameters into the message string are  
>>> done using
>>> + * {@link java.text.MessageFormat}.  See the documentation on  
>>> that class for
>>> + * more ideas of interpolation possibilities.  In the above code,  
>>> <code>obj1</code>
>>> + * and <code>obj2</code> simply have their <code>toString()</ 
>>> code> methods invoked
>>> + * to produce a string which is then concatenated.</p>
>>> + *
>>> + * @author Gavin King
>>> + * @author David Allen
>>> + *
>>> + */
>>> +public interface Log
>>> +{
>>> +   public boolean isDebugEnabled();
>>> +   public boolean isErrorEnabled();
>>> +   public boolean isFatalEnabled();
>>> +   public boolean isInfoEnabled();
>>> +   public boolean isTraceEnabled();
>>> +   public boolean isWarnEnabled();
>>> +   public void trace(Object object, Object... params);
>>> +   public void trace(Object object, Throwable t, Object... params);
>>> +   public void debug(Object object, Object... params);
>>> +   public void debug(Object object, Throwable t, Object... params);
>>> +   public void info(Object object, Object... params);
>>> +   public void info(Object object, Throwable t, Object... params);
>>> +   public void warn(Object object, Object... params);
>>> +   public void warn(Object object, Throwable t, Object... params);
>>> +   public void error(Object object, Object... params);
>>> +   public void error(Object object, Throwable t, Object... params);
>>> +   public void fatal(Object object, Object... params);
>>> +   public void fatal(Object object, Throwable t, Object... params);
>>> +
>>> +}
>>> \ No newline at end of file
>>>
>>> Added: modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> Log4JProvider.java
>>> ===================================================================
>>> --- modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> Log4JProvider.java                            (rev 0)
>>> +++ modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> Log4JProvider.java    2009-04-21 09:38:36 UTC (rev 10542)
>>> @@ -0,0 +1,135 @@
>>> +package org.jboss.seam.log;
>>> +
>>> +import org.apache.log4j.Level;
>>> +import org.apache.log4j.Logger;
>>> +
>>> +/**
>>> + *
>>> + * @author Gavin King
>>> + *
>>> + */
>>> +final class Log4JProvider implements LogProvider
>>> +{
>>> +   private final Logger logger;
>>> +   private final boolean isWrapped;
>>> +
>>> +   private static final String LOG_IMPL_FQCN =  
>>> LogImpl.class.getName();
>>> +   private static final String LOG_PROVIDER_FQCN =  
>>> Log4JProvider.class.getName();
>>> +
>>> +   private static final Level TRACE;
>>> +   static
>>> +   {
>>> +      Object trace;
>>> +      try
>>> +      {
>>> +         trace = Level.class.getDeclaredField("TRACE").get(null);
>>> +      }
>>> +      catch (Exception e)
>>> +      {
>>> +         trace = Level.DEBUG;
>>> +      }
>>> +      TRACE = (Level) trace;
>>> +   }
>>> +
>>> +   Log4JProvider(String category, boolean wrapped)
>>> +   {
>>> +      logger = Logger.getLogger(category);
>>> +      isWrapped = wrapped;
>>> +   }
>>> +
>>> +   private String getFQCN()
>>> +   {
>>> +      return isWrapped ? LOG_IMPL_FQCN : LOG_PROVIDER_FQCN;
>>> +   }
>>> +
>>> +   public void debug(Object object)
>>> +   {
>>> +      logger.log(getFQCN(), Level.DEBUG, object, null);
>>> +   }
>>> +
>>> +   public void debug(Object object, Throwable t)
>>> +   {
>>> +      logger.log(getFQCN(), Level.DEBUG, object, t);
>>> +   }
>>> +
>>> +   public void error(Object object)
>>> +   {
>>> +      logger.log(getFQCN(), Level.ERROR, object, null);
>>> +   }
>>> +
>>> +   public void error(Object object, Throwable t)
>>> +   {
>>> +      logger.log(getFQCN(), Level.ERROR, object, t);
>>> +   }
>>> +
>>> +   public void fatal(Object object)
>>> +   {
>>> +      logger.log(getFQCN(), Level.FATAL, object, null);
>>> +   }
>>> +
>>> +   public void fatal(Object object, Throwable t)
>>> +   {
>>> +      logger.log(getFQCN(), Level.FATAL, object, t);
>>> +   }
>>> +
>>> +   public void info(Object object)
>>> +   {
>>> +      logger.log(getFQCN(), Level.INFO, object, null);
>>> +   }
>>> +
>>> +   public void info(Object object, Throwable t)
>>> +   {
>>> +      logger.log(getFQCN(), Level.INFO, object, t);
>>> +   }
>>> +
>>> +   public boolean isDebugEnabled()
>>> +   {
>>> +      return logger.isEnabledFor(Level.DEBUG);
>>> +   }
>>> +
>>> +   public boolean isErrorEnabled()
>>> +   {
>>> +      return logger.isEnabledFor(Level.ERROR);
>>> +   }
>>> +
>>> +   public boolean isFatalEnabled()
>>> +   {
>>> +      return logger.isEnabledFor(Level.FATAL);
>>> +   }
>>> +
>>> +   public boolean isInfoEnabled()
>>> +   {
>>> +      return logger.isEnabledFor(Level.INFO);
>>> +   }
>>> +
>>> +   public boolean isTraceEnabled()
>>> +   {
>>> +      return logger.isEnabledFor(TRACE);
>>> +   }
>>> +
>>> +   public boolean isWarnEnabled()
>>> +   {
>>> +      return logger.isEnabledFor(Level.WARN);
>>> +   }
>>> +
>>> +   public void trace(Object object)
>>> +   {
>>> +      logger.log(getFQCN(), TRACE, object, null);
>>> +   }
>>> +
>>> +   public void trace(Object object, Throwable t)
>>> +   {
>>> +      logger.log(getFQCN(), TRACE, object, t);
>>> +   }
>>> +
>>> +   public void warn(Object object)
>>> +   {
>>> +      logger.log(getFQCN(), Level.WARN, object, null);
>>> +   }
>>> +
>>> +   public void warn(Object object, Throwable t)
>>> +   {
>>> +      logger.log(getFQCN(), Level.WARN, object, t);
>>> +   }
>>> +
>>> +}
>>>
>>> Added: modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> LogImpl.java
>>> ===================================================================
>>> --- modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> LogImpl.java                            (rev 0)
>>> +++ modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> LogImpl.java    2009-04-21 09:38:36 UTC (rev 10542)
>>> @@ -0,0 +1,184 @@
>>> +package org.jboss.seam.log;
>>> +
>>> +import java.io.Externalizable;
>>> +import java.io.IOException;
>>> +import java.io.ObjectInput;
>>> +import java.io.ObjectOutput;
>>> +import java.text.MessageFormat;
>>> +import java.util.Arrays;
>>> +
>>> +/**
>>> + *
>>> + * @author Gavin King
>>> + *
>>> + */
>>> +class LogImpl implements Log, Externalizable
>>> +{
>>> +   private transient LogProvider log;
>>> +   private String category;
>>> +
>>> +   public LogImpl()
>>> +   {
>>> +   }
>>> +
>>> +   LogImpl(String category)
>>> +   {
>>> +      this.category = category;
>>> +      this.log = Logging.getLogProvider(category, true);
>>> +   }
>>> +
>>> +   public boolean isDebugEnabled()
>>> +   {
>>> +      return log.isDebugEnabled();
>>> +   }
>>> +
>>> +   public boolean isErrorEnabled()
>>> +   {
>>> +      return log.isErrorEnabled();
>>> +   }
>>> +
>>> +   public boolean isFatalEnabled()
>>> +   {
>>> +      return log.isFatalEnabled();
>>> +   }
>>> +
>>> +   public boolean isInfoEnabled()
>>> +   {
>>> +      return log.isInfoEnabled();
>>> +   }
>>> +
>>> +   public boolean isTraceEnabled()
>>> +   {
>>> +      return log.isTraceEnabled();
>>> +   }
>>> +
>>> +   public boolean isWarnEnabled()
>>> +   {
>>> +      return log.isWarnEnabled();
>>> +   }
>>> +
>>> +   public void trace(Object object, Object... params)
>>> +   {
>>> +      if (isTraceEnabled())
>>> +      {
>>> +         log.trace(interpolate(object, params));
>>> +      }
>>> +   }
>>> +
>>> +   public void trace(Object object, Throwable t, Object... params)
>>> +   {
>>> +      if (isTraceEnabled())
>>> +      {
>>> +         log.trace(interpolate(object, params), t);
>>> +      }
>>> +   }
>>> +
>>> +   public void debug(Object object, Object... params)
>>> +   {
>>> +      if (isDebugEnabled())
>>> +      {
>>> +         log.debug(interpolate(object, params));
>>> +      }
>>> +   }
>>> +
>>> +   public void debug(Object object, Throwable t, Object... params)
>>> +   {
>>> +      if (isDebugEnabled())
>>> +      {
>>> +         log.debug(interpolate(object, params), t);
>>> +      }
>>> +   }
>>> +
>>> +   public void info(Object object, Object... params)
>>> +   {
>>> +      if (isInfoEnabled())
>>> +      {
>>> +         log.info(interpolate(object, params));
>>> +      }
>>> +   }
>>> +
>>> +   public void info(Object object, Throwable t, Object... params)
>>> +   {
>>> +      if (isInfoEnabled())
>>> +      {
>>> +         log.info(interpolate(object, params), t);
>>> +      }
>>> +   }
>>> +
>>> +   public void warn(Object object, Object... params)
>>> +   {
>>> +      if (isWarnEnabled())
>>> +      {
>>> +         log.warn(interpolate(object, params));
>>> +      }
>>> +   }
>>> +
>>> +   public void warn(Object object, Throwable t, Object... params)
>>> +   {
>>> +      if (isWarnEnabled())
>>> +      {
>>> +         log.warn(interpolate(object, params), t);
>>> +      }
>>> +   }
>>> +
>>> +   public void error(Object object, Object... params)
>>> +   {
>>> +      if (isErrorEnabled())
>>> +      {
>>> +         log.error(interpolate(object, params));
>>> +      }
>>> +   }
>>> +
>>> +   public void error(Object object, Throwable t, Object... params)
>>> +   {
>>> +      if (isErrorEnabled())
>>> +      {
>>> +         log.error(interpolate(object, params), t);
>>> +      }
>>> +   }
>>> +
>>> +   public void fatal(Object object, Object... params)
>>> +   {
>>> +      if (isFatalEnabled())
>>> +      {
>>> +         log.fatal(interpolate(object, params));
>>> +      }
>>> +   }
>>> +
>>> +   public void fatal(Object object, Throwable t, Object... params)
>>> +   {
>>> +      if (isFatalEnabled())
>>> +      {
>>> +         log.fatal(interpolate(object, params), t);
>>> +      }
>>> +   }
>>> +
>>> +   private Object interpolate(Object message, Object... params)
>>> +   {
>>> +      Object interpolatedMessage = message;
>>> +      if (params.length > 0)
>>> +      {
>>> +         for (int i = 0; i < params.length; i++)
>>> +         {
>>> +            if (params[i].getClass().isArray())
>>> +            {
>>> +               params[i] = Arrays.asList((Object[]) params[i]);
>>> +            }
>>> +         }
>>> +         interpolatedMessage =  
>>> MessageFormat.format(message.toString(), params);
>>> +      }
>>> +      return interpolatedMessage;
>>> +   }
>>> +
>>> +   public void readExternal(ObjectInput in) throws IOException,  
>>> ClassNotFoundException
>>> +   {
>>> +      category = (String) in.readObject();
>>> +      log = Logging.getLogProvider(category, true);
>>> +   }
>>> +
>>> +   public void writeExternal(ObjectOutput out) throws IOException
>>> +   {
>>> +      out.writeObject(category);
>>> +   }
>>> +
>>> +}
>>>
>>> Added: modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> LogProvider.java
>>> ===================================================================
>>> --- modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> LogProvider.java                            (rev 0)
>>> +++ modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> LogProvider.java    2009-04-21 09:38:36 UTC (rev 10542)
>>> @@ -0,0 +1,28 @@
>>> +package org.jboss.seam.log;
>>> +
>>> +/**
>>> + *
>>> + * @author Gavin King
>>> + *
>>> + */
>>> +public interface LogProvider
>>> +{
>>> +   public void trace(Object object);
>>> +   public void trace(Object object, Throwable t);
>>> +   public void debug(Object object);
>>> +   public void debug(Object object, Throwable t);
>>> +   public void info(Object object);
>>> +   public void info(Object object, Throwable t);
>>> +   public void warn(Object object);
>>> +   public void warn(Object object, Throwable t);
>>> +   public void error(Object object);
>>> +   public void error(Object object, Throwable t);
>>> +   public void fatal(Object object);
>>> +   public void fatal(Object object, Throwable t);
>>> +   public boolean isTraceEnabled();
>>> +   public boolean isDebugEnabled();
>>> +   public boolean isInfoEnabled();
>>> +   public boolean isWarnEnabled();
>>> +   public boolean isErrorEnabled();
>>> +   public boolean isFatalEnabled();
>>> +}
>>>
>>> Added: modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> Logging.java
>>> ===================================================================
>>> --- modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> Logging.java                            (rev 0)
>>> +++ modules/trunk/logging/src/main/java/org/jboss/seam/log/ 
>>> Logging.java    2009-04-21 09:38:36 UTC (rev 10542)
>>> @@ -0,0 +1,47 @@
>>> +package org.jboss.seam.log;
>>> +
>>> +/**
>>> + *
>>> + * @author Gavin King
>>> + *
>>> + */
>>> +public class Logging
>>> +{
>>> +   private static final boolean isLog4JAvailable;
>>> +
>>> +   static
>>> +   {
>>> +      boolean available;
>>> +      try
>>> +      {
>>> +         Class.forName("org.apache.log4j.Logger");
>>> +         available = true;
>>> +      }
>>> +      catch (ClassNotFoundException cnfe)
>>> +      {
>>> +         available = false;
>>> +      }
>>> +      isLog4JAvailable = available;
>>> +   }
>>> +
>>> +   public static Log getLog(String category)
>>> +   {
>>> +      return new LogImpl(category);
>>> +   }
>>> +
>>> +   public static Log getLog(Class<?> clazz)
>>> +   {
>>> +      return new LogImpl(clazz.getName());
>>> +   }
>>> +
>>> +   static LogProvider getLogProvider(String category, boolean  
>>> wrapped)
>>> +   {
>>> +      return isLog4JAvailable ? new Log4JProvider(category,  
>>> wrapped) : new JDKProvider(category, wrapped);
>>> +   }
>>> +
>>> +   public static LogProvider getLogProvider(Class<?> clazz)
>>> +   {
>>> +      return getLogProvider(clazz.getName(), false);
>>> +   }
>>> +
>>> +}
>>>
>>> Added: modules/trunk/parent/pom.xml
>>> ===================================================================
>>> --- modules/trunk/parent/pom.xml                            (rev 0)
>>> +++ modules/trunk/parent/pom.xml    2009-04-21 09:38:36 UTC (rev  
>>> 10542)
>>> @@ -0,0 +1,206 @@
>>> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance 
>>> " xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd 
>>> ">
>>> +   <modelVersion>4.0.0</modelVersion>
>>> +   <groupId>org.jboss.seam</groupId>
>>> +   <artifactId>seam-parent</artifactId>
>>> +   <packaging>pom</packaging>
>>> +   <version>3.0.0-SNAPSHOT</version>
>>> +
>>> +   <parent>
>>> +      <groupId>org.jboss.seam</groupId>
>>> +      <artifactId>seam-version-matrix</artifactId>
>>> +      <version>3.0.0-SNAPSHOT</version>
>>> +  </parent>
>>> +
>>> +   <name>JBoss Seam</name>
>>> +   <url>http://www.seamframework.org</url>
>>> +
>>> +   <description>
>>> +      JBoss Seam, an Enterprise Java Framework
>>> +   </description>
>>> +
>>> +   <developers>
>>> +      <developer>
>>> +         <name>Pete Muir</name>
>>> +         <roles>
>>> +            <role>Project Lead</role>
>>> +         </roles>
>>> +         <email>pete.muir at jboss.org</email>
>>> +         <organization>JBoss, a division of Red Hat</organization>
>>> +         <url>http://in.relation.to/Bloggers/Pete</url>
>>> +      </developer>
>>> +
>>> +      <developer>
>>> +         <name>Shane Bryzak</name>
>>> +         <organization>JBoss, a division of Red Hat</organization>
>>> +      </developer>
>>> +
>>> +      <developer>
>>> +         <name>Norman Richards</name>
>>> +         <organization>JBoss, a division of Red Hat</organization>
>>> +      </developer>
>>> +
>>> +      <developer>
>>> +         <name>Dan Allen</name>
>>> +         <organization>JBoss, a division of Red Hat</organization>
>>> +      </developer>
>>> +   </developers>
>>> +
>>> +   <build>
>>> +      <plugins>
>>> +         <plugin>
>>> +            <groupId>org.apache.maven.plugins</groupId>
>>> +            <artifactId>maven-source-plugin</artifactId>
>>> +            <executions>
>>> +               <execution>
>>> +                  <id>attach-sources</id>
>>> +                  <phase>verify</phase>
>>> +                  <goals>
>>> +                     <goal>jar</goal>
>>> +                  </goals>
>>> +               </execution>
>>> +            </executions>
>>> +         </plugin>
>>> +         <plugin>
>>> +            <groupId>org.apache.maven.plugins</groupId>
>>> +            <artifactId>maven-enforcer-plugin</artifactId>
>>> +         </plugin>
>>> +         <plugin>
>>> +           <groupId>org.apache.maven.plugins</groupId>
>>> +           <artifactId>maven-release-plugin</artifactId>
>>> +           <version>2.0-beta-8</version>
>>> +           <configuration>
>>> +             <tagBase>https://svn.jboss.org/repos/webbeans/ri/ 
>>> tags</tagBase>
>>> +             <autoVersionSubmodules>true</autoVersionSubmodules>
>>> +           </configuration>
>>> +         </plugin>
>>> +      </plugins>
>>> +      <defaultGoal>package</defaultGoal>
>>> +
>>> +      <pluginManagement>
>>> +         <plugins>
>>> +            <plugin>
>>> +               <groupId>org.apache.maven.plugins</groupId>
>>> +               <artifactId>maven-compiler-plugin</artifactId>
>>> +               <configuration>
>>> +                  <source>1.5</source>
>>> +                  <target>1.5</target>
>>> +               </configuration>
>>> +            </plugin>
>>> +            <plugin>
>>> +               <groupId>org.apache.maven.plugins</groupId>
>>> +               <artifactId>maven-jar-plugin</artifactId>
>>> +               <configuration>
>>> +                  <archive>
>>> +                     <manifest>
>>> +                        <addDefaultImplementationEntries>
>>> +                           true
>>> +                        </addDefaultImplementationEntries>
>>> +                        <addDefaultSpecificationEntries>
>>> +                           true
>>> +                        </addDefaultSpecificationEntries>
>>> +                     </manifest>
>>> +                  </archive>
>>> +               </configuration>
>>> +            </plugin>
>>> +            <plugin>
>>> +               <groupId>org.codehaus.mojo</groupId>
>>> +               <artifactId>emma-maven-plugin</artifactId>
>>> +               <configuration>
>>> +                  <forkMode>once</forkMode>
>>> +                  <metadataFile>../target/coverage.em</ 
>>> metadataFile>
>>> +                  <outputDirectory>${project.build.directory}/ 
>>> generated-classes</outputDirectory>
>>> +               </configuration>
>>> +            </plugin>
>>> +         </plugins>
>>> +      </pluginManagement>
>>> +   </build>
>>> +
>>> +   <profiles>
>>> +      <profile>
>>> +         <id>api-coverage</id>
>>> +         <activation>
>>> +            <property>
>>> +               <name>apiCoverage</name>
>>> +            </property>
>>> +         </activation>
>>> +         <build>
>>> +            <plugins>
>>> +               <plugin>
>>> +                  <groupId>org.apache.maven.plugins</groupId>
>>> +                  <artifactId>maven-surefire-plugin</artifactId>
>>> +                  <inherited>true</inherited>
>>> +                  <configuration>
>>> +                     <forkMode>once</forkMode>
>>> +                  </configuration>
>>> +               </plugin>
>>> +            </plugins>
>>> +         </build>
>>> +         <dependencies>
>>> +            <dependency>
>>> +               <groupId>emma</groupId>
>>> +               <artifactId>emma</artifactId>
>>> +               <version>2.0.5312</version>
>>> +               <scope>test</scope>
>>> +            </dependency>
>>> +         </dependencies>
>>> +      </profile>
>>> +   </profiles>
>>> +
>>> +   <ciManagement>
>>> +      <system>Hudson</system>
>>> +      <url />
>>> +   </ciManagement>
>>> +
>>> +   <issueManagement>
>>> +      <system>JIRA</system>
>>> +      <url>http://jira.jboss.org/browse/JBSEAM</url>
>>> +   </issueManagement>
>>> +
>>> +   <inceptionYear>2008</inceptionYear>
>>> +
>>> +   <licenses>
>>> +      <license>
>>> +         <name>Lesser Gnu Public License, Version 2.1</name>
>>> +         <url>http://www.gnu.org/licenses/lgpl-2.1.html</url>
>>> +      </license>
>>> +   </licenses>
>>> +
>>> +   <scm>
>>> +      <connection>scm:svn:http://anonsvn.jboss.org/repos/seam</ 
>>> connection>
>>> +      <developerConnection>scm:svn:https://svn.jboss.org/repos/ 
>>> seam</developerConnection>
>>> +      <url>http://fisheye.jboss.org/browse/Seam</url>
>>> +   </scm>
>>> +
>>> +   <distributionManagement>
>>> +      <repository>
>>> +         <!-- Copy the dist to the local checkout of the JBoss  
>>> maven2 repo ${maven.repository.root} -->
>>> +         <!-- It is anticipated that ${maven.repository.root} be  
>>> set in user's settings.xml -->
>>> +         <!-- todo : replace this with direct svn access once the  
>>> svnkit providers are available -->
>>> +         <id>repository.jboss.org</id>
>>> +         <url>file://${maven.repository.root}</url>
>>> +      </repository>
>>> +      <snapshotRepository>
>>> +         <id>snapshots.jboss.org</id>
>>> +         <name>JBoss Snapshot Repository</name>
>>> +         <url>dav:https://snapshots.jboss.org/maven2</url>
>>> +      </snapshotRepository>
>>> +   </distributionManagement>
>>> +
>>> +   <reporting>
>>> +      <plugins>
>>> +         <plugin>
>>> +            <groupId>org.codehaus.mojo</groupId>
>>> +            <artifactId>cobertura-maven-plugin</artifactId>
>>> +            <configuration>
>>> +               <formats>
>>> +                  <format>html</format>
>>> +                  <format>xml</format>
>>> +               </formats>
>>> +               <instrumentation>
>>> +               </instrumentation>
>>> +            </configuration>
>>> +         </plugin>
>>> +      </plugins>
>>> +   </reporting>
>>> +
>>> +</project>
>>>
>>> Modified: modules/trunk/security/pom.xml
>>> ===================================================================
>>> --- modules/trunk/security/pom.xml    2009-04-21 08:51:33 UTC (rev  
>>> 10541)
>>> +++ modules/trunk/security/pom.xml    2009-04-21 09:38:36 UTC (rev  
>>> 10542)
>>> @@ -1,8 +1,13 @@
>>> <project xmlns="http://maven.apache.org/POM/4.0.0"
>>>  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd 
>>> ">
>>> -   <modelVersion>4.0.0</modelVersion>
>>> -
>>> +   <parent>
>>> +      <artifactId>seam-parent</artifactId>
>>> +      <groupId>org.jboss.seam</groupId>
>>> +      <version>3.0.0-SNAPSHOT</version>
>>> +   </parent>
>>> +
>>> +   <modelVersion>4.0.0</modelVersion>
>>>   <groupId>org.jboss.seam</groupId>
>>>   <artifactId>seam-security</artifactId>
>>>   <packaging>jar</packaging>
>>> @@ -13,7 +18,6 @@
>>>      <dependency>
>>>         <groupId>org.jboss.webbeans</groupId>
>>>         <artifactId>jsr299-api</artifactId>
>>> -         <version>1.0.0-SNAPSHOT</version>
>>>      </dependency>
>>>
>>>   </dependencies>
>>>
>>> Modified: modules/trunk/version-matrix/pom.xml
>>> ===================================================================
>>> --- modules/trunk/version-matrix/pom.xml    2009-04-21 08:51:33  
>>> UTC (rev 10541)
>>> +++ modules/trunk/version-matrix/pom.xml    2009-04-21 09:38:36  
>>> UTC (rev 10542)
>>> @@ -51,7 +51,6 @@
>>>
>>>   <properties>
>>>      <seam.version>3.0.0-SNAPSHOT</seam.version>
>>> -      <webbeans.version>1.0.0-SNAPSHOT</webbeans.version>
>>>   </properties>
>>>
>>>   <dependencyManagement>
>>> @@ -141,31 +140,7 @@
>>>            <artifactId>el-ri</artifactId>
>>>            <version>1.2</version>
>>>         </dependency>
>>> -
>>> -         <dependency>
>>> -            <groupId>org.jboss.webbeans</groupId>
>>> -            <artifactId>jsr299-api</artifactId>
>>> -            <version>${webbeans.version}</version>
>>> -         </dependency>
>>>
>>> -         <dependency>
>>> -            <groupId>org.jboss.webbeans</groupId>
>>> -            <artifactId>webbeans-core</artifactId>
>>> -            <version>${webbeans.version}</version>
>>> -         </dependency>
>>> -
>>> -         <dependency>
>>> -            <groupId>org.jboss.webbeans</groupId>
>>> -            <artifactId>webbeans-spi</artifactId>
>>> -            <version>${webbeans.version}</version>
>>> -         </dependency>
>>> -
>>> -         <dependency>
>>> -            <groupId>org.jboss.webbeans</groupId>
>>> -            <artifactId>webbeans-porting-package</artifactId>
>>> -            <version>${webbeans.version}</version>
>>> -         </dependency>
>>> -
>>>      </dependencies>
>>>   </dependencyManagement>
>>>
>>>
>>> _______________________________________________
>>> seam-commits mailing list
>>> seam-commits at lists.jboss.org
>>> https://lists.jboss.org/mailman/listinfo/seam-commits
>>
>> -- 
>> Pete Muir
>> http://www.seamframework.org
>> http://in.relation.to/Bloggers/Pete
>>
>> _______________________________________________
>> seam-dev mailing list
>> seam-dev at lists.jboss.org
>> https://lists.jboss.org/mailman/listinfo/seam-dev
>

--
Pete Muir
http://www.seamframework.org
http://in.relation.to/Bloggers/Pete




More information about the seam-dev mailing list