You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@myfaces.apache.org by id...@apache.org on 2007/04/12 23:50:40 UTC

svn commit: r528247 - in /myfaces/tobago/trunk: ./ core/src/main/java/org/apache/myfaces/tobago/servlet/ core/src/main/java/org/apache/myfaces/tobago/taglib/component/ example/addressbook/ example/addressbook/src/main/java/org/apache/myfaces/tobago/exa...

Author: idus
Date: Thu Apr 12 14:50:38 2007
New Revision: 528247

URL: http://svn.apache.org/viewvc?view=rev&rev=528247
Log:
added preliminary configuration page for Log4j

Added:
    myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/Log4jUtils.java
    myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/AppenderModel.java
    myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/CategoryModel.java
    myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/LoggingController.java
    myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/logging.jsp
    myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/memory.jsp
Modified:
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/servlet/ResourceServlet.java
    myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SheetTagDeclaration.java
    myfaces/tobago/trunk/example/addressbook/pom.xml
    myfaces/tobago/trunk/example/addressbook/src/main/webapp/WEB-INF/faces-config.xml
    myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/admin.jsp
    myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/list.jsp
    myfaces/tobago/trunk/pom.xml

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/servlet/ResourceServlet.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/servlet/ResourceServlet.java?view=diff&rev=528247&r1=528246&r2=528247
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/servlet/ResourceServlet.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/servlet/ResourceServlet.java Thu Apr 12 14:50:38 2007
@@ -31,24 +31,22 @@
 import java.util.Date;
 
 /**
- *
- *
- * <p><blockquote><pre>
-  &lt;servlet&gt;
-    &lt;servlet-name&gt;ResourceServlet&lt;/servlet-name&gt;
-    &lt;servlet-class&gt;org.apache.myfaces.tobago.webapp.TobagoMultipartFormdataFilter&lt;/servlet-class&gt;
-    &lt;init-param&gt;
-      &lt;description&gt;The value for the expires header in seconds.
-             Default is no expires header.&lt;/description&gt;
-      &lt;param-name&gt;expires&lt;/param-name&gt;
-      &lt;param-value&gt;14400&lt;/param-value&gt;
-    &lt;/init-param&gt;
-  &lt;/servlet&gt;
-  &lt;servlet-mapping&gt;
-    &lt;servlet-name&gt;ResourceServlet&lt;/servlet-name&gt;
-    &lt;url-pattern&gt;/org/apache/myfaces/tobago/renderkit/*&lt;/url-pattern&gt;
-  &lt;/servlet-mapping&gt;
- </pre></blockquote><p>
+ * <p><pre>
+ * &lt;servlet&gt;
+ *   &lt;servlet-name&gt;ResourceServlet&lt;/servlet-name&gt;
+ *   &lt;servlet-class&gt;org.apache.myfaces.tobago.servlet.ResourceServlet&lt;/servlet-class&gt;
+ *   &lt;init-param&gt;
+ *     &lt;description&gt;The value for the expires header in seconds.
+ *            Default is no expires header.&lt;/description&gt;
+ *     &lt;param-name&gt;expires&lt;/param-name&gt;
+ *     &lt;param-value&gt;14400&lt;/param-value&gt;
+ *   &lt;/init-param&gt;
+ * &lt;/servlet&gt;
+ * &lt;servlet-mapping&gt;
+ *   &lt;servlet-name&gt;ResourceServlet&lt;/servlet-name&gt;
+ *   &lt;url-pattern&gt;/org/apache/myfaces/tobago/renderkit/*&lt;/url-pattern&gt;
+ * &lt;/servlet-mapping&gt;
+ *</pre><p>
  *
  * @since 1.0.7
  *        <p/>

Modified: myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SheetTagDeclaration.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SheetTagDeclaration.java?view=diff&rev=528247&r1=528246&r2=528247
==============================================================================
--- myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SheetTagDeclaration.java (original)
+++ myfaces/tobago/trunk/core/src/main/java/org/apache/myfaces/tobago/taglib/component/SheetTagDeclaration.java Thu Apr 12 14:50:38 2007
@@ -54,7 +54,7 @@
   void setColumns(String columns);
 
   /**
-   * Flag indicating the header should rendered.
+   * Flag indicating the header should be rendered.
    */
   @TagAttribute
   @UIComponentTagAttribute(type = "java.lang.Boolean", defaultValue = "true")

