/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 1997-2013 Oracle and/or its affiliates. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License"). You * may not use this file except in compliance with the License. You can * obtain a copy of the License at * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html * or packager/legal/LICENSE.txt. See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at packager/legal/LICENSE.txt. * * GPL Classpath Exception: * Oracle designates this particular file as subject to the "Classpath" * exception as provided by Oracle in the GPL Version 2 section of the License * file that accompanied this code. * * Modifications: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [year] [name of copyright owner]" * * Contributor(s): * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license." If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above. However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. */ package org.glassfish.admingui.common.handlers; import java.io.UnsupportedEncodingException; import org.glassfish.admingui.common.util.GuiUtil; import com.sun.jsftemplating.annotation.Handler; import com.sun.jsftemplating.annotation.HandlerInput; import com.sun.jsftemplating.annotation.HandlerOutput; import com.sun.jsftemplating.layout.descriptors.handler.HandlerContext; import java.net.URLEncoder; import java.util.List; import java.util.HashMap; import java.util.Map; import java.util.ArrayList; import java.text.DateFormat; import java.text.NumberFormat; import java.util.Arrays; import java.util.Locale; import java.util.Date; import java.util.ListIterator; import java.util.logging.Level; import org.glassfish.admingui.common.util.RestResponse; import org.glassfish.admingui.common.util.RestUtil; /** * * @author Ana */ public class MonitoringHandlers { @Handler(id = "gf.getMonitorLevels", input = { @HandlerInput(name = "endpoint", type = String.class, required = true)}, output = { @HandlerOutput(name = "monitorCompList", type = List.class) }) public static void getMonitorLevels(HandlerContext handlerCtx) { String endpoint = (String) handlerCtx.getInputValue("endpoint"); List result = new ArrayList(); try { String monitoringLevelsEndPoint = endpoint + "/monitoring-service/module-monitoring-levels"; Map<String, Object> attrs = RestUtil.getEntityAttrs(monitoringLevelsEndPoint, "entity"); for(Map.Entry<String,Object> e : attrs.entrySet()){ Map oneRow = new HashMap(); String name = null; String moduleName=e.getKey(); //workaround for GLASSFISH-19722. Skip any cloud module. if(moduleName.startsWith("cloud")){ continue; } ListIterator ni = monDisplayList.listIterator(); ListIterator vi = monNamesList.listIterator(); while (ni.hasNext() && vi.hasNext()) { String dispName = (String) ni.next(); String value = (String) vi.next(); if ((moduleName.equals(value))) { name = dispName; break; } } if (name == null) { name = moduleName; } oneRow.put("monCompName", name); oneRow.put("attrName", moduleName); oneRow.put("level", e.getValue()); oneRow.put("selected", false); result.add(oneRow); } } catch (Exception ex) { GuiUtil.handleException(handlerCtx, ex); } handlerCtx.setOutputValue("monitorCompList", result); } /* * This handler returns a list of statistical data for an endpoint. * Useful for populating table */ @Handler(id = "getStats", input = { @HandlerInput(name = "endpoint", type = String.class, required = true), @HandlerInput(name = "statType", type = String.class), @HandlerInput(name = "type", type = String.class)}, output = { @HandlerOutput(name = "result", type = List.class), @HandlerOutput(name = "hasStats", type = Boolean.class)}) public static void getStats(HandlerContext handlerCtx) { String endpoint = (String) handlerCtx.getInputValue("endpoint"); String statType = (String) handlerCtx.getInputValue("statType"); String type = (String) handlerCtx.getInputValue("type"); Locale locale = GuiUtil.getLocale(); DateFormat df = DateFormat.getDateTimeInstance(DateFormat.DEFAULT, DateFormat.DEFAULT, locale); //NumberFormat nf = NumberFormat.getNumberInstance(locale); List result = new ArrayList(); try { //This check is to get the correct type of statistics. if ((type == null || statType == null) || type.equals(statType)) { if (RestUtil.doesProxyExist(endpoint)) { Map<String, Object> stats = getMonitoringStatInfo(endpoint); //Jersey monitoring data format if (statType != null && statType.equals("jersey")) { Map<String, Object> jerseyStats = new HashMap<String, Object>(); for(Map.Entry<String,Object> e : stats.entrySet()){ Map<String, Object> jerseyStat = (Map<String, Object>) e.getValue(); if (jerseyStat != null) { jerseyStats.putAll(jerseyStat); } } stats = jerseyStats; } for(Map.Entry<String,Object> e : stats.entrySet()){ if (!(e.getValue().getClass().equals(HashMap.class))) { continue; } Map<String, Object> monAttrs = (Map<String, Object>) e.getValue(); Map<String, String> statMap = new HashMap(); String val = ""; String details = "--"; String desc = "--"; String start = "--"; String last = "--"; String unit = ""; String mname = null; String runtimes = null; String queuesize = null; String thresholds = "--"; if (!monAttrs.isEmpty()) { if (monAttrs.containsKey("name")) { mname = (String) monAttrs.get("name"); } else if (monAttrs.containsKey("appname")) { mname = (String) monAttrs.get("appname"); } unit = (String) monAttrs.get("unit"); desc = (String) monAttrs.get("description"); Long lastTime = (Long) monAttrs.get("lastsampletime"); if (lastTime != -1) { last = df.format(new Date(lastTime)); } Long startTime = (Long) monAttrs.get("starttime"); if (startTime != -1) { start = df.format(new Date(startTime)); } if (monAttrs.containsKey("count")) { val = monAttrs.get("count") + " " + unit; } else if (monAttrs.containsKey("current")) { if (unit != null) { if (unit.equals("String")) { if (mname.equals("LiveThreads")) { String str = (String) monAttrs.get("current"); val = formatStringForDisplay(str); } else { val = (String) monAttrs.get("current"); } } else if (unit.equals("List")) { String str = (String) monAttrs.get("current"); String formatStr = formatActiveIdsForDisplay(str); if (!formatStr.isEmpty() && !formatStr.equals("")) { val = formatStr; } } else { Long currentVal = (Long) monAttrs.get("current"); val = currentVal + unit; } } } else if (monAttrs.containsKey("applicationtype")) { val = (String) monAttrs.get("applicationtype"); } //Update the details if (monAttrs.containsKey("appName")) { details = (GuiUtil.getMessage("msg.AppName") + ": " + monAttrs.get("appName") + "<br/>"); } if (monAttrs.containsKey("appname")) { details = (GuiUtil.getMessage("msg.AppName") + ": " + monAttrs.get("appname") + "<br/>"); } if (monAttrs.containsKey("environment")) { details = details + (GuiUtil.getMessage("msg.Environment") + ": " + monAttrs.get("environment") + "<br/>"); } if (monAttrs.containsKey("address")) { details = details + (GuiUtil.getMessage("msg.Address") + ": " + monAttrs.get("address") + "<br/>"); } if (monAttrs.containsKey("deploymenttype")) { details = details + (GuiUtil.getMessage("msg.DepType") + ": " + monAttrs.get("deploymenttype") + "<br/>"); } if (monAttrs.containsKey("endpointname")) { details = details + (GuiUtil.getMessage("msg.EndPointName") + ": " + monAttrs.get("endpointname") + "<br/>"); } if (monAttrs.containsKey("classname")) { details = (GuiUtil.getMessage("msg.ClassName") + ": " + monAttrs.get("classname") + "<br/>"); } if (monAttrs.containsKey("impltype")) { details = details + (GuiUtil.getMessage("msg.ImplClass") + ": " + monAttrs.get("implclass") + "<br/>"); } if (monAttrs.containsKey("implclass") && monAttrs.containsKey("impltype")) { details = details + (GuiUtil.getMessage("msg.ImplType") + ": " + monAttrs.get("impltype") + "<br/>"); } if (monAttrs.containsKey("namespace")) { details = details + (GuiUtil.getMessage("msg.NameSpace") + ": " + monAttrs.get("namespace") + "<br/>"); } if (monAttrs.containsKey("portname")) { details = details + (GuiUtil.getMessage("msg.PortName") + ": " + monAttrs.get("portname") + "<br/>"); } if (monAttrs.containsKey("servicename")) { details = details + (GuiUtil.getMessage("msg.ServiceName") + ": " + monAttrs.get("servicename") + "<br/>"); } if (monAttrs.containsKey("tester")) { details = details + (GuiUtil.getMessage("msg.Tester") + ": " + monAttrs.get("tester") + "<br/>"); } if (monAttrs.containsKey("wsdl")) { details = details + (GuiUtil.getMessage("msg.WSDL") + ": " + monAttrs.get("wsdl") + "<br/>"); } if (monAttrs.containsKey("maxtime")) { details = (GuiUtil.getMessage("msg.MaxTime") + ": " + monAttrs.get("maxtime") + " " + unit + "<br/>"); } if (monAttrs.containsKey("mintime")) { details = details + (GuiUtil.getMessage("msg.MinTime") + ": " + monAttrs.get("mintime") + " " + unit + "<br/>"); } if (monAttrs.containsKey("totaltime")) { details = details + (GuiUtil.getMessage("msg.TotalTime") + ": " + monAttrs.get("totaltime") + " " + unit + "<br/>"); } if (monAttrs.containsKey("highwatermark")) { details = (GuiUtil.getMessage("msg.HWaterMark") + ": " + monAttrs.get("highwatermark") + " " + unit + "<br/>"); } if (monAttrs.containsKey("lowwatermark")) { details = details + (GuiUtil.getMessage("msg.LWaterMark") + ": " + monAttrs.get("lowwatermark") + " " + unit + "<br/>"); } if (monAttrs.containsKey("activeruntimes")) { runtimes = (String) monAttrs.get("activeruntimes"); } if (monAttrs.containsKey("queuesize")) { queuesize = (String) monAttrs.get("queuesize"); } if (monAttrs.containsKey("hardmaximum") && monAttrs.get("hardmaximum") != null) { val = monAttrs.get("hardmaximum") + " " + "hard max " + "<br/>" + monAttrs.get("hardminimum") + " " + "hard min"; } if (monAttrs.containsKey("newthreshold") && monAttrs.get("newThreshold") != null) { thresholds = monAttrs.get("newthreshold") + " " + "new " + "<br/>" + monAttrs.get("queuedownthreshold") + " " + "queue down"; } if (monAttrs.containsKey("queuesize") && monAttrs.containsKey("environment")) { details = details + monAttrs.get("environment"); } statMap.put("name", mname); statMap.put("startTime", start); statMap.put("lastTime", last); statMap.put("description", desc); statMap.put("value", (val == null) ? "" : val); statMap.put("details", details); statMap.put("thresholds", thresholds); statMap.put("queueSize", (queuesize == null) ? "--" : queuesize); statMap.put("runtimes", (runtimes == null) ? "--" : runtimes); result.add(statMap); } } } } handlerCtx.setOutputValue("result", result); handlerCtx.setOutputValue("hasStats", (result.size() == 0) ? false : true); } catch (Exception ex) { GuiUtil.handleException(handlerCtx, ex); } } @Handler(id = "updateMonitorLevels", input = { @HandlerInput(name = "allRows", type = List.class, required = true), @HandlerInput(name = "endpoint", type = String.class)}) public static void updateMonitorLevels(HandlerContext handlerCtx) { String endpoint = (String) handlerCtx.getInputValue("endpoint"); List<Map> allRows = (List<Map>) handlerCtx.getInputValue("allRows"); Map payload = new HashMap(); for (Map<String, String> oneRow : allRows) { payload.put(oneRow.get("attrName"), oneRow.get("level")); } try{ RestUtil.restRequest( endpoint , payload, "post" , null, false); }catch (Exception ex){ GuiUtil.getLogger().severe(GuiUtil.getCommonMessage("msg.error.save.monitor.modules" , new Object[]{endpoint, payload})); GuiUtil.handleError(handlerCtx, GuiUtil.getMessage("msg.error.checkLog")); return; } } /** * <p> Add list to new list */ @Handler(id = "addToMonitorList", input = { @HandlerInput(name = "oldList", type = List.class), @HandlerInput(name = "newList", type = List.class)}, output = { @HandlerOutput(name = "result", type = List.class) }) public static void addToMonitorList(HandlerContext handlerCtx) { List<String> oldList = (List) handlerCtx.getInputValue("oldList"); List<String> newList = (List) handlerCtx.getInputValue("newList"); if (newList == null) { newList = new ArrayList(); } if (oldList != null) { for (String sk : oldList) { newList.add(sk); } } handlerCtx.setOutputValue("result", newList); } @Handler(id = "getValidMonitorLevels", output = { @HandlerOutput(name = "monitorLevelList", type = List.class) }) public static void getValidMonitorLevels(HandlerContext handlerCtx) { handlerCtx.setOutputValue("monitorLevelList", levels); } @Handler(id = "getFirstValueFromList", input = { @HandlerInput(name = "values", type = List.class, required = true)}, output = { @HandlerOutput(name = "firstValue", type = String.class) }) public static void getFirstValueFromList(HandlerContext handlerCtx) { List values = (List) handlerCtx.getInputValue("values"); String firstval = ""; if ((values != null) && (values.size() != 0)) { firstval = (String) values.get(0); } handlerCtx.setOutputValue("firstValue", firstval); } @Handler(id = "getAppName", input = { @HandlerInput(name = "endpoint", type = String.class, required = true), @HandlerInput(name = "name", type = String.class, required = true)}, output = { @HandlerOutput(name = "appName", type = String.class), @HandlerOutput(name = "appFullName", type = String.class) }) public static void getAppName(HandlerContext handlerCtx) { String endpoint = (String) handlerCtx.getInputValue("endpoint"); String name = (String) handlerCtx.getInputValue("name"); String appName = name; String fullName = name; try { List<String> applications = new ArrayList<String>(RestUtil.getChildMap(endpoint).keySet()); for (String oneApp : applications) { List<String> modules = new ArrayList<String>(RestUtil.getChildMap(endpoint + "/" + oneApp + "/module").keySet()); if (modules.contains(name)) { appName = oneApp; break; } } if (fullName != null && !(name.equals(appName))) { fullName = URLEncoder.encode(appName, "UTF-8") + "/" + URLEncoder.encode(name, "UTF-8"); } if (appName != null) { appName = URLEncoder.encode(appName, "UTF-8"); } } catch (Exception ex) { GuiUtil.handleException(handlerCtx, ex); } handlerCtx.setOutputValue("appName", appName); handlerCtx.setOutputValue("appFullName", fullName); } @Handler(id = "getWebStatsUrl", input = { @HandlerInput(name = "app", type = String.class, required = true), @HandlerInput(name = "compVal", type = String.class, required = true), @HandlerInput(name = "vsList", type = List.class, required = true), @HandlerInput(name = "monitorURL", type = String.class, required = true), @HandlerInput(name = "moduleProps", type = Map.class, required = true)}, output = { @HandlerOutput(name = "webServletUrl", type = String.class), @HandlerOutput(name = "webServletType", type = String.class), @HandlerOutput(name = "webUrl", type = String.class), @HandlerOutput(name = "webType", type = String.class) }) public static void getWebStatsUrl(HandlerContext handlerCtx) { String app = (String) handlerCtx.getInputValue("app"); String monitorURL = (String) handlerCtx.getInputValue("monitorURL"); List<String> vsList = (List<String>) handlerCtx.getInputValue("vsList"); String compVal = (String) handlerCtx.getInputValue("compVal"); Map<String, String> moduleProps = (Map<String, String>) handlerCtx.getInputValue("moduleProps"); String webUrl = "EMPTY"; String webServletUrl = "EMPTY"; String statType = "EMPTY"; String webType = "EMPTY"; String monitorEndpoint = monitorURL + "/applications/" + app; try { for (String vs : vsList) { if (doesMonitoringDataExist(monitorEndpoint + "/" + URLEncoder.encode(vs, "UTF-8"))) { webUrl = monitorEndpoint + "/" + URLEncoder.encode(vs, "UTF-8"); webType = "Web"; break; } } if (compVal != null && !(compVal.equals(""))) { String[] compStrs = compVal.split("/"); if (vsList.contains(compStrs[0])) { if (moduleProps != null && moduleProps.containsKey(compStrs[1]) && moduleProps.get(compStrs[1]).equals("Servlet")) { monitorEndpoint = monitorEndpoint + "/" + URLEncoder.encode(compStrs[0], "UTF-8") + "/" + URLEncoder.encode(compStrs[1], "UTF-8"); if (RestUtil.doesProxyExist(monitorEndpoint)) { webServletUrl = monitorEndpoint; statType = "ServletInstance"; } } } } } catch (UnsupportedEncodingException ex) { GuiUtil.getLogger().info(GuiUtil.getCommonMessage("log.error.getWebStatsUrl") + ex.getLocalizedMessage()); if (GuiUtil.getLogger().isLoggable(Level.FINE)) { ex.printStackTrace(); } } handlerCtx.setOutputValue("webServletUrl", webServletUrl); handlerCtx.setOutputValue("webServletType", statType); handlerCtx.setOutputValue("webUrl", webUrl); handlerCtx.setOutputValue("webType", webType); } @Handler(id = "getStatsUrl", input = { @HandlerInput(name = "app", type = String.class, required = true), @HandlerInput(name = "moduleProps", type = Map.class, required = true), @HandlerInput(name = "monitorURL", type = String.class, required = true), @HandlerInput(name = "compVal", type = String.class, required = true)}, output = { @HandlerOutput(name = "statUrl", type = String.class), @HandlerOutput(name = "statType", type = String.class) }) public static void getStatsUrl(HandlerContext handlerCtx) { String app = (String) handlerCtx.getInputValue("app"); String comp = (String) handlerCtx.getInputValue("compVal"); String monitorURL = (String) handlerCtx.getInputValue("monitorURL"); Map<String, String> moduleProps = (Map<String, String>) handlerCtx.getInputValue("moduleProps"); StringBuilder statUrl = new StringBuilder(); String statType = ""; if (comp != null && !(comp.trim().equals(""))) { List<String> compStrs = new ArrayList<String>(); if (comp.startsWith("resources/")) { compStrs.add("resources"); compStrs.add(comp.substring(10)); } else { compStrs = Arrays.asList(comp.split("/")); } try { statUrl = statUrl.append(monitorURL).append("/applications/").append(app); for (String str : compStrs) { statUrl = statUrl.append("/").append(URLEncoder.encode(str, "UTF-8")); } } catch (UnsupportedEncodingException ex) { GuiUtil.getLogger().log(Level.INFO, "{0}{1}", new Object[]{GuiUtil.getCommonMessage("log.error.getStatsUrl"), ex.getLocalizedMessage()}); if (GuiUtil.getLogger().isLoggable(Level.FINE)) { ex.printStackTrace(); } } if (RestUtil.doesProxyExist(statUrl.toString())) { if (compStrs.size() == 1) { statType = (String) moduleProps.get(compStrs.get(0)); } else if (compStrs.get(0).equals("resources")) { statType="AppScopedResource"; } else { statType = modifyStatType(compStrs.get(1)); } } }else{ statUrl.append("EMPTY"); } handlerCtx.setOutputValue("statUrl", statUrl.toString()); handlerCtx.setOutputValue("statType", statType); } /* * Filter the request,session,jsp and servlets. * Filed an issue :12687. * Once this issue is resolved, we can remove this handler. */ @Handler(id = "filterWebStats", input = { @HandlerInput(name = "webStats", type = List.class, required = true), @HandlerInput(name = "statType", type = String.class, required = true)}, output = { @HandlerOutput(name = "stats", type = List.class) }) public static void filterWebStats(HandlerContext handlerCtx) { List<Map> webStats = (List<Map>) handlerCtx.getInputValue("webStats"); String statType = (String) handlerCtx.getInputValue("statType"); List<String> requestStatNames = java.util.Arrays.asList("MaxTime", "ProcessingTime", "RequestCount", "ErrorCount"); List stats = new ArrayList(); if (webStats != null) { for (Map webStat : webStats) { String statName = (String) webStat.get("name"); if (requestStatNames.contains(statName) && statType.equals("Request")) { stats.add(webStat); } else if (statName.contains(statType) && !(statType.equals("Request"))) { stats.add(webStat); } } } handlerCtx.setOutputValue("stats", stats); } /* * Returns true if the given pool name is the child of an entity * (jdbc connection pools or connector connection pools). * This is used in monitoringResourceStats.jsf. */ @Handler(id = "isPool", input = { @HandlerInput(name = "poolName", type = String.class, required = true), @HandlerInput(name = "endpoint", type = String.class, required = true)}, output = { @HandlerOutput(name = "result", type = Boolean.class) }) public static void isPool(HandlerContext handlerCtx) { String poolName = (String) handlerCtx.getInputValue("poolName"); String endpoint = (String) handlerCtx.getInputValue("endpoint"); Boolean result = false; try { List<String> poolNames = new ArrayList<String>(RestUtil.getChildMap(endpoint).keySet()); if (poolNames.contains(poolName)) { result = true; } } catch (Exception ex) { GuiUtil.handleException(handlerCtx, ex); } handlerCtx.setOutputValue("result", result); } /* * Returns the jdbc connection pools, connector connection pools, * first jdbc element and first connector element for the given set of * pool names and resources endpoint. */ @Handler(id = "gf.getMonitoringPools", input = { @HandlerInput(name = "poolNames", type = List.class, required = true), @HandlerInput(name = "endpoint", type = String.class, required = true)}, output = { @HandlerOutput(name = "jdbcList", type = List.class), @HandlerOutput(name = "firstJdbc", type = String.class), @HandlerOutput(name = "connectorList", type = List.class), @HandlerOutput(name = "firstConnector", type = String.class) }) public static void getMonitoringPools(HandlerContext handlerCtx) { List<String> poolNames = (List<String>) handlerCtx.getInputValue("poolNames"); String endpoint = (String) handlerCtx.getInputValue("endpoint"); List<String> jdbcMonitorList = new ArrayList<String>(); List<String> connectorMonitorList = new ArrayList<String>(); String fisrtJdbc = ""; String firstConnector = ""; try { List<String> jdbcPools = new ArrayList<String>(RestUtil.getChildMap(endpoint + "/jdbc-connection-pool").keySet()); List<String> connectorPools = new ArrayList<String>(RestUtil.getChildMap(endpoint + "/connector-connection-pool").keySet()); for (String poolName : poolNames) { if (jdbcPools.contains(poolName)) { jdbcMonitorList.add(poolName); } else if (connectorPools.contains(poolName)) { connectorMonitorList.add(poolName); } } } catch (Exception ex) { GuiUtil.handleException(handlerCtx, ex); } handlerCtx.setOutputValue("jdbcList", jdbcMonitorList); handlerCtx.setOutputValue("firstJdbc", fisrtJdbc); handlerCtx.setOutputValue("connectorList", connectorMonitorList); handlerCtx.setOutputValue("firstConnector", firstConnector); } @Handler(id = "gf.getInstanceMonitorURL", input = { @HandlerInput(name = "instanceName", type = String.class, defaultValue = "server")}, output = { @HandlerOutput(name = "monitorURL", type = String.class) }) public static void getInstanceMonitorURL(HandlerContext handlerCtx) { String instanceName = (String) handlerCtx.getInputValue("instanceName"); String monitorURL = (String) GuiUtil.getSessionValue("MONITOR_URL") + "/" + instanceName; handlerCtx.setOutputValue("monitorURL", monitorURL); } public static Boolean doesAppProxyExist(String appName, String moduleName) { boolean proxyexist = false; Map<String, Object> subComps = getSubComponents(appName, moduleName); if (subComps != null && subComps.size() > 0) { proxyexist = true; } return proxyexist; } public static Map<String, Object> getSubComponents(String appName, String moduleName) { String endpoint = GuiUtil.getSessionValue("REST_URL") + "/applications/application/" + appName + "/list-sub-components"; Map<String, Object> attrs = new HashMap<String, Object>(); attrs.put("appname", appName); attrs.put("id", moduleName); try { Map<String, Object> responseMap = RestUtil.restRequest(endpoint, attrs, "GET", null, false); Map<String, Object> propsMap = (Map<String, Object>) ((Map<String, Object>) responseMap.get("data")).get("properties"); if (propsMap != null && propsMap.size() > 0) { return propsMap; } } catch (Exception ex) { GuiUtil.getLogger().severe("Error in getSubComponents ; \nendpoint = " + endpoint + "attrs=" + attrs + "method=GET"); //we don't need to call GuiUtil.handleError() because thats taken care of in restRequest() when we pass in the handler. } return null; } public static Boolean doesMonitoringDataExist(String endpoint) { if (RestUtil.doesProxyExist(endpoint)) { if (getMonitoringStatInfo(endpoint).size() > 0) { return true; } } return false; } public static String modifyStatType(String name) { String[] nameStrs = name.split("-"); StringBuilder modifiedName = new StringBuilder(); for (int i = 0; i < nameStrs.length; i++) { String tmp = nameStrs[i].substring(0, 1).toUpperCase(GuiUtil.guiLocale) + nameStrs[i].substring(1); modifiedName.append(tmp); } return modifiedName.toString(); } private static String formatActiveIdsForDisplay(String str) { if (str==null){ return ""; } StringBuilder values = new StringBuilder(" "); String[] strArray = str.split("%%%EOL%%%"); if (strArray.length > 0) { values.append("<table>"); for (String s : (String[]) strArray) { if (s.startsWith("Transaction")) { String sh = s.replaceFirst(" ", "_"); String[] strHeaders = sh.split(" "); if (strHeaders.length > 0) { values.append("<tr>"); for (String h : (String[]) strHeaders) { if (!h.isEmpty()) { values.append("<td>").append("</td>"); } } values.append("</tr>"); } } else { String[] strData = s.split(" "); if (strData.length > 0) { values.append("<tr>"); for (String d : (String[]) strData) { if (!d.isEmpty()) { values.append("<td>").append(d).append("</td>"); } } values.append("</tr>"); } } } values.append("</table>"); } return values.toString(); } private static String formatStringForDisplay(String strToFormat) { String[] strs = strToFormat.split(","); StringBuilder formattedStr = new StringBuilder(); if (strs.length > 10) { for (int i = 0; i < strs.length; i++) { String str = strs[i]; if (! (formattedStr.length() == 0)) { formattedStr.append(","); } if (i % 10 == 0 && i != 0) { formattedStr.append("\n"); } formattedStr.append(str); } return formattedStr.toString(); } return strToFormat; } private static Map<String, Object> getMonitoringStatInfo(String endpoint) { Map<String, Object> monitorInfoMap = new HashMap<String, Object>(); try { Map<String, Object> responseMap = RestUtil.restRequest(endpoint, null, "GET", null, false); Map<String, Object> dataMap = (Map<String, Object>) responseMap.get("data"); if (dataMap != null) { Map<String, Object> extraPropsMap = (Map<String, Object>) dataMap.get("extraProperties"); if (extraPropsMap != null) { Map<String, Object> entityMap = (Map<String, Object>) extraPropsMap.get("entity"); if (entityMap != null) { monitorInfoMap = entityMap; } } } } catch (Exception ex) { GuiUtil.getLogger().log(Level.SEVERE,"Error in getMonitoringStatInfo ; \nendpoint = {0}" + "attrs=" + "method=GET", endpoint); //we don't need to call GuiUtil.handleError() because thats taken care of in restRequest() when we pass in the handler. } return monitorInfoMap; } final private static List<String> levels = new ArrayList(); static { levels.add("OFF"); levels.add("LOW"); levels.add("HIGH"); } //monitoring modulemonitoring.module names public static final String JVM = GuiUtil.getCommonMessage("monitoring.module.Jvm"); public static final String WEB_CONTAINER = GuiUtil.getCommonMessage("monitoring.module.Web"); public static final String HTTP_SERVICE = GuiUtil.getCommonMessage("monitoring.module.Http"); public static final String THREAD_POOL = GuiUtil.getCommonMessage("monitoring.module.ThreadPool"); public static final String JDBC_CONNECTION_POOL = GuiUtil.getCommonMessage("monitoring.module.Jdbc"); public static final String CONNECTOR_CONNECTION_POOL = GuiUtil.getCommonMessage("monitoring.module.Connector"); public static final String EJB_CONTAINER = GuiUtil.getCommonMessage("monitoring.module.Ejb"); public static final String TRANSACTION_SERVICE = GuiUtil.getCommonMessage("monitoring.module.TransactionService"); public static final String ORB = GuiUtil.getCommonMessage("monitoring.module.Orb"); public static final String CONNECTOR_SERVICE = GuiUtil.getCommonMessage("monitoring.module.ConnectorService"); public static final String JMS_SERVICE = GuiUtil.getCommonMessage("monitoring.module.JmsService"); public static final String WEB_SERVICES_CONTAINER = GuiUtil.getCommonMessage("monitoring.module.WebServices"); public static final String JPA = GuiUtil.getCommonMessage("monitoring.module.Jpa"); public static final String SECURITY = GuiUtil.getCommonMessage("monitoring.module.Security"); public static final String JERSEY = GuiUtil.getCommonMessage("monitoring.module.Jersey"); public static final String DEPLOYMENT = GuiUtil.getCommonMessage("monitoring.module.Deployment"); final private static List monDisplayList = new ArrayList(); static { monDisplayList.add(JVM); monDisplayList.add(WEB_CONTAINER); monDisplayList.add(HTTP_SERVICE); monDisplayList.add(THREAD_POOL); monDisplayList.add(JDBC_CONNECTION_POOL); monDisplayList.add(CONNECTOR_CONNECTION_POOL); monDisplayList.add(EJB_CONTAINER); monDisplayList.add(TRANSACTION_SERVICE); monDisplayList.add(ORB); monDisplayList.add(CONNECTOR_SERVICE); monDisplayList.add(JMS_SERVICE); monDisplayList.add(WEB_SERVICES_CONTAINER); monDisplayList.add(JPA); monDisplayList.add(SECURITY); monDisplayList.add(JERSEY); monDisplayList.add(DEPLOYMENT); } final private static List monNamesList = new ArrayList(); static { monNamesList.add("jvm"); monNamesList.add("webContainer"); monNamesList.add("httpService"); monNamesList.add("threadPool"); monNamesList.add("jdbcConnectionPool"); monNamesList.add("connectorConnectionPool"); monNamesList.add("ejbContainer"); monNamesList.add("transactionService"); monNamesList.add("orb"); monNamesList.add("connectorService"); monNamesList.add("jmsService"); monNamesList.add("webServicesContainer"); monNamesList.add("jpa"); monNamesList.add("security"); monNamesList.add("jersey"); monNamesList.add("deployment"); } final private static List containerDispList = new ArrayList(); final private static List containerNameList = new ArrayList(); }