Skip to content

Commit

Permalink
Adding info action on mApplication REST service in wotaskd
Browse files Browse the repository at this point in the history
  • Loading branch information
Pascal Robert committed Aug 9, 2012
1 parent 2120612 commit fe5447b
Show file tree
Hide file tree
Showing 3 changed files with 75 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@ public Application() {
restHandler.addDefaultRoutes("MApplication", false, MApplicationController.class);
restHandler.insertRoute(new ERXRoute("MApplication","/mApplications/{name:MApplication}/addInstance", ERXRoute.Method.Get, MApplicationController.class, "addInstance"));
restHandler.insertRoute(new ERXRoute("MApplication","/mApplications/{name:MApplication}/deleteInstance", ERXRoute.Method.Get, MApplicationController.class, "deleteInstance"));
restHandler.insertRoute(new ERXRoute("MApplication","/mApplications/info", ERXRoute.Method.Get, MApplicationController.class, "info"));
restHandler.addDefaultRoutes("MHost", false, MHostController.class);
restHandler.addDefaultRoutes("MSiteConfig", false, MSiteConfigController.class);
restHandler.insertRoute(new ERXRoute("MSiteConfig","/mSiteConfig", ERXRoute.Method.Put, MSiteConfigController.class, "update"));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,12 +1,17 @@
package com.webobjects.monitor.wotaskd.rest.controllers;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.webobjects.appserver.WOActionResults;
import com.webobjects.appserver.WORequest;
import com.webobjects.foundation.NSArray;
import com.webobjects.monitor._private.MApplication;
import com.webobjects.monitor._private.MHost;
import com.webobjects.monitor._private.MInstance;

import er.extensions.eof.ERXKeyFilter;
import er.extensions.eof.ERXQ;

public class MApplicationController extends JavaMonitorController {

Expand Down Expand Up @@ -101,5 +106,50 @@ private void deleteApplication(MApplication application) {
} finally {
}
}

public WOActionResults infoAction() {
checkPassword();

String type = request().stringFormValueForKey("type");
String name = request().stringFormValueForKey("name");

NSArray<MInstance> instances = siteConfig().instanceArray();
if ("app".equals(type)) {
instances = ERXQ.filtered(siteConfig().instanceArray(), ERXQ.is("applicationName", name));
} else if ("ins".equals(type)) {
Pattern p = Pattern.compile("^(.*)\\-([0-9]+)$");
Matcher m = p.matcher(name);
if (m.matches()) {
String applicationName = m.group(1);
String id = m.group(2);
instances = ERXQ.filtered(siteConfig().instanceArray(), ERXQ.is("applicationName", applicationName).and(ERXQ.is("id", id)));
}
}

return response(instances, instanceFilter());
}

public ERXKeyFilter instanceFilter() {
ERXKeyFilter filter = ERXKeyFilter.filterWithNone();
filter.include("applicationName");
filter.include("id");
filter.include("host.name");
filter.include("port");
filter.include("deaths");
filter.include("isRefusingNewSessions");
filter.include("isScheduled");
filter.include("schedulingHourlyStartTime");
filter.include("schedulingDailyStartTime");
filter.include("schedulingWeeklyStartTime");
filter.include("schedulingType");
filter.include("schedulingStartDay");
filter.include("schedulingInterval");
filter.include("transactions");
filter.include("activeSessions");
filter.include("averageIdlePeriod");
filter.include("avgTransactionTime");
filter.include("isAutoRecovering");
return filter;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.webobjects.monitor.wotaskd.rest.delegates;

import com.webobjects.eocontrol.EOClassDescription;
import com.webobjects.foundation.NSArray;
import com.webobjects.monitor._private.MInstance;

import er.extensions.eof.ERXQ;
import er.rest.ERXRestContext;

public class MInstanceRestDelegate extends JavaMonitorRestDelegate {
public Object primaryKeyForObject(Object obj, ERXRestContext context) {
NSArray<MInstance> objects = ERXQ.filtered(siteConfig().instanceArray(), ERXQ.is("applicationName", ((MInstance)obj).applicationName()).and(ERXQ.is("id", ((MInstance)obj).id())));
return objects.size() == 0 ? null : objects.objectAtIndex(0);
}

public Object createObjectOfEntityWithID(EOClassDescription entity, Object id, ERXRestContext context) {
return new MInstance(((MInstance)id).dictionaryForArchive(), siteConfig());
}

public Object objectOfEntityWithID(EOClassDescription entity, Object id, ERXRestContext context) {
return (siteConfig().instanceWithName(null));
}

}

0 comments on commit fe5447b

Please sign in to comment.