You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by tv...@apache.org on 2012/06/07 23:24:00 UTC
svn commit: r1347803 - in /openejb/trunk/openejb/tomee:
tomee-plus-webapp/src/main/webapp/WEB-INF/
tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/
tomee-webapp/src/main/webapp/WEB-INF/
tomee-webapp/src/main/webapp/js/tomee/ tomee-webapp/src...
Author: tveronezi
Date: Thu Jun 7 21:23:59 2012
New Revision: 1347803
URL: http://svn.apache.org/viewvc?rev=1347803&view=rev
Log:
https://issues.apache.org/jira/browse/TOMEE-205
* log skeleton (almost done!)
Added:
openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogServlet.java
- copied, changed from r1347549, openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogoutServlet.java
Modified:
openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationController.js
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationModel.js
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/util/I18N.js
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewHome.js
openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewLog.js
Modified: openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml?rev=1347803&r1=1347802&r2=1347803&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml (original)
+++ openejb/trunk/openejb/tomee/tomee-plus-webapp/src/main/webapp/WEB-INF/web.xml Thu Jun 7 21:23:59 2012
@@ -53,6 +53,11 @@
</servlet>
<servlet>
+ <servlet-name>LogServlet</servlet-name>
+ <servlet-class>org.apache.tomee.webapp.servlet.LogServlet</servlet-class>
+ </servlet>
+
+ <servlet>
<servlet-name>LogoutServlet</servlet-name>
<servlet-class>org.apache.tomee.webapp.servlet.LogoutServlet</servlet-class>
</servlet>
@@ -103,6 +108,11 @@
</servlet-mapping>
<servlet-mapping>
+ <servlet-name>LogServlet</servlet-name>
+ <url-pattern>/log/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
<servlet-name>LogoutServlet</servlet-name>
<url-pattern>/logout/*</url-pattern>
</servlet-mapping>
Copied: openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogServlet.java (from r1347549, openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogoutServlet.java)
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogServlet.java?p2=openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogServlet.java&p1=openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogoutServlet.java&r1=1347549&r2=1347803&rev=1347803&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogoutServlet.java (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/java/org/apache/tomee/webapp/servlet/LogServlet.java Thu Jun 7 21:23:59 2012
@@ -17,36 +17,128 @@
package org.apache.tomee.webapp.servlet;
+import org.apache.commons.lang.StringEscapeUtils;
import org.apache.tomee.webapp.JsonExecutor;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileReader;
import java.io.IOException;
-import java.util.Map;
+import java.util.*;
-public class LogoutServlet extends HttpServlet {
+public class LogServlet extends HttpServlet {
@Override
protected void doGet(final HttpServletRequest req, final HttpServletResponse resp) throws ServletException, IOException {
JsonExecutor.execute(resp, new JsonExecutor.Executor() {
+
@Override
- public void call(Map<String, Object> json) {
- final HttpSession session = req.getSession(false);
- if (session == null) {
- return;
+ public void call(Map<String, Object> json) throws Exception {
+ final File logFolder = new File(System.getProperty("catalina.base"), "logs");
+ json.put("files", logFolder.list());
+
+ final String loadFileName = req.getParameter("file");
+ if (loadFileName != null) {
+ Map<String, Object> log = new HashMap<String, Object>();
+ log.put("name", loadFileName);
+
+ Integer tail;
+ try {
+ tail = Integer.valueOf(req.getParameter("tail"));
+ } catch (Exception e) {
+ tail = null;
+ }
+
+ log.put("lines", read(
+ Boolean.valueOf(req.getParameter("escapeHtml")),
+ new File(logFolder, loadFileName),
+ tail
+ ));
+
+ json.put("log", log);
}
+ }
+ });
+
+ }
+
+ private Collection<String> read(final boolean escapeHtml, final File file, final Integer tail) throws IOException {
+ final Queue<String> lines = new LinkedList<String>();
+ final AddLine addLine = new AddLine(lines, tail);
+
+ String line;
+ final BufferedReader br = new BufferedReader(new FileReader(file));
+
+ if (escapeHtml) {
+ while ((line = br.readLine()) != null) {
+ addLine.add(StringEscapeUtils.escapeHtml(line));
+ }
+ } else {
+ while ((line = br.readLine()) != null) {
+ addLine.add(line);
+ }
+ }
+
+
+ return lines;
+ }
+
+ private interface AddItemStrategy {
+ void add(String newLine);
+ }
+
+ private class AddLine {
+ final Queue<String> lines;
+ AddItemStrategy strategy;
+ final int tail;
+
+ private AddLine(Queue<String> lines, Integer tail) {
+ this.lines = lines;
+
+ if (tail == null) {
+ this.tail = -1;
+ this.strategy = justAddIt;
+ } else {
+ this.tail = tail;
+ this.strategy = addToEmptyList;
+ }
+ }
+
+ final AddItemStrategy justAddIt = new AddItemStrategy() {
+
+ @Override
+ public void add(String newLine) {
+ lines.add(newLine);
+ }
+ };
- synchronized (session) {
- session.invalidate();
+ final AddItemStrategy addToEmptyList = new AddItemStrategy() {
+
+ @Override
+ public void add(String newLine) {
+ lines.add(newLine);
+ if (lines.size() > tail) {
+ strategy = addToFullList;
}
+ }
+ };
- json.put("done", Boolean.TRUE);
+ final AddItemStrategy addToFullList = new AddItemStrategy() {
+
+ @Override
+ public void add(String newLine) {
+ lines.add(newLine);
+ lines.remove();
}
- });
+ };
+ public void add(String newLine) {
+ strategy.add(newLine);
+ }
}
}
Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml?rev=1347803&r1=1347802&r2=1347803&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/WEB-INF/web.xml Thu Jun 7 21:23:59 2012
@@ -53,6 +53,11 @@
</servlet>
<servlet>
+ <servlet-name>LogServlet</servlet-name>
+ <servlet-class>org.apache.tomee.webapp.servlet.LogServlet</servlet-class>
+ </servlet>
+
+ <servlet>
<servlet-name>LogoutServlet</servlet-name>
<servlet-class>org.apache.tomee.webapp.servlet.LogoutServlet</servlet-class>
</servlet>
@@ -103,6 +108,11 @@
</servlet-mapping>
<servlet-mapping>
+ <servlet-name>LogServlet</servlet-name>
+ <url-pattern>/log/*</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
<servlet-name>LogoutServlet</servlet-name>
<url-pattern>/logout/*</url-pattern>
</servlet-mapping>
Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationController.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationController.js?rev=1347803&r1=1347802&r2=1347803&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationController.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationController.js Thu Jun 7 21:23:59 2012
@@ -152,6 +152,14 @@ TOMEE.ApplicationController = function (
throw "app.console.executed not implemented";
});
+ channel.bind('app.new.log.data', function (params) {
+ logView.loadData(params);
+ });
+
+ channel.bind('trigger.log.load', function (params) {
+ model.loadLog(params.file, params.tail);
+ });
+
var view = TOMEE.ApplicationView({
channel:channel,
groups:{
@@ -159,10 +167,11 @@ TOMEE.ApplicationController = function (
'apps':appsView,
'log':logView
},
- initTab:'home'
+ initTab:'log'
});
model.loadSystemInfo();
+ model.loadLog(null, null);
return {
Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationModel.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationModel.js?rev=1347803&r1=1347802&r2=1347803&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationModel.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/ApplicationModel.js Thu Jun 7 21:23:59 2012
@@ -27,6 +27,7 @@ TOMEE.ApplicationModel = function (cfg)
var channel = cfg.channel;
var systemInfo = {};
+ var logInfo = {};
var request = function (params) {
$.ajax({
@@ -75,13 +76,13 @@ TOMEE.ApplicationModel = function (cfg)
getSystemInfo:function () {
return systemInfo;
},
- execute: function(codeType, codeText) {
+ execute:function (codeType, codeText) {
request({
method:'POST',
url:TOMEE.baseURL('console'),
- data: {
- engineName: codeType,
- scriptCode: codeText
+ data:{
+ engineName:codeType,
+ scriptCode:codeText
},
success:function (data) {
systemInfo = data;
@@ -89,6 +90,32 @@ TOMEE.ApplicationModel = function (cfg)
}
});
+ },
+ loadLog:function (file, tail) {
+ var data = {
+ escapeHtml:true
+ };
+
+ if (file) {
+ data.file = file;
+ }
+
+ if (tail) {
+ data.tail = tail;
+ }
+
+ request({
+ method:'GET',
+ url:TOMEE.baseURL('log'),
+ data:data,
+ success:function (data) {
+ logInfo = data;
+ channel.send('app.new.log.data', data);
+ }
+ });
+ },
+ getLogInfo:function () {
+ return logInfo;
}
};
}
\ No newline at end of file
Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/util/I18N.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/util/I18N.js?rev=1347803&r1=1347802&r2=1347803&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/util/I18N.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/util/I18N.js Thu Jun 7 21:23:59 2012
@@ -30,17 +30,19 @@ TOMEE.I18N = (function () {
'application.apps':'Apps',
'application.log':'Log',
- 'application.deployments': 'Deployments',
+ 'application.deployments':'Deployments',
- 'application.jdni': 'Jndi',
- 'application.saved.objects': 'Saved Objects',
- 'application.console': 'Console',
- 'application.mdbs': 'MDBs',
- 'application.ws': 'Webservices',
-
- 'application.console.execute': 'Execute',
- 'application.console.Javascript': 'Javascript',
- 'application.console.Groovy': 'Groovy',
+ 'application.jdni':'Jndi',
+ 'application.saved.objects':'Saved Objects',
+ 'application.console':'Console',
+ 'application.mdbs':'MDBs',
+ 'application.ws':'Webservices',
+
+ 'application.console.execute':'Execute',
+ 'application.console.Javascript':'Javascript',
+ 'application.console.Groovy':'Groovy',
+
+ 'application.log.load':'Load',
'dummy':'dummy'
};
Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewHome.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewHome.js?rev=1347803&r1=1347802&r2=1347803&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewHome.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewHome.js Thu Jun 7 21:23:59 2012
@@ -134,30 +134,36 @@ TOMEE.ApplicationViewHome = function (cf
},
children: [
{
- elName:'scriptSelector',
- tag:'select',
+ tag:'div',
+ cls:'pull-right',
children: [
{
- tag:'option',
- html: TOMEE.I18N.get('application.console.Javascript'),
- attributes: {
- value: 'JavaScript'
- }
+ elName:'scriptSelector',
+ tag:'select',
+ children: [
+ {
+ tag:'option',
+ html: TOMEE.I18N.get('application.console.Javascript'),
+ attributes: {
+ value: 'JavaScript'
+ }
+ },
+ {
+ tag:'option',
+ html: TOMEE.I18N.get('application.console.Groovy'),
+ attributes: {
+ value: 'Groovy'
+ }
+ }
+ ]
},
{
- tag:'option',
- html: TOMEE.I18N.get('application.console.Groovy'),
- attributes: {
- value: 'Groovy'
- }
+ elName:'executeBtn',
+ tag:'button',
+ cls:'btn',
+ html: TOMEE.I18N.get('application.console.execute')
}
]
- },
- {
- elName:'executeBtn',
- tag:'button',
- cls:'btn',
- html: TOMEE.I18N.get('application.console.execute')
}
]
});
Modified: openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewLog.js
URL: http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewLog.js?rev=1347803&r1=1347802&r2=1347803&view=diff
==============================================================================
--- openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewLog.js (original)
+++ openejb/trunk/openejb/tomee/tomee-webapp/src/main/webapp/js/tomee/view/ApplicationViewLog.js Thu Jun 7 21:23:59 2012
@@ -23,20 +23,113 @@ TOMEE.ApplicationViewLog = function (cfg
var elMapContent = TOMEE.el.getElMap({
elName:'main',
- tag:'div',
- attributes:{
- style:'background-color: blue; padding: 5px;'
+ tag:'div'
+ });
+
+ var lines = (function () {
+ var innerPanel = $('<div style="height: 250px; position: relative; overflow: auto;"></div>');
+
+ return {
+ getEl:function () {
+ return innerPanel;
+ },
+ load:function (data) {
+ innerPanel.empty();
+
+ var newData = $('<div></div>');
+ for(var i = 0; i < data.length; i++) {
+ newData.append(data[i]);
+ newData.append('<br/>');
+ }
+
+ innerPanel.append(newData);
+ }
}
+ })();
+
+ var elBottomBar = TOMEE.el.getElMap({
+ elName:'main',
+ tag:'form',
+ cls:'well form-inline',
+ attributes:{
+ style:'height: 27px;margin-bottom: 0px;padding-top: 1px;padding-left: 1px;padding-bottom: 1px;padding-right: 1px;'
+ },
+ children:[
+ {
+ tag:'div',
+ cls:'pull-right',
+ children:[
+ {
+ elName:'fileSelector',
+ tag:'select'
+ },
+ {
+ elName:'loadBtn',
+ tag:'button',
+ cls:'btn',
+ html:TOMEE.I18N.get('application.log.load')
+ }
+ ]
+ }
+ ]
});
+ elBottomBar.loadBtn.bind('click', function () {
+ var file = elBottomBar.fileSelector.val();
+ var tail = 100; //TODO
+ channel.send('trigger.log.load', {
+ file:file,
+ tail:tail
+ });
+ });
+
+ elMapContent.main.append(lines.getEl());
+ elMapContent.main.append(elBottomBar.main);
+
var setHeight = function (height) {
- elMapContent.main.height(height - TOMEE.el.getBorderSize(elMapContent.main));
+ var mySize = height - TOMEE.el.getBorderSize(elMapContent.main);
+ var gridSize = mySize - elBottomBar.main.outerHeight(true);
+
+ elMapContent.main.height(mySize);
+ lines.getEl().height(gridSize);
+ };
+
+ var loadFilesField = function (files) {
+ var getOption = function (fileName) {
+ var option = $('<option></option>');
+ option.attr('value', fileName);
+ option.append(fileName);
+ return option;
+ };
+
+ var selector = elBottomBar.fileSelector;
+ selector.empty();
+ if (!files) {
+ return;
+ }
+ for (var i = 0; i < files.length; i++) {
+ selector.append(getOption(files[i]));
+ }
+ };
+
+ var loadLogTable = function (data) {
+ lines.load(data);
+ };
+
+ var loadData = function (data) {
+ loadFilesField(data.files);
+
+ if (data.log) {
+ loadLogTable(data.log.lines);
+ }
};
return {
+
getEl:function () {
return elMapContent.main;
},
- setHeight:setHeight
+ setHeight:setHeight,
+ loadData:loadData
};
};
\ No newline at end of file