Skip to content

Commit 3a291f7

Browse files
committed
Update XMLReader plugin ContentHandler calls
According to the javadoc for ContentHandler.startElement, if there are no attributes, then an empty Attributes object should be passed rather than null. For both startElement and endElement if qualified names are not available then the qname parameter should be an empty string. It was already being used this way in most instances, but a few were passing null instead. Signed-off-by: Tony Germano <tony@germano.name>
1 parent 42a64a5 commit 3a291f7

File tree

4 files changed

+67
-67
lines changed

4 files changed

+67
-67
lines changed

server/src/com/mirth/connect/plugins/datatypes/delimited/DelimitedReader.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ public void parse(InputSource input) throws SAXException, IOException {
8484
contentHandler.startDocument();
8585

8686
// Output <delimited>
87-
contentHandler.startElement("", documentHead, "", null);
87+
contentHandler.startElement("", documentHead, "", getEmptyAttributes());
8888

8989
// While the parser gets records from the message
9090
ArrayList<String> record;
@@ -93,9 +93,9 @@ public void parse(InputSource input) throws SAXException, IOException {
9393

9494
// Output <rowN>
9595
if (serializationProperties.isNumberedRows()) {
96-
contentHandler.startElement("", "row" + recordNo, "", null);
96+
contentHandler.startElement("", "row" + recordNo, "", getEmptyAttributes());
9797
} else {
98-
contentHandler.startElement("", "row", "", null);
98+
contentHandler.startElement("", "row", "", getEmptyAttributes());
9999
}
100100

101101
// For each column
@@ -110,7 +110,7 @@ public void parse(InputSource input) throws SAXException, IOException {
110110
columnName = "column" + (i + 1);
111111
}
112112
// Output <columnN>
113-
contentHandler.startElement("", columnName, "", null);
113+
contentHandler.startElement("", columnName, "", getEmptyAttributes());
114114

115115
// Output column value
116116
String val = record.get(i);

server/src/com/mirth/connect/plugins/datatypes/edi/EDIReader.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -74,13 +74,13 @@ public void parse(InputSource input) throws SAXException, IOException {
7474
documentHead = "EDIMessage";
7575
}
7676

77-
AttributesImpl attributesImpl = new AttributesImpl();
77+
AttributesImpl attributesImpl = getEmptyAttributes();
7878
attributesImpl.addAttribute("", "segmentDelimiter", "", "", segmentDelimiter);
7979
attributesImpl.addAttribute("", "elementDelimiter", "", "", elementDelimiter);
8080
attributesImpl.addAttribute("", "subelementDelimiter", "", "", subelementDelimiter);
8181
contentHandler.startElement("", documentHead, "", attributesImpl);
8282
}
83-
contentHandler.startElement("", segmentID, "", null);
83+
contentHandler.startElement("", segmentID, "", getEmptyAttributes());
8484

8585
int fieldID = 0;
8686
String field = "00";
@@ -97,7 +97,7 @@ public void parse(InputSource input) throws SAXException, IOException {
9797
// The naming is SEG.<field number>
9898
if (element.equals(elementDelimiter)) {
9999
if (lastsegElement) {
100-
contentHandler.startElement("", segmentID + "." + field, "", null);
100+
contentHandler.startElement("", segmentID + "." + field, "", getEmptyAttributes());
101101
contentHandler.endElement("", segmentID + "." + field, "");
102102
}
103103
fieldID++;
@@ -106,7 +106,7 @@ public void parse(InputSource input) throws SAXException, IOException {
106106
lastsegElement = false;
107107

108108
if (element.indexOf(subelementDelimiter) > -1) {
109-
contentHandler.startElement("", segmentID + "." + field, "", null);
109+
contentHandler.startElement("", segmentID + "." + field, "", getEmptyAttributes());
110110
// check if we have sub-elements, if so add them
111111
StringTokenizer subelementTokenizer = new StringTokenizer(element, subelementDelimiter, true);
112112
subelementID = 1;
@@ -116,7 +116,7 @@ public void parse(InputSource input) throws SAXException, IOException {
116116
if (subelement.equals(subelementDelimiter)) {
117117
String subelementName = segmentID + "." + field + "." + subelementID;
118118
if (lastsegSubelement) {
119-
contentHandler.startElement("", subelementName, "", null);
119+
contentHandler.startElement("", subelementName, "", getEmptyAttributes());
120120
contentHandler.characters("".toCharArray(), 0, 0);
121121
contentHandler.endElement("", subelementName, "");
122122
}
@@ -128,27 +128,27 @@ public void parse(InputSource input) throws SAXException, IOException {
128128
lastsegSubelement = false;
129129
// The naming is SEG.<field
130130
// number>.<element number>
131-
contentHandler.startElement("", subelementName, "", null);
131+
contentHandler.startElement("", subelementName, "", getEmptyAttributes());
132132
contentHandler.characters(subelement.toCharArray(), 0, subelement.length());
133133
contentHandler.endElement("", subelementName, "");
134134

135135
}
136136
}
137137
String subelementName = segmentID + "." + (field) + "." + subelementID;
138138
if (lastsegSubelement) {
139-
contentHandler.startElement("", subelementName, "", null);
139+
contentHandler.startElement("", subelementName, "", getEmptyAttributes());
140140
contentHandler.characters("".toCharArray(), 0, 0);
141141
contentHandler.endElement("", subelementName, "");
142142
}
143-
contentHandler.endElement("", segmentID + "." + (field), null);
143+
contentHandler.endElement("", segmentID + "." + (field), "");
144144
} else {
145-
contentHandler.startElement("", segmentID + "." + field, "", null);
146-
contentHandler.startElement("", segmentID + "." + field + ".1", "", null);
145+
contentHandler.startElement("", segmentID + "." + field, "", getEmptyAttributes());
146+
contentHandler.startElement("", segmentID + "." + field + ".1", "", getEmptyAttributes());
147147

148148
// Set the text contents to the value
149149
contentHandler.characters(element.toCharArray(), 0, element.length());
150-
contentHandler.endElement("", segmentID + "." + (field) + ".1", null);
151-
contentHandler.endElement("", segmentID + "." + (field), null);
150+
contentHandler.endElement("", segmentID + "." + (field) + ".1", "");
151+
contentHandler.endElement("", segmentID + "." + (field), "");
152152

153153
}
154154
}
@@ -158,7 +158,7 @@ public void parse(InputSource input) throws SAXException, IOException {
158158
// Set the field id here so we don't get dupe fields like
159159
// SE.01 and SE.01 when we have SE**~
160160
field = fieldID < 10 ? "0" + fieldID : "" + fieldID;
161-
contentHandler.startElement("", segmentID + "." + field, "", null);
161+
contentHandler.startElement("", segmentID + "." + field, "", getEmptyAttributes());
162162
contentHandler.endElement("", segmentID + "." + field, "");
163163
}
164164
contentHandler.endElement("", segmentID, "");

server/src/com/mirth/connect/plugins/datatypes/hl7v2/ER7Reader.java

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -130,10 +130,10 @@ private String handleSegments(String documentHead, ContentHandler contentHandler
130130

131131
if (segmentIndex == 0) {
132132
documentHead = MESSAGE_ROOT_ID;
133-
contentHandler.startElement("", documentHead, "", null);
133+
contentHandler.startElement("", documentHead, "", getEmptyAttributes());
134134
}
135135

136-
contentHandler.startElement("", segmentId, "", null);
136+
contentHandler.startElement("", segmentId, "", getEmptyAttributes());
137137
handleFieldOrRepetitions(contentHandler, fieldSeparator, componentSeparator, subcomponentSeparator, repetitionSeparator, escapeCharacter, segmentId, fieldTokenizer);
138138
contentHandler.endElement("", segmentId, "");
139139
} else {
@@ -159,7 +159,7 @@ private void handleFieldOrRepetitions(ContentHandler contentHandler, String fiel
159159
// the naming is SEG.<field#>
160160
if (field.equals(fieldSeparator)) {
161161
if (atLastField) {
162-
contentHandler.startElement("", segmentId + "." + fieldId, "", null);
162+
contentHandler.startElement("", segmentId + "." + fieldId, "", getEmptyAttributes());
163163
contentHandler.endElement("", segmentId + "." + fieldId, "");
164164
}
165165

@@ -175,11 +175,11 @@ private void handleFieldOrRepetitions(ContentHandler contentHandler, String fiel
175175
}
176176

177177
if (enteredHeader && (fieldId == 1)) {
178-
contentHandler.startElement("", segmentId + "." + fieldId, "", null);
178+
contentHandler.startElement("", segmentId + "." + fieldId, "", getEmptyAttributes());
179179
contentHandler.characters(fieldSeparator.toCharArray(), 0, 1);
180-
contentHandler.endElement("", segmentId + "." + (fieldId), null);
180+
contentHandler.endElement("", segmentId + "." + (fieldId), "");
181181
fieldId++;
182-
contentHandler.startElement("", segmentId + "." + fieldId, "", null);
182+
contentHandler.startElement("", segmentId + "." + fieldId, "", getEmptyAttributes());
183183

184184
char[] specialCharacters;
185185
if (!subcomponentSeparator.isEmpty()) {
@@ -195,7 +195,7 @@ private void handleFieldOrRepetitions(ContentHandler contentHandler, String fiel
195195
}
196196

197197
contentHandler.characters(specialCharacters, 0, specialCharacters.length);
198-
contentHandler.endElement("", segmentId + "." + (fieldId), null);
198+
contentHandler.endElement("", segmentId + "." + (fieldId), "");
199199
} else if (enteredHeader && (fieldId == 2)) {
200200
// do nothing
201201
} else {
@@ -209,7 +209,7 @@ private void handleFieldOrRepetitions(ContentHandler contentHandler, String fiel
209209
}
210210

211211
if (atLastField) {
212-
contentHandler.startElement("", segmentId + "." + fieldId, "", null);
212+
contentHandler.startElement("", segmentId + "." + fieldId, "", getEmptyAttributes());
213213
contentHandler.endElement("", segmentId + "." + fieldId, "");
214214
}
215215
}
@@ -224,7 +224,7 @@ private void handleFieldRepetitions(ContentHandler contentHandler, String compon
224224
if (field.equals(repetitionSeparator)) {
225225
// check for ~~
226226
if (atLastRepetition) {
227-
contentHandler.startElement("", segmentId + "." + fieldId, "", null);
227+
contentHandler.startElement("", segmentId + "." + fieldId, "", getEmptyAttributes());
228228
contentHandler.characters(EMPTY_CHAR_ARRAY, 0, 0);
229229
contentHandler.endElement("", segmentId + "." + fieldId, "");
230230
}
@@ -238,25 +238,25 @@ private void handleFieldRepetitions(ContentHandler contentHandler, String compon
238238
}
239239

240240
if (atLastRepetition) {
241-
contentHandler.startElement("", segmentId + "." + fieldId, "", null);
241+
contentHandler.startElement("", segmentId + "." + fieldId, "", getEmptyAttributes());
242242
contentHandler.characters(EMPTY_CHAR_ARRAY, 0, 0);
243243
contentHandler.endElement("", segmentId + "." + fieldId, "");
244244
}
245245
}
246246

247247
private void handleField(ContentHandler contentHandler, String componentSeparator, String subcomponentSeparator, String segmentId, int fieldId, String field) throws SAXException {
248248
if ((field.indexOf(componentSeparator) > -1) || (handleSubcomponents && (field.indexOf(subcomponentSeparator) > -1))) {
249-
contentHandler.startElement("", segmentId + "." + fieldId, "", null);
249+
contentHandler.startElement("", segmentId + "." + fieldId, "", getEmptyAttributes());
250250
StringTokenizer componentTokenizer = new StringTokenizer(field, componentSeparator, true);
251251
handleComponents(contentHandler, componentSeparator, subcomponentSeparator, segmentId, fieldId, 1, componentTokenizer);
252-
contentHandler.endElement("", segmentId + "." + fieldId, null);
252+
contentHandler.endElement("", segmentId + "." + fieldId, "");
253253
} else {
254254
logger.trace("handling field: " + field);
255-
contentHandler.startElement("", segmentId + "." + fieldId, "", null);
256-
contentHandler.startElement("", segmentId + "." + fieldId + ".1", "", null);
255+
contentHandler.startElement("", segmentId + "." + fieldId, "", getEmptyAttributes());
256+
contentHandler.startElement("", segmentId + "." + fieldId + ".1", "", getEmptyAttributes());
257257
contentHandler.characters(field.toCharArray(), 0, field.length());
258-
contentHandler.endElement("", segmentId + "." + fieldId + ".1", null);
259-
contentHandler.endElement("", segmentId + "." + fieldId, null);
258+
contentHandler.endElement("", segmentId + "." + fieldId + ".1", "");
259+
contentHandler.endElement("", segmentId + "." + fieldId, "");
260260
}
261261
}
262262

@@ -268,7 +268,7 @@ private void handleComponents(ContentHandler contentHandler, String componentSep
268268

269269
if (component.equals(componentSeparator)) {
270270
if (atLastComponent) {
271-
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId, "", null);
271+
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId, "", getEmptyAttributes());
272272
contentHandler.characters(EMPTY_CHAR_ARRAY, 0, 0);
273273
contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId, "");
274274
}
@@ -282,23 +282,23 @@ private void handleComponents(ContentHandler contentHandler, String componentSep
282282
}
283283

284284
if (atLastComponent) {
285-
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId, "", null);
285+
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId, "", getEmptyAttributes());
286286
contentHandler.characters(EMPTY_CHAR_ARRAY, 0, 0);
287287
contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId, "");
288288
}
289289
}
290290

291291
private void handleComponent(ContentHandler contentHandler, String subcomponentSeparator, String segmentId, int fieldId, int componentId, String component) throws SAXException {
292292
if (handleSubcomponents && !subcomponentSeparator.isEmpty() && (component.indexOf(subcomponentSeparator) > -1)) {
293-
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId, "", null);
293+
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId, "", getEmptyAttributes());
294294
// check if we have subcomponents, if so add them
295295
StringTokenizer subcomponentTokenizer = new StringTokenizer(component, subcomponentSeparator, true);
296296
handleSubcomponents(contentHandler, subcomponentSeparator, segmentId, fieldId, componentId, 1, subcomponentTokenizer);
297-
contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId, null);
297+
contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId, "");
298298
} else {
299299
logger.trace("handling component: " + component);
300300
// the naming is SEG.<field#>.<component#>
301-
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId, "", null);
301+
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId, "", getEmptyAttributes());
302302
contentHandler.characters(component.toCharArray(), 0, component.length());
303303
contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId, "");
304304
}
@@ -312,7 +312,7 @@ private void handleSubcomponents(ContentHandler contentHandler, String subcompon
312312

313313
if (subcomponent.equals(subcomponentSeparator)) {
314314
if (atLastSubcomponent) {
315-
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "", null);
315+
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "", getEmptyAttributes());
316316
contentHandler.characters(EMPTY_CHAR_ARRAY, 0, 0);
317317
contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "");
318318
}
@@ -323,14 +323,14 @@ private void handleSubcomponents(ContentHandler contentHandler, String subcompon
323323
logger.trace("handling subcomponent: " + subcomponentId);
324324
atLastSubcomponent = false;
325325
// the naming is SEG.<field#>.<component#>.<subcomponent#>
326-
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "", null);
326+
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "", getEmptyAttributes());
327327
contentHandler.characters(subcomponent.toCharArray(), 0, subcomponent.length());
328328
contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "");
329329
}
330330
}
331331

332332
if (atLastSubcomponent) {
333-
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "", null);
333+
contentHandler.startElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "", getEmptyAttributes());
334334
contentHandler.characters(EMPTY_CHAR_ARRAY, 0, 0);
335335
contentHandler.endElement("", segmentId + "." + fieldId + "." + componentId + "." + subcomponentId, "");
336336
}

0 commit comments

Comments
 (0)