Modified: myfaces/tobago/trunk/example/addressbook/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/addressbook/pom.xml?view=diff&rev=528247&r1=528246&r2=528247
==============================================================================
--- myfaces/tobago/trunk/example/addressbook/pom.xml (original)
+++ myfaces/tobago/trunk/example/addressbook/pom.xml Thu Apr 12 14:50:38 2007
@@ -26,13 +26,6 @@
         <artifactId>maven-jetty-plugin</artifactId>
         <configuration>
           <contextPath>/</contextPath>
-          <!--scanIntervalSeconds>5</scanIntervalSeconds-->
-          <systemProperties>
-            <systemProperty>
-              <name>org.apache.commons.logging.Log</name>
-              <value>org.apache.commons.logging.impl.SimpleLog</value>
-            </systemProperty>
-          </systemProperties>
           <userRealms>
             <userRealm implementation="org.mortbay.jetty.security.HashUserRealm">
               <name>addressbook-realm</name>
@@ -193,8 +186,7 @@
     <dependency>
       <groupId>log4j</groupId>
       <artifactId>log4j</artifactId>
-      <version>1.2.14</version>
-      <scope>compile</scope>
+      <scope>compile</scope>      
     </dependency>
     <dependency>
       <groupId>javax.servlet</groupId>

Added: myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/Log4jUtils.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/Log4jUtils.java?view=auto&rev=528247
==============================================================================
--- myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/Log4jUtils.java (added)
+++ myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/Log4jUtils.java Thu Apr 12 14:50:38 2007
@@ -0,0 +1,66 @@
+package org.apache.myfaces.tobago.example.addressbook;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.FileAppender;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Logger;
+import org.apache.log4j.spi.LoggerRepository;
+
+import java.util.Enumeration;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * User: idus
+ * Date: 12.04.2007
+ * Time: 22:41:11
+ */
+public class Log4jUtils {
+
+  public static Set<Appender> getAllAppenders() {
+    return getAllAppenders(LogManager.getLoggerRepository());
+  }
+
+  /**
+   * @return all appenders currently in use
+   */
+  public static Set<Appender> getAllAppenders(LoggerRepository repository) {
+      Enumeration loggers = repository.getCurrentLoggers();
+      Set<Appender> allAppenders = getAllAppenders(loggers);
+      addAppenders(repository.getRootLogger(), allAppenders);
+      return allAppenders;
+  }
+
+  public static Set<Appender> getAllAppenders(Enumeration loggers) {
+      Set<Appender> allAppenders = new HashSet<Appender>();
+      while (loggers.hasMoreElements()) {
+          Logger logger = (Logger) loggers.nextElement();
+          addAppenders(logger, allAppenders);
+      }
+      return allAppenders;
+  }
+
+  private static void addAppenders(Logger logger, Set<Appender> allAppenders) {
+      Enumeration appenders = logger.getAllAppenders();
+      while (appenders.hasMoreElements()) {
+          Appender appender = (Appender) appenders.nextElement();
+          allAppenders.add(appender);
+      }
+  }
+
+  public static FileAppender getFileAppender(String name, LoggerRepository repository) {
+      Set allAppenders = getAllAppenders(repository);
+    for (Object allAppender : allAppenders) {
+      Appender appender = (Appender) allAppender;
+      if (appender instanceof FileAppender) {
+        FileAppender fileAppender = (FileAppender) appender;
+        if (fileAppender.getName() != null
+            && fileAppender.getName().equals(name)) {
+          return fileAppender;
+        }
+      }
+    }
+    return null;
+  }
+
+}

