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

Shane Bryzak shane.bryzak at jboss.com
Tue Apr 21 06:00:45 EDT 2009


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




More information about the seam-dev mailing list