Author: woonsan
Date: Tue Dec 22 19:24:19 2009
New Revision: 893280

URL: http://svn.apache.org/viewvc?rev=893280&view=rev
Log:
JS2-1092: Jetspeed Logger support for components (such as 
JetspeedContainerServlet) in jetspeed-commons.
Now portlet exceptions are logged in jetspeed log files.

Added:
    
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/
    
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/
    
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLogger.java
   (with props)
    
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLoggerFactory.java
   (with props)
    
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/
    
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLogger.java
   (with props)
    
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLoggerFactory.java
   (with props)
    
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/util/JetspeedLoggerUtil.java
   (with props)
Modified:
    
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/container/JetspeedContainerServlet.java
    
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-services.xml

Added: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLogger.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLogger.java?rev=893280&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLogger.java
 (added)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLogger.java
 Tue Dec 22 19:24:19 2009
@@ -0,0 +1,150 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.logger.impl;
+
+import org.apache.jetspeed.logger.JetspeedLogger;
+import org.slf4j.Logger;
+
+public class DefaultJetspeedLogger implements JetspeedLogger
+{
+    private Logger logger;
+
+    public DefaultJetspeedLogger(final Logger logger)
+    {
+        this.logger = logger;
+    }
+
+    public void debug(String msg)
+    {
+        logger.debug(msg);
+    }
+
+    public void debug(String format, Object arg)
+    {
+        logger.debug(format, arg);
+    }
+
+    public void debug(String format, Object arg1, Object arg2)
+    {
+        logger.debug(format, arg1, arg2);
+    }
+
+    public void debug(String format, Object[] argArray)
+    {
+        logger.debug(format, argArray);
+    }
+
+    public void debug(String msg, Throwable t)
+    {
+        logger.debug(msg, t);
+    }
+
+    public void error(String msg)
+    {
+        logger.error(msg);
+    }
+
+    public void error(String msg, Object arg)
+    {
+        logger.error(msg, arg);
+    }
+
+    public void error(String format, Object arg1, Object arg2)
+    {
+        logger.error(format, arg1, arg2);
+    }
+
+    public void error(String format, Object[] argArray)
+    {
+        logger.error(format, argArray);
+    }
+
+    public void error(String msg, Throwable t)
+    {
+        logger.error(msg, t);
+    }
+
+    public void info(String msg)
+    {
+        logger.info(msg);
+    }
+
+    public void info(String format, Object arg)
+    {
+        logger.info(format, arg);
+    }
+
+    public void info(String format, Object arg1, Object arg2)
+    {
+        logger.info(format, arg1, arg2);
+    }
+
+    public void info(String format, Object[] arg1)
+    {
+        logger.info(format, arg1);
+    }
+
+    public void info(String msg, Throwable t)
+    {
+        logger.info(msg, t);
+    }
+
+    public boolean isDebugEnabled()
+    {
+        return logger.isDebugEnabled();
+    }
+
+    public boolean isErrorEnabled()
+    {
+        return logger.isErrorEnabled();
+    }
+
+    public boolean isInfoEnabled()
+    {
+        return logger.isInfoEnabled();
+    }
+
+    public boolean isWarnEnabled()
+    {
+        return logger.isWarnEnabled();
+    }
+
+    public void warn(String msg)
+    {
+        logger.warn(msg);
+    }
+
+    public void warn(String format, Object arg)
+    {
+        logger.warn(format, arg);
+    }
+
+    public void warn(String format, Object[] argArray)
+    {
+        logger.warn(format, argArray);
+    }
+
+    public void warn(String format, Object arg1, Object arg2)
+    {
+        logger.warn(format, arg1, arg2);
+    }
+
+    public void warn(String msg, Throwable t)
+    {
+        logger.warn(msg, t);
+    }
+}

Propchange: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLogger.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLogger.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLogger.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLoggerFactory.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLoggerFactory.java?rev=893280&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLoggerFactory.java
 (added)
