Skip to content
This repository was archived by the owner on Jun 29, 2018. It is now read-only.

Commit 90cd25d

Browse files
author
Johannes Stelzer
committed
Add proper endpoint detection for /logfile and /activiti using a single request to /configprops
1 parent 11a3771 commit 90cd25d

File tree

5 files changed

+46
-54
lines changed

5 files changed

+46
-54
lines changed

spring-boot-admin-server-ui/app/js/controller/appsCtrl.js

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,4 @@
1717

1818
module.exports = function ($scope, application) {
1919
$scope.application = application;
20-
21-
application.getActiviti()
22-
.success(function () {
23-
$scope.application.providesActiviti = true;
24-
})
25-
.error(function () {
26-
$scope.application.providesActiviti = false;
27-
});
2820
};

spring-boot-admin-server-ui/app/js/controller/overviewCtrl.js

Lines changed: 1 addition & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -60,24 +60,6 @@ module.exports = function ($scope, $location, $interval, $q, $state, Application
6060
}
6161
});
6262
};
63-
var getLogfile = function (app) {
64-
return app.hasLogfile()
65-
.success(function () {
66-
app.providesLogfile = true;
67-
})
68-
.error(function () {
69-
app.providesLogfile = false;
70-
});
71-
};
72-
var getActiviti = function (app) {
73-
return app.getActiviti()
74-
.success(function () {
75-
app.providesActiviti = true;
76-
})
77-
.error(function () {
78-
app.providesActiviti = false;
79-
});
80-
};
8163

