[
https://issues.apache.org/jira/browse/SLING-10790?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Karl Pauls updated SLING-10790:
-------------------------------
Fix Version/s: Content-Package to Feature Model Converter 1.1.14
Content-Package to Feature Model Converter 1.1.14
(was: Content-Package to Feature Model Converter 1.1.12)
> BundleEntryHandler.extractArtifactId may use wrong GAV
> ------------------------------------------------------
>
> Key: SLING-10790
> URL: https://issues.apache.org/jira/browse/SLING-10790
> Project: Sling
> Issue Type: Bug
> Components: Content-Package to Feature Model Converter
> Reporter: Angela Schreiber
> Priority: Minor
> Fix For: Content-Package to Feature Model Converter 1.1.14
>
>
> [~kpauls], if my reading of {{BundleEntryHandler.extractArtifactId}} is
> correct it the method might be ending up using the wrong
> groupId/artifactId/version.
> the code will loop over jar-entries and stop if the extracted GAV matches the
> bundle name. however, groupId/artifactId/version are not reset to {{null}} in
> case they were successfully extracted but didn't end up matching the bundle
> name i.e. {quote}it was the pom.properties we were looking for{quote}.
> i can't tell how big of an issue that is (and how likely). but given the fact
> that there is some extra effort to verify that the parsed pom is actually the
> right one, it might actually be relevant. the relies on a compliant content
> package that does contain a matching pom, which may or may not be the case...
> logging a warning or throwing a ConverterException in case of violation might
> help spotting troublesome content packages instead of getting some sort of
> side effect if another pom was spotted.
> a heavily simplified copy of the method:
> {code}
> String artifactId = null;
> String version = null;
> String groupId = null;
> String classifier = null;
> for (Enumeration<JarEntry> e = jarFile.entries();
> e.hasMoreElements();) {
> [...]
> // extract groupId/artifactId/version
> [...]
>
> if (groupId != null && artifactId != null && version != null) {
> // bundleName is now the bare name without extension
> String synthesized = artifactId + "-" + version;
> // it was the pom.properties we were looking for
> if (bundleName.startsWith(synthesized) ||
> bundleName.equals(artifactId)) {
> [...]
>
> // no need to iterate further
> break;
> }
> }
> }
>
> if (groupId == null) {
> [...]
> }
> return new ArtifactId(groupId, artifactId, version, classifier,
> JAR_TYPE);
> {code}
> feel free to resolve as not a problem in case my reading of the code is all
> wrong.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)