[
https://issues.jboss.org/browse/SHRINKWRAP-453?page=com.atlassian.jira.pl...
]
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/e09da7845156d93ded6fab14091...
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