diff --git a/swh/indexer/metadata_dictionary.py b/swh/indexer/metadata_dictionary.py
--- a/swh/indexer/metadata_dictionary.py
+++ b/swh/indexer/metadata_dictionary.py
@@ -395,10 +395,11 @@
... ''')
>>> MavenMapping().parse_repositories(d)
"""
- if 'repositories' not in d:
+ repositories = d.get('repositories')
+ if not repositories:
results = [self.parse_repository(d, self._default_repository)]
else:
- repositories = d.get('repositories', {}).get('repository', [])
+ repositories = repositories.get('repository') or []
if not isinstance(repositories, list):
repositories = [repositories]
results = [self.parse_repository(d, repo)
diff --git a/swh/indexer/tests/test_metadata.py b/swh/indexer/tests/test_metadata.py
--- a/swh/indexer/tests/test_metadata.py
+++ b/swh/indexer/tests/test_metadata.py
@@ -649,6 +649,64 @@
'https://repo.maven.apache.org/maven2/com/mycompany/app/my-app',
})
+ def test_compute_metadata_maven_empty_nodes(self):
+ raw_content = b"""
+
+ Maven Default Project
+ 4.0.0
+ com.mycompany.app
+ my-app
+ 1.2.3
+
+
+ """
+ result = self.maven_mapping.translate(raw_content)
+ self.assertEqual(result, {
+ '@context': 'https://doi.org/10.5063/schema/codemeta-2.0',
+ 'type': 'SoftwareSourceCode',
+ 'name': 'Maven Default Project',
+ 'identifier': 'com.mycompany.app',
+ 'version': '1.2.3',
+ 'codeRepository':
+ 'https://repo.maven.apache.org/maven2/com/mycompany/app/my-app',
+ })
+
+ raw_content = b"""
+
+ Maven Default Project
+ 4.0.0
+ com.mycompany.app
+ my-app
+
+ """
+ result = self.maven_mapping.translate(raw_content)
+ self.assertEqual(result, {
+ '@context': 'https://doi.org/10.5063/schema/codemeta-2.0',
+ 'type': 'SoftwareSourceCode',
+ 'name': 'Maven Default Project',
+ 'identifier': 'com.mycompany.app',
+ 'codeRepository':
+ 'https://repo.maven.apache.org/maven2/com/mycompany/app/my-app',
+ })
+
+ raw_content = b"""
+
+
+ 4.0.0
+ com.mycompany.app
+ my-app
+ 1.2.3
+ """
+ result = self.maven_mapping.translate(raw_content)
+ self.assertEqual(result, {
+ '@context': 'https://doi.org/10.5063/schema/codemeta-2.0',
+ 'type': 'SoftwareSourceCode',
+ 'identifier': 'com.mycompany.app',
+ 'version': '1.2.3',
+ 'codeRepository':
+ 'https://repo.maven.apache.org/maven2/com/mycompany/app/my-app',
+ })
+
def test_compute_metadata_maven_multiple(self):
'''Tests when there are multiple code repos and licenses.'''
raw_content = b"""