From b817f4102c0ddddbe825cc5ebcc33b17d9318cdb Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 16 Aug 2017 00:15:50 +0800 Subject: [PATCH 01/14] a main function and helper functions which simply takes a bplist input then output a xml plist --- .../bplist/converter/ConvertToXml.java | 63 +++++++++++++++++++ 1 file changed, 63 insertions(+) diff --git a/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java b/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java index 247714b..0349555 100644 --- a/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java +++ b/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java @@ -213,4 +213,67 @@ private static XMLGregorianCalendar fromDate(Date date) { xmlgc.setTimezone(DatatypeConstants.FIELD_UNDEFINED); return xmlgc; } + // main function and helper functions that takes a bplist input and outputs a plist xml + public static void main(String[] argv){ + if(argv.length != 2){ + System.out.println("Usage: java nl.pvanassen.bplist.converter.ConvertToXml in.bplist out.plist"); + return; + } + try{ + File input = new File(argv[0]); + File output = new File(argv[1]); + FileOutputStream outputStream = new FileOutputStream(output); + BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); + PrintWriter writer = new PrintWriter(bufferedOutputStream); + ByteArrayOutputStream bOS = new ByteArrayOutputStream(); + ConvertToXml converter = new ConvertToXml(); + PrintWriter sOS = new PrintWriter(bOS); + dig(sOS, converter.convertToXml(input), 0); + sOS.close(); + byte[] xmlByteArray = bOS.toByteArray(); + ByteArrayInputStream bIS = new ByteArrayInputStream(xmlByteArray); + String xml = ""; + Scanner scan = new Scanner(bIS); + while(scan.hasNextLine()){ + xml += scan.nextLine() + "\n"; + } + scan.close(); + System.out.println(xml); + writer.print(xml); + writer.close(); + }catch(Exception ex){ + System.out.println("Welp something went wrong"); + System.out.println(ex.getMessage()); + ex.printStackTrace(); + } + return; + } + private static void dig(PrintWriter out, XMLElement xml, int indent){ + String name = xml.getName(); + // get all attribute + indent(out, indent); + out.print("<" + name); + Iterator attributeNames = xml.enumerateAttributeNames(); + while(attributeNames.hasNext()){ + String attributeName = attributeNames.next(); + out.print(" " + attributeName + "=\"" + xml.getStringAttribute(attributeName)); + } + out.print(">\n"); + Iterator children = xml.iterateChildren(); + if(!children.hasNext()){ + indent(out, indent); + out.print(xml.getContent() + "\n"); + } + while(children.hasNext()){ + XMLElement child = children.next(); + dig(out, child, indent + 1); + } + indent(out, indent); + out.print("\n"); + } + private static void indent(PrintWriter out, int indent){ + for(int i = 0;i < indent;i++){ + out.print("\t"); + } + } } From c7bc4fa0e4216432df212464e9df93c62f890adf Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 16 Aug 2017 00:30:14 +0800 Subject: [PATCH 02/14] fixed an error where closing quotes for attributes were missing --- .../java/nl/pvanassen/bplist/converter/ConvertToXml.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java b/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java index 0349555..0a62c8b 100644 --- a/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java +++ b/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java @@ -249,6 +249,10 @@ public static void main(String[] argv){ return; } private static void dig(PrintWriter out, XMLElement xml, int indent){ + if(xml == null){ + System.out.println("Something's wrong with the pblist input"); + return; + } String name = xml.getName(); // get all attribute indent(out, indent); @@ -256,7 +260,7 @@ private static void dig(PrintWriter out, XMLElement xml, int indent){ Iterator attributeNames = xml.enumerateAttributeNames(); while(attributeNames.hasNext()){ String attributeName = attributeNames.next(); - out.print(" " + attributeName + "=\"" + xml.getStringAttribute(attributeName)); + out.print(" " + attributeName + "=\"" + xml.getStringAttribute(attributeName) + "\""); } out.print(">\n"); Iterator children = xml.iterateChildren(); From 79d86d50ac28efcdfe734457be0b4bed087a0d00 Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 02:54:48 +0800 Subject: [PATCH 03/14] removing main function as this program intendes to be a library only --- .../bplist/converter/ConvertToXml.java | 36 +------------------ 1 file changed, 1 insertion(+), 35 deletions(-) diff --git a/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java b/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java index 0a62c8b..ca1a76c 100644 --- a/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java +++ b/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java @@ -213,41 +213,7 @@ private static XMLGregorianCalendar fromDate(Date date) { xmlgc.setTimezone(DatatypeConstants.FIELD_UNDEFINED); return xmlgc; } - // main function and helper functions that takes a bplist input and outputs a plist xml - public static void main(String[] argv){ - if(argv.length != 2){ - System.out.println("Usage: java nl.pvanassen.bplist.converter.ConvertToXml in.bplist out.plist"); - return; - } - try{ - File input = new File(argv[0]); - File output = new File(argv[1]); - FileOutputStream outputStream = new FileOutputStream(output); - BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outputStream); - PrintWriter writer = new PrintWriter(bufferedOutputStream); - ByteArrayOutputStream bOS = new ByteArrayOutputStream(); - ConvertToXml converter = new ConvertToXml(); - PrintWriter sOS = new PrintWriter(bOS); - dig(sOS, converter.convertToXml(input), 0); - sOS.close(); - byte[] xmlByteArray = bOS.toByteArray(); - ByteArrayInputStream bIS = new ByteArrayInputStream(xmlByteArray); - String xml = ""; - Scanner scan = new Scanner(bIS); - while(scan.hasNextLine()){ - xml += scan.nextLine() + "\n"; - } - scan.close(); - System.out.println(xml); - writer.print(xml); - writer.close(); - }catch(Exception ex){ - System.out.println("Welp something went wrong"); - System.out.println(ex.getMessage()); - ex.printStackTrace(); - } - return; - } + private static void dig(PrintWriter out, XMLElement xml, int indent){ if(xml == null){ System.out.println("Something's wrong with the pblist input"); From 5a804dc48c3a6c1a91eb73ffa1abd4e809bdcf4a Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 03:46:39 +0800 Subject: [PATCH 04/14] adding a new test case --- .../bplist/BinaryPListParserTest.java | 25 +++++- src/test/resources/airplay.resultPrettyPrint | 77 +++++++++++++++++++ 2 files changed, 101 insertions(+), 1 deletion(-) create mode 100644 src/test/resources/airplay.resultPrettyPrint diff --git a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java index af7db49..0a1d367 100644 --- a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java +++ b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java @@ -1,7 +1,11 @@ package nl.pvanassen.bplist; import java.io.IOException; +import java.io.PrintWriter; +import java.io.ByteArrayOutputStream; +import java.io.ByteArrayInputStream; import java.util.List; +import java.util.Scanner; import nl.pvanassen.bplist.converter.ConvertToXml; import nl.pvanassen.bplist.ext.nanoxml.XMLElement; @@ -21,6 +25,22 @@ private void test(String baseName) throws IOException { assertEquals(FileHelper.getContent(baseName + ".result"), xmlElement.getChildren().get(0).toString()); } + private void testPrettyPrint(String baseName) throws IOException { + List> elements = elementParser.parseObjectTable(FileHelper.getFile(baseName + ".bplist")); + XMLElement xmlElement = convetToXml.convertToXml(elements); + assertNotNull(xmlElement); + ByteArrayOutputStream outputBufferBOS = new ByteArrayOutputStream(); + PrintWriter outputBufferPW = new PrintWriter(outputBufferBOS); + convertToXml.dig(xmlElement); + outputBufferPW.close(); + String output = ""; + Scanner outputBufferScanner = new Scanner(new ByteArrayInputStream(outputBufferBOS.toByteArray())); + while(outputBufferScanner.hasNextLine()){ + output += outputBufferScanner.nextLine() + "\n"; + } + assertEquals(FileHelper.getContent(baseName + ".resultPrettyPrint"), output); + } + @Test public void testAirplay() throws IOException { test("airplay"); @@ -48,5 +68,8 @@ public void testUID() throws IOException { public void testUTF16() throws IOException { test("utf16"); } - + @Test + public void testAirplayPrettyPrint() throws IOException { + testPrettyPrint("airplay"); + } } diff --git a/src/test/resources/airplay.resultPrettyPrint b/src/test/resources/airplay.resultPrettyPrint new file mode 100644 index 0000000..d744000 --- /dev/null +++ b/src/test/resources/airplay.resultPrettyPrint @@ -0,0 +1,77 @@ + + + duration + + 5555.0495 + + loadedTimeRanges + + + + duration + + + 5555.0495 + + + start + + + 0.0 + + + + seekableTimeRanges + + + + duration + + + 5555.0495 + + + start + + + 0.0 + + + + + playbackBufferFull + + + false + + + readyToPlay + + + true + + + rate + + + 1.0 + + + playbackLikelyToKeepUp + + + true + + + playbackBufferEmpty + + + true + + + position + + + 4.626998904 + + From 07153418a1298bf62e9ba4a2ac17ceb0e9b31bc9 Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 03:51:54 +0800 Subject: [PATCH 05/14] adding a new test case --- src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java index 0a1d367..03317aa 100644 --- a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java +++ b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java @@ -31,7 +31,7 @@ private void testPrettyPrint(String baseName) throws IOException { assertNotNull(xmlElement); ByteArrayOutputStream outputBufferBOS = new ByteArrayOutputStream(); PrintWriter outputBufferPW = new PrintWriter(outputBufferBOS); - convertToXml.dig(xmlElement); + convetToXml.dig(xmlElement); outputBufferPW.close(); String output = ""; Scanner outputBufferScanner = new Scanner(new ByteArrayInputStream(outputBufferBOS.toByteArray())); From 7e2d909bc454dd8e5066bf42189423f5cd6944a9 Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 03:58:33 +0800 Subject: [PATCH 06/14] adding a new test case --- src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java index 03317aa..2e79146 100644 --- a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java +++ b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java @@ -31,7 +31,7 @@ private void testPrettyPrint(String baseName) throws IOException { assertNotNull(xmlElement); ByteArrayOutputStream outputBufferBOS = new ByteArrayOutputStream(); PrintWriter outputBufferPW = new PrintWriter(outputBufferBOS); - convetToXml.dig(xmlElement); + convetToXml.dig(outputBufferPw, xmlElement, 0); outputBufferPW.close(); String output = ""; Scanner outputBufferScanner = new Scanner(new ByteArrayInputStream(outputBufferBOS.toByteArray())); From 0dc8fe7231e213f9e15a1e5f7ef642ab04d3eaec Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 04:05:29 +0800 Subject: [PATCH 07/14] adding a new test case --- src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java index 2e79146..d955e4d 100644 --- a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java +++ b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java @@ -31,7 +31,7 @@ private void testPrettyPrint(String baseName) throws IOException { assertNotNull(xmlElement); ByteArrayOutputStream outputBufferBOS = new ByteArrayOutputStream(); PrintWriter outputBufferPW = new PrintWriter(outputBufferBOS); - convetToXml.dig(outputBufferPw, xmlElement, 0); + convetToXml.dig(outputBufferPW, xmlElement, 0); outputBufferPW.close(); String output = ""; Scanner outputBufferScanner = new Scanner(new ByteArrayInputStream(outputBufferBOS.toByteArray())); From fd5c45f4ce977ff128051c8a28939a4db477e9d1 Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 04:08:31 +0800 Subject: [PATCH 08/14] adding a new test case --- src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java b/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java index ca1a76c..134f6f3 100644 --- a/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java +++ b/src/main/java/nl/pvanassen/bplist/converter/ConvertToXml.java @@ -214,7 +214,7 @@ private static XMLGregorianCalendar fromDate(Date date) { return xmlgc; } - private static void dig(PrintWriter out, XMLElement xml, int indent){ + public static void dig(PrintWriter out, XMLElement xml, int indent){ if(xml == null){ System.out.println("Something's wrong with the pblist input"); return; From faebf518c4666abe9f012435cec4e2f73443fbbf Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 04:20:00 +0800 Subject: [PATCH 09/14] adding a new test case --- src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java index d955e4d..b85d868 100644 --- a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java +++ b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java @@ -31,7 +31,7 @@ private void testPrettyPrint(String baseName) throws IOException { assertNotNull(xmlElement); ByteArrayOutputStream outputBufferBOS = new ByteArrayOutputStream(); PrintWriter outputBufferPW = new PrintWriter(outputBufferBOS); - convetToXml.dig(outputBufferPW, xmlElement, 0); + convetToXml.dig(outputBufferPW, xmlElement.get(0), 0); outputBufferPW.close(); String output = ""; Scanner outputBufferScanner = new Scanner(new ByteArrayInputStream(outputBufferBOS.toByteArray())); From a5d564b86cfaccc40c469168f7552a85f393e94c Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 04:21:00 +0800 Subject: [PATCH 10/14] adding a new test case --- src/test/resources/airplay.resultPrettyPrint | 155 ++++++++++--------- 1 file changed, 78 insertions(+), 77 deletions(-) diff --git a/src/test/resources/airplay.resultPrettyPrint b/src/test/resources/airplay.resultPrettyPrint index d744000..c2baffb 100644 --- a/src/test/resources/airplay.resultPrettyPrint +++ b/src/test/resources/airplay.resultPrettyPrint @@ -1,77 +1,78 @@ - - - duration - - 5555.0495 - - loadedTimeRanges - - - - duration - - - 5555.0495 - - - start - - - 0.0 - - - - seekableTimeRanges - - - - duration - - - 5555.0495 - - - start - - - 0.0 - - - - - playbackBufferFull - - - false - - - readyToPlay - - - true - - - rate - - - 1.0 - - - playbackLikelyToKeepUp - - - true - - - playbackBufferEmpty - - - true - - - position - - - 4.626998904 - - + + + duration + + 5555.0495 + + loadedTimeRanges + + + + duration + + + 5555.0495 + + + start + + + 0.0 + + + + seekableTimeRanges + + + + duration + + + 5555.0495 + + + start + + + 0.0 + + + + + playbackBufferFull + + + false + + + readyToPlay + + + true + + + rate + + + 1.0 + + + playbackLikelyToKeepUp + + + true + + + playbackBufferEmpty + + + true + + + position + + + 4.626998904 + + + From 11acd70277b47279cf8d46844635a904edf6d531 Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 04:24:30 +0800 Subject: [PATCH 11/14] adding a new test case --- src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java index b85d868..d955e4d 100644 --- a/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java +++ b/src/test/java/nl/pvanassen/bplist/BinaryPListParserTest.java @@ -31,7 +31,7 @@ private void testPrettyPrint(String baseName) throws IOException { assertNotNull(xmlElement); ByteArrayOutputStream outputBufferBOS = new ByteArrayOutputStream(); PrintWriter outputBufferPW = new PrintWriter(outputBufferBOS); - convetToXml.dig(outputBufferPW, xmlElement.get(0), 0); + convetToXml.dig(outputBufferPW, xmlElement, 0); outputBufferPW.close(); String output = ""; Scanner outputBufferScanner = new Scanner(new ByteArrayInputStream(outputBufferBOS.toByteArray())); From 7ff47f423bc31ee058143985dd6ba97d30f43f1b Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 04:29:21 +0800 Subject: [PATCH 12/14] adding a new test case --- src/test/resources/airplay.resultPrettyPrint | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/resources/airplay.resultPrettyPrint b/src/test/resources/airplay.resultPrettyPrint index c2baffb..d286b9d 100644 --- a/src/test/resources/airplay.resultPrettyPrint +++ b/src/test/resources/airplay.resultPrettyPrint @@ -21,7 +21,9 @@ - seekableTimeRanges + + seekableTimeRanges + From 3a104831d6c2014f732b476105837f471fe5a9b8 Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 04:34:59 +0800 Subject: [PATCH 13/14] adding a new test case --- src/test/resources/airplay.resultPrettyPrint | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/resources/airplay.resultPrettyPrint b/src/test/resources/airplay.resultPrettyPrint index d286b9d..9dfb52f 100644 --- a/src/test/resources/airplay.resultPrettyPrint +++ b/src/test/resources/airplay.resultPrettyPrint @@ -1,6 +1,8 @@ - duration + + duration + 5555.0495 From 0c026b189d85cbf4562aeb597b746b182c7ce987 Mon Sep 17 00:00:00 2001 From: Kethen Date: Wed, 23 Aug 2017 04:35:38 +0800 Subject: [PATCH 14/14] adding a new test case --- src/test/resources/airplay.resultPrettyPrint | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/test/resources/airplay.resultPrettyPrint b/src/test/resources/airplay.resultPrettyPrint index 9dfb52f..f309a99 100644 --- a/src/test/resources/airplay.resultPrettyPrint +++ b/src/test/resources/airplay.resultPrettyPrint @@ -6,7 +6,9 @@ 5555.0495 - loadedTimeRanges + + loadedTimeRanges +