You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openwebbeans.apache.org by "Mark Struberg (JIRA)" <ji...@apache.org> on 2017/12/06 12:13:00 UTC

[jira] [Resolved] (OWB-1220) URL-encoding issue in AbstractMetaDataDiscovery

     [ https://issues.apache.org/jira/browse/OWB-1220?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Mark Struberg resolved OWB-1220.
--------------------------------
       Resolution: Fixed
    Fix Version/s: 2.0.3

> URL-encoding issue in AbstractMetaDataDiscovery
> -----------------------------------------------
>
>                 Key: OWB-1220
>                 URL: https://issues.apache.org/jira/browse/OWB-1220
>             Project: OpenWebBeans
>          Issue Type: Bug
>    Affects Versions: 1.7.4, 2.0.2
>            Reporter: Harald Wellmann
>            Assignee: Mark Struberg
>             Fix For: 2.0.3
>
>
> h3. Scenario
> I have a certain integration test using OWB and DeltaSpike which fails when the working directory contains a '+' character and passes otherwise.
> What's worse, the failure only occurs when running the test under Maven Surefire, it does not occur when running the test from my IDE.
> h3. Analysis
> Maven Surefire by default builds a manifest-only JAR defining a classpath as as list of URLs, e.g.
> {noformat}
> Class-Path: ... file:/home/hwellmann/work/ops4j/org.ops4j.pax.e
>  xam2/itest/cdi/src/it/regression%2bdeltaspike/target/test-classes/ ...
> {noformat}
> The following snippet from {{AbstractMetaDataDiscovery.registerBeanArchives()}}
> {code}
> Iterator<URL> cpIt = classPathUrls.iterator(); 
> while (cpIt.hasNext())
> {
>     URL cpUrl = cpIt.next();
>     if (beansXml.startsWith(stripProtocol(cpUrl.toExternalForm())))
>     {
>         cpIt.remove();
>         addDeploymentUrl(beansXml, cpUrl);
>         break;
>     }
> }
> {code}
> does not behave as expected as can be seen from the following log output:
> {noformat}
> 11:48:21.234 [main] INFO  o.a.w.c.s.AbstractMetaDataDiscovery - added beans archive URL: file:/home/hwellmann/work/ops4j/org.ops4j.pax.exam2/itest/cdi/src/it/regression%2bdeltaspike/target/test-classes/META-INF/beans.xml
> 11:48:21.252 [main] INFO  o.a.w.c.s.AbstractMetaDataDiscovery - added beans archive URL: file:/home/hwellmann/work/ops4j/org.ops4j.pax.exam2/itest/cdi/src/it/regression+deltaspike/target/test-classes
> {noformat}
> A classpath element containing a {{beans.xml}} is *not* removed from the classpath, since the path prefix does not match due to varying encoding (i.e. {{regression%2bdeltaspike}} vs. {{regression-deltaspike}}).
> By the way, the log message "added beans archive URL" seems to be left unchanged since CDI 1.0. It would be helpful if the message indicated the difference between explicit and implicit bean archives. This is only mentioned in the inline comments in the source code.



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)