There is still debate on what we should do with M5.

-David

On Sep 20, 2005, at 12:54 PM, Donald Woods wrote:

Is there a reason this fix only went into trunk and not 1.0-M5?

Are we planning on recutting M5 once all the TCKs pass?


-Donald

--- [EMAIL PROTECTED] wrote:


Author: ammulder
Date: Mon Sep 19 21:55:54 2005
New Revision: 290359

URL: http://svn.apache.org/viewcvs?rev=290359&view=rev
Log:
Management API for web log (GERONIMO-1015)
 - Interface & helpers
 - Jetty Implementation (Tomcat maybe tomorrow)
 - Make access log search go faster
Don't blow up on weird Jetty manageable property type
  (treats the symptom for GERONIMO-1017)

Added:



geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyLogManager.java




geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyLogManagerImpl.java




geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyRequestLog.java




geronimo/trunk/modules/management/src/java/org/apache/geronimo/ management/geronimo/WebAccessLog.java

Modified:



geronimo/trunk/applications/console-core/src/java/org/apache/ geronimo/console/util/KernelManagementHelper.java




geronimo/trunk/applications/console-core/src/java/org/apache/ geronimo/console/util/ManagementHelper.java




geronimo/trunk/applications/console-standard/src/java/org/apache/ geronimo/console/logmanager/WebAccessLogViewerPortlet.java




geronimo/trunk/applications/console-standard/src/java/org/apache/ geronimo/console/util/PortletManager.java




geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/ view/webaccesslogmanager/view.jsp

    geronimo/trunk/modules/assembly/src/plan/j2ee-jetty-plan.xml



geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ JettyContainerImpl.java




geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ JettyManagerImpl.java




geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/NCSARequestLog.java




geronimo/trunk/modules/management/src/java/org/apache/geronimo/ management/geronimo/WebManager.java




geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/ logging/SystemLog.java




geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/ TomcatManagerImpl.java


Modified:


geronimo/trunk/applications/console-core/src/java/org/apache/ geronimo/console/util/KernelManagementHelper.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/applications/console- core/src/java/org/apache/geronimo/console/util/ KernelManagementHelper.java?rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

---


geronimo/trunk/applications/console-core/src/java/org/apache/ geronimo/console/util/KernelManagementHelper.java

(original)
+++


geronimo/trunk/applications/console-core/src/java/org/apache/ geronimo/console/util/KernelManagementHelper.java

Mon Sep 19 21:55:54 2005
@@ -21,17 +21,8 @@
 import java.util.List;
 import javax.management.ObjectName;
 import javax.management.MalformedObjectNameException;
-import org.apache.geronimo.management.geronimo.JVM;
-import org.apache.geronimo.management.geronimo.J2EEApplication;
-import org.apache.geronimo.management.geronimo.WebContainer;
-import org.apache.geronimo.management.geronimo.J2EEServer;
-import org.apache.geronimo.management.geronimo.WebConnector;
-import org.apache.geronimo.management.geronimo.EJBManager;
-import org.apache.geronimo.management.geronimo.EJBConnector;
-import org.apache.geronimo.management.geronimo.JMSManager;
-import org.apache.geronimo.management.geronimo.JMSBroker;
-import org.apache.geronimo.management.geronimo.JMSConnector;
-import org.apache.geronimo.management.geronimo.WebManager;
+
+import org.apache.geronimo.management.geronimo.*;
 import org.apache.geronimo.management.J2EEDomain;
 import org.apache.geronimo.management.J2EEDeployedObject;
 import org.apache.geronimo.management.AppClientModule;
@@ -258,6 +249,23 @@
             Object[] temp = pm.createProxies(names,
KernelManagementHelper.class.getClassLoader());
             result = new WebManager[temp.length];
             System.arraycopy(temp, 0, result, 0, temp.length);
