[jboss-cvs] JBossAS SVN: r63640 - in trunk: testsuite/src/main/org/jboss/test/jsf/webapp and 3 other directories.
jboss-cvs-commits at lists.jboss.org
jboss-cvs-commits at lists.jboss.org
Tue Jun 26 10:17:46 EDT 2007
Author: stan.silvert at jboss.com
Date: 2007-06-26 10:17:45 -0400 (Tue, 26 Jun 2007)
New Revision: 63640
Added:
trunk/testsuite/src/main/org/jboss/test/jsf/webapp/LoggingTest.java
Modified:
trunk/build/build-thirdparty.xml
trunk/testsuite/src/main/org/jboss/test/web/test/JSFIntegrationUnitTestCase.java
trunk/testsuite/src/resources/web/html/jsftest/index.jsp
trunk/tomcat/src/main/org/jboss/web/jsf/integration/config/JBossJSFConfigureListener.java
trunk/tomcat/src/main/org/jboss/web/jsf/integration/config/Log4JConversionFilter.java
Log:
JBAS-4454 and JBAS-4432
Modified: trunk/build/build-thirdparty.xml
===================================================================
--- trunk/build/build-thirdparty.xml 2007-06-26 12:17:55 UTC (rev 63639)
+++ trunk/build/build-thirdparty.xml 2007-06-26 14:17:45 UTC (rev 63640)
@@ -125,7 +125,7 @@
<componentref name="sun-jaf" version="1.1"/>
<componentref name="sun-javacc" version="3.2"/>
<componentref name="sun-javamail" version="1.4"/>
- <componentref name="sun-jsf" version="1.2_04_P01"/>
+ <componentref name="sun-jsf" version="1.2_04_P02"/>
<componentref name="sun-jstl" version="1.2"/>
<componentref name="sun-opends" version="0.1.0.build016"/>
<componentref name="sun-servlet" version="2.5-brew"/>
Added: trunk/testsuite/src/main/org/jboss/test/jsf/webapp/LoggingTest.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/jsf/webapp/LoggingTest.java (rev 0)
+++ trunk/testsuite/src/main/org/jboss/test/jsf/webapp/LoggingTest.java 2007-06-26 14:17:45 UTC (rev 63640)
@@ -0,0 +1,98 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2007, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+
+package org.jboss.test.jsf.webapp;
+
+import com.sun.faces.util.Util;
+import org.apache.log4j.*;
+import java.io.ByteArrayOutputStream;
+
+/**
+ * This class simulates the kind of logging that the JSF implementation
+ * does.
+ *
+ * @author Stan Silvert
+ */
+public class LoggingTest {
+
+ private ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+ /**
+ * Constructor sets up an in-memory Log4J appender. Log messages
+ * logged with the java.util.logging package should end up in this
+ * appender.
+ */
+ public LoggingTest()
+ {
+ Appender appender = new WriterAppender(new SimpleLayout(), out);
+ Logger log4jLogger = Logger.getLogger(Util.FACES_LOGGER);
+ log4jLogger.addAppender(appender);
+ }
+
+ /**
+ * Send java.util.logging messages using the same java.util Loggers
+ * that the JSF impl uses.
+ *
+ * During the JUnit test, levels are set on the loggers so that
+ * some messages will pass thorough to log4j and
+ * captured by the WriterAppender. Others will not.
+ */
+ public void sendLogMessages()
+ {
+ java.util.logging.Logger julLogger = Util.getLogger(Util.FACES_LOGGER + Util.RENDERKIT_LOGGER);
+ julLogger.severe("Logged SEVERE message in RENDERKIT_LOGGER<br/>"); // not logged
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.TAGLIB_LOGGER);
+ julLogger.severe("Logged SEVERE message in TAGLIB_LOGGER<br/>"); // not logged
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.APPLICATION_LOGGER);
+ julLogger.severe("Logged SEVERE message in APPLICATION_LOGGER<br/>"); // logged
+ julLogger.warning("Logged WARNING message in APPLICATION_LOGGER<br/>"); // not logged
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.CONTEXT_LOGGER);
+ julLogger.warning("Logged WARNING message in CONTEXT_LOGGER<br/>"); // logged
+ julLogger.info("Logged INFO message in CONTEXT_LOGGER<br/>"); // not logged
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.CONFIG_LOGGER);
+ julLogger.info("Logged INFO message in CONFIG_LOGGER<br/>"); // logged
+ julLogger.fine("Logged FINE message in CONFIG_LOGGER<br/>"); // not logged
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.LIFECYCLE_LOGGER);
+ julLogger.fine("Logged FINE message in LIFECYCLE_LOGGER<br/>"); // logged
+ julLogger.finer("Logged FINER message in LIFECYCLE_LOGGER<br/>"); // not logged
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.TIMING_LOGGER);
+ julLogger.finer("Logged FINER message in TIMING_LOGGER<br/>"); // logged
+ julLogger.finest("Logged FINEST message in TIMING_LOGGER<br/>"); // logged
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER);
+ julLogger.finest("Logged FINEST message in FACES_LOGGER<br/>"); // logged
+ }
+
+ /**
+ * Return the contents of the in-memory Log4J appender.
+ */
+ public String getLoggedMessages()
+ {
+ return out.toString();
+ }
+}
Modified: trunk/testsuite/src/main/org/jboss/test/web/test/JSFIntegrationUnitTestCase.java
===================================================================
--- trunk/testsuite/src/main/org/jboss/test/web/test/JSFIntegrationUnitTestCase.java 2007-06-26 12:17:55 UTC (rev 63639)
+++ trunk/testsuite/src/main/org/jboss/test/web/test/JSFIntegrationUnitTestCase.java 2007-06-26 14:17:45 UTC (rev 63640)
@@ -21,9 +21,9 @@
*/
package org.jboss.test.web.test;
-//import java.net.HttpURLConnection;
+import com.sun.faces.util.Util;
+
import java.net.URL;
-//import javax.management.ObjectName;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -34,12 +34,6 @@
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpMethodBase;
import org.apache.commons.httpclient.methods.GetMethod;
-import com.meterware.httpunit.GetMethodWebRequest;
-import com.meterware.httpunit.SubmitButton;
-import com.meterware.httpunit.WebConversation;
-import com.meterware.httpunit.WebForm;
-import com.meterware.httpunit.WebRequest;
-import com.meterware.httpunit.WebResponse;
/** Tests of JSF integration into the JBoss server. This test
requires than a web container and JSF implementation be integrated
@@ -57,6 +51,31 @@
private String baseURL = HttpUtils.getBaseURL();
private HttpClient client = new HttpClient();
+ // Call Log4jService to set logging levels for the JSF impl before the WAR
+ // is deployed
+ public void setUp() throws Exception
+ {
+ client.executeMethod(new GetMethod(makeSetLoggerCmd(Util.FACES_LOGGER, "ALL")));
+ client.executeMethod(new GetMethod(makeSetLoggerCmd(Util.FACES_LOGGER + Util.TAGLIB_LOGGER, "FATAL")));
+ client.executeMethod(new GetMethod(makeSetLoggerCmd(Util.FACES_LOGGER + Util.APPLICATION_LOGGER, "ERROR")));
+ client.executeMethod(new GetMethod(makeSetLoggerCmd(Util.FACES_LOGGER + Util.CONTEXT_LOGGER, "WARN")));
+ client.executeMethod(new GetMethod(makeSetLoggerCmd(Util.FACES_LOGGER + Util.CONFIG_LOGGER, "INFO")));
+ client.executeMethod(new GetMethod(makeSetLoggerCmd(Util.FACES_LOGGER + Util.LIFECYCLE_LOGGER, "DEBUG")));
+ client.executeMethod(new GetMethod(makeSetLoggerCmd(Util.FACES_LOGGER + Util.TIMING_LOGGER, "TRACE")));
+ client.executeMethod(new GetMethod(makeSetLoggerCmd(Util.FACES_LOGGER + Util.RENDERKIT_LOGGER, "OFF")));
+ }
+
+ private String makeSetLoggerCmd(String log4jLogger, String log4jPriority)
+ {
+ return baseURL +
+ "jmx-console/HtmlAdaptor?" +
+ "action=invokeOp&" +
+ "name=jboss.system:type=Log4jService,service=Logging&" +
+ "methodIndex=1&" +
+ "arg0=" + log4jLogger + "&" +
+ "arg1=" + log4jPriority;
+ }
+
public JSFIntegrationUnitTestCase(String name)
{
super(name);
@@ -89,25 +108,24 @@
// Tests enum support
assertTrue(contains(responseBody, "JBoss Color selection is PURPLE"));
- }
- public void testJSFAppWithBundledMyFaces() throws Exception
- {
- WebConversation webConversation = new WebConversation();
+ // Test logging
+ assertFalse(contains(responseBody, "Logged SEVERE message in RENDERKIT_LOGGER"));
+ assertFalse(contains(responseBody, "Logged SEVERE message in TAGLIB_LOGGER"));
+ assertTrue(contains(responseBody, "Logged SEVERE message in APPLICATION_LOGGER"));
+ assertFalse(contains(responseBody, "Logged WARNING message in APPLICATION_LOGGER"));
+ assertTrue(contains(responseBody, "Logged WARNING message in CONTEXT_LOGGER"));
+ assertFalse(contains(responseBody, "Logged INFO message in CONTEXT_LOGGER"));
+ assertTrue(contains(responseBody, "Logged INFO message in CONFIG_LOGGER"));
+ assertFalse(contains(responseBody, "Logged FINE message in CONFIG_LOGGER"));
+ assertTrue(contains(responseBody, "Logged FINE message in LIFECYCLE_LOGGER"));
+ assertFalse(contains(responseBody, "Logged FINER message in LIFECYCLE_LOGGER"));
+ assertTrue(contains(responseBody, "Logged FINER message in TIMING_LOGGER"));
+ assertTrue(contains(responseBody, "Logged FINEST message in TIMING_LOGGER"));
+ assertTrue(contains(responseBody, "Logged FINEST message in FACES_LOGGER"));
- // Initial JSF request
- WebRequest req = new GetMethodWebRequest(baseURL + "bundled-myfaces-hellojsf/index.faces");
- WebResponse webResponse = webConversation.getResponse(req);
- assertTrue(contains(webResponse.getText(), "Enter your name"));
+ }
- // submit data
- WebForm form = webResponse.getFormWithID("form1");
- form.setParameter("form1:input_foo_text", "Stan");
- SubmitButton submitButton = form.getSubmitButtonWithID("form1:submit_button");
- webResponse = form.submit(submitButton);
- assertTrue(contains(webResponse.getText(), "Hello Stan"));
- }
-
private boolean contains(String base, String target) {
return base.indexOf(target) != -1;
}
@@ -128,12 +146,10 @@
{
super.setUp();
deploy("jbosstest-jsf.war");
- deploy("bundled-myfaces-hellojsf.war");
}
protected void tearDown() throws Exception
{
undeploy("jbosstest-jsf.war");
- undeploy("bundled-myfaces-hellojsf.war");
super.tearDown();
}
};
Modified: trunk/testsuite/src/resources/web/html/jsftest/index.jsp
===================================================================
--- trunk/testsuite/src/resources/web/html/jsftest/index.jsp 2007-06-26 12:17:55 UTC (rev 63639)
+++ trunk/testsuite/src/resources/web/html/jsftest/index.jsp 2007-06-26 14:17:45 UTC (rev 63640)
@@ -1,5 +1,6 @@
<%@page contentType="text/html"%>
<%@page pageEncoding="UTF-8"%>
+<%@page import="org.jboss.test.jsf.webapp.*" %>
<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
<%@ taglib uri="http://java.sun.com/jsf/html" prefix="h" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>
@@ -20,7 +21,7 @@
<%
// I think that the fact I need to do this constitutes a bug in JSTL
if (session.getAttribute("mySessionBean") == null) {
- session.setAttribute("mySessionBean", new org.jboss.test.jsf.webapp.MySessionBean());
+ session.setAttribute("mySessionBean", new MySessionBean());
}
%>
@@ -38,5 +39,13 @@
/></h3>
</f:view>
+ <font color="red"><h1>Logging Test</h1></font>
+ <h3>
+ <%
+ LoggingTest loggingTest = new LoggingTest();
+ loggingTest.sendLogMessages();
+ out.println(loggingTest.getLoggedMessages());
+ %>
+ </h3>
</body>
</html>
Modified: trunk/tomcat/src/main/org/jboss/web/jsf/integration/config/JBossJSFConfigureListener.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/jsf/integration/config/JBossJSFConfigureListener.java 2007-06-26 12:17:55 UTC (rev 63639)
+++ trunk/tomcat/src/main/org/jboss/web/jsf/integration/config/JBossJSFConfigureListener.java 2007-06-26 14:17:45 UTC (rev 63640)
@@ -1,6 +1,6 @@
/*
* JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * Copyright 2007, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
@@ -27,6 +27,7 @@
import java.util.logging.Filter;
import javax.servlet.ServletContext;
import javax.servlet.ServletContextEvent;
+import org.apache.log4j.Level;
import org.jboss.logging.Logger;
/**
@@ -99,28 +100,85 @@
// ignore - this is a good thing
}
}
+
/**
+ * For a given JSF julLogger find the logging level set to the
+ * corresponding log4jLogger. Then set the julLogger to the
+ * same level as the log4jLogger.
+ *
+ * At this point we know that Log4J is being used. So we can
+ * reference a real Log4J logger instead of the JBoss one.
+ */
+ private void setLevel(java.util.logging.Logger julLogger)
+ {
+ org.apache.log4j.Logger log4jLogger =
+ org.apache.log4j.Logger.getLogger(julLogger.getName());
+
+ julLogger.setLevel(java.util.logging.Level.OFF);
+
+ if (log4jLogger.isEnabledFor(Level.FATAL))
+ julLogger.setLevel(java.util.logging.Level.SEVERE);
+
+ if (log4jLogger.isEnabledFor(Level.ERROR))
+ julLogger.setLevel(java.util.logging.Level.SEVERE);
+
+ if (log4jLogger.isEnabledFor(Level.WARN))
+ julLogger.setLevel(java.util.logging.Level.WARNING);
+
+ if (log4jLogger.isEnabledFor(Level.INFO))
+ julLogger.setLevel(java.util.logging.Level.INFO);
+
+ if (log4jLogger.isEnabledFor(Level.DEBUG))
+ julLogger.setLevel(java.util.logging.Level.FINE);
+
+ if (log4jLogger.isEnabledFor(Level.DEBUG))
+ julLogger.setLevel(java.util.logging.Level.FINEST);
+
+ if (log4jLogger.isEnabledFor(Level.ALL))
+ julLogger.setLevel(java.util.logging.Level.ALL);
+ }
+
+ /**
* If Log4J is being used, set a filter that converts JSF RI java.util.logger
* messages to Log4J messages.
*/
private void setLog4J()
{
Filter conversionFilter = new Log4JConversionFilter(logConfigMessages());
-
- java.util.logging.Logger.getLogger(Util.FACES_LOGGER)
- .setFilter(conversionFilter);
- java.util.logging.Logger.getLogger(Util.FACES_LOGGER + Util.APPLICATION_LOGGER)
- .setFilter(conversionFilter);
- java.util.logging.Logger.getLogger(Util.FACES_LOGGER + Util.CONFIG_LOGGER)
- .setFilter(conversionFilter);
- java.util.logging.Logger.getLogger(Util.FACES_LOGGER + Util.CONTEXT_LOGGER)
- .setFilter(conversionFilter);
- java.util.logging.Logger.getLogger(Util.FACES_LOGGER + Util.LIFECYCLE_LOGGER)
- .setFilter(conversionFilter);
- java.util.logging.Logger.getLogger(Util.FACES_LOGGER + Util.RENDERKIT_LOGGER)
- .setFilter(conversionFilter);
- java.util.logging.Logger.getLogger(Util.FACES_LOGGER + Util.TAGLIB_LOGGER)
- .setFilter(conversionFilter);
+
+ java.util.logging.Logger julLogger;
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER);
+ setLevel(julLogger);
+ julLogger.setFilter(conversionFilter);
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.APPLICATION_LOGGER);
+ setLevel(julLogger);
+ julLogger.setFilter(conversionFilter);
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.CONFIG_LOGGER);
+ setLevel(julLogger);
+ julLogger.setFilter(conversionFilter);
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.CONTEXT_LOGGER);
+ setLevel(julLogger);
+ julLogger.setFilter(conversionFilter);
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.LIFECYCLE_LOGGER);
+ setLevel(julLogger);
+ julLogger.setFilter(conversionFilter);
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.RENDERKIT_LOGGER);
+ setLevel(julLogger);
+ julLogger.setFilter(conversionFilter);
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.TIMING_LOGGER);
+ setLevel(julLogger);
+ julLogger.setFilter(conversionFilter);
+
+ julLogger = Util.getLogger(Util.FACES_LOGGER + Util.TAGLIB_LOGGER);
+ setLevel(julLogger);
+ julLogger.setFilter(conversionFilter);
}
// should we log the configuration messages?
Modified: trunk/tomcat/src/main/org/jboss/web/jsf/integration/config/Log4JConversionFilter.java
===================================================================
--- trunk/tomcat/src/main/org/jboss/web/jsf/integration/config/Log4JConversionFilter.java 2007-06-26 12:17:55 UTC (rev 63639)
+++ trunk/tomcat/src/main/org/jboss/web/jsf/integration/config/Log4JConversionFilter.java 2007-06-26 14:17:45 UTC (rev 63640)
@@ -1,6 +1,6 @@
/*
* JBoss, Home of Professional Open Source
- * Copyright 2006, JBoss Inc., and individual contributors as indicated
+ * Copyright 2007, JBoss Inc., and individual contributors as indicated
* by the @authors tag. See the copyright.txt in the distribution for a
* full listing of individual contributors.
*
@@ -92,23 +92,37 @@
Object message = formatter.formatMessage(record);
Throwable throwable = record.getThrown();
- if (loggedLevel == Level.INFO.intValue())
+ if (loggedLevel == Level.SEVERE.intValue())
{
- logger.info(message, throwable);
- return;
+ logger.error(message, throwable);
+ return;
}
-
- if (loggedLevel == Level.WARNING.intValue())
+
+ if (loggedLevel == Level.WARNING.intValue())
{
- logger.warn(message, throwable);
- return;
+ logger.warn(message, throwable);
+ return;
}
+
+ if ((loggedLevel == Level.INFO.intValue()) ||
+ (loggedLevel == Level.CONFIG.intValue()))
+ {
+ logger.info(message, throwable);
+ return;
+ }
- if (loggedLevel == Level.SEVERE.intValue())
+ if (loggedLevel == Level.FINE.intValue())
{
- logger.fatal(message, throwable);
- return;
+ logger.debug(message, throwable);
+ return;
}
+
+ if ((loggedLevel == Level.FINER.intValue()) ||
+ (loggedLevel == Level.FINEST.intValue()))
+ {
+ logger.trace(message, throwable);
+ return;
+ }
logger.info(message, throwable);
}
@@ -118,24 +132,38 @@
int loggedLevel = record.getLevel().intValue();
Object message = formatter.formatMessage(record);
- if (loggedLevel == Level.INFO.intValue())
+ if (loggedLevel == Level.SEVERE.intValue())
{
- logger.info(message);
- return;
+ logger.error(message);
+ return;
}
-
- if (loggedLevel == Level.WARNING.intValue())
+
+ if (loggedLevel == Level.WARNING.intValue())
{
- logger.warn(message);
- return;
+ logger.warn(message);
+ return;
}
+
+ if ((loggedLevel == Level.INFO.intValue()) ||
+ (loggedLevel == Level.CONFIG.intValue()))
+ {
+ logger.info(message);
+ return;
+ }
- if (loggedLevel == Level.SEVERE.intValue())
+ if (loggedLevel == Level.FINE.intValue())
{
- logger.fatal(message);
- return;
+ logger.debug(message);
+ return;
}
-
+
+ if ((loggedLevel == Level.FINER.intValue()) ||
+ (loggedLevel == Level.FINEST.intValue()))
+ {
+ logger.trace(message);
+ return;
+ }
+
logger.info(message);
}
More information about the jboss-cvs-commits
mailing list