Skip to content

Commit

Permalink
Fixing Notification Hub Job parsing
Browse files Browse the repository at this point in the history
  • Loading branch information
mpodwysocki committed Feb 8, 2022
1 parent 178f3c6 commit 794aab1
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,27 +4,21 @@

package com.windowsazure.messaging;

import org.apache.commons.digester3.Digester;
import org.xml.sax.SAXException;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import java.util.Date;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;

import org.apache.commons.digester3.Digester;
import org.xml.sax.SAXException;
import java.util.*;

/**
* This class represents an Azure Notification Hubs job.
*/
public class NotificationHubJob {
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\">";
private static final String XML_FOOTER = "</NotificationHubJob></content></entry>";
private static final String CDATA_PATTERN = "<!\\[CDATA\\[.*?\\]\\]>";

private String jobId;
private double progress;
Expand Down Expand Up @@ -140,7 +134,12 @@ public NotificationHubJobStatus getJobStatus() {
* Sets the Azure Notification Hubs job output container URI.
* @param value The Azure Notification Hubs job output container URI value to set.
*/
public void setOutputContainerUri(String value) { outputContainerUri = value; }
public void setOutputContainerUri(String value) {
if (value.matches(CDATA_PATTERN)) {
value = value.replaceAll(CDATA_PATTERN, "");
}
outputContainerUri = value;
}

/**
* Gets the Azure Notification Hubs job file import URI.
Expand Down Expand Up @@ -239,7 +238,11 @@ public String getXml() {
buf.append("<Type>").append(this.jobType.name()).append("</Type>");
}
if (this.outputContainerUri != null) {
buf.append("<OutputContainerUri><![CDATA[").append(this.outputContainerUri).append("]]></OutputContainerUri>");
String outputContainerUri = this.outputContainerUri;
if (!outputContainerUri.matches(CDATA_PATTERN)) {
outputContainerUri = "<![CDATA[" + outputContainerUri + "]]>";
}
buf.append("<OutputContainerUri>").append(outputContainerUri).append("</OutputContainerUri>");
}
if (this.importFileUri != null) {
buf.append("<ImportFileUri>").append(this.importFileUri).append("</ImportFileUri>");
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
<Progress>99.99</Progress>
<Type>ImportCreateRegistrations</Type>
<Status>Completed</Status>
<OutputContainerUri>https://test.blob.core.windows.net/testjobs</OutputContainerUri>
<OutputContainerUri><![CDATA[https://test.blob.core.windows.net/testjobs]]></OutputContainerUri>
<ImportFileUri>https://test.blob.core.windows.net/testjobs/CreateFile.txt</ImportFileUri>
<OutputProperties xmlns:d3p1="http://schemas.microsoft.com/2003/10/Serialization/Arrays">
<d3p1:KeyValueOfstringstring>
Expand All @@ -26,4 +26,4 @@
<UpdatedAt>2014-12-06T01:48:54.4501165Z</UpdatedAt>
</NotificationHubJob>
</content>
</entry>
</entry>
Original file line number Diff line number Diff line change
@@ -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>
<?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>
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,8 @@ public void testParseNotificationHubJob() throws IOException, SAXException {

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

Expand Down

0 comments on commit 794aab1

Please sign in to comment.