You are viewing a plain text version of this content. The canonical link for it is here.
Posted to log4j-dev@logging.apache.org by "Remko Popma (JIRA)" <ji...@apache.org> on 2014/01/05 05:55:50 UTC

[jira] [Resolved] (LOG4J2-445) ResolverUtil cannot find packages in file URLs which include the '+' character

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

Remko Popma resolved LOG4J2-445.
--------------------------------

       Resolution: Fixed
    Fix Version/s: 2.0
                   2.0-rc1

I've taken a slightly different approach than the patch:

Instead of calling URL.toExternalForm (which theoretically could include the Host, Query and Ref parts), I only do string processing on the Path part.

Stripping of {{"jar:"}} and {{"file:"}} prefixes and {{"!/*"}} suffix is as before.

Finally, deciding whether to {{URL.decode}} or not:
* {{vfszip:}} and {{bundleresource:}} URLs are never decoded,
* if the path exists as a file (without decoding it), then return it as is
* otherwise, return the URL.decoded path

Added JUnit tests.
Fixed in revision 1555458.
Please verify and close.

> ResolverUtil cannot find packages in file URLs which include the '+' character
> ------------------------------------------------------------------------------
>
>                 Key: LOG4J2-445
>                 URL: https://issues.apache.org/jira/browse/LOG4J2-445
>             Project: Log4j 2
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 2.0-beta9
>         Environment: Debian Squeeze and Gentoo
> Java 7u25
>            Reporter: Anthony Baldocchi
>            Assignee: Remko Popma
>             Fix For: 2.0-rc1, 2.0
>
>         Attachments: resolver-util-file-with-plus.patch, resolver-util-jar-file-path-with-plus.patch
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> I work on an application whose version number includes a '+' character which becomes part of the filename for the jars created in the build process.  This application uses several custom log4j2 plugins contained in the jar which are discovered via the packages tag in the xml Configuration.  We also generate a plugin map using the exec-maven-plugin command documented in the Extending log4j section of the log4j2 documentation.  This command prints the following during the build:
> ERROR StatusLogger Could not search jar file '/src/program-1.2.3 build127/util/target/util-1.2.3 build127.jar' for classes matching criteria: annotated with @Plugin file not found
> The actual path to the jar is '/src/program-1.2.3+build127/util/target/util-1.2.3+build127.jar'
> I examined the source for ResolverUtil and in the method findInPackage (line 225), URLDecoder.decode is called unilaterally even for file: URLs.  The javadoc for this class says the character + is converted to space, which is inappropriate for a file: URL.



--
This message was sent by Atlassian JIRA
(v6.1.5#6160)

---------------------------------------------------------------------
To unsubscribe, e-mail: log4j-dev-unsubscribe@logging.apache.org
For additional commands, e-mail: log4j-dev-help@logging.apache.org