+++ 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLoggerFactory.java
 Tue Dec 22 19:24:19 2009
@@ -0,0 +1,34 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.logger.impl;
+
+import org.apache.jetspeed.logger.JetspeedLogger;
+import org.apache.jetspeed.logger.JetspeedLoggerFactory;
+import org.slf4j.LoggerFactory;
+
+public class DefaultJetspeedLoggerFactory implements JetspeedLoggerFactory
+{
+    public JetspeedLogger getLogger(Class<?> clazz)
+    {
+        return new DefaultJetspeedLogger(LoggerFactory.getLogger(clazz));
+    }
+
+    public JetspeedLogger getLogger(String name)
+    {
+        return new DefaultJetspeedLogger(LoggerFactory.getLogger(name));
+    }
+}

Propchange: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLoggerFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLoggerFactory.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: 
portals/jetspeed-2/portal/trunk/components/jetspeed-portal/src/main/java/org/apache/jetspeed/logger/impl/DefaultJetspeedLoggerFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/container/JetspeedContainerServlet.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/container/JetspeedContainerServlet.java?rev=893280&r1=893279&r2=893280&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/container/JetspeedContainerServlet.java
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/container/JetspeedContainerServlet.java
 Tue Dec 22 19:24:19 2009
@@ -43,11 +43,13 @@
 import org.apache.jetspeed.PortalReservedParameters;
 import org.apache.jetspeed.container.session.PortalSessionsManager;
 import org.apache.jetspeed.factory.PortletInstance;
+import org.apache.jetspeed.logger.JetspeedLogger;
 import org.apache.jetspeed.request.RequestContext;
 import org.apache.jetspeed.services.JetspeedPortletServices;
 import org.apache.jetspeed.services.PortletServices;
 import org.apache.jetspeed.tools.pamanager.PortletApplicationManagement;
 import org.apache.jetspeed.util.DirectoryHelper;
+import org.apache.jetspeed.util.JetspeedLoggerUtil;
 import org.apache.pluto.container.PortletMimeResponseContext;
 
 /**
@@ -114,6 +116,8 @@
               throw new ServletException(JCS + " Initialization of 
PortletApplication at "+contextName+" without access to its real path not 
supported");
                 }
 
+            JetspeedLogger jsLogger = JetspeedLoggerUtil.getLogger(getClass());
+            jsLogger.info(INIT_START_MSG + contextName);
             context.log(INIT_START_MSG + contextName);            
             System.out.println(INIT_START_MSG + contextName);            
 
@@ -124,11 +128,13 @@
             catch (Exception e)
             {
                 String message = INIT_FAILED_MSG + contextName;
+                jsLogger.error(message, e);
                 context.log(message, e);
                 System.err.println(message);
                 throw new ServletException(message, e);
             }
 
+            jsLogger.info(INIT_DONE_MSG + contextName);
             context.log(INIT_DONE_MSG + contextName);
             System.out.println(INIT_DONE_MSG + contextName);
         }
@@ -149,6 +155,8 @@
         }
 */
         final String START_DELAYED_MSG = JCS + "Could not yet start portlet 
application at: "+contextName+". Starting back ground thread to start when the 
portal comes online.";
+        JetspeedLogger jsLogger = JetspeedLoggerUtil.getLogger(getClass());
+        jsLogger.info(START_DELAYED_MSG);
         context.log(START_DELAYED_MSG);
         startTimer = new Timer(true);
         startTimer.schedule(new TimerTask()
@@ -166,6 +174,8 @@
                         }
                         else
                         {
+                            JetspeedLogger jsLogger = 
JetspeedLoggerUtil.getLogger(getClass());
+                            jsLogger.info(START_DELAYED_MSG);
                             context.log(START_DELAYED_MSG);
                         }
                     }