Added: myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/AppenderModel.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/AppenderModel.java?view=auto&rev=528247
==============================================================================
--- myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/AppenderModel.java (added)
+++ myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/AppenderModel.java Thu Apr 12 14:50:38 2007
@@ -0,0 +1,58 @@
+/*
+ * 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.myfaces.tobago.example.addressbook.web;
+
+import org.apache.log4j.Appender;
+import org.apache.log4j.FileAppender;
+import org.apache.log4j.PatternLayout;
+
+/**
+ * User: idus
+ * Date: 12.04.2007
+ * Time: 22:39:46
+ */
+public class AppenderModel {
+
+  Appender appender;
+
+  public AppenderModel(Appender appender) {
+    this.appender = appender;
+  }
+
+  public String getClassName() {
+    return appender.getClass().getSimpleName();
+  }
+
+  public String getName() {
+    return appender.getName();
+  }
+
+  public String getFile() {
+    return (appender instanceof FileAppender)
+        ? ((FileAppender) appender).getFile() : "";
+  }
+
+  public String getLayout() {
+    org.apache.log4j.Layout layout = appender.getLayout();
+    if (layout instanceof PatternLayout) {
+      PatternLayout patternLayout = (PatternLayout) layout;
+      return patternLayout.getConversionPattern();
+    }
+    return String.valueOf(layout);
+  }
+
+}

Added: myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/CategoryModel.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/CategoryModel.java?view=auto&rev=528247
==============================================================================
--- myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/CategoryModel.java (added)
+++ myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/CategoryModel.java Thu Apr 12 14:50:38 2007
@@ -0,0 +1,71 @@
+/*
+ * 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.myfaces.tobago.example.addressbook.web;
+
+import org.apache.log4j.Logger;
+
+/**
+ * User: idus
+ * Date: 12.04.2007
+ * Time: 22:40:06
+ */
+public class CategoryModel {
+
+  Logger logger;
+  private String level;
+
+  public CategoryModel(Logger logger) {
+      this.logger = logger;
+  }
+
+  public Logger getLogger() {
+      return logger;
+  }
+
+  public String getName() {
+      return logger.getName();
+  }
+
+  public boolean isInherited() {
+      return logger.getLevel() == null;
+  }
+
+  public boolean isLevelUpdated() {
+      return level != null;
+  }
+
+  public String getLevel() {
+      if (level == null) {
+          return getLevelFromLogger();
+      } else {
+          return level;
+      }
+  }
+
+  private String getLevelFromLogger() {
+      return isInherited()
+              ? logger.getEffectiveLevel().toString()
+              : logger.getLevel().toString();
+  }
+
+  public void setLevel(String level) {
+      if (!getLevel().equals(level)) {
+          this.level = level;
+      }
+  }
+
+}

