33
44package com .microsoft .applicationinsights .diagnostics .collection .jvm ;
55
6- import com .fasterxml . jackson . annotation . JsonCreator ;
7- import com .fasterxml . jackson . annotation . JsonProperty ;
6+ import com .azure . json . JsonSerializable ;
7+ import com .azure . json . JsonWriter ;
88import com .microsoft .applicationinsights .diagnostics .collection .libos .process .ProcessInfo ;
9+ import java .io .IOException ;
910import java .util .ArrayList ;
1011import java .util .Arrays ;
1112import java .util .Collections ;
1819/**
1920 * Represents information about a running process. Also attempts to redact any sensitive arguments.
2021 */
21- public class ProcessData implements ProcessInfo {
22+ public class ProcessData implements ProcessInfo , JsonSerializable < ProcessData > {
2223
23- private final String name ;
24- private final int pid ;
25- private final String uid ;
24+ private String name ;
25+ private int pid ;
26+ private String uid = UUID . randomUUID (). toString () ;
2627
27- @ Nullable private final Map <String , String > metaData ;
28+ @ Nullable private Map <String , String > metaData ;
2829
2930 private static final List <String > SENSITIVE_PROPERTIES_ARGS =
3031 Arrays .asList (
@@ -59,6 +60,8 @@ public class ProcessData implements ProcessInfo {
5960 SENSITIVE_ARGS_PATTERNS = Collections .unmodifiableList (patterns );
6061 }
6162
63+ public ProcessData () {}
64+
6265 public static String sanetiseArg (String name ) {
6366
6467 for (String pattern : SENSITIVE_ARGS_PATTERNS ) {
@@ -69,48 +72,78 @@ public static String sanetiseArg(String name) {
6972 }
7073
7174 public ProcessData (String name , int pid ) {
72- this (name , pid , UUID . randomUUID (). toString () );
75+ setName (name ). setPid ( pid );
7376 }
7477
7578 public ProcessData (String name , int pid , Map <String , String > metaData ) {
76- this (name , pid , UUID . randomUUID (). toString (), metaData );
79+ setName (name ). setPid ( pid ). setMetaData ( metaData );
7780 }
7881
7982 public ProcessData (String name , int pid , String uid ) {
80- this (name , pid , uid , null );
83+ setName (name ). setPid ( pid ). setUid ( uid );
8184 }
8285
8386 public ProcessData (String name ) {
84- this ( sanetiseArg ( name ), - 1 , UUID . randomUUID (). toString (), null );
87+ setName ( name ). setPid (- 1 );
8588 }
8689
8790 public ProcessData (ProcessInfo clone ) {
88- this (
89- (clone == null ? "Unknown" : clone .getName ()),
90- (clone == null ? -1 : clone .getPid ()),
91- (clone == null ? UUID .randomUUID ().toString () : clone .getUid ()),
92- (clone == null ? null : clone .getMetaData ()));
93- }
94-
95- @ JsonCreator
96- public ProcessData (
97- @ JsonProperty ("name" ) String name ,
98- @ JsonProperty ("pid" ) int pid ,
99- @ Nullable @ JsonProperty ("uid" ) String uid ,
100- @ Nullable @ JsonProperty ("metaData" ) Map <String , String > metaData ) {
91+ setName (clone == null ? "Unknown" : clone .getName ())
92+ .setPid (clone == null ? -1 : clone .getPid ())
93+ .setUid (clone == null ? UUID .randomUUID ().toString () : clone .getUid ())
94+ .setMetaData (clone == null ? null : clone .getMetaData ());
95+ }
96+
97+ @ Override
98+ public String getName () {
99+ return name ;
100+ }
101+
102+ public ProcessData setName (String name ) {
101103 this .name = sanetiseArg (name );
104+ return this ;
105+ }
106+
107+ @ Override
108+ public int getPid () {
109+ return pid ;
110+ }
111+
112+ public ProcessData setPid (int pid ) {
102113 this .pid = pid ;
103- if (uid == null ) {
104- this .uid = UUID .randomUUID ().toString ();
105- } else {
106- this .uid = uid ;
107- }
114+ return this ;
115+ }
108116
109- if (metaData != null ) {
110- this .metaData = Collections .unmodifiableMap (metaData );
111- } else {
112- this .metaData = null ;
113- }
117+ @ Override
118+ public String getUid () {
119+ return uid ;
120+ }
121+
122+ public ProcessData setUid (String uid ) {
123+ this .uid = uid ;
124+ return this ;
125+ }
126+
127+ @ Override
128+ @ Nullable
129+ public Map <String , String > getMetaData () {
130+ return metaData ;
131+ }
132+
133+ public ProcessData setMetaData (Map <String , String > metaData ) {
134+ this .metaData = metaData != null ? Collections .unmodifiableMap (metaData ) : null ;
135+ return this ;
136+ }
137+
138+ @ Override
139+ public JsonWriter toJson (JsonWriter jsonWriter ) throws IOException {
140+ jsonWriter .writeStartObject ();
141+ jsonWriter .writeStringField ("name" , name );
142+ jsonWriter .writeIntField ("pid" , pid );
143+ jsonWriter .writeStringField ("uid" , uid );
144+ jsonWriter .writeMapField ("metaData" , metaData , JsonWriter ::writeString );
145+ jsonWriter .writeEndObject ();
146+ return jsonWriter ;
114147 }
115148
116149 // @ExistsForTesting
@@ -127,21 +160,6 @@ protected static ProcessData create(String name, int pid, @Nullable String uid)
127160 return new ProcessData (name , pid , uid );
128161 }
129162
130- @ Override
131- public String getName () {
132- return name ;
133- }
134-
135- @ Override
136- public int getPid () {
137- return pid ;
138- }
139-
140- @ Override
141- public String getUid () {
142- return uid ;
143- }
144-
145163 @ Override
146164 public int compareTo (ProcessInfo o ) {
147165 return COMPARATOR .compare (this , o );
@@ -178,10 +196,4 @@ public boolean equals(Object obj) {
178196 }
179197 return pid == other .pid ;
180198 }
181-
182- @ Override
183- @ Nullable
184- public Map <String , String > getMetaData () {
185- return metaData ;
186- }
187199}
0 commit comments