From 5b7be1a09b0a7698150313a3d3026926a6802168 Mon Sep 17 00:00:00 2001 From: Alexander Lippling Date: Sat, 16 Jun 2012 18:46:40 +0300 Subject: [PATCH 01/16] Fixed a typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ee823f0..08a061d 100644 --- a/README.md +++ b/README.md @@ -11,6 +11,6 @@ See [UsageExamples.java](https://github.com/sap-production/XcodeProjectJavaAPI/b ##Known limitations -In order to use this library, you have to convert the Xcode project file to XML (see ```convert``` method in [JAXBPlistParser.java](https://github.com/sap-production/XcodeProjectJavaAPI/blob/master/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java). This step can only be done on MAC OS X. The project file cannot be converted back! +In order to use this library, you have to convert the Xcode project file to XML (see ```convert``` method in [JAXBPlistParser.java](https://github.com/sap-production/XcodeProjectJavaAPI/blob/master/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java). This step can only be done on Mac OS X. The project file cannot be converted back! The remainder of the API uses standard Java features. \ No newline at end of file From cc4c2c73a49ddf2e3bc888961b1c5e280059913f Mon Sep 17 00:00:00 2001 From: Alexander Lippling Date: Wed, 20 Jun 2012 10:28:05 +0200 Subject: [PATCH 02/16] Changed artifact id Change-Id: I6706249f5a1802c9b1c6c09e5720b37dc9df46c8 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 736ee4a..68ce23e 100644 --- a/pom.xml +++ b/pom.xml @@ -2,7 +2,7 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 4.0.0 com.sap.prd.mobile.ios.mios - xcode-project-reader + xcode-project-java-api jar 1.1.0-SNAPSHOT From 3a0ac3975b9a30b6878a58d03f46f3181e0d3f7e Mon Sep 17 00:00:00 2001 From: Joern Gebhardt Date: Fri, 22 Jun 2012 11:45:23 +0200 Subject: [PATCH 03/16] Added project url to POM --- pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pom.xml b/pom.xml index 68ce23e..7d86fac 100644 --- a/pom.xml +++ b/pom.xml @@ -21,6 +21,8 @@ + https://github.com/sap-production/XcodeProjectJavaAPI + scm:git:https://github.com/sap-production/XcodeProjectJavaAPI.git scm:git:https://github.com/sap-production/XcodeProjectJavaAPI.git From b008340d1ea0ebdf48a7de36bb99d4d0815ecbad Mon Sep 17 00:00:00 2001 From: Joern Gebhardt Date: Fri, 22 Jun 2012 17:13:47 +0200 Subject: [PATCH 04/16] Added 'release' profile that also build a javadoc jar --- pom.xml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/pom.xml b/pom.xml index 7d86fac..faee615 100644 --- a/pom.xml +++ b/pom.xml @@ -114,4 +114,27 @@ + + + + release + + + + maven-javadoc-plugin + 2.8.1 + + + attach-javadocs + + jar + + + + + + + + + From c7014fdcc9d3392e4ee1a9cbfdb78a56baee3a1a Mon Sep 17 00:00:00 2001 From: Joern Gebhardt Date: Tue, 26 Jun 2012 07:23:22 +0200 Subject: [PATCH 05/16] xcode-project-java-api release 1.0.1 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index faee615..51a9012 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.sap.prd.mobile.ios.mios xcode-project-java-api jar - 1.1.0-SNAPSHOT + 1.0.1 The xcode-project-reader library provides an Java API for read and write access to an Xcode project file. From 9c958cb3d3e7081430e578593b63d7977300602e Mon Sep 17 00:00:00 2001 From: Joern Gebhardt Date: Tue, 26 Jun 2012 07:55:56 +0200 Subject: [PATCH 06/16] xcode-project-java-api release 1.0.2 --- pom.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index 51a9012..88e2e1e 100644 --- a/pom.xml +++ b/pom.xml @@ -4,9 +4,10 @@ com.sap.prd.mobile.ios.mios xcode-project-java-api jar - 1.0.1 + 1.0.2 + Xcode Project Java API - The xcode-project-reader library provides an Java API for read and write + The xcode-project-java-api library provides an Java API for read and write access to an Xcode project file. 2012 From 980ac56e57a5cec8b8e1ee916ff2ca4d3f6ea149 Mon Sep 17 00:00:00 2001 From: Joern Gebhardt Date: Tue, 26 Jun 2012 08:13:43 +0200 Subject: [PATCH 07/16] Switched version to 1.1.0-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 88e2e1e..69018cf 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.sap.prd.mobile.ios.mios xcode-project-java-api jar - 1.0.2 + 1.1.0-SNAPSHOT Xcode Project Java API The xcode-project-java-api library provides an Java API for read and write From 4527173836fa8af7965138236e9ec6409b253b6b Mon Sep 17 00:00:00 2001 From: Jochen Seeber Date: Tue, 3 Jul 2012 00:49:25 +0200 Subject: [PATCH 08/16] Fixed poms; added target directory and Emacs backup files to .gitignore --- .gitignore | 4 +++- pom.xml | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index 571df8b..960e49b 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,6 @@ /.classpath /.project /.settings/ -/target/ \ No newline at end of file +/target/ +*~ +#*# diff --git a/pom.xml b/pom.xml index 69018cf..1194981 100644 --- a/pom.xml +++ b/pom.xml @@ -89,7 +89,7 @@ - apache-codec + commons-codec commons-codec 1.2 From 2769b74098c616181141461af1f516ef5b1f5b54 Mon Sep 17 00:00:00 2001 From: Joern Gebhardt Date: Wed, 18 Jul 2012 10:11:04 +0200 Subject: [PATCH 09/16] Release 1.1.0 --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 1194981..816af43 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.sap.prd.mobile.ios.mios xcode-project-java-api jar - 1.1.0-SNAPSHOT + 1.1.0 Xcode Project Java API The xcode-project-java-api library provides an Java API for read and write From 55294d70ab37bf0c271d41be562751c7f2bfab46 Mon Sep 17 00:00:00 2001 From: Joern Gebhardt Date: Wed, 18 Jul 2012 10:14:46 +0200 Subject: [PATCH 10/16] Switched version to 1.2.0-SNAPSHOT --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 816af43..56eb9dd 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.sap.prd.mobile.ios.mios xcode-project-java-api jar - 1.1.0 + 1.2.0-SNAPSHOT Xcode Project Java API The xcode-project-java-api library provides an Java API for read and write From f7061664cd8b8805b399fcbebad03552f356cb14 Mon Sep 17 00:00:00 2001 From: Jordi Vilalta Prat Date: Fri, 19 Oct 2012 18:56:30 +0200 Subject: [PATCH 11/16] Add the ability to save to a Writer so the client code isn't forced to use a file. --- .../xcodeprojreader/jaxb/JAXBPlistParser.java | 16 ++++++++- .../jaxb/JAXBPlistParserTest.java | 33 ++++++++++++++++--- 2 files changed, 43 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java b/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java index f48a888..92dab87 100644 --- a/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java +++ b/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java @@ -22,7 +22,9 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.FileReader; +import java.io.FileWriter; import java.io.IOException; +import java.io.Writer; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; @@ -106,11 +108,23 @@ public void save(Plist plist, String projectFile) throws JAXBException } public void save(Plist plist, File projectFile) throws JAXBException + { + try + { + save(plist, new FileWriter(projectFile)); + } + catch (IOException ex) + { + throw new JAXBException(ex); + } + } + + public void save(Plist plist, Writer projectFile) throws JAXBException { marshallPlist(plist, projectFile); } - private void marshallPlist(Plist plist, File projectFile) throws JAXBException + private void marshallPlist(Plist plist, Writer projectFile) throws JAXBException { JAXBContext ctx = JAXBContext.newInstance(com.sap.prd.mobile.ios.mios.xcodeprojreader.jaxb.JAXBPlist.class); Marshaller marshaller = ctx.createMarshaller(); diff --git a/src/test/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParserTest.java b/src/test/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParserTest.java index 0d153a8..1abb0bc 100644 --- a/src/test/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParserTest.java +++ b/src/test/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParserTest.java @@ -22,9 +22,12 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; +import java.io.ByteArrayInputStream; import java.io.File; import java.io.IOException; import java.io.StringReader; +import java.io.StringWriter; +import java.io.Writer; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; @@ -127,10 +130,28 @@ public void save() throws Exception output.deleteOnExit(); parser.save(plist, output.getAbsolutePath()); - assertXMLEqual(new File(fileName), output); + DocumentBuilder db = initDocumentBuilder(); + Document expected = db.parse(new File(fileName)); + Document actual = db.parse(output); + assertXMLEqual(expected, actual); } - private void assertXMLEqual(File expected, File actual) throws Exception + @Test + public void saveToWriter() throws Exception + { + JAXBPlistParser parser = new JAXBPlistParser(); + Plist plist = parser.load(fileName); + + Writer output = new StringWriter(); + parser.save(plist, output); + + DocumentBuilder db = initDocumentBuilder(); + Document expected = db.parse(new File(fileName)); + Document actual = db.parse(new ByteArrayInputStream(output.toString().getBytes())); + assertXMLEqual(expected, actual); + } + + private DocumentBuilder initDocumentBuilder() throws Exception { DocumentBuilder db = DocumentBuilderFactory.newInstance().newDocumentBuilder(); db.setEntityResolver(new EntityResolver() { @@ -141,11 +162,13 @@ public InputSource resolveEntity(String publicId, String systemId) return new InputSource(new StringReader("")); } }); + return db; + } - Document doc1 = db.parse(expected); - Document doc2 = db.parse(actual); + private void assertXMLEqual(Document expected, Document actual) throws Exception + { XMLUnit.setIgnoreWhitespace(true); XMLUnit.setIgnoreComments(true); - XMLAssert.assertXMLEqual(doc1, doc2); + XMLAssert.assertXMLEqual(expected, actual); } } From b229b831a8e3c2cd6181673ada0c78170b5dd851 Mon Sep 17 00:00:00 2001 From: Jordi Vilalta Prat Date: Mon, 22 Oct 2012 16:01:30 +0200 Subject: [PATCH 12/16] Make setDict public to be able to create new Plists, not just load them. --- .../sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlist.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlist.java b/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlist.java index 89720b7..a7b0786 100644 --- a/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlist.java +++ b/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlist.java @@ -55,7 +55,7 @@ public Dict getDict() return dict; } - void setDict(Dict dict) + public void setDict(Dict dict) { this.dict = dict; } From e82d321c8845036574d7b47084f1a7d83379eb4b Mon Sep 17 00:00:00 2001 From: Jordi Vilalta Prat Date: Mon, 22 Oct 2012 16:02:26 +0200 Subject: [PATCH 13/16] Try different property names to be compatible with more JAXB implementations. This hack is documented here: http://timepassguys.blogspot.com.es/2011/12/jaxb-exception-javaxxmlbindpropertyexce.html --- .../xcodeprojreader/jaxb/JAXBPlistParser.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java b/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java index 92dab87..cb48aaa 100644 --- a/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java +++ b/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java @@ -29,6 +29,7 @@ import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException; import javax.xml.bind.Marshaller; +import javax.xml.bind.PropertyException; import javax.xml.bind.Unmarshaller; import javax.xml.bind.ValidationEvent; import javax.xml.bind.ValidationEventHandler; @@ -45,6 +46,8 @@ public class JAXBPlistParser { + private static final String xmlHeaders = "\n"; + public Plist load(String projectFile) throws SAXException, ParserConfigurationException, FileNotFoundException, JAXBException { @@ -129,10 +132,14 @@ private void marshallPlist(Plist plist, Writer projectFile) throws JAXBException JAXBContext ctx = JAXBContext.newInstance(com.sap.prd.mobile.ios.mios.xcodeprojreader.jaxb.JAXBPlist.class); Marshaller marshaller = ctx.createMarshaller(); marshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true); - marshaller - .setProperty( - "com.sun.xml.internal.bind.xmlHeaders", - "\n"); + try + { + marshaller.setProperty("com.sun.xml.internal.bind.xmlHeaders", xmlHeaders); + } + catch(PropertyException ex) + { + marshaller.setProperty("com.sun.xml.bind.xmlHeaders", xmlHeaders); + } marshaller.setProperty(Marshaller.JAXB_FRAGMENT, true); marshaller.marshal(plist, projectFile); } From df4ff8fda2d63fb4c262ded33229308f6f19efe8 Mon Sep 17 00:00:00 2001 From: Joern Gebhardt Date: Mon, 22 Oct 2012 11:54:39 +0200 Subject: [PATCH 14/16] Ignore the conversion test if running in a non-Mac OS X platform. --- pom.xml | 5 +++++ .../xcodeprojreader/jaxb/JAXBPlistParser.java | 5 +++++ .../jaxb/JAXBPlistParserTest.java | 19 ++++++++++++++++--- 3 files changed, 26 insertions(+), 3 deletions(-) diff --git a/pom.xml b/pom.xml index 56eb9dd..4cb3539 100644 --- a/pom.xml +++ b/pom.xml @@ -88,6 +88,11 @@ + + org.apache.commons + commons-lang3 + 3.1 + commons-codec commons-codec diff --git a/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java b/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java index cb48aaa..006d28b 100644 --- a/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java +++ b/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java @@ -37,6 +37,7 @@ import javax.xml.parsers.SAXParserFactory; import javax.xml.transform.sax.SAXSource; +import org.apache.commons.lang3.SystemUtils; import org.xml.sax.EntityResolver; import org.xml.sax.InputSource; import org.xml.sax.SAXException; @@ -151,6 +152,10 @@ public void convert(String projectFile, String destinationProjectFile) throws IO public void convert(File projectFile, File destinationProjectFile) throws IOException { + if (!SystemUtils.IS_OS_MAC_OSX) { + throw new UnsupportedOperationException("The pbxproj file conversion can only be performed on a Mac OS X " + + "operating system as the Mac OS X specific tool 'plutil' gets called."); + } Process exec = Runtime.getRuntime().exec( new String[] { "plutil", "-convert", "xml1", "-o", destinationProjectFile.getAbsolutePath(), projectFile.getAbsolutePath() }); diff --git a/src/test/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParserTest.java b/src/test/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParserTest.java index 1abb0bc..13b3f8b 100644 --- a/src/test/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParserTest.java +++ b/src/test/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParserTest.java @@ -20,7 +20,9 @@ package com.sap.prd.mobile.ios.mios.xcodeprojreader.jaxb; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertTrue; import java.io.ByteArrayInputStream; import java.io.File; @@ -34,6 +36,7 @@ import junit.framework.Assert; +import org.apache.commons.lang3.SystemUtils; import org.custommonkey.xmlunit.XMLAssert; import org.custommonkey.xmlunit.XMLUnit; import org.junit.Test; @@ -93,9 +96,19 @@ public void convertOpenStepToXML() throws Exception File xmlProj = File.createTempFile("project", ".pbxproj"); xmlProj.deleteOnExit(); - parser.convert(fileNameOpenStep, xmlProj.getAbsolutePath()); - Plist plist = parser.load(xmlProj.getAbsolutePath()); - assertEquals("1.0", plist.getVersion()); + try + { + parser.convert(fileNameOpenStep, xmlProj.getAbsolutePath()); + Plist plist = parser.load(xmlProj.getAbsolutePath()); + assertEquals("1.0", plist.getVersion()); + } + catch (UnsupportedOperationException ex) + { + // If we are running on a non Mac OS X system an UnsupportedOperationException is expected + assertFalse("The convert function should only fail on non Mac OS X systems", SystemUtils.IS_OS_MAC_OSX); + assertTrue("Wrong UnsupportedOperationException message", ex.getMessage().contains("Mac OS X")); + } + } @Test(expected = javax.xml.bind.UnmarshalException.class) From 0daac9d46378d5b5fde831be079755a37653d3f1 Mon Sep 17 00:00:00 2001 From: Marcus Holl Date: Thu, 25 Jul 2013 15:40:05 +0200 Subject: [PATCH 15/16] Add license to README.me, add NOTICE.txt --- NOTICE.txt | 9 +++++++++ README.md | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 NOTICE.txt diff --git a/NOTICE.txt b/NOTICE.txt new file mode 100644 index 0000000..801d783 --- /dev/null +++ b/NOTICE.txt @@ -0,0 +1,9 @@ + ========================================================================= + == NOTICE file for use with the Apache License, Version 2.0 == + ========================================================================= + + XCodeProjectJavaAPI + Copyright 2012-2013 SAP AG + + This product includes software developed at + The Apache Software Foundation (http://www.apache.org/). diff --git a/README.md b/README.md index 08a061d..e223151 100644 --- a/README.md +++ b/README.md @@ -13,4 +13,8 @@ See [UsageExamples.java](https://github.com/sap-production/XcodeProjectJavaAPI/b In order to use this library, you have to convert the Xcode project file to XML (see ```convert``` method in [JAXBPlistParser.java](https://github.com/sap-production/XcodeProjectJavaAPI/blob/master/src/main/java/com/sap/prd/mobile/ios/mios/xcodeprojreader/jaxb/JAXBPlistParser.java). This step can only be done on Mac OS X. The project file cannot be converted back! -The remainder of the API uses standard Java features. \ No newline at end of file +The remainder of the API uses standard Java features. + +## License + +This project is copyrighted by [SAP AG](http://www.sap.com/) and made available under the [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). Please also confer to the text files "LICENSE" and "NOTICE" included with the project sources. From 1043faf99f4b4b24247e075c9ee294ae2ace9669 Mon Sep 17 00:00:00 2001 From: Irina Kirilova Date: Fri, 20 Sep 2013 13:21:11 +0200 Subject: [PATCH 16/16] activated jacoco and findbugs code metrics --- pom.xml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/pom.xml b/pom.xml index 4cb3539..8307ff7 100644 --- a/pom.xml +++ b/pom.xml @@ -5,6 +5,14 @@ xcode-project-java-api jar 1.2.0-SNAPSHOT + + + com.sap.prd.mobile.ios.mios + quality-check-parent + 1.0.0 + + + Xcode Project Java API The xcode-project-java-api library provides an Java API for read and write @@ -85,6 +93,10 @@ + + org.jacoco + jacoco-maven-plugin +