[shrinkwrap-issues] [JBoss JIRA] (SHRINKWRAP-453) Paths in webarchives are not calculated correctly

Tommy Tynjä (JIRA) jira-events at lists.jboss.org
Thu Apr 18 12:23:53 EDT 2013


    [ https://issues.jboss.org/browse/SHRINKWRAP-453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12768547#comment-12768547 ] 

Tommy Tynjä commented on SHRINKWRAP-453:
----------------------------------------

First of all, please notice that the greater than character is not supported in paths on all platforms. The problem in ExplodedImporterImpl in the calculatePath(File, File) method is that the replaceFirst method takes a regular expression as its first parameter. If the root path contains regular expression characters, the replaceFirst method call will most likely not behave as intended, in this case when brackets are present in the path. This could even cause a java.util.regex.PatternSyntaxException if e.g. only an opening bracket is present in the path, with no matching closing bracket for the regular expression evaluation.

I've created a reproducing failing test case as well as a test case causing a java.util.regex.PatternSyntaxException. The failing tests are accompanied by a test case which shows the intended behaviour. Commit: https://github.com/tommysdk/shrinkwrap/commit/e09da7845156d93ded6fab14091938a10d1f509a

One solution would be to escape all regular expression characters so that the path never would be evaluated as an regular expression. Another solution is to not support such paths, clearly document this behaviour and throw an appropriate exception for such paths, such as an IllegalArgumentException.
                
> Paths in webarchives are not calculated correctly
> -------------------------------------------------
>
>                 Key: SHRINKWRAP-453
>                 URL: https://issues.jboss.org/browse/SHRINKWRAP-453
>             Project: ShrinkWrap
>          Issue Type: Bug
>          Components: api
>    Affects Versions: 1.1.2
>         Environment: Win7x64, JDK1.7.0_17x32, JBOSS 7.1.3.Final, Arquillian 1.0.3Final, JUnit 4.11
>            Reporter: Stefan Hösel
>
> When creating a WebArchive via ShrinkWrap from a directory that is an exploded war file, paths inside this archive (generated with "arquillian.xml/arquillian/engine/property[deploymentExportPath]->target/deployments") generated invalid in some cases.
> When investigating the sources I found "org.jboss.shrinkwrap.impl.base.importer.ExplodedImporterImpl.calculatePath(File root, File child)" uses "String.replaceFirst" to replace the occurance of rootPath in childPath to create a local war file path. My path of the directory that needs compression contains *brackets*, which (as well as other path elements, e.g. ".") are interpreted as regular expression tokens and therefore don't match.
> The resulting archive can not be delpoyed in AS and tests can not be performed automatically.
> The code to create the WebArchive looks like this:
> {{ShrinkWrap._create_(WebArchive.{color:gray}*class*{color}, resultingWarFileNameAsString)}}
>   {{.as(ExplodedImporter.{color:gray}*class*{color}).importDirectory(absolutePathToExplodedWarDirectoryAsFile)}}
>   {{.as(WebArchive.{color:gray}*class*{color});}}

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira



More information about the shrinkwrap-issues mailing list