commit bb4bffd37886176cd6242d17e55b7ce40b3b96ed
Author: Michal Srb <msrb(a)redhat.com>
Date: Tue Mar 3 09:52:25 2015 +0100
Correctly merge dependency(Management) sections
python/javapackages/maven/artifact.py | 18 +++++++++++++-----
python/javapackages/maven/dependency.py | 10 ++++++++--
2 files changed, 21 insertions(+), 7 deletions(-)
---
diff --git a/python/javapackages/maven/artifact.py
b/python/javapackages/maven/artifact.py
index 66cbfdf..f74cd65 100644
--- a/python/javapackages/maven/artifact.py
+++ b/python/javapackages/maven/artifact.py
@@ -147,11 +147,19 @@ class AbstractArtifact(object):
if self.compare_to(artifact):
for member in self.__dict__:
if not member.startswith('_'):
- # copy value from given artifact only if the field is empty,
- # or if it contains default value (not explicitly specified)
- if hasattr(self, "_raw_" + member):
- if getattr(self, "_raw_" + member) is None:
- setattr(self, member, getattr(artifact, member))
+ # for "scope" and "optional":
+ # copy value from parent artifact only if this object
+ # contains default/implicit value
+ if (hasattr(self, "_default_" + member) and
+ getattr(self, "_default_" + member)):
+ setattr(self, member, getattr(artifact, member))
+ # if the copied value was not a default value in parent,
+ # then we have a definitive value and we should never
+ # override it again
+ if not getattr(artifact, "_default_" + member):
+ setattr(self, "_default_" + member, False)
+ # for fields other than "scope" and "optional":
+ # copy value from parent artifact, if current value is empty
elif not getattr(self, member):
setattr(self, member, getattr(artifact, member))
diff --git a/python/javapackages/maven/dependency.py
b/python/javapackages/maven/dependency.py
index 5087e30..36e5b2a 100644
--- a/python/javapackages/maven/dependency.py
+++ b/python/javapackages/maven/dependency.py
@@ -61,7 +61,11 @@ class Dependency(AbstractArtifact):
self.optional = "false"
self.exclusions = set()
+ self._default_scope = True
+ self._default_optional = True
+
# raw values
+ # TODO: probably not needed anymore
self._raw_scope = scope
self._raw_optional = optional
@@ -71,10 +75,12 @@ class Dependency(AbstractArtifact):
self.classifier = classifier.strip()
if version:
self.version = version.strip()
- if scope:
+ if scope is not None:
self.scope = scope.strip()
- if optional:
+ self._default_scope = False
+ if optional is not None:
self.optional = optional.strip()
+ self._default_optional = False
if exclusions:
self.exclusions = exclusions
Show replies by date