[java-sig-commits] [javapackages] Add merge_artifacts function

Stanislav Ochotnicky sochotni at fedoraproject.org
Tue Sep 10 11:34:06 UTC 2013


commit 2ed702e7432e060ce3d8820b0209d31334344821
Author: Stanislav Ochotnicky <sochotnicky at redhat.com>
Date:   Tue Sep 10 11:22:54 2013 +0200

    Add merge_artifacts function

 python/javapackages/artifact.py |   14 ++++++++++++++
 python/test/artifact_test.py    |   13 +++++++++++++
 2 files changed, 27 insertions(+), 0 deletions(-)
---
diff --git a/python/javapackages/artifact.py b/python/javapackages/artifact.py
index 09bc6dc..500124e 100644
--- a/python/javapackages/artifact.py
+++ b/python/javapackages/artifact.py
@@ -125,6 +125,20 @@ class Artifact(object):
         return tostring(root, pretty_print=True)
 
     @classmethod
+    def merge_artifacts(cls, dominant, recessive):
+        """
+        Merge two artifacts into one. Information missing in dominant artifact will
+        be copied from recessive artifact. Returns new merged artifact
+        """
+        ret = cls(dominant.groupId, dominant.artifactId, dominant.extension,
+                  dominant.classifier, dominant.version, dominant.namespace)
+        for key in ("artifactId", "groupId", "extension", "version",
+                    "classifier", "namespace"):
+            if not getattr(ret, key):
+                setattr(ret, key, getattr(recessive, key))
+        return ret
+
+    @classmethod
     def from_xml_element(cls, xmlnode, namespace=""):
         """
         Create Artifact from xml.etree.ElementTree.Element as contained
diff --git a/python/test/artifact_test.py b/python/test/artifact_test.py
index 14bd63e..4626e29 100644
--- a/python/test/artifact_test.py
+++ b/python/test/artifact_test.py
@@ -370,5 +370,18 @@ class TestArtifact(unittest.TestCase):
         self.assertEqual(a.version, "v")
         self.assertEqual(a.namespace, "n")
 
+    def test_merge(self):
+        a = Artifact.from_mvn_str("g1:a1:v1", 'n')
+        b = Artifact.from_mvn_str("g2:a2:e2::", 'n2')
+        m = Artifact.merge_artifacts(a, b)
+
+        self.assertEqual(m.groupId, "g1")
+        self.assertEqual(m.artifactId, "a1")
+        self.assertEqual(m.extension, "e2")
+        self.assertEqual(m.classifier, "")
+        self.assertEqual(m.version, "v1")
+        self.assertEqual(m.namespace, "n")
+
+
 if __name__ == '__main__':
     unittest.main()


More information about the java-sig-commits mailing list