@@ -176,8 +186,11 @@
 
     boolean attemptStart(ServletContext context, String contextName, String 
contextPath, String paDir, ClassLoader paClassLoader) 
     {
+        JetspeedLogger jsLogger = JetspeedLoggerUtil.getLogger(getClass());
+        
         try
         {
+            jsLogger.info(TRY_START_MSG + contextPath);
             context.log(TRY_START_MSG + contextPath);
             PortletServices services = JetspeedPortletServices.getSingleton();
             if (services != null)
@@ -192,6 +205,7 @@
                     started = true;
                     psm = 
(PortalSessionsManager)services.getService(PortalSessionsManager.SERVICE_NAME);
 
+                    jsLogger.info(STARTED_MSG + contextPath);
                     context.log(STARTED_MSG + contextPath);
                     return true;
                 }
@@ -199,6 +213,7 @@
         }
         catch (Exception e)
         {
+            jsLogger.error(INIT_FAILED_MSG + contextPath, e);
             context.log(INIT_FAILED_MSG + contextPath, e);
             return true; // don't try again
         }
@@ -310,6 +325,8 @@
         }
         catch (Throwable t)
         {
+            JetspeedLogger jsLogger = JetspeedLoggerUtil.getLogger(getClass());
+            
             if ( t instanceof UnavailableException )
             {
                 // destroy the portlet in the finally clause
@@ -319,7 +336,7 @@
             if (PortletWindow.Action.RENDER.equals(window.getAction())|| 
PortletWindow.Action.RESOURCE.equals(window.getAction()))
             {
                 ServletContext context = getServletContext();
-                context.log(JCS + "Error rendering portlet \"" + 
window.getPortletDefinition().getUniqueName() + "\": " + t.toString(), t);
+                jsLogger.error(JCS + "Error rendering portlet \"" + 
window.getPortletDefinition().getUniqueName() + "\": " + t.toString(), t);
                 PrintWriter writer = 
((PortletMimeResponseContext)window.getPortletResponseContext()).getWriter();
                 if (writer != null)
                 {
@@ -406,6 +423,8 @@
                         PortletApplicationManagement pam = 
(PortletApplicationManagement) services.getService("PAM");
                         if ((pam != null) && pam.isStarted())
                         {
+                            JetspeedLogger jsLogger = 
JetspeedLoggerUtil.getLogger(getClass());
+                            jsLogger.info(STOP_MSG + contextName);
                             getServletContext().log(STOP_MSG + contextName);
                             try
                             {
@@ -413,6 +432,7 @@
                             }
                             catch (Exception e)
                             {
+                                jsLogger.error(STOP_FAILED_MSG + contextName, 
e);
                                 getServletContext().log(STOP_FAILED_MSG + 
contextName, e);
                             }
                         }

Added: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLogger.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLogger.java?rev=893280&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLogger.java
 (added)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLogger.java
 Tue Dec 22 19:24:19 2009
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.logger;
+
+/**
+ * JetspeedLogger 
+ * <P>
+ * Wrapper interface to a logger instance. By using this interface, 
+ * common components can leave logs in the Jetspeed's logging context.
+ * </P>
+ * 
+ * @version $Id$
+ */
+public interface JetspeedLogger
+{
+    boolean isDebugEnabled();
+
+    void debug(String msg);
+
+    void debug(String format, Object arg);
+
+    void debug(String format, Object arg1, Object arg2);
+
+    void debug(String format, Object[] argArray);
+
+    void debug(String msg, Throwable t);
+
+    boolean isInfoEnabled();
+
+    void info(String msg);
+
+    void info(String format, Object arg);
+
+    void info(String format, Object arg1, Object arg2);
+
+    void info(String format, Object[] arg1);
+
+    void info(String msg, Throwable t);
+
+    boolean isWarnEnabled();
+
+    void warn(String msg);
+
+    void warn(String format, Object arg);
+
+    void warn(String format, Object[] argArray);
+
+    void warn(String format, Object arg1, Object arg2);
+
+    void warn(String msg, Throwable t);
+
+    boolean isErrorEnabled();
+
+    void error(String msg);
+
+    void error(String format, Object arg);
+
+    void error(String format, Object arg1, Object arg2);
+
+    void error(String format, Object[] argArray);
+
+    void error(String msg, Throwable t);
+}

Propchange: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLogger.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLogger.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLogger.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLoggerFactory.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLoggerFactory.java?rev=893280&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLoggerFactory.java
 (added)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLoggerFactory.java
 Tue Dec 22 19:24:19 2009
@@ -0,0 +1,55 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.logger;
+
+/**
+ * JetspeedLoggerFactory 
+ * <P>
+ * Wrapper interface to a logger factory instance. By using this interface, 
+ * common components can leave logs in the Jetspeed's logging context.
+ * </P>
+ * 
+ * @version $Id$
+ */
+public interface JetspeedLoggerFactory
+{
+    
+    /**
+     * Returns a JetspeedLogger.
+     * <P>
+     * <EM>Note: A component which wants to use <CODE>JetspeedLogger</CODE> 
must invoke this method
+     * whenever it tries to leave logs. The retrieved logger instance must not 
be kept for later use.
+     * Jetspeed container can be reloaded any time and it can make the old 
logger instances invalid.</EM>
+     * </P>
+     * @param clazz
+     * @return
+     */
+    public JetspeedLogger getLogger(Class<?> clazz);
+    
+    /**
+     * Returns a JetspeedLogger.
+     * <P>
+     * <EM>Note: A component which wants to use <CODE>JetspeedLogger</CODE> 
must invoke this method
+     * whenever it tries to leave logs. The retrieved logger instance must not 
be kept for later use.
+     * Jetspeed container can be reloaded any time and it can make the old 
logger instances invalid.</EM>
+     * </P>
+     * @param name
+     * @return
+     */
+    public JetspeedLogger getLogger(String name);
+    
+}

Propchange: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLoggerFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLoggerFactory.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/logger/JetspeedLoggerFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Added: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/util/JetspeedLoggerUtil.java
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/util/JetspeedLoggerUtil.java?rev=893280&view=auto
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/util/JetspeedLoggerUtil.java
 (added)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/util/JetspeedLoggerUtil.java
 Tue Dec 22 19:24:19 2009
@@ -0,0 +1,199 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jetspeed.util;
+
+import org.apache.jetspeed.logger.JetspeedLogger;
+import org.apache.jetspeed.logger.JetspeedLoggerFactory;
+import org.apache.jetspeed.services.JetspeedPortletServices;
+import org.apache.jetspeed.services.PortletServices;
+
+/**
+ * JetspeedLoggerUtil
+ * 
+ * @version $Id$
+ */
+public class JetspeedLoggerUtil
+{
+    private JetspeedLoggerUtil()
+    {
+    }
+
+    /**
+     * Returns a JetspeedLogger from the portal services component.
+     * <P>
+     * <EM>Note: A component which wants to use <CODE>JetspeedLogger</CODE> 
must invoke this method
+     * whenever it tries to leave logs. The retrieved logger instance must not 
be kept for later use.
+     * Jetspeed container can be reloaded any time and it can make the old 
logger instances invalid.</EM>
+     * </P>
+     * <P>
+     * If Jetspeed container is not available, then it returns a NOOP logger 
instead.
+     * which does not do anything.
+     * </P>
+     * @param clazz
+     * @return
+     */
+    public static JetspeedLogger getLogger(Class<?> clazz)
+    {
+        PortletServices ps = JetspeedPortletServices.getSingleton();
+        
+        if (ps != null)
+        {
+            JetspeedLoggerFactory jsLoggerFactory = (JetspeedLoggerFactory) 
ps.getService(JetspeedLoggerFactory.class.getName());
+            
+            if (jsLoggerFactory != null)
+            {
+                return jsLoggerFactory.getLogger(clazz);
+            }
+        }
+        
+        return noopLogger;
+    }
+
+    /**
+     * Returns a JetspeedLogger from the portal services component.
+     * <P>
+     * <EM>Note: A component which wants to use <CODE>JetspeedLogger</CODE> 
must invoke this method
+     * whenever it tries to leave logs. The retrieved logger instance must not 
be kept for later use.
+     * Jetspeed container can be reloaded any time and it can make the old 
logger instances invalid.</EM>
+     * </P>
+     * <P>
+     * If Jetspeed container is not available, then it returns a NOOP logger 
instead.
+     * which does not do anything.
+     * </P>
+     * @param name
+     * @return
+     */
+    public static JetspeedLogger getLogger(String name)
+    {
+        PortletServices ps = JetspeedPortletServices.getSingleton();
+        
+        if (ps != null)
+        {
+            JetspeedLoggerFactory jsLoggerFactory = (JetspeedLoggerFactory) 
ps.getService(JetspeedLoggerFactory.class.getName());
+
+            if (jsLoggerFactory != null)
+            {
+                return jsLoggerFactory.getLogger(name);
+            }
+        }
+        
+        return noopLogger;
+    }
+    
+    private static JetspeedLogger noopLogger = new JetspeedLogger()
+    {
+        public void debug(String msg)
+        {
+        }
+
+        public void debug(String format, Object arg)
+        {
+        }
+
+        public void debug(String format, Object arg1, Object arg2)
+        {
+        }
+
+        public void debug(String format, Object[] argArray)
+        {
+        }
+
+        public void debug(String msg, Throwable t)
+        {
+        }
+
+        public void error(String msg)
+        {
+        }
+
+        public void error(String format, Object arg)
+        {
+        }
+
+        public void error(String format, Object arg1, Object arg2)
+        {
+        }
+
+        public void error(String format, Object[] argArray)
+        {
+        }
+
+        public void error(String msg, Throwable t)
+        {
+        }
+
+        public void info(String msg)
+        {
+        }
+
+        public void info(String format, Object arg)
+        {
+        }
+
+        public void info(String format, Object arg1, Object arg2)
+        {
+        }
+
+        public void info(String format, Object[] arg1)
+        {
+        }
+
+        public void info(String msg, Throwable t)
+        {
+        }
+
+        public boolean isDebugEnabled()
+        {
+            return false;
+        }
+
+        public boolean isErrorEnabled()
+        {
+            return false;
+        }
+
+        public boolean isInfoEnabled()
+        {
+            return false;
+        }
+
+        public boolean isWarnEnabled()
+        {
+            return false;
+        }
+
+        public void warn(String msg)
+        {
+        }
+
+        public void warn(String format, Object arg)
+        {
+        }
+
+        public void warn(String format, Object[] argArray)
+        {
+        }
+
+        public void warn(String format, Object arg1, Object arg2)
+        {
+        }
+
+        public void warn(String msg, Throwable t)
+        {
+        }
+    };
+}

Propchange: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/util/JetspeedLoggerUtil.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/util/JetspeedLoggerUtil.java
------------------------------------------------------------------------------
    svn:keywords = Id

Propchange: 
portals/jetspeed-2/portal/trunk/jetspeed-commons/src/main/java/org/apache/jetspeed/util/JetspeedLoggerUtil.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-services.xml
URL: 
http://svn.apache.org/viewvc/portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-services.xml?rev=893280&r1=893279&r2=893280&view=diff
==============================================================================
--- 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-services.xml
 (original)
+++ 
portals/jetspeed-2/portal/trunk/jetspeed-portal-resources/src/main/resources/assembly/jetspeed-services.xml
 Tue Dec 22 19:24:19 2009
@@ -23,6 +23,9 @@
     <meta key="j2:cat" value="default" />
     <constructor-arg>
       <map>
+        <entry key="org.apache.jetspeed.logger.JetspeedLoggerFactory">
+          <bean 
class="org.apache.jetspeed.logger.impl.DefaultJetspeedLoggerFactory" />
+        </entry>
         <entry key="PortletRegistryComponent">
           <ref 
bean="org.apache.jetspeed.components.portletregistry.PortletRegistry" />
         </entry>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to