Added: myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/LoggingController.java
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/LoggingController.java?view=auto&rev=528247
==============================================================================
--- myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/LoggingController.java (added)
+++ myfaces/tobago/trunk/example/addressbook/src/main/java/org/apache/myfaces/tobago/example/addressbook/web/LoggingController.java Thu Apr 12 14:50:38 2007
@@ -0,0 +1,219 @@
+/*
+ * 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.myfaces.tobago.example.addressbook.web;
+
+import org.apache.log4j.Logger;
+import org.apache.log4j.Level;
+import org.apache.log4j.LogManager;
+import org.apache.log4j.Appender;
+import org.apache.myfaces.tobago.model.SelectItem;
+import org.apache.myfaces.tobago.component.UIInput;
+import org.apache.myfaces.tobago.example.addressbook.Log4jUtils;
+import org.apache.commons.io.IOUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import javax.faces.component.UIParameter;
+import javax.faces.context.FacesContext;
+import javax.servlet.ServletResponse;
+import java.util.List;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Set;
+import java.io.IOException;
+import java.io.FileInputStream;
+
+/**
+ * User: idus
+ * Date: 12.04.2007
+ * Time: 22:39:05
+ */
+public class LoggingController {
+
+  private static final Log LOG = LogFactory.getLog(LoggingController.class);
+
+  private List<AppenderModel> appenders = new ArrayList<AppenderModel>();
+  private List<CategoryModel> categories = new ArrayList<CategoryModel>();
+  private List<SelectItem> levels = new ArrayList<SelectItem>();
+  private String category;
+  private UIInput categoryControl;
+  private String level;
+  private UIParameter currentCategory;
+  private UIParameter currentAppender;
+
+  private int catergoriesFirst;
+  private int catergoriesRows;
+
+  public LoggingController() {
+      LOG.debug("initializing...");
+      catergoriesRows = 8;
+      initAppenders();
+      initCategories();
+
+      levels.add(new SelectItem(Level.FATAL.toString()));
+      levels.add(new SelectItem(Level.ERROR.toString()));
+      levels.add(new SelectItem(Level.WARN.toString()));
+      levels.add(new SelectItem(Level.INFO.toString()));
+      levels.add(new SelectItem(Level.DEBUG.toString()));
+      levels.add(new SelectItem(Level.TRACE.toString()));
+  }
+
+  private void initCategories() {
+      categories.clear();
+      Enumeration enumeration = LogManager.getCurrentLoggers();
+      while (enumeration.hasMoreElements()) {
+          Logger logger = (Logger) enumeration.nextElement();
+          categories.add(new CategoryModel(logger));
+      }
+      categories.add(new CategoryModel(LogManager.getRootLogger()));
+
+      Collections.sort(categories, new Comparator<CategoryModel>() {
+          public int compare(CategoryModel c1, CategoryModel c2) {
+              Logger l1 = c1.getLogger();
+              Logger l2 = c2.getLogger();
+              return l1.getName().compareTo(l2.getName());
+          }
+      });
+  }
+
+  private void initAppenders() {
+      appenders.clear();
+      Set<Appender> allAppenders = Log4jUtils.getAllAppenders();
+      for (Appender appender : allAppenders) {
+          appenders.add(new AppenderModel(appender));
+      }
+  }
+
+  public String downloadLogFile() throws IOException {
+      AppenderModel appender = (AppenderModel) currentAppender.getValue();
+      String fileName = appender.getFile();
+      FileInputStream stream = new FileInputStream(fileName);
+      FacesContext facesContext = FacesContext.getCurrentInstance();
+      ServletResponse response = (ServletResponse) facesContext.getExternalContext().getResponse();
+      response.setContentType("text/plain");
+      IOUtils.copy(stream, response.getOutputStream());
+      facesContext.responseComplete();
+      return null;
+  }
+
+  public String updateCategories() {
+      boolean update = false;
+      for (CategoryModel category : categories) {
+          if (category.isLevelUpdated()) {
+              Logger logger = getLogger(category.getName());
+              logger.setLevel(Level.toLevel(category.getLevel()));
+              update = true;
+          }
+      }
+      if (update) {
+          initCategories();
+      }
+      return null;
+  }
+
+  public String addCategory() {
+      LOG.debug("debug");
+      LOG.trace("trace");
+      Logger logger = getLogger(category);
+      logger.setLevel(Level.toLevel(level));
+      initCategories();
+      return null;
+  }
+
+  public String selectCategory() {
+      category = ((CategoryModel) currentCategory.getValue()).getName();
+      categoryControl.setSubmittedValue(category);
+      return null;
+  }
+
+  private Logger getLogger(String category) {
+      return ("root".equals(category))
+              ? LogManager.getRootLogger()
+              : LogManager.getLogger(category);
+  }
+
+  public List<AppenderModel> getAppenders() {
+      return appenders;
+  }
+
+  public List<CategoryModel> getCategories() {
+      return categories;
+  }
+
+  public List<SelectItem> getLevels() {
+      return levels;
+  }
+
+  public String getCategory() {
+      return category;
+  }
+
+  public void setCategory(String category) {
+      this.category = category;
+  }
+
+  public UIInput getCategoryControl() {
+      return categoryControl;
+  }
+
+  public void setCategoryControl(UIInput categoryControl) {
+      this.categoryControl = categoryControl;
+  }
+
+  public String getLevel() {
+      return level;
+  }
+
+  public void setLevel(String level) {
+      this.level = level;
+  }
+
+  public UIParameter getCurrentCategory() {
+      return currentCategory;
+  }
+
+  public void setCurrentCategory(UIParameter currentCategory) {
+      this.currentCategory = currentCategory;
+  }
+
+  public int getCatergoriesFirst() {
+      return catergoriesFirst;
+  }
+
+  public void setCatergoriesFirst(int catergoriesFirst) {
+      this.catergoriesFirst = catergoriesFirst;
+  }
+
+  public int getCatergoriesRows() {
+      return catergoriesRows;
+  }
+
+  public void setCatergoriesRows(int catergoriesRows) {
+      this.catergoriesRows = catergoriesRows;
+  }
+
+  public UIParameter getCurrentAppender() {
+      return currentAppender;
+  }
+
+  public void setCurrentAppender(UIParameter currentAppender) {
+      this.currentAppender = currentAppender;
+  }
+
+}