8264
$scope.loadData = function () {
8365
Application.query(function (applications) {
@@ -88,13 +70,11 @@ module.exports = function ($scope, $location, $interval, $q, $state, Application
8870
app.info = $scope.applications[j].info;
8971
app.version = $scope.applications[j].version;
9072
app.status = $scope.applications[j].status;
91-
app.providesLogfile = $scope.applications[j].providesLogfile;
92-
app.providesActiviti = $scope.applications[j].providesActiviti;
9373
break;
9474
}
9575
}
9676
app.refreshing = true;
97-
$q.all(getInfo(app), getHealth(app), getLogfile(app), getActiviti(app))
77+
$q.all(getInfo(app), getHealth(app))
9878
.finally(function () {
9979
app.refreshing = false;
10080
});

spring-boot-admin-server-ui/app/js/service/application.js

Lines changed: 42 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,53 +14,73 @@
1414
* limitations under the License.
1515
*/
1616
'use strict';
17+
var angular = require('angular');
18+
19+
module.exports = function ($resource, $http) {
20+
21+
var isEndpointEnabled = function(endpoint, configprops) {
22+
if (configprops[endpoint]) {
23+
return configprops[endpoint].properties.enabled;
24+
}
25+
return false;
26+
};
27+
28+
var getCapabilities = function(application) {
29+
application.capabilities = {};
30+
$http.get('api/applications/' + application.id + '/configprops').success(function(configprops) {
31+
application.capabilities.logfile = isEndpointEnabled('logfileEndpoint', configprops);
32+
application.capabilities.activiti = isEndpointEnabled('processEngineEndpoint', configprops);
33+
});
34+
};
1735

18-
module.exports = function ($resource, $http, $rootScope) {
1936
var Application = $resource(
2037
'api/applications/:id', { id: '@id' }, {
21-
query: { method: 'GET', isArray: true },
22-
get: { method: 'GET' },
38+
query: { method: 'GET',
39+
isArray: true,
40+
transformResponse: function(data) {
41+
var apps = angular.fromJson(data);
42+
for (var i = 0; i < apps.length; i++) {
43+
getCapabilities(apps[i]);
44+
}
45+
return apps;
46+
}
47+
},
48+
get: { method: 'GET',
49+
transformResponse: function(data) {
50+
var app = angular.fromJson(data);
51+
getCapabilities(app);
52+
return app;
53+
}
54+
},
2355
remove: { method: 'DELETE' }
2456
});
2557

26-
var AuthInterceptor = function (application) {
27-
return function (data, status, headers) {
28-
if (status === 401) {
29-
$rootScope.$emit('application-auth-required', application, headers('WWW-Authenticate').split(' ')[0]);
30-
}
31-
};
32-
};
33-
3458
Application.prototype.getHealth = function () {
35-
return $http.get('api/applications/' + this.id + '/health').error(new AuthInterceptor(this));
59+
return $http.get('api/applications/' + this.id + '/health');
3660
};
3761

3862
Application.prototype.getInfo = function () {
39-
return $http.get('api/applications/' + this.id + '/info').error(new AuthInterceptor(this));
63+
return $http.get('api/applications/' + this.id + '/info');
4064
};
4165

4266
Application.prototype.getMetrics = function () {
43-
return $http.get('api/applications/' + this.id + '/metrics').error(new AuthInterceptor(this));
67+
return $http.get('api/applications/' + this.id + '/metrics');
4468
};
4569

4670
Application.prototype.getEnv = function () {
47-
return $http.get('api/applications/' + this.id + '/env').error(new AuthInterceptor(this));
71+
return $http.get('api/applications/' + this.id + '/env');
4872
};
4973

5074
Application.prototype.getThreadDump = function () {
51-
return $http.get('api/applications/' + this.id + '/dump').error(new AuthInterceptor(this));
75+
return $http.get('api/applications/' + this.id + '/dump');
5276
};
5377

5478
Application.prototype.getTraces = function () {
55-
return $http.get('api/applications/' + this.id + '/trace').error(new AuthInterceptor(this));
79+
return $http.get('api/applications/' + this.id + '/trace');
5680
};
5781

5882
Application.prototype.getActiviti = function () {
59-
return $http.get('api/applications/' + this.id + '/activiti').error(new AuthInterceptor(this));
60-
};
61-
62-
Application.prototype.hasLogfile = function () {
63-
return $http.head('api/applications/' + this.id + '/logfile').error(new AuthInterceptor(this));
83+
return $http.get('api/applications/' + this.id + '/activiti');
6484
};
6585

6686
return Application;

spring-boot-admin-server-ui/app/views/apps.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
<li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.jmx({id: application.id})">JMX</a></li>
99
<li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.threads({id: application.id})">Threads</a></li>
1010
<li class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.trace({id: application.id})">Trace</a></li>
11-
<li ng-show="application.providesActiviti" class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.activiti({id: application.id})">Activiti</a></li>
11+
<li ng-show="application.capabilities.activiti" class="navbar-link" ui-sref-active="active" ><a ui-sref="apps.activiti({id: application.id})">Activiti</a></li>
1212
</ul>
1313
</div>
1414
</div>

spring-boot-admin-server-ui/app/views/overview.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ <h2 >Spring-Boot applications<br>
2323
<span ng-show="application.refreshing" class="refresh"></span></td>
2424
<td style="text-align: right;">
2525
<div class="btn-group" ng-hide="application.managementUrl == null || application.status == null || application.status == 'OFFLINE'">
26-
<a ng-disabled="!application.providesLogfile" target="_self" class="btn btn-success" ng-href="{{application.providesLogfile ? application.url + '/logfile' :''}}"><i class="icon-file icon-white"></i>Log</a>
26+
<a ng-disabled="!application.capabilities.logfile" target="_self" class="btn btn-success" ng-href="{{application.capabilities.logfile ? application.managementUrl + '/logfile' :''}}"><i class="icon-file icon-white"></i>Log</a>
2727
<a ui-sref="apps.details.metrics({id: application.id})" class="btn btn-success">Details</a>
2828
<a class="btn btn-success dropdown-toggle" data-toggle="dropdown">
2929
<span class="caret"></span>
@@ -34,7 +34,7 @@ <h2 >Spring-Boot applications<br>
3434
<li><a ui-sref="apps.jmx({id: application.id})" >JMX</a></li>
3535
<li><a ui-sref="apps.threads({id: application.id})" >Threads</a></li>
3636
<li><a ui-sref="apps.trace({id: application.id})" >Trace</a></li>
37-
<li ng-show="application.providesActiviti"><a ui-sref="apps.activiti({id: application.id})" >Activiti</a></li>
37+
<li ng-show="application.capabilities.activiti"><a ui-sref="apps.activiti({id: application.id})" >Activiti</a></li>
3838
</ul>
3939
</div>
4040
<div class="btn-group" title="remove">

0 commit comments

Comments
 (0)