[javapackages/big-refactoring] [pom] Add support for plugins
by Michal Srb
commit c9e3c833829aa7b875cb677be627a128a38b4fb3
Author: Michal Srb <msrb(a)redhat.com>
Date: Tue Jun 3 15:14:55 2014 +0200
[pom] Add support for plugins
python/javapackages/pom/pom.py | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/python/javapackages/pom/pom.py b/python/javapackages/pom/pom.py
index da72af7..28ec56a 100644
--- a/python/javapackages/pom/pom.py
+++ b/python/javapackages/pom/pom.py
@@ -1,5 +1,6 @@
from pomreader import POMReader, PomLoadingException
from dependency import Dependency
+from plugin import Plugin
class POM(object):
@@ -102,3 +103,11 @@ class POM(object):
"""
depsxml = POMReader.xpath(self.__doc, './pom:dependencies/pom:dependency')
return [Dependency.from_xml_element(x) for x in depsxml]
+
+ @property
+ def plugins(self):
+ """
+ List of artifact's plugins
+ """
+ plugsxml = POMReader.xpath(self.__doc, './pom:plugins/pom:plugin')
+ return [Plugin.from_xml_element(x) for x in plugsxml]
9 years, 10 months
[javapackages/big-refactoring] [pom] Add support for dependencies
by Michal Srb
commit ef36d2f29b2f00d39ad75f716ba3becbce4c7dd7
Author: Michal Srb <msrb(a)redhat.com>
Date: Tue Jun 3 15:10:26 2014 +0200
[pom] Add support for dependencies
python/javapackages/pom/pom.py | 9 +++++++++
1 files changed, 9 insertions(+), 0 deletions(-)
---
diff --git a/python/javapackages/pom/pom.py b/python/javapackages/pom/pom.py
index 6404a6b..da72af7 100644
--- a/python/javapackages/pom/pom.py
+++ b/python/javapackages/pom/pom.py
@@ -1,4 +1,5 @@
from pomreader import POMReader, PomLoadingException
+from dependency import Dependency
class POM(object):
@@ -93,3 +94,11 @@ class POM(object):
if len(p) != 0:
raise PomLoadingException("Unexpected child nodes under packaging")
return p.text.strip()
+
+ @property
+ def dependencies(self):
+ """
+ List of artifact's dependencies
+ """
+ depsxml = POMReader.xpath(self.__doc, './pom:dependencies/pom:dependency')
+ return [Dependency.from_xml_element(x) for x in depsxml]
9 years, 10 months
[javapackages/big-refactoring] [pom] Cleanup
by Michal Srb
commit f99fbd2540970e93fb1bdeba880756f9d131a39c
Author: Michal Srb <msrb(a)redhat.com>
Date: Tue Jun 3 15:00:42 2014 +0200
[pom] Cleanup
python/javapackages/pom/pom.py | 42 ++++++++-------------------------------
1 files changed, 9 insertions(+), 33 deletions(-)
---
diff --git a/python/javapackages/pom/pom.py b/python/javapackages/pom/pom.py
index b8d0b1c..6404a6b 100644
--- a/python/javapackages/pom/pom.py
+++ b/python/javapackages/pom/pom.py
@@ -19,8 +19,7 @@ class POM(object):
gId = POMReader.find(self.__doc, './pom:parent/pom:groupId')
if gId is None:
return None
- else:
- return gId.text.strip()
+ return gId.text.strip()
@property
def parentArtifactId(self):
@@ -30,8 +29,7 @@ class POM(object):
aId = POMReader.find(self.__doc, './pom:parent/pom:artifactId')
if aId is None:
return None
- else:
- return aId.text.strip()
+ return aId.text.strip()
@property
def parentVersion(self):
@@ -41,8 +39,7 @@ class POM(object):
ver = POMReader.find(self.__doc, './pom:parent/pom:version')
if ver is None:
return None
- else:
- return ver.text.strip()
+ return ver.text.strip()
@property
def groupId(self):
@@ -53,12 +50,6 @@ class POM(object):
if gId is None:
gId = POMReader.find(self.__doc, './pom:parent/pom:groupId')
if gId is None:
- gId = POMReader.find(self.__doc, '/ivy-module/info')
- if gId is not None:
- gId = gId.attrib["organisation"]
- if gId is not None:
- return gId
- if gId is None:
raise PomLoadingException("Unable to determine groupId")
if len(gId) != 0:
raise PomLoadingException("Unexpected child nodes under groupId")
@@ -71,13 +62,7 @@ class POM(object):
"""
aId = POMReader.find(self.__doc, './pom:artifactId')
if aId is None:
- aId = POMReader.find(self.__doc, '/ivy-module/info')
- if aId is not None:
- aId = aId.attrib["module"]
- if aId is not None:
- return aId
- if aId is None:
- raise PomLoadingException("Unable to determine artifactID")
+ raise PomLoadingException("Unable to determine artifactId")
if len(aId) != 0:
raise PomLoadingException("Unexpected child nodes under artifactId")
return aId.text.strip()
@@ -92,12 +77,6 @@ class POM(object):
if version is None:
version = POMReader.find(self.__doc, './pom:parent/pom:version')
if version is None:
- version = POMReader.find(self.__doc, '/ivy-module/info')
- if version is not None:
- version = version.attrib["revision"]
- if version is not None:
- return version
- if version is None:
raise PomLoadingException("Unable to determine artifact version")
if len(version) != 0:
raise PomLoadingException("Unexpected child nodes under version")
@@ -109,11 +88,8 @@ class POM(object):
Packaging type of artifact or None if unspecified
"""
p = POMReader.find(self.__doc, './pom:packaging')
- if p is not None:
- if len(p) != 0:
- raise PomLoadingException("Unexpected child nodes under packaging")
- return p.text.strip()
- p = POMReader.find(self.__doc, '/ivy-module/info')
- if p is not None:
- return 'ivy'
- return None
+ if p is None:
+ raise PomLoadingException("Unable to determine packaging type")
+ if len(p) != 0:
+ raise PomLoadingException("Unexpected child nodes under packaging")
+ return p.text.strip()
9 years, 10 months
[javapackages/big-refactoring] [extension] Initial implementation
by Michal Srb
commit c97b7323da3776d9a09718ca5e26e0a67620de9e
Author: Michal Srb <msrb(a)redhat.com>
Date: Tue Jun 3 14:46:47 2014 +0200
[extension] Initial implementation
python/javapackages/pom/extension.py | 73 ++++++++++++++++++++++++++++++++++
1 files changed, 73 insertions(+), 0 deletions(-)
---
diff --git a/python/javapackages/pom/extension.py b/python/javapackages/pom/extension.py
new file mode 100644
index 0000000..7a2d2eb
--- /dev/null
+++ b/python/javapackages/pom/extension.py
@@ -0,0 +1,73 @@
+import sys
+
+from artifact import AbstractArtifact, ArtifactFormatException
+from pomreader import POMReader
+
+
+class Extension(AbstractArtifact):
+
+ def __init__(self, groupId, artifactId, version=""):
+ self.groupId = groupId.strip()
+ self.artifactId = artifactId.strip()
+ self.version = version.strip()
+
+ def __unicode__(self):
+ return u"{gid}:{aid}:{ver}".format(gid=self.groupId,
+ aid=self.artifactId,
+ ver=self.version)
+
+ def __str__(self):
+ return unicode(self).encode(sys.getfilesystemencoding())
+
+ def get_xml_element(self, root="extension"):
+ """
+ Return XML Element node representation of the Extension
+ """
+ return AbstractArtifact.get_xml_element(self, root)
+
+ def get_xml_str(self, root="extension"):
+ """
+ Return XML formatted string representation of the Exclusion
+ """
+ return AbstractArtifact.get_xml_str(self, root)
+
+ def __eq__(self, other):
+ if type(other) is type(self):
+ return self.__dict__ == other.__dict__
+ return False
+
+ def __ne__(self, other):
+ return not self.__eq__(other)
+
+ def __hash__(self):
+ return self.groupId.__hash__() + \
+ self.artifactId.__hash__() + \
+ self.version.__hash__()
+
+ @classmethod
+ def from_xml_element(cls, xmlnode):
+ """
+ Create Extension from xml.etree.ElementTree.Element as contained
+ within pom.xml.
+ """
+
+ parts = {'groupId': '', 'artifactId': '', 'version': ''}
+ parts = POMReader.find_parts(xmlnode, parts)
+
+ if not parts['groupId'] or not parts['artifactId']:
+ raise ArtifactFormatException(
+ "Empty groupId or artifactId encountered. "
+ "This is a bug, please report it!")
+
+ return cls(parts['groupId'], parts['artifactId'], parts['version'])
+
+ @classmethod
+ def from_mvn_str(cls, mvnstr):
+ """
+ Create Extension from Maven-style definition
+
+ The string should be in the format of:
+ groupId:artifactId
+ """
+ p = cls.get_parts_from_mvn_str(mvnstr)
+ return cls(p['groupId'], p['artifactId'], p['version'])
9 years, 10 months
[javapackages/big-refactoring] [dependency] Show exclusions element only if there are some
by Michal Srb
commit 488ae73592d312605d725b7c9f9c16a322ace4db
Author: Michal Srb <msrb(a)redhat.com>
Date: Tue Jun 3 14:33:53 2014 +0200
[dependency] Show exclusions element only if there are some
python/javapackages/pom/dependency.py | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
---
diff --git a/python/javapackages/pom/dependency.py b/python/javapackages/pom/dependency.py
index a361b50..1893067 100644
--- a/python/javapackages/pom/dependency.py
+++ b/python/javapackages/pom/dependency.py
@@ -43,12 +43,12 @@ class Dependency(AbstractArtifact):
item = SubElement(root, "optional")
item.text = str(self.optional).lower()
- exc_root = Element("exclusions")
if self.exclusions:
+ exc_root = Element("exclusions")
for e in self.exclusions:
exc_root.insert(len(exc_root), e.get_xml_element())
+ root.insert(len(root), exc_root)
- root.insert(len(root), exc_root)
return root
def get_xml_str(self, root="artifact"):
9 years, 10 months
[javapackages/big-refactoring] [plugin] Initial implementation
by Michal Srb
commit 2f05ae86b2d6b8ed338e9c636bc9cd9f793b186f
Author: Michal Srb <msrb(a)redhat.com>
Date: Tue Jun 3 14:32:23 2014 +0200
[plugin] Initial implementation
python/javapackages/pom/plugin.py | 92 +++++++++++++++++++++++++++++++++++++
1 files changed, 92 insertions(+), 0 deletions(-)
---
diff --git a/python/javapackages/pom/plugin.py b/python/javapackages/pom/plugin.py
new file mode 100644
index 0000000..7d8cf2a
--- /dev/null
+++ b/python/javapackages/pom/plugin.py
@@ -0,0 +1,92 @@
+import sys
+
+from dependency import Dependency
+from artifact import AbstractArtifact, ArtifactFormatException
+from pomreader import POMReader
+
+from lxml.etree import Element
+
+
+class Plugin(AbstractArtifact):
+
+ def __init__(self, groupId, artifactId, version="", dependencies=[]):
+ self.groupId = groupId.strip() or "org.apache.maven.plugins"
+ self.artifactId = artifactId.strip()
+ self.version = version.strip()
+ self.dependencies = dependencies
+
+ def __unicode__(self):
+ return u"{gid}:{aid}:{ver}".format(gid=self.groupId,
+ aid=self.artifactId,
+ ver=self.version)
+
+ def __str__(self):
+ return unicode(self).encode(sys.getfilesystemencoding())
+
+ def get_xml_element(self, root="plugin"):
+ """
+ Return XML Element node representation of the Plugin
+ """
+ root = AbstractArtifact.get_xml_element(self, root)
+
+ if self.dependencies:
+ dep_root = Element("dependencies")
+ for d in self.dependencies:
+ dep_root.insert(len(dep_root), d.get_xml_element())
+ root.insert(len(root), dep_root)
+
+ return root
+
+ def get_xml_str(self, root="plugin"):
+ """
+ Return XML formatted string representation of the Exclusion
+ """
+ return AbstractArtifact.get_xml_str(self, root)
+
+ def __eq__(self, other):
+ if type(other) is type(self):
+ return self.__dict__ == other.__dict__
+ return False
+
+ def __ne__(self, other):
+ return not self.__eq__(other)
+
+ def __hash__(self):
+ return self.groupId.__hash__() + \
+ self.artifactId.__hash__() + \
+ self.version.__hash__()
+
+ @classmethod
+ def from_xml_element(cls, xmlnode):
+ """
+ Create Plugin from xml.etree.ElementTree.Element as contained
+ within pom.xml.
+ """
+
+ parts = {'groupId': '', 'artifactId': '', 'version': ''}
+ parts = POMReader.find_parts(xmlnode, parts)
+
+ if not parts['artifactId']:
+ raise ArtifactFormatException(
+ "Empty artifactId encountered. "
+ "This is a bug, please report it!")
+
+ # dependencies
+ depnodes = POMReader.xpath(xmlnode, "./dependencies/dependency")
+
+ deps = []
+ for d in [Dependency.from_xml_element(x) for x in depnodes]:
+ deps.append(d)
+
+ return cls(parts['groupId'], parts['artifactId'], parts['version'], deps)
+
+ @classmethod
+ def from_mvn_str(cls, mvnstr):
+ """
+ Create Plugin from Maven-style definition
+
+ The string should be in the format of:
+ groupId:artifactId
+ """
+ p = cls.get_parts_from_mvn_str(mvnstr)
+ return cls(p['groupId'], p['artifactId'], p['version'])
9 years, 10 months
[javapackages/big-refactoring] [dependency] Fix get_xml_str()
by Michal Srb
commit a2bb7fc0da6ce79758977b6fd44cc765d4036da2
Author: Michal Srb <msrb(a)redhat.com>
Date: Tue Jun 3 12:37:58 2014 +0200
[dependency] Fix get_xml_str()
python/javapackages/pom/dependency.py | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
---
diff --git a/python/javapackages/pom/dependency.py b/python/javapackages/pom/dependency.py
index 99048fc..a361b50 100644
--- a/python/javapackages/pom/dependency.py
+++ b/python/javapackages/pom/dependency.py
@@ -47,13 +47,15 @@ class Dependency(AbstractArtifact):
if self.exclusions:
for e in self.exclusions:
exc_root.insert(len(exc_root), e.get_xml_element())
+
+ root.insert(len(root), exc_root)
return root
def get_xml_str(self, root="artifact"):
"""
Return XML formatted string representation of the Artifact
"""
- return self.get_xml_str(root)
+ return AbstractArtifact.get_xml_str(self, root)
def __eq__(self, other):
if type(other) is type(self):
9 years, 10 months
[javapackages/big-refactoring] [dependency] Add support for exclusions
by Michal Srb
commit bdeb6ba7e07fb5dbc678319708cb06be44874576
Author: Michal Srb <msrb(a)redhat.com>
Date: Tue Jun 3 12:28:27 2014 +0200
[dependency] Add support for exclusions
python/javapackages/pom/dependency.py | 11 +++++++++--
1 files changed, 9 insertions(+), 2 deletions(-)
---
diff --git a/python/javapackages/pom/dependency.py b/python/javapackages/pom/dependency.py
index a4fe69f..99048fc 100644
--- a/python/javapackages/pom/dependency.py
+++ b/python/javapackages/pom/dependency.py
@@ -1,6 +1,7 @@
import sys
from artifact import AbstractArtifact, ArtifactFormatException
+from exclusion import Exclusion
from pomreader import POMReader
from lxml.etree import Element, SubElement, tostring
@@ -83,7 +84,6 @@ class Dependency(AbstractArtifact):
'version': '',
'scope': '',
'optional': False}
- # TODO: exclusions
parts = POMReader.find_parts(xmlnode, parts)
@@ -98,9 +98,16 @@ class Dependency(AbstractArtifact):
elif parts['optional'] == "true":
parts['optional'] = True
+ # exclusions
+ excnodes = POMReader.xpath(xmlnode, "./exclusions/exclusion")
+
+ exclusions = set()
+ for e in [Exclusion.from_xml_element(x) for x in excnodes]:
+ exclusions.add(e)
+
return cls(parts['groupId'], parts['artifactId'], parts['extension'],
parts['classifier'], parts['version'], parts['scope'],
- parts['optional'])
+ parts['optional'], exclusions)
@classmethod
def from_mvn_str(cls, mvnstr):
9 years, 10 months
[javapackages/big-refactoring] Code deduplication in Dependency and Exclusion
by Michal Srb
commit 5da82a12c2419fcfc0f8c45b52c64725d7b672bc
Author: Michal Srb <msrb(a)redhat.com>
Date: Tue Jun 3 10:54:12 2014 +0200
Code deduplication in Dependency and Exclusion
python/javapackages/pom/dependency.py | 22 ++++++++++++++--------
python/javapackages/pom/exclusion.py | 11 ++---------
2 files changed, 16 insertions(+), 17 deletions(-)
---
diff --git a/python/javapackages/pom/dependency.py b/python/javapackages/pom/dependency.py
index 970036b..a4fe69f 100644
--- a/python/javapackages/pom/dependency.py
+++ b/python/javapackages/pom/dependency.py
@@ -32,21 +32,27 @@ class Dependency(AbstractArtifact):
"""
Return XML Element node representation of the Artifact
"""
- root = Element(root)
+ root = AbstractArtifact.get_xml_element(self, root)
- for key in ("artifactId", "groupId", "extension", "version",
- "classifier"):
- if hasattr(self, key) and getattr(self, key):
- item = SubElement(root, key)
- item.text = getattr(self, key)
+ if self.scope:
+ item = SubElement(root, "scope")
+ item.text = self.scope
+
+ if self.optional:
+ item = SubElement(root, "optional")
+ item.text = str(self.optional).lower()
+
+ exc_root = Element("exclusions")
+ if self.exclusions:
+ for e in self.exclusions:
+ exc_root.insert(len(exc_root), e.get_xml_element())
return root
def get_xml_str(self, root="artifact"):
"""
Return XML formatted string representation of the Artifact
"""
- root = self.get_xml_element(root)
- return tostring(root, pretty_print=True)
+ return self.get_xml_str(root)
def __eq__(self, other):
if type(other) is type(self):
diff --git a/python/javapackages/pom/exclusion.py b/python/javapackages/pom/exclusion.py
index 2c237d7..79d657d 100644
--- a/python/javapackages/pom/exclusion.py
+++ b/python/javapackages/pom/exclusion.py
@@ -21,20 +21,13 @@ class Exclusion(AbstractArtifact):
"""
Return XML Element node representation of the Exclusion
"""
- root = Element(root)
-
- for key in ("artifactId", "groupId"):
- if hasattr(self, key) and getattr(self, key):
- item = SubElement(root, key)
- item.text = getattr(self, key)
- return root
+ return AbstractArtifact.get_xml_element(self, root)
def get_xml_str(self, root="exclusion"):
"""
Return XML formatted string representation of the Exclusion
"""
- root = self.get_xml_element(root)
- return tostring(root, pretty_print=True)
+ return AbstractArtifact.get_xml_str(self, root)
def __eq__(self, other):
if type(other) is type(self):
9 years, 10 months