Modified: myfaces/tobago/trunk/example/addressbook/src/main/webapp/WEB-INF/faces-config.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/addressbook/src/main/webapp/WEB-INF/faces-config.xml?view=diff&rev=528247&r1=528246&r2=528247
==============================================================================
--- myfaces/tobago/trunk/example/addressbook/src/main/webapp/WEB-INF/faces-config.xml (original)
+++ myfaces/tobago/trunk/example/addressbook/src/main/webapp/WEB-INF/faces-config.xml Thu Apr 12 14:50:38 2007
@@ -66,6 +66,12 @@
   </managed-bean>
 
   <managed-bean>
+      <managed-bean-name>logging</managed-bean-name>
+      <managed-bean-class>org.apache.myfaces.tobago.example.addressbook.web.LoggingController</managed-bean-class>
+      <managed-bean-scope>session</managed-bean-scope>
+  </managed-bean>
+
+  <managed-bean>
     <managed-bean-name>countries</managed-bean-name>
     <managed-bean-class>org.apache.myfaces.tobago.example.addressbook.web.Countries</managed-bean-class>
     <managed-bean-scope>session</managed-bean-scope>

Modified: myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/admin.jsp
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/admin.jsp?view=diff&rev=528247&r1=528246&r2=528247
==============================================================================
--- myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/admin.jsp (original)
+++ myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/admin.jsp Thu Apr 12 14:50:38 2007
@@ -18,25 +18,30 @@
 <%@ taglib uri="http://myfaces.apache.org/tobago/component" prefix="tc" %>
 <%@ taglib uri="http://myfaces.apache.org/tobago/extension" prefix="tx" %>
 <%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+<%@ page contentType="text/html;charset=UTF-8" language="java" %>
 
 <f:view locale="#{controller.language}">
   <tc:loadBundle basename="resource" var="bundle" />
 
-  <tc:page label="#{bundle.editorTitle}" state="#{layout}" width="#{layout.width}" height="#{layout.height}">
+  <tc:page label="#{bundle.editorTitle}" state="#{layout}" width="#{layout.width}" height="#{layout.height}" id="page">
+    <f:facet name="layout">
+      <tc:gridLayout margin="10px" rows="*;fixed"/>
+    </f:facet>
 
+    <tc:tabGroup>
+      <tc:tab label="Memory">
+        <jsp:include page="memory.jsp"/>
+      </tc:tab>
+      <tc:tab label="Logging">
+        <jsp:include page="logging.jsp"/>
+      </tc:tab>
+    </tc:tabGroup>
     <tc:panel>
-      <f:facet name="reload">
-        <tc:reload frequency="5000" />
-      </f:facet>
       <f:facet name="layout">
-        <tc:gridLayout margin="10px" rows="fixed;fixed;1*" columns="300px;1* "/>
+        <tc:gridLayout columns="*;fixed"/>
       </f:facet>
