Skip to content

Commit 794aab1

Browse files
committed
Fixing Notification Hub Job parsing
1 parent 178f3c6 commit 794aab1

File tree

4 files changed

+21
-16
lines changed

4 files changed

+21
-16
lines changed

NotificationHubs/src/com/windowsazure/messaging/NotificationHubJob.java

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,21 @@
44

55
package com.windowsazure.messaging;
66

7+
import org.apache.commons.digester3.Digester;
8+
import org.xml.sax.SAXException;
9+
710
import java.io.ByteArrayInputStream;
811
import java.io.IOException;
912
import java.io.InputStream;
10-
import java.io.UnsupportedEncodingException;
11-
import java.net.URLEncoder;
12-
import java.nio.charset.StandardCharsets;
13-
import java.util.Date;
14-
import java.util.HashMap;
15-
import java.util.LinkedList;
16-
import java.util.List;
17-
import java.util.Map;
18-
19-
import org.apache.commons.digester3.Digester;
20-
import org.xml.sax.SAXException;
13+
import java.util.*;
2114

2215
/**
2316
* This class represents an Azure Notification Hubs job.
2417
*/
2518
public class NotificationHubJob {
2619
private static final String XML_HEADER = "<?xml version=\"1.0\" encoding=\"utf-8\"?><entry xmlns=\"http://www.w3.org/2005/Atom\"><content type=\"application/atom+xml;type=entry;charset=utf-8\"><NotificationHubJob xmlns:i=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://schemas.microsoft.com/netservices/2010/10/servicebus/connect\">";
2720
private static final String XML_FOOTER = "</NotificationHubJob></content></entry>";
21+
private static final String CDATA_PATTERN = "<!\\[CDATA\\[.*?\\]\\]>";
2822

2923
private String jobId;
3024
private double progress;
@@ -140,7 +134,12 @@ public NotificationHubJobStatus getJobStatus() {
140134
* Sets the Azure Notification Hubs job output container URI.
141135
* @param value The Azure Notification Hubs job output container URI value to set.
142136
*/
143-
public void setOutputContainerUri(String value) { outputContainerUri = value; }
137+
public void setOutputContainerUri(String value) {
138+
if (value.matches(CDATA_PATTERN)) {
139+
value = value.replaceAll(CDATA_PATTERN, "");
140+
}
141+
outputContainerUri = value;
142+
}
144143

145144
/**
146145
* Gets the Azure Notification Hubs job file import URI.
@@ -239,7 +238,11 @@ public String getXml() {
239238
buf.append("<Type>").append(this.jobType.name()).append("</Type>");
240239
}
241240
if (this.outputContainerUri != null) {
242-
buf.append("<OutputContainerUri><![CDATA[").append(this.outputContainerUri).append("]]></OutputContainerUri>");
241+
String outputContainerUri = this.outputContainerUri;
242+
if (!outputContainerUri.matches(CDATA_PATTERN)) {
243+
outputContainerUri = "<![CDATA[" + outputContainerUri + "]]>";
244+
}
245+
buf.append("<OutputContainerUri>").append(outputContainerUri).append("</OutputContainerUri>");
243246
}
244247
if (this.importFileUri != null) {
245248
buf.append("<ImportFileUri>").append(this.importFileUri).append("</ImportFileUri>");

NotificationHubs/test/com/windowsazure/messaging/NotificationHubJobIncoming

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
<Progress>99.99</Progress>
1111
<Type>ImportCreateRegistrations</Type>
1212
<Status>Completed</Status>
13-
<OutputContainerUri>https://test.blob.core.windows.net/testjobs</OutputContainerUri>
13+
<OutputContainerUri><![CDATA[https://test.blob.core.windows.net/testjobs]]></OutputContainerUri>
1414
<ImportFileUri>https://test.blob.core.windows.net/testjobs/CreateFile.txt</ImportFileUri>
1515
<OutputProperties xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
1616
<d3p1:KeyValueOfstringstring>
@@ -26,4 +26,4 @@
2626
<UpdatedAt>2014-12-06T01:48:54.4501165Z</UpdatedAt>
2727
</NotificationHubJob>
2828
</content>
29-
</entry>
29+
</entry>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
<?xml version="1.0" encoding="utf-8"?><entry xmlns="http://www.w3.org/2005/Atom"><content type="application/atom+xml;type=entry;charset=utf-8"><NotificationHubJob xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect"><Type>ImportCreateRegistrations</Type><OutputContainerUri>https://test.blob.core.windows.net/testjobs</OutputContainerUri><ImportFileUri>https://test.blob.core.windows.net/testjobs/CreateFile.txt</ImportFileUri></NotificationHubJob></content></entry>
1+
<?xml version="1.0" encoding="utf-8"?><entry xmlns="http://www.w3.org/2005/Atom"><content type="application/atom+xml;type=entry;charset=utf-8"><NotificationHubJob xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/netservices/2010/10/servicebus/connect"><Type>ImportCreateRegistrations</Type><OutputContainerUri><![CDATA[https://test.blob.core.windows.net/testjobs]]></OutputContainerUri><ImportFileUri>https://test.blob.core.windows.net/testjobs/CreateFile.txt</ImportFileUri></NotificationHubJob></content></entry>

NotificationHubs/test/com/windowsazure/messaging/NotificationHubJobParseTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ public void testParseNotificationHubJob() throws IOException, SAXException {
3636

3737
String expectedResultXml = IOUtils.toString(this.getClass().getResourceAsStream("NotificationHubJobOutgoing"), StandardCharsets.UTF_8);
3838
String actualResultXml = job.getXml();
39+
System.out.println("expected: " + expectedResultXml);
40+
System.out.println("actual: " + actualResultXml);
3941
assertEquals(expectedResultXml, actualResultXml);
4042
}
4143

0 commit comments

Comments
 (0)