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 2014/02/21 02:45:31 UTC

svn commit: r1570413 - in /tomee/tomee/trunk/tomee/tomee-webaccess/src/main: groovy/org/apache/tomee/webaccess/service/ webapp/app/ webapp/app/js/ webapp/app/js/templates/ webapp/app/js/view/

Author: tveronezi
Date: Fri Feb 21 01:45:30 2014
New Revision: 1570413

URL: http://svn.apache.org/r1570413
Log:
https://issues.apache.org/jira/browse/TOMEE-1129
WebAccess contexts panels - frontend

Added:
    tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/contexts.handlebars
Modified:
    tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/ContextsServiceImpl.groovy
    tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/app.less
    tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/application.js
    tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/i18n.js
    tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates.js
    tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars
    tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/view/sessions.js

Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/ContextsServiceImpl.groovy
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/ContextsServiceImpl.groovy?rev=1570413&r1=1570412&r2=1570413&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/ContextsServiceImpl.groovy (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/groovy/org/apache/tomee/webaccess/service/ContextsServiceImpl.groovy Fri Feb 21 01:45:30 2014
@@ -98,6 +98,9 @@ class ContextsServiceImpl {
         def server = ManagementFactory.platformMBeanServer
         server.queryNames(null, null)*.toString().findAll({
             it.startsWith('Catalina:j2eeType=WebModule') || it.startsWith('Tomcat:j2eeType=WebModule')
+        }).findAll({
+            def name = new ObjectName(it)
+            server.getAttribute(name, 'stateName') != 'STOPPED'
         }).collect({
             def name = new ObjectName(it)
             def docBase = server.getAttribute(name, 'docBase') ?: ''
@@ -121,10 +124,10 @@ class ContextsServiceImpl {
         if (name) {
             def originalDocBase = server.getAttribute(name, 'originalDocBase') ?: ''
             if (originalDocBase) {
+                // stop the application first
+                server.invoke(name, 'stop', null, null)
                 def docBase = new File(originalDocBase as String)
                 if (docBase.isDirectory()) {
-                    // stop the application first
-                    server.invoke(name, 'stop', null, null)
                     // then remove the directory
                     docBase.deleteDir()
                 } else {

Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/app.less
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/app.less?rev=1570413&r1=1570412&r2=1570413&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/app.less (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/app.less Fri Feb 21 01:45:30 2014
@@ -53,6 +53,24 @@ body {
       right: 0;
       overflow: auto;
     }
+
+    .ux-sessions-panel {
+      position: absolute;
+      top: 0;
+      bottom: 0;
+      left: 0;
+      right: 300px;
+      margin-bottom: 0;
+    }
+
+    .ux-contexts-panel {
+      position: absolute;
+      top: 0;
+      bottom: 0;
+      width: 295px;
+      right: 0;
+      margin-bottom: 0;
+    }
   }
 
   .ux-logfile-output {
@@ -76,7 +94,6 @@ body {
         border: 0;
         margin: 0;
         background-color: white;
-        border: 0;
         border-radius: 0;
         overflow: auto;
         width: 2000px;
@@ -103,7 +120,6 @@ body {
         border: 0;
         margin: 0;
         background-color: white;
-        border: 0;
         border-radius: 0;
         overflow: auto;
         width: 2000px;

Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/application.js
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/application.js?rev=1570413&r1=1570412&r2=1570413&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/application.js (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/application.js Fri Feb 21 01:45:30 2014
@@ -61,6 +61,17 @@
                             });
                         }
                     });
+                    $.ajax({
+                        url: window.ux.ROOT_URL + 'rest/context',
+                        method: 'GET',
+                        dataType: 'json',
+                        data: {},
+                        success: function (data) {
+                            sessionsView.render({
+                                contexts: data.contextResultDto
+                            });
+                        }
+                    });
                 },
 
                 showScripting: function (scriptType) {
@@ -97,6 +108,19 @@
                 });
             });
 
+
+            sessionsView.on('kill-context', function (data) {
+                $.ajax({
+                    url: window.ux.ROOT_URL + 'rest/context/' + data.basename + '/',
+                    method: 'DELETE',
+                    dataType: 'json',
+                    data: {},
+                    success: function (data) {
+                        router.showSessions();
+                    }
+                });
+            });
+
             scriptingView.on('execute-action', function (data) {
                 $.ajax({
                     url: window.ux.ROOT_URL + 'rest/scripting/',

Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/i18n.js
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/i18n.js?rev=1570413&r1=1570412&r2=1570413&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/i18n.js (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/i18n.js Fri Feb 21 01:45:30 2014
@@ -42,7 +42,8 @@ define(['lib/underscore', 'lib/handlebar
         'session.expiration.date': 'Expire',
         'scripting.user.realm': 'Realm Name',
         'scripting.user.name': 'User name',
-        'scripting.user.password': 'User password'
+        'scripting.user.password': 'User password',
+        'contexts': 'Contexts'
     };
 
     underscore.each(underscore.keys(messages), function (key) {

Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates.js
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates.js?rev=1570413&r1=1570412&r2=1570413&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates.js (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates.js Fri Feb 21 01:45:30 2014
@@ -29,7 +29,8 @@
         'scripting-user',
         'logfiles',
         'logfile-link',
-        'sessions'
+        'sessions',
+        'contexts'
     ];
 
     function loop(values, callback) {

Added: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/contexts.handlebars
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/contexts.handlebars?rev=1570413&view=auto
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/contexts.handlebars (added)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/contexts.handlebars Fri Feb 21 01:45:30 2014
@@ -0,0 +1,21 @@
+<div class="ux-contexts-panel panel panel-default">
+    <div class="panel-heading">
+        <h3 class="panel-title">{{i18n "contexts"}}</h3>
+    </div>
+    <div class="panel-body">
+        <table class="table table-striped">
+            <tbody>
+            {{#each contexts}}
+            <tr>
+                <td>{{this.baseName}}</td>
+                <td>
+                    <a class="ux-kill-context-btn" href="kill">
+                        <span data-context-basename="{{this.baseName}}" class="glyphicon glyphicon-trash"></span>
+                    </a>
+                </td>
+            </tr>
+            {{/each}}
+            </tbody>
+        </table>
+    </div>
+</div>

Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars?rev=1570413&r1=1570412&r2=1570413&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/templates/sessions.handlebars Fri Feb 21 01:45:30 2014
@@ -1,34 +1,36 @@
-<div class="panel-heading">
-    <h3 class="panel-title">{{i18n "sessions"}}</h3>
-</div>
-<div class="panel-body">
-    <table class="table table-striped">
-        <thead>
-        <tr>
-            <th>{{i18n "session.id"}}</th>
-            <th>{{i18n "session.context"}}</th>
-            <th>{{i18n "session.creation.date"}}</th>
-            <th>{{i18n "session.last.access"}}</th>
-            <th>{{i18n "session.expiration.date"}}</th>
-            <th></th>
-        </tr>
-        </thead>
-        <tbody>
-        {{#each sessions}}
-        <tr>
-            <td>{{this.sessionId}}</td>
-            <td>{{this.context}}</td>
-            <td>{{timeStampToDate this.creationTs}}</td>
-            <td>{{timeStampToDate this.lastAccessTs}}</td>
-            <td>{{timeStampToDate this.expirationTs}}</td>
-            <td>
-                <a class="ux-expire-btn" href="expire">
+<div class="ux-sessions-panel panel panel-default">
+    <div class="panel-heading">
+        <h3 class="panel-title">{{i18n "sessions"}}</h3>
+    </div>
+    <div class="panel-body">
+        <table class="table table-striped">
+            <thead>
+            <tr>
+                <th>{{i18n "session.id"}}</th>
+                <th>{{i18n "session.context"}}</th>
+                <th>{{i18n "session.creation.date"}}</th>
+                <th>{{i18n "session.last.access"}}</th>
+                <th>{{i18n "session.expiration.date"}}</th>
+                <th></th>
+            </tr>
+            </thead>
+            <tbody>
+            {{#each sessions}}
+            <tr>
+                <td>{{this.sessionId}}</td>
+                <td>{{this.context}}</td>
+                <td>{{timeStampToDate this.creationTs}}</td>
+                <td>{{timeStampToDate this.lastAccessTs}}</td>
+                <td>{{timeStampToDate this.expirationTs}}</td>
+                <td>
+                    <a class="ux-expire-btn" href="expire">
                 <span data-session-id="{{this.sessionId}}" data-context-id="{{this.context}}"
                       class="glyphicon glyphicon-trash"></span>
-                </a>
-            </td>
-        </tr>
-        {{/each}}
-        </tbody>
-    </table>
+                    </a>
+                </td>
+            </tr>
+            {{/each}}
+            </tbody>
+        </table>
+    </div>
 </div>
\ No newline at end of file

Modified: tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/view/sessions.js
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/view/sessions.js?rev=1570413&r1=1570412&r2=1570413&view=diff
==============================================================================
--- tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/view/sessions.js (original)
+++ tomee/tomee/trunk/tomee/tomee-webaccess/src/main/webapp/app/js/view/sessions.js Fri Feb 21 01:45:30 2014
@@ -24,7 +24,7 @@
 
         var View = Backbone.View.extend({
             tagName: 'div',
-            className: 'ux-dashboard panel panel-default',
+            className: 'ux-dashboard',
             events: {
                 'click .ux-refresh-btn': function (evt) {
                     evt.preventDefault();
@@ -32,23 +32,37 @@
                     me.trigger('refresh-sessions', {});
                 },
                 'click .ux-expire-btn': function (evt) {
-                    // TRICK to avoid full page reload.
-                    evt.preventDefault();
+                    evt.preventDefault(); // TRICK to avoid full page reload.
                     var myLink = $(evt.target);
                     this.trigger('expire-session', {
                         sessionId: myLink.attr('data-session-id'),
                         context: myLink.attr('data-context-id')
                     });
+                },
+                'click .ux-kill-context-btn': function (evt) {
+                    evt.preventDefault(); // TRICK to avoid full page reload.
+                    var myLink = $(evt.target);
+                    this.trigger('kill-context', {
+                        basename: myLink.attr('data-context-basename')
+                    });
                 }
             },
-            render: function (data) {
+            renderSubPanel: function (data, name) {
+                if (!data || !data[name]) {
+                    return; // no-op
+                }
                 var me = this;
-                me.$el.empty();
+                me.$el.find('.ux-' + name + '-panel').remove();
                 var tplValues = {};
                 if (data) {
                     tplValues = data;
                 }
-                me.$el.append(templates.getValue('sessions', tplValues));
+                me.$el.append(templates.getValue(name, tplValues));
+            },
+            render: function (data) {
+                var me = this;
+                me.renderSubPanel(data, 'sessions');
+                me.renderSubPanel(data, 'contexts');
                 return me;
             }
         });