-      <tc:label value="Memory:" />
-      <tc:cell/>
-      <tc:progress value="#{admin.memory}" />   
-      <tc:cell/>
-      <tc:label value="Current: #{admin.memory.value} kB Max: #{admin.memory.maximum} kB" />
       <tc:cell/>
+      <tc:button label="Back" action="list"/>
     </tc:panel>
   </tc:page>
 </f:view>

Added: myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/logging.jsp
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/logging.jsp?view=auto&rev=528247
==============================================================================
--- myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/logging.jsp (added)
+++ myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/logging.jsp Thu Apr 12 14:50:38 2007
@@ -0,0 +1,97 @@
+<%--
+ * 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.
+--%>
+
+<%@ taglib uri="http://myfaces.apache.org/tobago/component" prefix="tc" %>
+<%@ taglib uri="http://myfaces.apache.org/tobago/extension" prefix="tx" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<tc:panel>
+  <f:facet name="layout">
+    <tc:gridLayout rows="2*;3*;fixed" margin="10"/>
+  </f:facet>
+
+  <tc:box label="Appenders">
+    <tc:sheet columns="*;*;*;2*" var="appender" value="#{logging.appenders}">
+      <tc:column label="Class">
+        <tc:out value="#{appender.className}"/>
+      </tc:column>
+      <tc:column label="Name">
+        <tc:out value="#{appender.name}"/>
+      </tc:column>
+      <tc:column label="File">
+        <tc:link inline="true" action="#{logging.downloadLogFile}"
+                 target="_blank" rendered="#{! empty appender.file}">
+          <f:param value="#{appender}" binding="#{logging.currentAppender}"/>
+          <tc:out value="#{appender.file}"/>
+        </tc:link>
+      </tc:column>
+      <tc:column label="Layout">
+        <tc:out value="#{appender.layout}"/>
+      </tc:column>
+    </tc:sheet>
+  </tc:box>
+
+  <tc:box label="Categories">
+    <f:facet name="layout">
+      <tc:gridLayout rows="*;fixed"/>
+    </f:facet>
+    <tc:sheet columns="5*;25px;*" var="category"
+              value="#{logging.categories}" showDirectLinks="left" showPageRange="right"
+              first="#{logging.catergoriesFirst}" rows="#{logging.catergoriesRows}">
+      <tc:column label="Name" sortable="true">
+        <tc:link inline="true" action="#{logging.selectCategory}" immediate="true">
+          <f:param value="#{category}" binding="#{logging.currentCategory}"/>
+          <tc:out value="#{category.name}"/>
+          <tc:attribute name="renderedPartially" value=":page:addCategory"/>
+        </tc:link>
+      </tc:column>
+      <tc:column label="Inh" tip="Inherited" sortable="true">
+        <tc:selectBooleanCheckbox readonly="true" value="#{category.inherited}"/>
+      </tc:column>
+      <tc:column label="Level" sortable="true">
+        <tc:selectOneChoice value="#{category.level}">
+          <tc:selectItems value="#{logging.levels}"/>
+        </tc:selectOneChoice>
+      </tc:column>
+    </tc:sheet>
+    <tc:panel>
+      <f:facet name="layout">
+        <tc:gridLayout columns="*;fixed"/>
+      </f:facet>
+      <tc:cell/>
+      <tc:button label="Update" action="#{logging.updateCategories}"/>
+    </tc:panel>
+  </tc:box>
+
+  <tc:box label="Add Category" id="addCategory">
+    <f:facet name="layout">
+      <tc:gridLayout rows="fixed"/>
+    </f:facet>
+    <tc:panel>
+      <f:facet name="layout">
+        <tc:gridLayout columns="*;*;fixed"/>
+      </f:facet>
+      <tx:in label="Category" value="#{logging.category}"
+             binding="#{logging.categoryControl}"/>
+      <tx:selectOneChoice label="Level" value="#{logging.level}">
+        <tc:selectItems value="#{logging.levels}"/>
+      </tx:selectOneChoice>
+      <tc:button label="Set Level" action="#{logging.addCategory}"/>
+    </tc:panel>
+  </tc:box>
+
+</tc:panel>