+        } catch (Exception e) {
+            log.error("Unable to look up related GBean", e);
+        }
+        return result;
+    }
+
+    public WebAccessLog getWebAccessLog(WebManager manager,
WebContainer container) {
+        return getWebAccessLog(manager,
kernel.getObjectNameFor(container).getCanonicalName());
+    }
+
+    public WebAccessLog getWebAccessLog(WebManager manager, String
container) {
+        WebAccessLog result = null;
+        try {
+log.warn("Checking access log for
"+kernel.getObjectNameFor(manager)+" / "+container);
+            String name = manager.getAccessLog(container);
+            Object temp =
pm.createProxy(ObjectName.getInstance(name),
KernelManagementHelper.class.getClassLoader());
+            result = (WebAccessLog) temp;
         } catch (Exception e) {
             log.error("Unable to look up related GBean", e);
         }

Modified:


geronimo/trunk/applications/console-core/src/java/org/apache/ geronimo/console/util/ManagementHelper.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/applications/console- core/src/java/org/apache/geronimo/console/util/ ManagementHelper.java?rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

---


geronimo/trunk/applications/console-core/src/java/org/apache/ geronimo/console/util/ManagementHelper.java

(original)
+++


geronimo/trunk/applications/console-core/src/java/org/apache/ geronimo/console/util/ManagementHelper.java

Mon Sep 19 21:55:54 2005
@@ -34,17 +34,7 @@
 import org.apache.geronimo.management.EJB;
 import org.apache.geronimo.management.Servlet;
 import org.apache.geronimo.management.ResourceAdapter;
-import org.apache.geronimo.management.geronimo.JVM;
-import org.apache.geronimo.management.geronimo.J2EEApplication;
-import org.apache.geronimo.management.geronimo.J2EEServer;
-import org.apache.geronimo.management.geronimo.WebContainer;
-import org.apache.geronimo.management.geronimo.WebConnector;
-import org.apache.geronimo.management.geronimo.EJBConnector;
-import org.apache.geronimo.management.geronimo.EJBManager;
-import org.apache.geronimo.management.geronimo.JMSManager;
-import org.apache.geronimo.management.geronimo.JMSConnector;
-import org.apache.geronimo.management.geronimo.JMSBroker;
-import org.apache.geronimo.management.geronimo.WebManager;
+import org.apache.geronimo.management.geronimo.*;
 import org.apache.geronimo.system.logging.SystemLog;
 import org.apache.geronimo.pool.GeronimoExecutor;

@@ -75,6 +65,8 @@
     JMSResource[] getJMSResources(J2EEServer server);
     JVM[] getJavaVMs(J2EEServer server);
     WebManager[] getWebManagers(J2EEServer server);
+    WebAccessLog getWebAccessLog(WebManager manager, WebContainer
container);
+    WebAccessLog getWebAccessLog(WebManager manager, String
containerObjectName);
     WebContainer[] getWebContainers(WebManager manager);
     WebConnector[] getWebConnectorsForContainer(WebManager
manager, WebContainer container, String protocol);
     WebConnector[] getWebConnectorsForContainer(WebManager
manager, WebContainer container);

Modified:


geronimo/trunk/applications/console-standard/src/java/org/apache/ geronimo/console/logmanager/WebAccessLogViewerPortlet.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/applications/console- standard/src/java/org/apache/geronimo/console/logmanager/ WebAccessLogViewerPortlet.java? rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

---


geronimo/trunk/applications/console-standard/src/java/org/apache/ geronimo/console/logmanager/WebAccessLogViewerPortlet.java

(original)
+++


geronimo/trunk/applications/console-standard/src/java/org/apache/ geronimo/console/logmanager/WebAccessLogViewerPortlet.java

Mon Sep 19 21:55:54 2005
@@ -25,6 +25,7 @@
 import org.apache.geronimo.console.BasePortlet;
 import org.apache.geronimo.console.util.PortletManager;
 import org.apache.geronimo.management.geronimo.WebContainer;
+import org.apache.geronimo.management.geronimo.WebAccessLog;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;

@@ -46,112 +47,104 @@
             return;
         }

-        String server = getWebServerType(renderRequest);
-        if(server.equals(WEB_SERVER_JETTY)) {
+        String[] names =
PortletManager.getWebManagerNames(renderRequest);  //todo: handle
multiple
+        if (names != null) {
+            String managerName = names[0];  //todo: handle
multiple
+            String[] containers =
PortletManager.getWebContainerNames(renderRequest, managerName);
//todo: handle multiple
+            if (containers != null) {
+                String containerName = containers[0];  //todo:
handle multiple
+                WebAccessLog log =
PortletManager.getWebAccessLog(renderRequest, managerName,
containerName);

-            String action = renderRequest.getParameter("action");
-            if ("refresh".equals(action)) {
-                WebAccessLogHelper.refresh();
-            }
+                String action =
renderRequest.getParameter("action");
+                if ("refresh".equals(action)) {
+                    //todo: currently refreshes on every request;
that's pretty slow.
+                }

-            String startDate = (String)
renderRequest.getParameter("startDate");
-            String startMonth = (String)
renderRequest.getParameter("startMonth");
-            String startYear = (String)
renderRequest.getParameter("startYear");
-            String endDate = (String)
renderRequest.getParameter("endDate");
-            String endMonth = (String)
renderRequest.getParameter("endMonth");
-            String endYear = (String)
renderRequest.getParameter("endYear");
-
-            Calendar cal1 = Calendar.getInstance(), cal2 =
Calendar.getInstance();
-            // If no dates were passed we assume than no fields
were passed and just
-            // filter on the current date.
-            if (startDate == null || startMonth == null ||
startYear == null
-                    || endDate == null || endMonth == null ||
endYear == null) {
-                // just keep the month date and year
-                cal1.clear(Calendar.MILLISECOND);
-                cal1.clear(Calendar.MINUTE);
-                cal1.clear(Calendar.SECOND);
-                // Weird java bug. calling
calendar.clear(Calendar.HOUR) does not
-                // clear the hour but this works.
-                cal1.clear(Calendar.HOUR_OF_DAY);
-                cal1.clear(Calendar.HOUR);

-                renderRequest.setAttribute("logs",
WebAccessLogHelper.getLogsByDate(cal1.getTime()));
-                renderRequest.setAttribute("toDate",
cal1.getTime());
-            } else {
-                int sdt = Integer.parseInt(startDate),
-                    smnth = Integer.parseInt(startMonth),
-                    syr = Integer.parseInt(startYear),
-                    edt = Integer.parseInt(endDate),
-                    emnth = Integer.parseInt(endMonth),
-                    eyr = Integer.parseInt(endYear);
-                boolean ignoreDates =
renderRequest.getParameter("ignoreDates") == null;
-                String requestHost = (String)
renderRequest.getParameter("requestHost");
-                String authUser = (String)
renderRequest.getParameter("authUser");
-                String requestMethod = (String)
renderRequest.getParameter("requestMethod");
-                String requestedURI = (String)
renderRequest.getParameter("requestedURI");
-                if (ignoreDates) {
-                    cal1.clear();
-                    cal2.clear();
-                    cal1.set(Calendar.DATE, sdt);
-                    cal1.set(Calendar.MONTH, smnth);
-                    cal1.set(Calendar.YEAR, syr);
-                    cal2.set(Calendar.DATE, edt);
-                    cal2.set(Calendar.MONTH, emnth);
-                    cal2.set(Calendar.YEAR, eyr);
-                    renderRequest.setAttribute("logs",
WebAccessLogHelper
-                            .searchLogs(requestHost, authUser,
requestMethod,
-                                    requestedURI, cal1.getTime(),
cal2.getTime()));
+                //todo: completely revamp this argument processing
+                String startDate = (String)
renderRequest.getParameter("startDate");
+                String startMonth = (String)
renderRequest.getParameter("startMonth");
+                String startYear = (String)
renderRequest.getParameter("startYear");
+                String endDate = (String)
renderRequest.getParameter("endDate");
+                String endMonth = (String)
renderRequest.getParameter("endMonth");
+                String endYear = (String)
renderRequest.getParameter("endYear");
+
+                Calendar cal1 = Calendar.getInstance(), cal2 =
Calendar.getInstance();
+                // If not all dates were passed we assume than no
fields were passed and just
+                // filter on the current date.
+                if (startDate == null || startMonth == null ||
startYear == null
+                        || endDate == null || endMonth == null ||
endYear == null) {
+                    // just keep the month date and year
+                    cal1.set(Calendar.MILLISECOND, 0);
+                    cal1.set(Calendar.MINUTE, 0);
+                    cal1.set(Calendar.SECOND, 0);
+                    cal1.clear(Calendar.HOUR_OF_DAY);
+                    cal2.setTime(cal1.getTime());
+                    cal2.add(Calendar.DAY_OF_YEAR, 1);
+
+                    WebAccessLog.SearchResults matchingItems =
log.getMatchingItems(log.getLogFileNames()[0], //todo: handle
multiple
+                                                null, null, null,
null, cal1.getTime(), cal2.getTime(), null, null);
+                    renderRequest.setAttribute("logs",
matchingItems.getResults());
+                    renderRequest.setAttribute("logLength", new
Integer(matchingItems.getLineCount()));
                 } else {
-                    renderRequest.setAttribute("logs",
WebAccessLogHelper
-                            .searchLogs(requestHost, authUser,
requestMethod,
-                                    requestedURI));
+                    int sdt = Integer.parseInt(startDate),
+                        smnth = Integer.parseInt(startMonth),
+                        syr = Integer.parseInt(startYear),
+                        edt = Integer.parseInt(endDate),
+                        emnth = Integer.parseInt(endMonth),
+                        eyr = Integer.parseInt(endYear);
+                    boolean ignoreDates =
renderRequest.getParameter("ignoreDates") == null;
+                    String requestHost = (String)
renderRequest.getParameter("requestHost");
+                    String authUser = (String)
renderRequest.getParameter("authUser");
+                    String requestMethod = (String)
renderRequest.getParameter("requestMethod");
+                    String requestedURI = (String)
renderRequest.getParameter("requestedURI");
+                    if (ignoreDates) {
+                        cal1.clear();
+                        cal2.clear();
+                        cal1.set(Calendar.DATE, sdt);
+                        cal1.set(Calendar.MONTH, smnth);
+                        cal1.set(Calendar.YEAR, syr);
+                        cal2.set(Calendar.DATE, edt);
+                        cal2.set(Calendar.MONTH, emnth);
+                        cal2.set(Calendar.YEAR, eyr);
+                        WebAccessLog.SearchResults matchingItems =
log.getMatchingItems(log.getLogFileNames()[0], //todo: handle
multiple
+
requestHost, authUser, requestMethod, requestedURI, cal1.getTime(),
cal2.getTime(), null, null);
+                        renderRequest.setAttribute("logs",
matchingItems.getResults());
+                        renderRequest.setAttribute("logLength",
new Integer(matchingItems.getLineCount()));
+                    } else {
+                        WebAccessLog.SearchResults matchingItems =
log.getMatchingItems(log.getLogFileNames()[0], //todo: handle
multiple
+
requestHost, authUser, requestMethod, requestedURI, null, null,
null, null);
+                        renderRequest.setAttribute("logs",
matchingItems.getResults());
+                        renderRequest.setAttribute("logLength",
new Integer(matchingItems.getLineCount()));
+                    }
+                    renderRequest.setAttribute("ignoreDates", new
Boolean(ignoreDates));
+                    renderRequest.setAttribute("requestHost",
requestHost);
+                    renderRequest.setAttribute("authUser",
authUser);
+                    renderRequest.setAttribute("requestMethod",
requestMethod);
+                    renderRequest.setAttribute("requestedURI",
requestedURI);
+
                 }
                 renderRequest.setAttribute("toDate",
cal2.getTime());
-                renderRequest.setAttribute("ignoreDates", new
Boolean(ignoreDates));
-                renderRequest.setAttribute("requestHost",
requestHost);
-                renderRequest.setAttribute("authUser", authUser);
-                renderRequest.setAttribute("requestMethod",
requestMethod);
-                renderRequest.setAttribute("requestedURI",
requestedURI);
-
-            }
-            renderRequest.setAttribute("fromDate",
cal1.getTime());
-            searchView.include(renderRequest, renderRespose);
-        } else if(server.equals(WEB_SERVER_TOMCAT)) {
-            log.warn("Web server logs not handled for Tomcat
yet"); //todo -  Handle tomcat logs
-        } else {
-            log.warn("Web server logs not handled for server type
"+server);
-        }
-    }
-
-    protected final static String getWebServerType(PortletRequest
request) {
-        String[] names =
PortletManager.getWebManagerNames(request);  //todo: handle
multiple
-        if (names != null) {
-            String managerName = names[0];  //todo: handle
multiple
-            String[] containers =
PortletManager.getWebContainerNames(request, managerName);  //todo:
handle multiple
-            if (containers != null) {
-                String containerName = containers[0];  //todo:
handle multiple
-                WebContainer container =
PortletManager.getWebContainer(request, containerName);
-                return getWebServerType(container.getClass());
+                renderRequest.setAttribute("fromDate",
cal1.getTime());
+                searchView.include(renderRequest, renderRespose);
             } else {
-                log.error("No web containers for manager
"+managerName);
+                log.error("No web containers found");
             }
         } else {
-            log.error("No web managers present in server
environment");
+            log.error("No web managers found");
         }
-        return WEB_SERVER_GENERIC;
     }

     public void init(PortletConfig portletConfig) throws
PortletException {
         PortletContext pc = portletConfig.getPortletContext();
-        searchView = pc
-


.getRequestDispatcher("/WEB-INF/view/webaccesslogmanager/view.jsp");

-        helpView = pc
-


.getRequestDispatcher("/WEB-INF/view/webaccesslogmanager/help.jsp");

+        searchView =


pc.getRequestDispatcher("/WEB-INF/view/webaccesslogmanager/view.jsp");

+        helpView =


pc.getRequestDispatcher("/WEB-INF/view/webaccesslogmanager/help.jsp");

         super.init(portletConfig);
     }

     public void processAction(ActionRequest actionRequest,
             ActionResponse actionResponse) throws
PortletException, IOException {
+        //todo: according to portlet spec, all forms should submit
to Action not Render
     }

 }

Modified:


geronimo/trunk/applications/console-standard/src/java/org/apache/ geronimo/console/util/PortletManager.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/applications/console- standard/src/java/org/apache/geronimo/console/util/ PortletManager.java?rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

---


geronimo/trunk/applications/console-standard/src/java/org/apache/ geronimo/console/util/PortletManager.java

(original)
+++


geronimo/trunk/applications/console-standard/src/java/org/apache/ geronimo/console/util/PortletManager.java

Mon Sep 19 21:55:54 2005
@@ -25,15 +25,7 @@
 import org.apache.geronimo.kernel.Kernel;
 import org.apache.geronimo.kernel.proxy.GeronimoManagedBean;
 import org.apache.geronimo.management.J2EEDomain;
-import org.apache.geronimo.management.geronimo.JVM;
-import org.apache.geronimo.management.geronimo.J2EEServer;
-import org.apache.geronimo.management.geronimo.WebContainer;
-import org.apache.geronimo.management.geronimo.WebConnector;
-import org.apache.geronimo.management.geronimo.EJBManager;
-import org.apache.geronimo.management.geronimo.JMSManager;
-import org.apache.geronimo.management.geronimo.JMSConnector;
-import org.apache.geronimo.management.geronimo.WebManager;
-import org.apache.geronimo.management.geronimo.JMSBroker;
+import org.apache.geronimo.management.geronimo.*;
 import org.apache.geronimo.system.logging.SystemLog;
 import org.apache.geronimo.pool.GeronimoExecutor;
 import org.apache.commons.logging.Log;
@@ -132,6 +124,12 @@
         ManagementHelper helper = getManagementHelper(request);
         WebManager manager = (WebManager)
helper.getObject(managerObjectName);
         return manager.getContainers();
+    }
+
+    public static WebAccessLog getWebAccessLog(PortletRequest
request, String managerObjectName, String containerObjectName) {
+        ManagementHelper helper = getManagementHelper(request);
+        WebManager manager = (WebManager)
helper.getObject(managerObjectName);
+        return helper.getWebAccessLog(manager,
containerObjectName);
     }

     public static WebContainer getWebContainer(PortletRequest
request, String containerObjectName) {

Modified:


geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/ view/webaccesslogmanager/view.jsp

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/applications/console- standard/src/webapp/WEB-INF/view/webaccesslogmanager/view.jsp? rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

---


geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/ view/webaccesslogmanager/view.jsp

(original)
+++


geronimo/trunk/applications/console-standard/src/webapp/WEB-INF/ view/webaccesslogmanager/view.jsp

Mon Sep 19 21:55:54 2005
@@ -148,15 +148,15 @@
         </tr>
     <c:forEach var="line" items="${logs}">
         <tr>
-            <td class="Smaller">
-            ${line}
+            <td class="Smaller">
+${line.lineNumber}&nbsp;${line.lineContent}
             </td>
         </tr>
     </c:forEach>
     </table>
 </c:when>
 <c:otherwise>
- No logs found.
+ No log entries found.
 </c:otherwise>
 </c:choose>
 </td>

Modified:
geronimo/trunk/modules/assembly/src/plan/j2ee-jetty-plan.xml
URL:


http://svn.apache.org/viewcvs/geronimo/trunk/modules/assembly/src/ plan/j2ee-jetty-plan.xml?rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

--- geronimo/trunk/modules/assembly/src/plan/j2ee-jetty-plan.xml
(original)
+++ geronimo/trunk/modules/assembly/src/plan/j2ee-jetty-plan.xml
Mon Sep 19 21:55:54 2005
@@ -31,10 +31,21 @@

<uri>geronimo/jars/geronimo-jetty-${geronimo_version}.jar</uri>
     </dependency>

-    <!-- david jencks is not convinced that this gbean should be
in this plan and thinks it might
-    belong in the console plan -->
-    <gbean name="JettyWebManager"
class="org.apache.geronimo.jetty.JettyManagerImpl">
+    <!-- david jencks is not convinced that these 2 gbeans should
be in this
+         plan and thinks they might belong in the console plan.
Aaron thinks
+         they definitely don't belong in the console plan, but
could go into
+         a management layer plan. -->
+    <gbean name="JettyWebManager"
class="org.apache.geronimo.jetty.JettyManagerImpl"/>
+
+    <gbean name="JettyAccessLogManager"
class="org.apache.geronimo.jetty.requestlog.JettyLogManagerImpl">
+        <references name="LogGBeans">
+            <pattern>
+                <!-- This is lame and should be replaced by an
interface reference -->
+
<gbean-name>geronimo.server:name=JettyRequestLog,*</gbean-name>
+            </pattern>
+        </references>
     </gbean>
+

     <!-- default WAR container using Jetty -->
     <gbean name="JettyWebContainer"
class="org.apache.geronimo.jetty.JettyContainerImpl">

Modified:


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ JettyContainerImpl.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty/src/java/ org/apache/geronimo/jetty/JettyContainerImpl.java? rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

---


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ JettyContainerImpl.java

(original)
+++


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ JettyContainerImpl.java

Mon Sep 19 21:55:54 2005
@@ -196,7 +196,7 @@
         infoBuilder.addAttribute("requestsDurationMax", Long.TYPE,
false);
         infoBuilder.addOperation("resetStatistics");

-        infoBuilder.addAttribute("requestLog", RequestLog.class,
false);
+        infoBuilder.addAttribute("requestLog", RequestLog.class,
false, false);

         infoBuilder.addOperation("addListener", new
Class[]{HttpListener.class});
         infoBuilder.addOperation("removeListener", new
Class[]{HttpListener.class});

Modified:


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ JettyManagerImpl.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty/src/java/ org/apache/geronimo/jetty/JettyManagerImpl.java? rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

---


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ JettyManagerImpl.java

(original)
+++


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ JettyManagerImpl.java

Mon Sep 19 21:55:54 2005
@@ -34,6 +34,7 @@
 import org.apache.geronimo.jetty.connector.HTTPSConnector;
 import org.apache.geronimo.jetty.connector.AJP13Connector;
 import org.apache.geronimo.jetty.connector.JettyConnector;
+import org.apache.geronimo.jetty.requestlog.JettyLogManager;
 import org.apache.geronimo.system.serverinfo.ServerInfo;
 import org.apache.geronimo.j2ee.management.impl.Util;
 import org.apache.geronimo.j2ee.j2eeobjectnames.NameFactory;
@@ -174,6 +175,17 @@
             }
         }
         return (String[]) result.toArray(new
String[result.size()]);
+    }
+
+    public String getAccessLog(String containerObjectName) {
+        GBeanQuery query = new GBeanQuery(null,
JettyLogManager.class.getName());
+        Set names = kernel.listGBeans(query);
+        if(names.size() == 0) {
+            return null;
+        } else if(names.size() > 1) {
+            throw new IllegalStateException("Should not be more
than one Jetty access log manager");
+        }
+        return
((ObjectName)names.iterator().next()).getCanonicalName();
     }

     /**

Added:


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyLogManager.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty/src/java/ org/apache/geronimo/jetty/requestlog/JettyLogManager.java? rev=290359&view=auto



====================================================================== ========

---


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyLogManager.java

(added)
+++


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyLogManager.java

Mon Sep 19 21:55:54 2005
@@ -0,0 +1,27 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.jetty.requestlog;
+
+import org.apache.geronimo.management.geronimo.WebAccessLog;
+
+/**
+ * Token interface to distinguish Jetty implementations.
+ *
+ * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue,
14 Sep 2004) $
+ */
+public interface JettyLogManager extends WebAccessLog {
+}

Added:


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyLogManagerImpl.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty/src/java/ org/apache/geronimo/jetty/requestlog/JettyLogManagerImpl.java? rev=290359&view=auto



====================================================================== ========

---


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyLogManagerImpl.java

(added)
+++


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyLogManagerImpl.java

Mon Sep 19 21:55:54 2005
@@ -0,0 +1,216 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.jetty.requestlog;
+
+import org.apache.geronimo.gbean.GBeanInfo;
+import org.apache.geronimo.gbean.GBeanInfoBuilder;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import java.util.*;
+import java.util.regex.Pattern;
+import java.util.regex.Matcher;
+import java.io.File;
+import java.io.RandomAccessFile;
+import java.nio.channels.FileChannel;
+import java.nio.MappedByteBuffer;
+import java.nio.CharBuffer;
+import java.nio.charset.Charset;
+import java.text.SimpleDateFormat;
+import java.text.ParseException;
+
+/**
+ * Jetty implementation of the WebAccessLog management interface.
+ *
+ * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue,
14 Sep 2004) $
+ */
+public class JettyLogManagerImpl implements JettyLogManager {
+    private final static Log log =
LogFactory.getLog(JettyLogManagerImpl.class);
+    // Pattern that matches a single line  (used to calculate line
numbers)
+    private final static Pattern FULL_LINE_PATTERN =
Pattern.compile("^.*", Pattern.MULTILINE);
+    private final static Pattern ACCESS_LOG_PATTERN =
Pattern.compile("(\\S*) (\\S*) (\\S*) \\[(.*)\\] \\\"(\\S*)
(\\S*).*?\\\" (\\S*) (\\S*).*");
+    private final static int GROUP_HOST = 1;
+    private final static int GROUP_USER = 3;
+    private final static int GROUP_DATE = 4;
+    private final static int GROUP_METHOD = 5;
+    private final static int GROUP_URI = 6;
+    private final static int GROUP_RESPONSE_CODE = 7;
+    private final static int GROUP_RESPONSE_LENGTH = 8;
+    private final static String ACCESS_LOG_DATE_FORMAT =
"dd/MMM/yyyy:HH:mm:ss ZZZZ";
+    private Collection logGbeans;
+
+    public JettyLogManagerImpl(Collection logGbeans) {
+        this.logGbeans = logGbeans;
+    }
+
+    public String[] getLogFileNames() {
+        List files = new ArrayList();
+        for (Iterator it = logGbeans.iterator(); it.hasNext();) {
+            JettyRequestLog log = (JettyRequestLog) it.next();
+            if(log.getFilename() != null) {
+                files.add(log.getFilename());
+            }
+        }
+        return (String[]) files.toArray(new String[files.size()]);
+    }
+
+    public SearchResults getMatchingItems(String logFile, String
host, String user, String method, String uri,
+                                          Date startDate, Date
endDate, Integer skipResults, Integer maxResults) {
+        File log = null;
+        for (Iterator it = logGbeans.iterator(); it.hasNext();) {
+            JettyRequestLog logger = (JettyRequestLog) it.next();
+            if(logger.getFilename() != null &&
logger.getFilename().equals(logFile)) {
+                log = new File(logger.getAbsoluteFilePath());
+                break;
+            }
+        }
+        if(log == null) {
+            throw new IllegalArgumentException("Unknown log file
'"+logFile+"'");
+        }
+
+        return search(log, host, user, method, uri, startDate,
endDate, skipResults, maxResults);
+    }
+
+    private SearchResults search(File file, String host, String
user, String method, String uri, Date startDate,
+                                 Date endDate, Integer
skipResults, Integer maxResults) {
+        // Clean up the arguments so we know what we've really got
+        if(host != null && host.equals("")) host = null;
+        if(user != null && user.equals("")) user = null;
+        if(method != null && method.equals("")) method = null;
+        if(uri != null && uri.equals("")) uri = null;
+        // Do the search
+        List list = new LinkedList();
+        boolean capped = false;
+        int lineCount = 0;
+        try {
+            RandomAccessFile raf = new RandomAccessFile(file,
"r");
+            FileChannel fc = raf.getChannel();
+            MappedByteBuffer bb =
fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
+            CharBuffer cb =
Charset.forName("US-ASCII").decode(bb); //todo: does Jetty use a
different charset on a foreign PC?
+            Matcher lines = FULL_LINE_PATTERN.matcher(cb);
+            Matcher target = ACCESS_LOG_PATTERN.matcher("");
+            long start = startDate == null ? 0 :
startDate.getTime();
+            long end = endDate == null ? 0 : endDate.getTime();
+            SimpleDateFormat format = (start == 0 && end == 0) ?
null : new SimpleDateFormat(ACCESS_LOG_DATE_FORMAT);
+            int max = maxResults == null ? MAX_SEARCH_RESULTS :
Math.min(maxResults.intValue(), MAX_SEARCH_RESULTS);
+log.warn("CRITERIA: "+file.getAbsolutePath()+" "+host+" "+user+"
"+method+" "+uri+" "+start+" "+end+" "+skipResults+" "+max);
+            while(lines.find()) {
+                ++lineCount;
+                if(capped) {
+                    continue;
+                }
+                CharSequence line = cb.subSequence(lines.start(),
lines.end());
+                target.reset(line);
+                if(target.find()) {
+                    if(host != null &&
!host.equals(target.group(GROUP_HOST))) {
+                        continue;
+                    }
+                    if(user != null &&
!user.equals(target.group(GROUP_USER))) {
+                        continue;
+                    }
+                    if(method != null &&
!method.equals(target.group(GROUP_METHOD))) {
+                        continue;
+                    }
+                    if(uri != null &&
!target.group(GROUP_URI).startsWith(uri)) {
+                        continue;
+                    }
+                    if(format != null) {
+                        try {
+                            long entry =
format.parse(target.group(GROUP_DATE)).getTime();
+                            if(start > entry) {
+                                continue;
+                            }
+                            if(end > 0 && end < entry) {
+                                continue;
+                            }
+                        } catch (ParseException e) {
+                            // can't read the date, guess this
record counts.
+                        }
+                    }
+                    if(skipResults != null &&
skipResults.intValue() > lineCount) {
+                        continue;
+                    }
+                    if(list.size() > max) {
+                        capped = true;
+                        continue;
+                    }
+                    list.add(new
LogMessage(lineCount,line.toString()));
+                }
+            }
+            fc.close();
+            raf.close();
+        } catch (Exception e) {
+            log.error("Unexpected error processing logs", e);
+        }
+        return new SearchResults(lineCount, (LogMessage[])
list.toArray(new LogMessage[list.size()]), capped);
+    }
+
+
+    public static final GBeanInfo GBEAN_INFO;
+
+    static {
+        GBeanInfoBuilder infoFactory = new GBeanInfoBuilder("Jetty
Log Manager", JettyLogManagerImpl.class);
+        infoFactory.addReference("LogGBeans",
JettyRequestLog.class);
+        infoFactory.addInterface(JettyLogManager.class);
+
+        infoFactory.setConstructor(new String[]{"LogGBeans"});
+        GBEAN_INFO = infoFactory.getBeanInfo();
+    }
+
+    public static GBeanInfo getGBeanInfo() {
+        return GBEAN_INFO;
+    }
+/*
+    public static void main(String[] args) {
+        String jetty = "127.0.0.1 - - [07/Sep/2005:19:54:41 +0000]
\"GET /console/ HTTP/1.1\" 302 0 \"-\" \"Mozilla/5.0 (X11; U; Linux
i686; en-US; rv:1.7.10) Gecko/20050715 Firefox/1.0.6
SUSE/1.0.6-4.1\" -";
+        String tomcat = "127.0.0.1 - - [07/Sep/2005:15:51:18
-0500] \"GET /console/portal/server/server_info HTTP/1.1\" 200
11708";
+
+        SimpleDateFormat format = new
SimpleDateFormat("dd/MMM/yyyy:HH:mm:ss ZZZZ");
+        try {
+            Pattern p = Pattern.compile("(\\S*) (\\S*) (\\S*)
\\[(.*)\\] \\\"(\\S*) (\\S*).*?\\\" (\\S*) (\\S*).*");
+            Matcher m = p.matcher(jetty);
+            if(m.matches()) {
+                System.out.println("Group 1: "+m.group(1)); //
client
+                System.out.println("Group 2: "+m.group(2)); // ??
server host?
+                System.out.println("Group 3: "+m.group(3)); //
username
+                System.out.println("Group 4:
"+format.parse(m.group(4))); // date
+                System.out.println("Group 5: "+m.group(5)); //
method
+                System.out.println("Group 5: "+m.group(6)); // URI
+                System.out.println("Group 6: "+m.group(7)); //
response code
+                System.out.println("Group 7: "+m.group(8)); //
response length
+            } else {
+                System.out.println("No match");
+            }
+            m = p.matcher(tomcat);
+            if(m.matches()) {
+                System.out.println("Group 1: "+m.group(1));
+                System.out.println("Group 2: "+m.group(2));
+                System.out.println("Group 3: "+m.group(3));
+                System.out.println("Group 4:
"+format.parse(m.group(4)));
+                System.out.println("Group 5: "+m.group(5)); //
method
+                System.out.println("Group 5: "+m.group(6)); // URI
+                System.out.println("Group 6: "+m.group(7)); //
response code
+                System.out.println("Group 7: "+m.group(8)); //
response length
+            } else {
+                System.out.println("No match");
+            }
+        } catch (ParseException e) {
+            e.printStackTrace();
+        }
+    }
+*/
+}

Added:


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyRequestLog.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty/src/java/ org/apache/geronimo/jetty/requestlog/JettyRequestLog.java? rev=290359&view=auto



====================================================================== ========

---


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyRequestLog.java

(added)
+++


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/JettyRequestLog.java

Mon Sep 19 21:55:54 2005
@@ -0,0 +1,58 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.jetty.requestlog;
+
+/**
+ * Interface for the NCSARequestLog GBean
+ *
+ * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue,
14 Sep 2004) $
+ */
+public interface JettyRequestLog {
+    void setFilename(String filename);
+
+    String getFilename();
+
+    String getAbsoluteFilePath();
+
+    void setLogDateFormat(String format);
+
+    String getLogDateFormat();
+
+    void setLogTimeZone(String tz);
+
+    String getLogTimeZone();
+
+    int getRetainDays();
+
+    void setRetainDays(int retainDays);
+
+    boolean isExtended();
+
+    void setExtended(boolean e);
+
+    boolean isAppend();
+
+    void setAppend(boolean a);
+
+    void setIgnorePaths(String[] ignorePaths);
+
+    String[] getIgnorePaths();
+
+    void setPreferProxiedForAddress(boolean value);
+
+    boolean isPreferProxiedForAddress();
+}

Modified:


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/NCSARequestLog.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/modules/jetty/src/java/ org/apache/geronimo/jetty/requestlog/NCSARequestLog.java? rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

---


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/NCSARequestLog.java

(original)
+++


geronimo/trunk/modules/jetty/src/java/org/apache/geronimo/jetty/ requestlog/NCSARequestLog.java

Mon Sep 19 21:55:54 2005
@@ -26,7 +26,7 @@
 /**
  * @version $Rev$ $Date$
  */
-public class NCSARequestLog implements GBeanLifecycle {
+public class NCSARequestLog implements GBeanLifecycle,
JettyRequestLog {
     private final JettyContainer container;
     private final ServerInfo serverInfo;
     private final org.mortbay.http.NCSARequestLog requestLog;
@@ -104,6 +104,10 @@
         return preferProxiedForAddress;
     }

+    public String getAbsoluteFilePath() {
+        return requestLog == null ? null :
requestLog.getDatedFilename();
+    }
+
     public void doStart() throws Exception {
         requestLog.setFilename(serverInfo.resolvePath(filename));
         container.setRequestLog(requestLog);
@@ -127,14 +131,8 @@
         infoFactory.addReference("JettyContainer",
JettyContainer.class, NameFactory.GERONIMO_SERVICE);
         infoFactory.addReference("ServerInfo", ServerInfo.class,
NameFactory.GERONIMO_SERVICE);

-        infoFactory.addAttribute("filename", String.class, true);
-        infoFactory.addAttribute("logDateFormat", String.class,
true);
-        infoFactory.addAttribute("logTimeZone", String.class,
true);
-        infoFactory.addAttribute("retainDays", int.class, true);
-        infoFactory.addAttribute("extended", boolean.class, true);
-        infoFactory.addAttribute("append", boolean.class, true);
-        infoFactory.addAttribute("ignorePaths", String[].class,
true);
-        infoFactory.addAttribute("preferProxiedForAddress",
boolean.class, true);
+        infoFactory.addInterface(JettyRequestLog.class, new
String[]{"filename", "logDateFormat", "logTimeZone",
+                "retainDays", "extended", "append", "ignorePaths",
"preferProxiedForAddress", });

         infoFactory.setConstructor(new String[]{"JettyContainer",
"ServerInfo"});
         GBEAN_INFO = infoFactory.getBeanInfo();

Added:


geronimo/trunk/modules/management/src/java/org/apache/geronimo/ management/geronimo/WebAccessLog.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/modules/management/src/ java/org/apache/geronimo/management/geronimo/WebAccessLog.java? rev=290359&view=auto



====================================================================== ========

---


geronimo/trunk/modules/management/src/java/org/apache/geronimo/ management/geronimo/WebAccessLog.java

(added)
+++


geronimo/trunk/modules/management/src/java/org/apache/geronimo/ management/geronimo/WebAccessLog.java

Mon Sep 19 21:55:54 2005
@@ -0,0 +1,92 @@
+/**
+ *
+ * Copyright 2005 The Apache Software Foundation
+ *
+ *  Licensed 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.geronimo.management.geronimo;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * A web container access log manager.
+ *
+ * @version $Rev: 46019 $ $Date: 2004-09-14 05:56:06 -0400 (Tue,
14 Sep 2004) $
+ */
+public interface WebAccessLog {
+    /**
+     * The most search lines that will ever be returned, no matter
what you
+     * ask for.  This is to conserve memory and transfer
bandwidth.
+     */
+    public final static int MAX_SEARCH_RESULTS = 1000;
+
+    /**
+     * Gets the name of all log files used by this log system.
Typically there
+     * is only one, but specialized cases may use more.
+     */
+    String[] getLogFileNames();
+
+    /**
+     * Searches the log for records matching the specified
parameters.  The
+     * maximum results returned will be the lesser of 1000 and the
+     * provided maxResults argument.
+     *
+     * @see #MAX_SEARCH_RESULTS
+     */
+    SearchResults getMatchingItems(String logFile, String host,
String user, String method,
+                                   String uri, Date startDate,
Date endDate,
+                                   Integer skipResults, Integer
maxResults);
+
+    public static class LogMessage implements Serializable {
+        private final int lineNumber;
+        private final String lineContent;
+
+        public LogMessage(int lineNumber, String lineContent) {
+            this.lineNumber = lineNumber;
+            this.lineContent = lineContent;
+        }
+
+        public int getLineNumber() {
+            return lineNumber;
+        }
+
+        public String getLineContent() {
+            return lineContent;
+        }
+    }
+
+    public static class SearchResults implements Serializable {
+        private final int lineCount; // total lines in log file
+        private final LogMessage[] results;
+        private final boolean capped; // whether there were more
matched than are returned here
+
+        public SearchResults(int lineCount, LogMessage[] results,
boolean capped) {
+            this.lineCount = lineCount;
+            this.results = results;
+            this.capped = capped;
+        }
+
+        public int getLineCount() {
+            return lineCount;
+        }
+
+        public LogMessage[] getResults() {
+            return results;
+        }
+
+        public boolean isCapped() {
+            return capped;
+        }
+    }
+}

Modified:


geronimo/trunk/modules/management/src/java/org/apache/geronimo/ management/geronimo/WebManager.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/modules/management/src/ java/org/apache/geronimo/management/geronimo/WebManager.java? rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

---


geronimo/trunk/modules/management/src/java/org/apache/geronimo/ management/geronimo/WebManager.java

(original)
+++


geronimo/trunk/modules/management/src/java/org/apache/geronimo/ management/geronimo/WebManager.java

Mon Sep 19 21:55:54 2005
@@ -44,4 +44,14 @@
      * @return The ObjectName of the new connector.
      */
     public String addConnector(String containerObjectName, String
uniqueName, String protocol, String host, int port);
+
+    /**
+     * Gets the ObjectName of the WebAccessLog implementation for
a web
+     * container.  May be null if the access log cannot be
managed.
+     *
+     * @param containerObjectName The ObjectName of the container
whose access
+     *                            log you're interested in.
+     *
+     */
+    public String getAccessLog(String containerObjectName);
 }

Modified:


geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/ logging/SystemLog.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/modules/system/src/ java/org/apache/geronimo/system/logging/SystemLog.java? rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

---


geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/ logging/SystemLog.java

(original)
+++


geronimo/trunk/modules/system/src/java/org/apache/geronimo/system/ logging/SystemLog.java

Mon Sep 19 21:55:54 2005
@@ -89,7 +89,7 @@
     }

     public static class SearchResults implements Serializable {
-        private final int lineCount;
+        private final int lineCount; // total lines in file
         private final LogMessage[] results;
         private final boolean capped;


Modified:


geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/ TomcatManagerImpl.java

URL:


http://svn.apache.org/viewcvs/geronimo/trunk/modules/tomcat/src/ java/org/apache/geronimo/tomcat/TomcatManagerImpl.java? rev=290359&r1=290358&r2=290359&view=diff



====================================================================== ========

---


geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/ TomcatManagerImpl.java

(original)
+++


geronimo/trunk/modules/tomcat/src/java/org/apache/geronimo/tomcat/ TomcatManagerImpl.java

Mon Sep 19 21:55:54 2005
@@ -177,6 +177,18 @@
         return (String[]) result.toArray(new
String[result.size()]);
     }

+    public String getAccessLog(String containerObjectName) {
+//        GBeanQuery query = new GBeanQuery(null,
TomcatLogManager.class.getName());
+//        Set names = kernel.listGBeans(query);
+//        if(names.size() == 0) {
+//            return null;
+//        } else if(names.size() > 1) {
+//            throw new IllegalStateException("Should not be more
than one Jetty access log manager");
+//        }
+//        return
((ObjectName)names.iterator().next()).getCanonicalName();
+        return null;
+    }
+
     /**
      * Gets the ObjectNames of any existing connectors associated
with this network technology.
      */






__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around
http://mail.yahoo.com



Reply via email to