diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/service/impl/utility/Analysis.java b/Kieker.WebGUI/src/main/java/kieker/webgui/service/impl/utility/Analysis.java index 5ea140950a78694da4e2c98cdc9c65bb06bf744d..1707f71cf97548af2c200f95672922cdb94dbf73 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/service/impl/utility/Analysis.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/service/impl/utility/Analysis.java @@ -53,7 +53,6 @@ public class Analysis { private final Object analysisControllerThread; private final Map<String, Map<String, Object>> displayPlugins = new HashMap<String, Map<String, Object>>(); - private final Map<String, Map<String, Object>> displayObjects = new HashMap<String, Map<String, Object>>(); private final Map<String, Map<String, Method>> displayMethods = new HashMap<String, Map<String, Method>>(); /** @@ -112,14 +111,10 @@ public class Analysis { if (!this.displayMethods.containsKey(viewName)) { this.displayMethods.put(viewName, new HashMap<String, Method>()); } - if (!this.displayObjects.containsKey(viewName)) { - this.displayObjects.put(viewName, new HashMap<String, Object>()); - } if (!this.displayPlugins.containsKey(viewName)) { this.displayPlugins.put(viewName, new HashMap<String, Object>()); } final Map<String, Method> methodMap = this.displayMethods.get(viewName); - final Map<String, Object> displayObjectMap = this.displayObjects.get(viewName); final Map<String, Object> displayPluginMap = this.displayPlugins.get(viewName); for (final Object displayConnector : displayConnectors) { @@ -136,7 +131,6 @@ public class Analysis { final String potentialDisplayName = (String) new Mirror().on(displayAnnoation).invoke().method("name").withoutArgs(); if (displayName.equals(potentialDisplayName)) { methodMap.put(displayConnectorName, method); - displayObjectMap.put(displayConnectorName, method.getParameterTypes()[0].newInstance()); displayPluginMap.put(displayConnectorName, plugin); break; } @@ -212,7 +206,10 @@ public class Analysis { * @return A display object for the given parameters. */ public Object getDisplay(final String viewName, final String displayName) { - return this.displayObjects.get(viewName).get(displayName); + final Object plugin = this.displayPlugins.get(viewName).get(displayName); + final Method method = this.displayMethods.get(viewName).get(displayName); + + return new Mirror().on(plugin).invoke().method(method).withoutArgs(); } /** @@ -233,15 +230,17 @@ public class Analysis { * Updates the display objects within this analysis. */ public void updateDisplays() { - for (final String view : this.displayMethods.keySet()) { - for (final String display : this.displayMethods.get(view).keySet()) { - final Object obj = this.displayObjects.get(view).get(display); - final Method method = this.displayMethods.get(view).get(display); - final Object plugin = this.displayPlugins.get(view).get(display); - - new Mirror().on(plugin).invoke().method(method).withArgs(obj); - } - } + /* + * for (final String view : this.displayMethods.keySet()) { + * for (final String display : this.displayMethods.get(view).keySet()) { + * final Object obj = this.displayObjects.get(view).get(display); + * final Method method = this.displayMethods.get(view).get(display); + * final Object plugin = this.displayPlugins.get(view).get(display); + * + * new Mirror().on(plugin).invoke().method(method).withArgs(obj); + * } + * } + */ } /** @@ -255,18 +254,18 @@ public class Analysis { * @return The type of the display connector. */ public DisplayType getDisplayType(final String viewName, final String displayConnectorName) { - final Object parameter = this.displayObjects.get(viewName).get(displayConnectorName); + final Class<?> parameter = this.displayMethods.get(viewName).get(displayConnectorName).getReturnType(); if (parameter == null) { return null; - } else if (parameter.getClass() == this.classContainer.getImageClass()) { + } else if (parameter == this.classContainer.getImageClass()) { return DisplayType.IMAGE; - } else if (parameter.getClass() == this.classContainer.getPlainTextClass()) { + } else if (parameter == this.classContainer.getPlainTextClass()) { return DisplayType.PLAIN_TEXT; - } else if (parameter.getClass() == this.classContainer.getHtmlTextClass()) { + } else if (parameter == this.classContainer.getHtmlTextClass()) { return DisplayType.HTML_TEXT; - } else if (parameter.getClass() == this.classContainer.getXYPlotClass()) { + } else if (parameter == this.classContainer.getXYPlotClass()) { return DisplayType.XY_PLOT; - } else if (parameter.getClass() == this.classContainer.getMeterGaugeClass()) { + } else if (parameter == this.classContainer.getMeterGaugeClass()) { return DisplayType.METER_GAUGE; } else { return null; diff --git a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java index ce40a8770e358a27e20c30bd5a70749d34809caf..3a83ee7f802ec1cd9879b0b93a7566f9d07a6132 100644 --- a/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java +++ b/Kieker.WebGUI/src/main/java/kieker/webgui/web/beans/view/CurrentCockpitBean.java @@ -19,6 +19,7 @@ package kieker.webgui.web.beans.view; import java.util.Arrays; import java.util.List; import java.util.Map; +import java.util.Set; import javax.faces.application.Application; import javax.faces.application.FacesMessage; @@ -464,21 +465,27 @@ public class CurrentCockpitBean { try { final Object displayObj = this.projectService.getDisplay(this.projectName, this.activeView.getName(), displayConnectorName); - final List<Number> intervals = (List<Number>) new Mirror().on(displayObj).invoke().method("getIntervals").withoutArgs(); - final Number value = (Number) new Mirror().on(displayObj).invoke().method("getValue").withoutArgs(); - - if (intervals.isEmpty()) { + final Set<String> keys = (Set<String>) new Mirror().on(displayObj).invoke().method("getKeys").withoutArgs(); + if (keys.isEmpty()) { meterGaugeChartModel.setIntervals(Arrays.asList((Number) 50)); meterGaugeChartModel.setValue(0); } else { - meterGaugeChartModel.setIntervals(intervals); - meterGaugeChart.setShadow(true); - meterGaugeChart.setSeriesColors("66cc66, 93b75f, E7E658, cc6666"); - final Number maxInterval = intervals.get(intervals.size() - 1); - if (value.doubleValue() <= maxInterval.doubleValue()) { - meterGaugeChartModel.setValue(value); + final List<Number> intervals = (List<Number>) new Mirror().on(displayObj).invoke().method("getIntervals").withArgs(keys.iterator().next()); + final Number value = (Number) new Mirror().on(displayObj).invoke().method("getValue").withArgs(keys.iterator().next()); + + if (intervals.isEmpty()) { + meterGaugeChartModel.setIntervals(Arrays.asList((Number) 50)); + meterGaugeChartModel.setValue(0); } else { - meterGaugeChartModel.setValue(maxInterval); + meterGaugeChartModel.setIntervals(intervals); + meterGaugeChart.setShadow(true); + meterGaugeChart.setSeriesColors("66cc66, 93b75f, E7E658, cc6666"); + final Number maxInterval = intervals.get(intervals.size() - 1); + if (value.doubleValue() <= maxInterval.doubleValue()) { + meterGaugeChartModel.setValue(value); + } else { + meterGaugeChartModel.setValue(maxInterval); + } } } } catch (final DisplayNotFoundException ex) { @@ -526,12 +533,18 @@ public class CurrentCockpitBean { try { final Object displayObj = this.projectService.getDisplay(this.projectName, this.activeView.getName(), displayConnectorName); - final Map<Object, Number> entries = (Map<Object, Number>) new Mirror().on(displayObj).invoke().method("getEntries").withoutArgs(); + final Set<String> keys = (Set<String>) new Mirror().on(displayObj).invoke().method("getKeys").withoutArgs(); - if (entries.isEmpty()) { + if (keys.isEmpty()) { lineChartSeries.set(0, 0); } else { - lineChartSeries.setData(entries); + final Map<Object, Number> entries = (Map<Object, Number>) new Mirror().on(displayObj).invoke().method("getEntries").withArgs(keys.iterator().next()); + + if (entries.isEmpty()) { + lineChartSeries.set(0, 0); + } else { + lineChartSeries.setData(entries); + } } } catch (final DisplayNotFoundException ex) { CurrentCockpitBean.LOG.warn("Display not found.", ex);