Skip to content

Commit e37f39c

Browse files
authored
Merge pull request #1042 from microsoft/trask/fix-jmx-configuration
Fix registration of custom JMX performance counters
2 parents 0d1c3d2 + 3db51de commit e37f39c

File tree

7 files changed

+55
-18
lines changed

7 files changed

+55
-18
lines changed

core/src/main/java/com/microsoft/applicationinsights/internal/config/JmxXmlElement.java

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,17 +21,23 @@
2121

2222
package com.microsoft.applicationinsights.internal.config;
2323

24-
import com.thoughtworks.xstream.annotations.XStreamAlias;
24+
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
2525

2626
/**
2727
* Created by gupele on 3/15/2015.
2828
*/
29-
@XStreamAlias("Add")
3029
public class JmxXmlElement {
3130

31+
@XStreamAsAttribute
3232
private String displayName;
33+
34+
@XStreamAsAttribute
3335
private String objectName;
36+
37+
@XStreamAsAttribute
3438
private String attribute;
39+
40+
@XStreamAsAttribute
3541
private String type;
3642

3743
public String getDisplayName() {

core/src/main/java/com/microsoft/applicationinsights/internal/config/PerformanceCountersXmlElement.java

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import com.thoughtworks.xstream.annotations.XStreamAlias;
2727
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
28+
import com.thoughtworks.xstream.annotations.XStreamImplicit;
2829

2930
/**
3031
* Created by gupele on 3/15/2015.
@@ -44,17 +45,17 @@ public class PerformanceCountersXmlElement {
4445
private String plugin;
4546

4647
@XStreamAlias("Jmx")
47-
private ArrayList<JmxXmlElement> jmxXmlElements;
48+
private JmxWrapperXmlElement jmxWrapper = new JmxWrapperXmlElement();
4849

4950
@XStreamAlias("Windows")
50-
private ArrayList<WindowsPerformanceCounterXmlElement> windowsPCs;
51+
private WindowsPCWrapperXmlElement windowsPCWrapper = new WindowsPCWrapperXmlElement();
5152

5253
public ArrayList<JmxXmlElement> getJmxXmlElements() {
53-
return jmxXmlElements;
54+
return jmxWrapper.jmxXmlElements;
5455
}
5556

5657
public void setJmxXmlElements(ArrayList<JmxXmlElement> jmxXmlElements) {
57-
this.jmxXmlElements = jmxXmlElements;
58+
jmxWrapper.jmxXmlElements = jmxXmlElements;
5859
}
5960

6061
public boolean isUseBuiltIn() {
@@ -66,11 +67,11 @@ public void setUseBuiltIn(boolean useBuiltIn) {
6667
}
6768

6869
public ArrayList<WindowsPerformanceCounterXmlElement> getWindowsPCs() {
69-
return windowsPCs;
70+
return windowsPCWrapper.windowsPCs;
7071
}
7172

7273
public void setWindowsPCs(ArrayList<WindowsPerformanceCounterXmlElement> windowsPCs) {
73-
this.windowsPCs = windowsPCs;
74+
windowsPCWrapper.windowsPCs = windowsPCs;
7475
}
7576

7677
public long getCollectionFrequencyInSec() {
@@ -96,4 +97,16 @@ public String getPlugin() {
9697
public void setPlugin(String plugin) {
9798
this.plugin = plugin;
9899
}
100+
101+
public static class JmxWrapperXmlElement {
102+
103+
@XStreamImplicit(itemFieldName = "Add")
104+
private ArrayList<JmxXmlElement> jmxXmlElements;
105+
}
106+
107+
public static class WindowsPCWrapperXmlElement {
108+
109+
@XStreamImplicit(itemFieldName = "Add")
110+
private ArrayList<WindowsPerformanceCounterXmlElement> windowsPCs;
111+
}
99112
}

core/src/main/java/com/microsoft/applicationinsights/internal/config/TelemetryProcessorXmlElement.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
/**
3131
* Created by gupele on 7/26/2016.
3232
*/
33-
@XStreamAlias("Processor")
3433
public class TelemetryProcessorXmlElement {
3534

3635
@XStreamAsAttribute

core/src/main/java/com/microsoft/applicationinsights/internal/config/TelemetryProcessorsXmlElement.java

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,31 +24,38 @@
2424
import java.util.ArrayList;
2525

2626
import com.thoughtworks.xstream.annotations.XStreamAlias;
27+
import com.thoughtworks.xstream.annotations.XStreamImplicit;
2728

2829
/**
2930
* Created by gupele on 7/26/2016.
3031
*/
3132
public class TelemetryProcessorsXmlElement {
3233

3334
@XStreamAlias("CustomProcessors")
34-
private ArrayList<TelemetryProcessorXmlElement> custom = new ArrayList<>();
35+
private TelemetryProcessorWrapperXmlElement customWrapper = new TelemetryProcessorWrapperXmlElement();
3536

3637
@XStreamAlias("BuiltInProcessors")
37-
private ArrayList<TelemetryProcessorXmlElement> builtIn = new ArrayList<>();
38+
private TelemetryProcessorWrapperXmlElement builtInWrapper = new TelemetryProcessorWrapperXmlElement();
3839

3940
public ArrayList<TelemetryProcessorXmlElement> getBuiltInTelemetryProcessors() {
40-
return builtIn;
41+
return builtInWrapper.processors;
4142
}
4243

4344
public void setBuiltInTelemetryProcessors(ArrayList<TelemetryProcessorXmlElement> builtIn) {
44-
this.builtIn = builtIn;
45+
builtInWrapper.processors = builtIn;
4546
}
4647

4748
public ArrayList<TelemetryProcessorXmlElement> getCustomTelemetryProcessors() {
48-
return custom;
49+
return customWrapper.processors;
4950
}
5051

5152
public void setCustomTelemetryProcessors(ArrayList<TelemetryProcessorXmlElement> custom) {
52-
this.custom = custom;
53+
customWrapper.processors = custom;
54+
}
55+
56+
public static class TelemetryProcessorWrapperXmlElement {
57+
58+
@XStreamImplicit(itemFieldName = "Processor")
59+
private ArrayList<TelemetryProcessorXmlElement> processors = new ArrayList<>();
5360
}
5461
}

core/src/main/java/com/microsoft/applicationinsights/internal/config/WindowsPerformanceCounterXmlElement.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,11 @@
2121

2222
package com.microsoft.applicationinsights.internal.config;
2323

24-
import com.thoughtworks.xstream.annotations.XStreamAlias;
2524
import com.thoughtworks.xstream.annotations.XStreamAsAttribute;
2625

2726
/**
2827
* Created by gupele on 3/30/2015.
2928
*/
30-
@XStreamAlias("Add")
3129
public class WindowsPerformanceCounterXmlElement {
3230

3331
@XStreamAsAttribute

core/src/test/java/com/microsoft/applicationinsights/internal/config/JaxbAppInsightsConfigurationBuilderTest.java

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import java.io.IOException;
2727
import java.io.InputStream;
28+
import java.util.ArrayList;
2829

2930
public final class JaxbAppInsightsConfigurationBuilderTest {
3031
private final static String EXISTING_CONF_TEST_FILE = "ApplicationInsights2.xml";
@@ -56,6 +57,16 @@ public void testBuilderProducesCorrectConfig() throws IOException {
5657
Assert.assertEquals("myrole", config.getRoleName());
5758
Assert.assertFalse(config.getChannel().getDeveloperMode());
5859
Assert.assertEquals("mypackage.MyCustomContextInitializer", config.getContextInitializers().getAdds().get(0).getType());
60+
61+
WindowsPerformanceCounterXmlElement windowsPC = config.getPerformance().getWindowsPCs().get(0);
62+
Assert.assertEquals("System Threads", windowsPC.getDisplayName());
63+
JmxXmlElement jmxXmlElement = config.getPerformance().getJmxXmlElements().get(0);
64+
Assert.assertEquals("Thread Count", jmxXmlElement.getDisplayName());
65+
TelemetryProcessorXmlElement builtInTelemetryProcessor =
66+
config.getTelemetryProcessors().getBuiltInTelemetryProcessors().get(0);
67+
Assert.assertEquals("FixedRateSamplingTelemetryProcessor", builtInTelemetryProcessor.getType());
68+
TelemetryProcessorXmlElement customTelemetryProcessor =
69+
config.getTelemetryProcessors().getCustomTelemetryProcessors().get(0);
70+
Assert.assertEquals("Test", customTelemetryProcessor.getType());
5971
}
6072
}
61-

core/src/test/resources/ApplicationInsights2.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,9 @@
266266
The structure is the same as BuiltInProcessors.
267267
See comments above for more information on implementation and configuration.
268268
-->
269+
<Processor type="Test">
270+
<Add name="Test" value="Test" />
271+
</Processor>
269272
</CustomProcessors>
270273
</TelemetryProcessors>
271274

0 commit comments

Comments
 (0)