Added: myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/memory.jsp
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/memory.jsp?view=auto&rev=528247
==============================================================================
--- myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/memory.jsp (added)
+++ myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/admin/memory.jsp Thu Apr 12 14:50:38 2007
@@ -0,0 +1,41 @@
+<%--
+ * 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.
+--%>
+
+<%@ taglib uri="http://myfaces.apache.org/tobago/component" prefix="tc" %>
+<%@ taglib uri="http://myfaces.apache.org/tobago/extension" prefix="tx" %>
+<%@ taglib uri="http://java.sun.com/jsf/core" prefix="f" %>
+
+<tc:panel>
+  <f:facet name="reload">
+    <tc:reload frequency="5000" />
+  </f:facet>
+  <f:facet name="layout">
+    <tc:gridLayout margin="10px" rows="fixed;fixed;fixed;*" columns="300px;*"/>
+  </f:facet>
+
+  <tc:label value="Memory:" />
+  <tc:cell/>
+
+  <tc:progress value="#{admin.memory}" />
+  <tc:cell/>
+
+  <tc:label value="Current: #{admin.memory.value} kB Max: #{admin.memory.maximum} kB" />
+  <tc:cell/>
+
+  <tc:cell spanX="2"/>
+
+</tc:panel>

Modified: myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/list.jsp
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/list.jsp?view=diff&rev=528247&r1=528246&r2=528247
==============================================================================
--- myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/list.jsp (original)
+++ myfaces/tobago/trunk/example/addressbook/src/main/webapp/application/list.jsp Thu Apr 12 14:50:38 2007
@@ -21,8 +21,20 @@
   <tc:loadBundle basename="resource" var="bundle"/>
 
   <tc:page label="#{bundle.listPageTitle}" state="#{layout}" width="#{layout.width}" height="#{layout.height}">
+    <f:facet name="menuBar">
+      <tc:menuBar id="menuBar">
+        <tc:menu label="File">
+          <tc:menuItem label="Logout" image="image/export.gif"/>
+        </tc:menu>
+        <tc:menu label="Help">
+          <tc:menuItem label="#{bundle.toolbarAbout}"
+                       action="alert('#{bundle.aboutMessage}')"
+                       type="script" image="image/org/tango-project/tango-icon-theme/16x16/apps/help-browser.png"/>
+        </tc:menu>
+      </tc:menuBar>
+    </f:facet>
 
-    <tc:panel>
+  <tc:panel>
       <f:facet name="layout">
         <tc:gridLayout margin="10px" rows="fixed;1*;20px"/>
       </f:facet>

Modified: myfaces/tobago/trunk/pom.xml
URL: http://svn.apache.org/viewvc/myfaces/tobago/trunk/pom.xml?view=diff&rev=528247&r1=528246&r2=528247
==============================================================================
--- myfaces/tobago/trunk/pom.xml (original)
+++ myfaces/tobago/trunk/pom.xml Thu Apr 12 14:50:38 2007
@@ -406,7 +406,7 @@
       <dependency>
         <groupId>log4j</groupId>
         <artifactId>log4j</artifactId>
-        <version>1.2.11</version>
+        <version>1.2.14</version>
       </dependency>
       <dependency>
         <groupId>junit</groupId>
@@ -603,15 +603,6 @@
           <groupId>org.mortbay.jetty</groupId>
           <artifactId>maven-jetty-plugin</artifactId>
           <version>6.1.2rc2</version>
-          <configuration>
-            <!--scanIntervalSeconds>5</scanIntervalSeconds-->
-            <systemProperties>
-              <systemProperty>
-                <name>org.apache.commons.logging.Log</name>
-                <value>org.apache.commons.logging.impl.SimpleLog</value>
-              </systemProperty>
-            </systemProperties>
-          </configuration>
         </plugin>
         <!--<plugin>
           <groupId>org.codehaus.mojo</groupId>