diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 00000000..3bb3b5ea
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,8 @@
+# Auto detect text files and perform LF normalization
+* text=auto
+
+*.java text diff=java
+*.html text diff=html
+*.css text
+*.js text
+*.sql text
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
new file mode 100644
index 00000000..b76b8957
--- /dev/null
+++ b/.github/dependabot.yml
@@ -0,0 +1,10 @@
+version: 2
+updates:
+ - package-ecosystem: "maven"
+ directory: "/"
+ schedule:
+ interval: "daily"
+ - package-ecosystem: "github-actions"
+ directory: "/"
+ schedule:
+ interval: "daily"
diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml
new file mode 100644
index 00000000..c7f59480
--- /dev/null
+++ b/.github/release-drafter.yml
@@ -0,0 +1,2 @@
+_extends: .github
+tag-template: plexus-utils-$NEXT_MINOR_VERSION
diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml
new file mode 100644
index 00000000..b0dfc833
--- /dev/null
+++ b/.github/workflows/codeql-analysis.yml
@@ -0,0 +1,64 @@
+# For most projects, this workflow file will not need changing; you simply need
+# to commit it to your repository.
+#
+# You may wish to alter this file to override the set of languages analyzed,
+# or to provide custom queries or build logic.
+#
+# ******** NOTE ********
+# We have attempted to detect the languages in your repository. Please check
+# the `language` matrix defined below to confirm you have the correct set of
+# supported CodeQL languages.
+#
+name: "CodeQL"
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ # The branches below must be a subset of the branches above
+ branches: [ master ]
+ schedule:
+ - cron: '16 8 * * 5'
+
+jobs:
+ analyze:
+ name: Analyze
+ runs-on: ubuntu-latest
+
+ strategy:
+ fail-fast: false
+ matrix:
+ language: [ 'java' ]
+
+ steps:
+ - name: Checkout repository
+ uses: actions/checkout@v2.3.4
+
+ # Initializes the CodeQL tools for scanning.
+ - name: Initialize CodeQL
+ uses: github/codeql-action/init@v1
+ with:
+ languages: ${{ matrix.language }}
+ # If you wish to specify custom queries, you can do so here or in a config file.
+ # By default, queries listed here will override any specified in a config file.
+ # Prefix the list here with "+" to use these queries and those in the config file.
+ # queries: ./path/to/local/query, your-org/your-repo/queries@main
+
+ # Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
+ # If this step fails, then you should remove it and run the build manually (see below)
+ - name: Autobuild
+ uses: github/codeql-action/autobuild@v1
+
+ # ℹ️ Command-line programs to run using the OS shell.
+ # 📚 https://git.io/JvXDl
+
+ # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
+ # and modify them (or add more) to build your code if your project
+ # uses a compiled language
+
+ #- run: |
+ # make bootstrap
+ # make release
+
+ - name: Perform CodeQL Analysis
+ uses: github/codeql-action/analyze@v1
diff --git a/.github/workflows/maven.yml b/.github/workflows/maven.yml
new file mode 100644
index 00000000..10cbc78e
--- /dev/null
+++ b/.github/workflows/maven.yml
@@ -0,0 +1,55 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+
+name: GitHub CI
+
+on: [push, pull_request]
+
+jobs:
+ build:
+
+ strategy:
+ matrix:
+ os: [ubuntu-latest, windows-latest, macOS-latest]
+ java: [8, 11, 16, 17-ea]
+ jdk: [temurin, zulu, adopt-openj9]
+ fail-fast: false
+
+ runs-on: ${{ matrix.os }}
+
+ steps:
+ - name: Checkout
+ uses: actions/checkout@v2.3.4
+
+ - name: Set up cache for ~./m2/repository
+ uses: actions/cache@v2.1.6
+ with:
+ path: ~/.m2/repository
+ key: maven-${{ matrix.os }}-java${{ matrix.java }}-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ maven-${{ matrix.os }}-java${{ matrix.java }}-
+ maven-${{ matrix.os }}-
+
+ - name: Set up JDK
+ uses: actions/setup-java@v2.3.0
+ with:
+ cache: 'maven'
+ distribution: ${{ matrix.jdk }}
+ java-version: ${{ matrix.java }}
+
+ - name: Build with Maven
+ run: mvn verify javadoc:javadoc -e -B -V
diff --git a/.github/workflows/release-drafter.yml b/.github/workflows/release-drafter.yml
new file mode 100644
index 00000000..4e2af995
--- /dev/null
+++ b/.github/workflows/release-drafter.yml
@@ -0,0 +1,12 @@
+name: Release Drafter
+on:
+ push:
+ branches:
+ - master
+jobs:
+ update_release_draft:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: release-drafter/release-drafter@v5.15.0
+ env:
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 00000000..f5db0513
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,12 @@
+target/
+.project
+.classpath
+.settings/
+bin
+*.iml
+*.ipr
+*.iws
+*.idea
+release.properties
+.java-version
+
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..bd2877bf
--- /dev/null
+++ b/README.md
@@ -0,0 +1,16 @@
+Plexus-Utils
+============
+
+[](https://github.com/codehaus-plexus/plexus-utils/actions)
+[](https://search.maven.org/artifact/org.codehaus.plexus/plexus-utils)
+
+This library is historically used by the Apache Maven project so it's developed and maintained by the same [`bad guys`](http://maven.apache.org/team.html)
+
+The current master is now at https://github.com/codehaus-plexus/plexus-utils
+
+For publishing [the site](https://codehaus-plexus.github.io/plexus-utils/) do the following:
+
+```
+mvn -Preporting verify site site:stage scm-publish:publish-scm
+```
+
diff --git a/jira/PLXUTILS-1.json b/jira/PLXUTILS-1.json
new file mode 100644
index 00000000..448ea7b4
--- /dev/null
+++ b/jira/PLXUTILS-1.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"44700","self":"http://jira.codehaus.org/rest/api/latest/issue/44700","key":"PLXUTILS-1","fields":{"progress":{"progress":0,"total":0},"summary":"org.codehaus.plexus.util.FileUtilsTest use of Thread.sleep causes failures on Windows","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-1/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17364","id":"17364","description":"","name":"2.1","archived":false,"released":true,"releaseDate":"2011-06-09"}],"resolutiondate":"2011-05-16T13:17:40.248-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=baerrach","name":"baerrach","emailAddress":"baerrach@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrie Treloar","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["baerrach(baerrach)","brettporter(brettporter)","krosenvold(krosenvold)"],"customfield_10160":null,"updated":"2011-05-16T14:04:59.956-0500","created":"2006-12-10T23:22:40.082-0600","description":"Affects 1.4-SNAPSHOT\n\norg.codehaus.plexus.util.FileUtilsTest will fail intermittently \n\nHere is the error for FileUtils:\n{noformat}\n-------------------------------------------------------------------------------\nTest set: org.codehaus.plexus.util.FileUtilsTest\n-------------------------------------------------------------------------------\nTests run: 34, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 7.813 sec <<< FAILURE!\ntestCopyIfModifiedWhenSourceIsNewer(org.codehaus.plexus.util.FileUtilsTest) Time elapsed: 1 sec <<< FAILURE!\njunit.framework.AssertionFailedError: Failed copy. Target file should have been updated.\n\tat junit.framework.Assert.fail(Assert.java:47)\n\tat junit.framework.Assert.assertTrue(Assert.java:20)\n\tat org.codehaus.plexus.util.FileUtilsTest.testCopyIfModifiedWhenSourceIsNewer(FileUtilsTest.java:351)\n\n{noformat}\n\nwhen it fails this is the time stamps:\n{noformat}\nSource = 1165811250000\nDestination = 1165811250000\n{noformat}\n\nWhen it succeeds:\n{noformat}\nSource = 1165811188000\nDestination = 1165811186000\n{noformat}\n\nThe problem is that the one second sleep in the unit tests does not guarantee that the newer file is actually newer.\n\nPatched the unit test to resolve this issue.\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"115689600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-1/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/24563","id":"24563","filename":"PLX-309-patch.txt","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=baerrach","name":"baerrach","emailAddress":"baerrach@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrie Treloar","active":true},"created":"2006-12-10T23:28:44.499-0600","size":3149,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/24563/PLX-309-patch.txt"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"Windows XP","timeestimate":null,"customfield_10130":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10053","value":"Yes","id":"10053"},"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/44700/comment/83398","id":"83398","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"body":"this patch seems to cause the test to hang on my mac, instead of the normal 7 seconds (I waited abut a minute and they had not completed).","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"created":"2006-12-26T17:27:15.146-0600","updated":"2006-12-26T17:27:15.146-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/44700/comment/267166","id":"267166","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Added the now classic reallySleep method in 2e68f9519147eadb2dc27da3bdfe942529f054d4.\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2011-05-16T13:17:40.276-0500","updated":"2011-05-16T14:04:59.948-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-10.json b/jira/PLXUTILS-10.json
new file mode 100644
index 00000000..218f0850
--- /dev/null
+++ b/jira/PLXUTILS-10.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"44676","self":"http://jira.codehaus.org/rest/api/latest/issue/44676","key":"PLXUTILS-10","fields":{"progress":{"progress":0,"total":0},"summary":"FileUtils.copyFile zeros out the file if source file is the same as destination file","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-10/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14032","id":"14032","description":"","name":"1.4.6","archived":false,"released":true,"releaseDate":"2007-09-13"}],"resolutiondate":"2007-08-21T16:02:05.542-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=sni","name":"sni","emailAddress":"stephane.nicoll@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Stéphane Nicoll","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["olamy(olamy)","sni(sni)","wfay(wfay)"],"customfield_10160":null,"updated":"2008-02-02T15:32:37.150-0600","created":"2006-12-10T10:25:02.473-0600","description":"Using copyFile zeros out the file is the source file is the same as destination file.\n\nTo reproduce, runs the following test case:\n\n{code:java}\npublic void testCopyFileOnSameFile()\n throws IOException\n {\n String content= \"ggrgreeeeeeeeeeeeeeeeeeeeeeeoierjgioejrgiojregioejrgufcdxivbsdibgfizgerfyaezgv!zeez\";\n final File theFile = File.createTempFile( \"test\", \".txt\");\n FileUtils.fileAppend( theFile.getAbsolutePath(), content);\n\n assertTrue( theFile.length() > 0);\n // Now copy file over itself\n FileUtils.copyFile( theFile, theFile);\n\n // This should not fail\n assertTrue( theFile.length() > 0);\n }\n{code}\n\nExpected behavior is to do nothing and leave the file as it is.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"15472","self":"http://jira.codehaus.org/rest/api/2/issueLink/15472","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"43867","key":"MEAR-49","self":"http://jira.codehaus.org/rest/api/2/issue/43867","fields":{"summary":"if an artifact in the list of ear modules already exists in the ear, the ear mojo will copy it on top of itself, zeroing out the file","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"233539200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-10/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/29033","id":"29033","filename":"plxutils-10_4.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=wfay","name":"wfay","emailAddress":"waynefay@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Wayne Fay","active":true},"created":"2007-08-20T17:01:44.660-0500","size":1924,"mimeType":"application/octet-stream","content":"http://jira.codehaus.org/secure/attachment/29033/plxutils-10_4.diff"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"plexus-utils 1.0.4","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/44676/comment/105244","id":"105244","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=wfay","name":"wfay","emailAddress":"waynefay@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Wayne Fay","active":true},"body":"Added check to FileUtils.copyFile( final File source, final File destination ) to see if source == destination.\r\n\r\nAdded test to FileUtilsTest named testCopyFileOnSameFile().\r\n\r\nBefore the check was added, the test fails. Afterwards, the test passes.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=wfay","name":"wfay","emailAddress":"waynefay@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Wayne Fay","active":true},"created":"2007-08-20T17:01:44.665-0500","updated":"2007-08-20T17:01:44.665-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/44676/comment/105363","id":"105363","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"Patch applied in rev 6776.\r\nThanks.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-08-21T16:02:05.534-0500","updated":"2007-08-21T16:02:05.534-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-100.json b/jira/PLXUTILS-100.json
new file mode 100644
index 00000000..a9945d84
--- /dev/null
+++ b/jira/PLXUTILS-100.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"79303","self":"http://jira.codehaus.org/rest/api/latest/issue/79303","key":"PLXUTILS-100","fields":{"progress":{"progress":0,"total":0},"summary":"DirectoryScanner#DEFAULTEXCLUDES should exclude other SCMs like Mercury or GIT","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-100/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2009-01-02T15:24:02.654-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2009-01-02T15:24:02.651-0600","created":"2009-01-02T15:22:19.795-0600","description":"Similar to PLXUTILS-81","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"21698","self":"http://jira.codehaus.org/rest/api/2/issueLink/21698","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"70462","key":"PLXUTILS-81","self":"http://jira.codehaus.org/rest/api/2/issue/70462","fields":{"summary":"Exclusion Pattern does not include Serena Dimensions .metadata pattern","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"190339200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-100/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/79303/comment/159749","id":"159749","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"fixed in r7997","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-01-02T15:24:02.648-0600","updated":"2009-01-02T15:24:02.648-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-101.json b/jira/PLXUTILS-101.json
new file mode 100644
index 00000000..0654aa2d
--- /dev/null
+++ b/jira/PLXUTILS-101.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"79503","self":"http://jira.codehaus.org/rest/api/latest/issue/79503","key":"PLXUTILS-101","fields":{"progress":{"progress":0,"total":0},"summary":"Review license","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-101/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2014-11-25T15:38:02.646-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["struberg(struberg)","michael-o(michael-o)","siveton(siveton)"],"customfield_10160":null,"updated":"2014-11-25T15:38:02.679-0600","created":"2009-01-07T06:56:06.876-0600","description":"According http://plexus.codehaus.org/get-involved.html","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-101/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/79503/comment/160243","id":"160243","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"fixed in r8012","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-01-07T07:07:38.637-0600","updated":"2009-01-07T07:07:38.637-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/79503/comment/275817","id":"275817","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=struberg","name":"struberg","emailAddress":"struberg@yahoo.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Mark Struberg","active":true},"body":"folks, this class is almost a 1:1 clone from Maven-1.1 DVSLPathTool, which is itself a fork from Anakia and other jakarta projects. It's just NOT OK to change the license and drop the original credits!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=struberg","name":"struberg","emailAddress":"struberg@yahoo.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Mark Struberg","active":true},"created":"2011-08-14T13:30:33.310-0500","updated":"2011-08-14T13:30:33.310-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/79503/comment/357803","id":"357803","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.\r\n\r\nAssignee, if you think you can fix this bug anytime soon, please reopen and proceed appropriately.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T15:38:02.672-0600","updated":"2014-11-25T15:38:02.672-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-102.json b/jira/PLXUTILS-102.json
new file mode 100644
index 00000000..f06fa106
--- /dev/null
+++ b/jira/PLXUTILS-102.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"79706","self":"http://jira.codehaus.org/rest/api/latest/issue/79706","key":"PLXUTILS-102","fields":{"progress":{"progress":0,"total":0},"summary":"Wrong regex pattern in PrettyPrintXMLWriter#escapeXmlAttribute( String text )","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-102/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2009-01-12T17:39:27.871-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2009-01-12T17:39:27.867-0600","created":"2009-01-12T17:38:06.686-0600","description":"In PrettyPrintXMLWriter#escapeXmlAttribute( String text ), we have a wrong pattern:\n{noformat}\ntext = text.replaceAll( \"\\n\\r\", \"
\" );\n{noformat}","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"189475200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-102/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/79706/comment/160751","id":"160751","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"fixed in r8046","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-01-12T17:39:27.857-0600","updated":"2009-01-12T17:39:27.857-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-103.json b/jira/PLXUTILS-103.json
new file mode 100644
index 00000000..8238adfa
--- /dev/null
+++ b/jira/PLXUTILS-103.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"81058","self":"http://jira.codehaus.org/rest/api/latest/issue/81058","key":"PLXUTILS-103","fields":{"progress":{"progress":0,"total":0},"summary":"Refactor DirectoryScanner to allow custom directory structure traversal","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-103/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[],"resolutiondate":"2009-02-04T14:33:05.622-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["igorfie(igorfie)"],"customfield_10160":null,"updated":"2009-02-04T14:33:05.617-0600","created":"2009-02-04T14:31:09.019-0600","description":"Introduce Scanner interface. This should be technology neutral and allow eclipse IResource-based implementation, for example.\nRefactor includes/excludes matching logic out of DirectoryScanner into AbstractScanner.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"187488000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-103/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/81058/comment/163985","id":"163985","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"body":"implemented.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"created":"2009-02-04T14:33:05.613-0600","updated":"2009-02-04T14:33:05.613-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-104.json b/jira/PLXUTILS-104.json
new file mode 100644
index 00000000..e46097b6
--- /dev/null
+++ b/jira/PLXUTILS-104.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"81935","self":"http://jira.codehaus.org/rest/api/latest/issue/81935","key":"PLXUTILS-104","fields":{"progress":{"progress":0,"total":0},"summary":"Clonning of Commandline/Shell don't clonning shellCommand that leads to unclear error.","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-104/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:30:33.624-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=newfield","name":"newfield","emailAddress":"michael.neifeld@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Neifeld","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["newfield(newfield)","michael-o(michael-o)"],"customfield_10160":null,"updated":"2014-11-25T14:30:33.672-0600","created":"2009-02-19T01:06:55.039-0600","description":null,"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-104/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"customfield_10170":null,"environment":"Windows XP, Java 5","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/81935/comment/357246","id":"357246","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:30:33.649-0600","updated":"2014-11-25T14:30:33.649-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-105.json b/jira/PLXUTILS-105.json
new file mode 100644
index 00000000..17e31dd2
--- /dev/null
+++ b/jira/PLXUTILS-105.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"83649","self":"http://jira.codehaus.org/rest/api/latest/issue/83649","key":"PLXUTILS-105","fields":{"progress":{"progress":0,"total":900,"percent":0},"summary":"more NullPointerException's in Xpp3Dom.equals()","timetracking":{"originalEstimate":"15m","remainingEstimate":"15m","originalEstimateSeconds":900,"remainingEstimateSeconds":900},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-105/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/3","id":"3","description":"The problem is a duplicate of an existing issue.","name":"Duplicate"},"fixVersions":[],"resolutiondate":"2012-08-01T15:32:31.772-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rustamabd","name":"rustamabd","emailAddress":"rustamabd@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Rustam Abdullaev","active":true},"aggregatetimeoriginalestimate":900,"customfield_10161":["hboutemy(hboutemy)","krosenvold(krosenvold)","rustamabd(rustamabd)"],"customfield_10160":null,"updated":"2012-08-01T15:35:21.123-0500","created":"2009-03-16T09:10:56.688-0500","description":"Xpp3Dom.java, lines 453 and 457 frequently throw NullPointerExceptions because the test is incorrect:\r\n\r\n\r\n{code}\r\n. . .\r\n\t else if ( attributes == null ? dom.attributes != null : !dom.attributes.equals( attributes ) )\r\n\t {\r\n\t return false;\r\n\t }\r\n\t else if ( childList == null ? dom.childList != null : !dom.childList.equals( childList ) )\r\n\t {\r\n\t return false;\r\n\t }\r\n{code}\r\n\r\nIt should be:\r\n\r\n{code}\r\n. . .\r\n\t else if ( attributes == null ? dom.attributes != null : !attributes.equals( dom.attributes ) )\r\n\t {\r\n\t return false;\r\n\t }\r\n\t else if ( childList == null ? dom.childList != null : !childList.equals( dom.childList ) )\r\n\t {\r\n\t return false;\r\n\t }\r\n{code}\r\n\r\nCurrently this happens inside maven-eclipse-plugin.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"31576","self":"http://jira.codehaus.org/rest/api/2/issueLink/31576","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"outwardIssue":{"id":"61808","key":"PLXUTILS-63","self":"http://jira.codehaus.org/rest/api/2/issue/61808","fields":{"summary":"plexus-utils: NullPointerException in Xpp3Dom.equals()","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"153360000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-105/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":0,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":900,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14044","id":"14044","description":"","name":"1.0","archived":true,"released":true,"releaseDate":"2005-05-27"},{"self":"http://jira.codehaus.org/rest/api/2/version/14045","id":"14045","description":"","name":"1.0.1","archived":true,"released":true,"releaseDate":"2005-07-10"},{"self":"http://jira.codehaus.org/rest/api/2/version/14046","id":"14046","description":"","name":"1.0.2","archived":true,"released":true,"releaseDate":"2005-09-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14047","id":"14047","description":"","name":"1.0.3","archived":true,"released":true,"releaseDate":"2005-09-15"},{"self":"http://jira.codehaus.org/rest/api/2/version/14048","id":"14048","description":"","name":"1.0.4","archived":true,"released":true,"releaseDate":"2005-10-11"},{"self":"http://jira.codehaus.org/rest/api/2/version/14049","id":"14049","description":"","name":"1.0.5","archived":true,"released":true,"releaseDate":"2005-12-07"},{"self":"http://jira.codehaus.org/rest/api/2/version/14037","id":"14037","description":"","name":"1.1","archived":true,"released":true,"releaseDate":"2006-01-11"},{"self":"http://jira.codehaus.org/rest/api/2/version/14038","id":"14038","description":"","name":"1.2","archived":false,"released":true,"releaseDate":"2006-04-19"},{"self":"http://jira.codehaus.org/rest/api/2/version/14039","id":"14039","description":"","name":"1.3","archived":false,"released":true,"releaseDate":"2006-09-28"},{"self":"http://jira.codehaus.org/rest/api/2/version/14040","id":"14040","description":"","name":"1.4","archived":false,"released":true,"releaseDate":"2007-01-09"},{"self":"http://jira.codehaus.org/rest/api/2/version/14041","id":"14041","description":"","name":"1.4.1","archived":false,"released":true,"releaseDate":"2007-03-10"},{"self":"http://jira.codehaus.org/rest/api/2/version/14042","id":"14042","description":"","name":"1.4.2","archived":false,"released":true,"releaseDate":"2007-05-20"},{"self":"http://jira.codehaus.org/rest/api/2/version/14029","id":"14029","description":"","name":"1.4.3","archived":false,"released":true,"releaseDate":"2007-07-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14030","id":"14030","description":"","name":"1.4.4","archived":false,"released":true,"releaseDate":"2007-07-20"},{"self":"http://jira.codehaus.org/rest/api/2/version/14031","id":"14031","description":"","name":"1.4.5","archived":false,"released":true,"releaseDate":"2007-07-31"},{"self":"http://jira.codehaus.org/rest/api/2/version/14032","id":"14032","description":"","name":"1.4.6","archived":false,"released":true,"releaseDate":"2007-09-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14033","id":"14033","description":"","name":"1.4.7","archived":false,"released":true,"releaseDate":"2007-10-16"},{"self":"http://jira.codehaus.org/rest/api/2/version/14034","id":"14034","description":"","name":"1.4.8","archived":false,"released":true,"releaseDate":"2007-11-27"},{"self":"http://jira.codehaus.org/rest/api/2/version/14035","id":"14035","description":"","name":"1.4.9","archived":false,"released":true,"releaseDate":"2007-12-19"},{"self":"http://jira.codehaus.org/rest/api/2/version/14036","id":"14036","description":"","name":"1.5","archived":false,"released":true,"releaseDate":"2008-02-18"},{"self":"http://jira.codehaus.org/rest/api/2/version/14086","id":"14086","description":"","name":"1.5.1","archived":false,"released":true,"releaseDate":"2008-02-21"},{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14383","id":"14383","description":"","name":"1.5.3","archived":false,"released":true,"releaseDate":"2008-06-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14384","id":"14384","description":"","name":"1.5.4","archived":false,"released":true,"releaseDate":"2008-06-18"},{"self":"http://jira.codehaus.org/rest/api/2/version/14408","id":"14408","description":"","name":"1.5.5","archived":false,"released":true,"releaseDate":"2008-07-03"},{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"customfield_10170":null,"environment":null,"timeestimate":900,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":900,"percent":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/83649/comment/212918","id":"212918","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"do you have a unit test showing such NPEs?\r\ncan you propose a Xpp3DomTest patch, please?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2010-03-06T12:01:37.187-0600","updated":"2010-03-06T12:01:37.187-0600"}]},"timeoriginalestimate":900,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-106.json b/jira/PLXUTILS-106.json
new file mode 100644
index 00000000..4330f87b
--- /dev/null
+++ b/jira/PLXUTILS-106.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"85749","self":"http://jira.codehaus.org/rest/api/latest/issue/85749","key":"PLXUTILS-106","fields":{"progress":{"progress":0,"total":0},"summary":"Distinct CommandLineException when process is killed on timeOut","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-106/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15258","id":"15258","description":"","name":"1.5.9","archived":false,"released":true,"releaseDate":"2009-04-28"}],"resolutiondate":"2009-04-28T16:06:47.525-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ndeloof","name":"ndeloof","emailAddress":"nicolas.deloof@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=ndeloof&avatarId=10411","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=ndeloof&avatarId=10411","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=ndeloof&avatarId=10411","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=ndeloof&avatarId=10411"},"displayName":"nicolas de loof","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["ndeloof(ndeloof)","olamy(olamy)"],"customfield_10160":null,"updated":"2009-04-28T16:06:47.521-0500","created":"2009-04-25T09:09:07.025-0500","description":"When running a forked process with plexus-utils using timeOut, there is no way (only can check the exception getMessage()) to disctinct error from timeOut. A CommandLineException class hierarchy would be great for finest execution check.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"180662400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-106/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-107.json b/jira/PLXUTILS-107.json
new file mode 100644
index 00000000..63ca44b1
--- /dev/null
+++ b/jira/PLXUTILS-107.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"85750","self":"http://jira.codehaus.org/rest/api/latest/issue/85750","key":"PLXUTILS-107","fields":{"progress":{"progress":0,"total":0},"summary":"Shell implementation to .. not use a shell","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-107/votes","votes":1,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ndeloof","name":"ndeloof","emailAddress":"nicolas.deloof@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=ndeloof&avatarId=10411","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=ndeloof&avatarId=10411","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=ndeloof&avatarId=10411","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=ndeloof&avatarId=10411"},"displayName":"nicolas de loof","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["fj(fj)","ndeloof(ndeloof)"],"customfield_10160":null,"updated":"2011-12-05T00:55:00.371-0600","created":"2009-04-25T09:11:20.231-0500","description":"On windows, running a process using a system Shell introduce the \"command line length limitation\" (~4000 chars on win XP) that can be a blocker when long classpath are used.\n\nRunning same command without a shell, but just using the JVM executable solves this issue. A \"JavaShell\" or an option to NOT use a shell could be usefull in such case.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"98236800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-107/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/85750/comment/284882","id":"284882","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=fj","name":"fj","emailAddress":"Frank.Jakop@tolina.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Frank Jakop","active":true},"body":"Using a shell has another nasty side-effect. Due to the process architecture on Windows the ececuted process is not terminated when hitting ctrl+c.\r\nSee http://jira.codehaus.org/browse/PLXUTILS-40?focusedCommentId=284881&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-284881","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=fj","name":"fj","emailAddress":"Frank.Jakop@tolina.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Frank Jakop","active":true},"created":"2011-12-05T00:55:00.353-0600","updated":"2011-12-05T00:55:00.353-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-108.json b/jira/PLXUTILS-108.json
new file mode 100644
index 00000000..ae206289
--- /dev/null
+++ b/jira/PLXUTILS-108.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"86410","self":"http://jira.codehaus.org/rest/api/latest/issue/86410","key":"PLXUTILS-108","fields":{"progress":{"progress":0,"total":0},"summary":"Javadoc for org.codehaus.plexus.util.dag package","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-108/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=james.w.dumay","name":"james.w.dumay","emailAddress":"james@atlassian.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"James William Dumay","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["james.w.dumay(james.w.dumay)"],"customfield_10160":null,"updated":"2009-05-10T22:15:12.465-0500","created":"2009-05-10T22:15:12.465-0500","description":"It would be really useful to have more Javadoc for the org.codehaus.plexus.util.dag package in plexus-utils.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"179280000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-108/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15258","id":"15258","description":"","name":"1.5.9","archived":false,"released":true,"releaseDate":"2009-04-28"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-109.json b/jira/PLXUTILS-109.json
new file mode 100644
index 00000000..69c913d9
--- /dev/null
+++ b/jira/PLXUTILS-109.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"86984","self":"http://jira.codehaus.org/rest/api/latest/issue/86984","key":"PLXUTILS-109","fields":{"progress":{"progress":0,"total":0},"summary":"MXParser doesnt handle all numeric character references like 𒍅","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-109/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15318","id":"15318","description":"","name":"1.5.10","archived":false,"released":true,"releaseDate":"2009-05-29"}],"resolutiondate":"2009-05-28T17:37:23.193-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2009-05-28T17:37:23.183-0500","created":"2009-05-20T07:14:37.520-0500","description":"𒍅 is a valid entity which is the char \"\\uD808\\uDF45\" [1] and [2]\n\nThe parser doesn't take care of surrogate char in parseEntityRef()\n\n[1] http://www.fileformat.info/info/unicode/char/12345/index.htm\n[2] http://www.w3.org/TR/REC-xml/#dt-charref","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"177724800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-109/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15258","id":"15258","description":"","name":"1.5.9","archived":false,"released":true,"releaseDate":"2009-04-28"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/86984/comment/177316","id":"177316","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"see http://svn.apache.org/viewvc?rev=776696&view=rev","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-05-20T08:44:17.941-0500","updated":"2009-05-20T08:44:17.941-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/86984/comment/178508","id":"178508","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"merge Doxia code in r8236","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-05-28T17:37:23.180-0500","updated":"2009-05-28T17:37:23.180-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-11.json b/jira/PLXUTILS-11.json
new file mode 100644
index 00000000..2d91a9b7
--- /dev/null
+++ b/jira/PLXUTILS-11.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"34791","self":"http://jira.codehaus.org/rest/api/latest/issue/34791","key":"PLXUTILS-11","fields":{"progress":{"progress":0,"total":0},"summary":"MXParser can't handle the encoding declaration in XML declaration ","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-11/votes","votes":8,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14030","id":"14030","description":"","name":"1.4.4","archived":false,"released":true,"releaseDate":"2007-07-20"}],"resolutiondate":"2007-07-08T13:55:52.407-0500","customfield_10210":"4.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nose","name":"nose","emailAddress":"nosenaoki@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Naoki Nose","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["carlos(carlos)","hboutemy(hboutemy)","nose(nose)","stefanhuebner(stefanhuebner)"],"customfield_10160":null,"updated":"2008-02-02T15:34:37.648-0600","created":"2006-03-12T10:28:17.181-0600","description":"The xml pull parser in plexus-utils(MXParser.java) can't handle the encoding declaration in XML declaration.\nSo, it's impossible to use an encoding different from system default encoding. This is critical in Japan, because \nthere is two commonly used encodings in Japanese environment(SJIS and EUC-JP).\n\nI think MXParser should handle encoding declaration in xml as described in w3c specification/\nhttp://www.w3.org/TR/REC-xml/#sec-guessing\n\nI tried to fix this problem(see attachment).\nI changed the setInput(InputStream) method to detect encoding in xml declaration.\nFor writing this code, I referred to source code of Apache Xerces.\nUCS-4 and UCS-2 isn't supported in this implementation, because\nthese encoding isn't supported by Sun JDK.\n\nXerces solves this problem by providing original reader for these encodings. I think Xerces's solution is\ntoo complex for plexus-utils.\n\nTo solve this issue, it's not sufficient only to change plexus-utils, because\nDefaultMavenProjectBuilder reads POM by FileReader without specifying encoding.\n\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"15176","self":"http://jira.codehaus.org/rest/api/2/issueLink/15176","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"41132","key":"MEVENIDE-449","self":"http://jira.codehaus.org/rest/api/2/issue/41132","fields":{"summary":"Mevenide plugin stumbels upon non ASCII characters in the path to the .m2 directory","status":{"self":"http://jira.codehaus.org/rest/api/2/status/5","description":"A resolution has been taken, and it is awaiting verification by reporter. From here issues are either reopened, or are closed.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/resolved.png","name":"Resolved","id":"5"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"14077","self":"http://jira.codehaus.org/rest/api/2/issueLink/14077","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"28975","key":"MSITE-19","self":"http://jira.codehaus.org/rest/api/2/issue/28975","fields":{"summary":"Various encoding problems with InputStream and XML","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"14049","self":"http://jira.codehaus.org/rest/api/2/issueLink/14049","type":{"id":"10020","name":"Supercedes","inward":"is superceded by","outward":"supercedes","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10020"},"inwardIssue":{"id":"36478","key":"MNG-2255","self":"http://jira.codehaus.org/rest/api/2/issue/36478","fields":{"summary":"Use a external XML Pull parser instead of plexus one","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}},{"id":"14515","self":"http://jira.codehaus.org/rest/api/2/issueLink/14515","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"39201","key":"MANTTASKS-14","self":"http://jira.codehaus.org/rest/api/2/issue/39201","fields":{"summary":"Ant Tasks do not work on the ZOS","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"14099","self":"http://jira.codehaus.org/rest/api/2/issueLink/14099","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"33038","key":"MNG-2025","self":"http://jira.codehaus.org/rest/api/2/issue/33038","fields":{"summary":"POM is still not read using the right encoding","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"17183","self":"http://jira.codehaus.org/rest/api/2/issueLink/17183","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"53774","key":"DOXIA-133","self":"http://jira.codehaus.org/rest/api/2/issue/53774","fields":{"summary":"default XML encoding (UTF-8) or XML encoding set in XML files is ignored: inputEncoding is used instead","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"14098","self":"http://jira.codehaus.org/rest/api/2/issueLink/14098","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"32521","key":"MECLIPSE-56","self":"http://jira.codehaus.org/rest/api/2/issue/32521","fields":{"summary":"Generated .project-file misses encoding declaration","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"14046","self":"http://jira.codehaus.org/rest/api/2/issueLink/14046","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"36477","key":"MNG-2254","self":"http://jira.codehaus.org/rest/api/2/issue/36477","fields":{"summary":"the encoding parameter in xml declaration of POM is ignored ","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"17079","self":"http://jira.codehaus.org/rest/api/2/issueLink/17079","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"53309","key":"MSITE-239","self":"http://jira.codehaus.org/rest/api/2/issue/53309","fields":{"summary":"encoding declaration in site.xml is ignored","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"238377600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-11/watchers","watchCount":7,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/20228","id":"20228","filename":"plexus-utils.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nose","name":"nose","emailAddress":"nosenaoki@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Naoki Nose","active":true},"created":"2006-04-23T02:44:31.383-0500","size":59499,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/20228/plexus-utils.diff"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/20229","id":"20229","filename":"plexus-utils-test-resource.tar.gz","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nose","name":"nose","emailAddress":"nosenaoki@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Naoki Nose","active":true},"created":"2006-04-23T02:48:33.271-0500","size":581,"mimeType":"application/x-gzip","content":"http://jira.codehaus.org/secure/attachment/20229/plexus-utils-test-resource.tar.gz"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/28176","id":"28176","filename":"PLXUTILS-11.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2007-06-26T15:23:49.039-0500","size":34779,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/28176/PLXUTILS-11.diff"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/19563","id":"19563","filename":"src.jar","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nose","name":"nose","emailAddress":"nosenaoki@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Naoki Nose","active":true},"created":"2006-03-12T10:28:17.264-0600","size":49018,"mimeType":"application/x-jar","content":"http://jira.codehaus.org/secure/attachment/19563/src.jar"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":6,"total":6,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/34791/comment/63998","id":"63998","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nose","name":"nose","emailAddress":"nosenaoki@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Naoki Nose","active":true},"body":"patch file for plexus-utils. ","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nose","name":"nose","emailAddress":"nosenaoki@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Naoki Nose","active":true},"created":"2006-04-23T02:44:31.427-0500","updated":"2006-04-23T02:44:31.427-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/34791/comment/63999","id":"63999","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nose","name":"nose","emailAddress":"nosenaoki@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Naoki Nose","active":true},"body":"The test resource files for MXParserTest.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nose","name":"nose","emailAddress":"nosenaoki@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Naoki Nose","active":true},"created":"2006-04-23T02:48:33.314-0500","updated":"2006-04-23T02:48:33.314-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/34791/comment/64002","id":"64002","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nose","name":"nose","emailAddress":"nosenaoki@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Naoki Nose","active":true},"body":"I have attached additional two files, becaulse The format of my first attachment isn't diff format.\r\n\r\nThe file plexus-utils.diff is the patch file for plexus-utils. It contains xml encoding detection code.\r\nThe file plexus-utils-test-resources.tar.gz is the test resource files for MXParserTest.java.\r\nThe format of these resource files is binary, so plexux-utils.diff could'nt contain these files.\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nose","name":"nose","emailAddress":"nosenaoki@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Naoki Nose","active":true},"created":"2006-04-23T03:23:09.984-0500","updated":"2006-04-23T03:23:09.984-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/34791/comment/64668","id":"64668","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"We'd better switch to an external xml parser, see MNG-2255","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2006-05-03T11:32:29.624-0500","updated":"2006-05-03T11:32:29.624-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/34791/comment/65077","id":"65077","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=stefanhuebner","name":"stefanhuebner","emailAddress":"sthuebner@googlemail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Stefan Hübner","active":true},"body":"As I just stated in MNG-2255 I think, that ??\"...the parser used to read in maven's model isn't the problem really. It's more likely the way the POM is handed to the parser.\"??\r\n\r\nSee MNG-2255 for full discussion of the issue.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=stefanhuebner","name":"stefanhuebner","emailAddress":"sthuebner@googlemail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Stefan Hübner","active":true},"created":"2006-05-09T17:32:35.406-0500","updated":"2006-05-09T17:32:35.406-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/34791/comment/100636","id":"100636","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"Here is XmlReader class, taken out from Rome:\r\nsee https://rome.dev.java.net/apidocs/0_9/com/sun/syndication/io/XmlReader.html\r\n\r\nWith this class available, encoding detection is not necessary done by the XML parser, but can be handled by the XmlReader used: the parser does not need any complex code for encoding detection.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2007-06-26T15:23:49.047-0500","updated":"2007-06-26T15:23:49.047-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-110.json b/jira/PLXUTILS-110.json
new file mode 100644
index 00000000..dec0c785
--- /dev/null
+++ b/jira/PLXUTILS-110.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"86987","self":"http://jira.codehaus.org/rest/api/latest/issue/86987","key":"PLXUTILS-110","fields":{"progress":{"progress":0,"total":0},"summary":"Wronf entity replacement in MXParser ","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-110/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15318","id":"15318","description":"","name":"1.5.10","archived":false,"released":true,"releaseDate":"2009-05-29"}],"resolutiondate":"2009-05-28T17:58:03.686-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2009-05-28T17:58:03.677-0500","created":"2009-05-20T07:59:45.228-0500","description":"{noformat}\n\n
&myCustom;
\n{noformat}\n\n&myCustom; = &fo; instead of A","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"177724800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-110/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15258","id":"15258","description":"","name":"1.5.9","archived":false,"released":true,"releaseDate":"2009-04-28"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/86987/comment/177317","id":"177317","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"see http://svn.apache.org/viewvc?rev=776696&view=rev","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-05-20T08:44:36.253-0500","updated":"2009-05-20T08:44:36.253-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/86987/comment/178512","id":"178512","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"merge code from doxia in r8237","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-05-28T17:58:03.674-0500","updated":"2009-05-28T17:58:03.674-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-111.json b/jira/PLXUTILS-111.json
new file mode 100644
index 00000000..bc0c60bd
--- /dev/null
+++ b/jira/PLXUTILS-111.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"87173","self":"http://jira.codehaus.org/rest/api/latest/issue/87173","key":"PLXUTILS-111","fields":{"progress":{"progress":0,"total":0},"summary":"Add copy constructor for Xpp3Dom that allows rename","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-111/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15318","id":"15318","description":"","name":"1.5.10","archived":false,"released":true,"releaseDate":"2009-05-29"}],"resolutiondate":"2009-05-24T11:33:30.341-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)"],"customfield_10160":null,"updated":"2009-05-24T11:33:30.336-0500","created":"2009-05-24T11:30:12.498-0500","description":"Given the name is unmodifiable, a copy constructor to specify an alternative name would be handy.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"178070400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-111/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15258","id":"15258","description":"","name":"1.5.9","archived":false,"released":true,"releaseDate":"2009-04-28"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/87173/comment/177857","id":"177857","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Added in [r8215|http://fisheye.codehaus.org/changelog/plexus/?cs=8215].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2009-05-24T11:33:30.333-0500","updated":"2009-05-24T11:33:30.333-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-112.json b/jira/PLXUTILS-112.json
new file mode 100644
index 00000000..e4d58a82
--- /dev/null
+++ b/jira/PLXUTILS-112.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"50086","self":"http://jira.codehaus.org/rest/api/latest/issue/50086","key":"PLXUTILS-112","fields":{"progress":{"progress":0,"total":0},"summary":"Using plexus in maven2 causes a \"too many open files exception\"","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-112/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15318","id":"15318","description":"","name":"1.5.10","archived":false,"released":true,"releaseDate":"2009-05-29"}],"resolutiondate":"2009-05-28T16:45:58.032-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ivovandongen","name":"ivovandongen","emailAddress":"ivovandongen@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ivo van Dongen","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["evenisse(evenisse)","silas1106(silas1106)","ivovandongen(ivovandongen)","rt15(rt15)"],"customfield_10160":null,"updated":"2009-05-28T23:54:37.470-0500","created":"2007-04-19T10:25:59.942-0500","description":"When building large projects we run into a problem in the last stages of a maven2 build. We've alreadye upped the OS limits on open file handles per proces and in general. I've dropped this on the continuum mailinglist at first but they pointed me in this direction.\n\nThe last part of the maven output is:\n\n[INFO] [war:war]\n[INFO] Exploding webapp...\n[INFO] Copy webapp webResources to /opt/continuum-1.0.3/apps/continuum/working-directory/55/target/ROOT\n[INFO] Copy webapp webResources to /opt/continuum-1.0.3/apps/continuum/working-directory/55/target/ROOT\n[INFO] Assembling webapp tesis in /opt/continuum-1.0.3/apps/continuum/working-directory/55/target/ROOT\n[INFO] Generating war /opt/continuum-1.0.3/apps/continuum/working-directory/55/target/ROOT.war\n[INFO] Building war: /opt/continuum-1.0.3/apps/continuum/working-directory/55/target/ROOT.war\n[INFO] ------------------------------------------------------------------------\n[ERROR] BUILD ERROR\n[INFO] ------------------------------------------------------------------------\n[INFO] Error assembling WAR: Problem creating war: /opt/continuum-1.0.3/apps/continuum/working-directory/55/target/ROOT/WEB-INF/lib/XmlSchema-1.1.jar (Too many open files)\n\n[INFO] ------------------------------------------------------------------------\n[INFO] Trace\norg.apache.maven.lifecycle.LifecycleExecutionException: Error assembling WAR: Problem creating war: /opt/continuum-1.0.3/apps/continuum/working-directory/55/target/ROOT/WEB-INF/lib/XmlSchema-1.1.jar (Too many open files)\nat org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:559)\nat org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:475)\nat org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:454)\nat org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:306)\nat org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:273)\nat org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:140)\nat org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:322)\nat org.apache.maven.DefaultMaven.execute(DefaultMaven.java:115)\nat org.apache.maven.cli.MavenCli.main(MavenCli.java:256)\nat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\nat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\nat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\nat java.lang.reflect.Method.invoke(Method.java:585)\nat org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)\nat org.codehaus.classworlds.Launcher.launch(Launcher.java:255)\nat org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)\nat org.codehaus.classworlds.Launcher.main(Launcher.java:375)\nCaused by: org.apache.maven.plugin.MojoExecutionException: Error assembling WAR: Problem creating war: /opt/continuum-1.0.3/apps/continuum/working-directory/55/target/ROOT/WEB-INF/lib/XmlSchema-1.1.jar (Too many open files)\nat org.apache.maven.plugin.war.WarMojo.execute(WarMojo.java:149)\nat org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:412)\nat org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:534)\n... 16 more\nCaused by: org.codehaus.plexus.archiver.ArchiverException: Problem creating war: /opt/continuum-1.0.3/apps/continuum/working-directory/55/target/ROOT/WEB-INF/lib/XmlSchema-1.1.jar (Too many open files)\nat org.codehaus.plexus.archiver.zip.AbstractZipArchiver.createArchiveMain(AbstractZipArchiver.java:403)\nat org.codehaus.plexus.archiver.zip.AbstractZipArchiver.createArchive(AbstractZipArchiver.java:229)\nat org.apache.maven.archiver.MavenArchiver.createArchive(MavenArchiver.java:332)\nat org.apache.maven.plugin.war.WarMojo.performPackaging(WarMojo.java:183)\nat org.apache.maven.plugin.war.WarMojo.execute(WarMojo.java:133)\n... 18 more\nCaused by: java.io.FileNotFoundException: /opt/continuum-1.0.3/apps/continuum/working-directory/55/target/ROOT/WEB-INF/lib/XmlSchema-1.1.jar (Too many open files)\nat java.io.FileInputStream.open(Native Method)\nat java.io.FileInputStream.(FileInputStream.java:106)\nat org.codehaus.plexus.archiver.zip.AbstractZipArchiver.zipFile(AbstractZipArchiver.java:679)\nat org.codehaus.plexus.archiver.zip.AbstractZipArchiver.addResources(AbstractZipArchiver.java:492)\nat org.codehaus.plexus.archiver.zip.AbstractZipArchiver.createArchiveMain(AbstractZipArchiver.java:330)\n... 22 more\n[INFO] ------------------------------------------------------------------------\n[INFO] Total time: 3 minutes 54 seconds\n[INFO] Finished at: Thu Apr 19 14:26:45 CEST 2007\n[INFO] Final Memory: 106M/209M\n[INFO] --","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"177724800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-112/watchers","watchCount":4,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/41385","id":"41385","filename":"Main.java","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rt15","name":"rt15","emailAddress":"rt15@voila.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"rt15","active":true},"created":"2009-04-16T07:43:54.401-0500","size":1864,"mimeType":"java/*","content":"http://jira.codehaus.org/secure/attachment/41385/Main.java"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"debian stable","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":4,"total":4,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/50086/comment/125646","id":"125646","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=silas1106","name":"silas1106","emailAddress":"silas1106@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Eping","active":true},"body":"Getting the same exception, but not from using the archiver:\r\n\r\n77237724 [pool-1-thread-1] INFO org.apache.maven.continuum.buildcontroller.BuildController:default - Initializing build\r\n77237736 [pool-1-thread-1] INFO org.apache.maven.continuum.buildcontroller.BuildController:default - Starting build of Smartplanner\r\n77237885 [pool-1-thread-1] INFO org.apache.maven.continuum.buildcontroller.BuildController:default - Updating working dir\r\n77237886 [pool-1-thread-1] INFO org.apache.maven.continuum.buildcontroller.BuildController:default - Performing action check-working-directory\r\n77237887 [pool-1-thread-1] INFO org.apache.maven.continuum.buildcontroller.BuildController:default - Performing action update-working-directory-from-scm\r\n77237914 [pool-1-thread-1] INFO org.apache.maven.continuum.scm.ContinuumScm:default - Updating project: id: '6', name 'aProject'.\r\n77238021 [pool-1-thread-1] INFO org.apache.maven.scm.manager.ScmManager:default - Executing: /bin/sh -c \"cd /home/build/continuum-1.1/apps/continuum/webapp/WEB-INF/working-directory/6 && svn --username build\r\ns --non-interactive update\"\r\n77238022 [pool-1-thread-1] INFO org.apache.maven.scm.manager.ScmManager:default - Working directory: /home/build/continuum-1.1/apps/continuum/webapp/WEB-INF/working-directory/6\r\n77238372 [pool-1-thread-1] ERROR org.codehaus.plexus.taskqueue.execution.TaskQueueExecutor:build-project - Error executing task\r\norg.codehaus.plexus.taskqueue.execution.TaskExecutionException: SCM error while executing 'update-working-directory-from-scm'\r\n at org.apache.maven.continuum.buildcontroller.DefaultBuildController.performAction(DefaultBuildController.java:430)\r\n at org.apache.maven.continuum.buildcontroller.DefaultBuildController.updateWorkingDirectory(DefaultBuildController.java:380)\r\n at org.apache.maven.continuum.buildcontroller.DefaultBuildController.build(DefaultBuildController.java:112)\r\n at org.apache.maven.continuum.buildcontroller.BuildProjectTaskExecutor.executeTask(BuildProjectTaskExecutor.java:50)\r\n at org.codehaus.plexus.taskqueue.execution.ThreadedTaskQueueExecutor$ExecutorRunnable$1.run(ThreadedTaskQueueExecutor.java:116)\r\n at edu.emory.mathcs.backport.java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:442)\r\n at edu.emory.mathcs.backport.java.util.concurrent.FutureTask.run(FutureTask.java:176)\r\n at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:665)\r\n at edu.emory.mathcs.backport.java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:690)\r\n at java.lang.Thread.run(Thread.java:595)\r\nCaused by: org.apache.maven.continuum.scm.ContinuumScmException: Error while update sources.\r\n at org.apache.maven.continuum.scm.DefaultContinuumScm.updateProject(DefaultContinuumScm.java:285)\r\n at org.apache.maven.continuum.core.action.UpdateWorkingDirectoryFromScmContinuumAction.execute(UpdateWorkingDirectoryFromScmContinuumAction.java:75)\r\n at org.apache.maven.continuum.buildcontroller.DefaultBuildController.performAction(DefaultBuildController.java:408)\r\n ... 9 more\r\nCaused by: org.apache.maven.scm.ScmException: Exception while executing SCM command.\r\n at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:62)\r\n at org.apache.maven.scm.provider.svn.AbstractSvnScmProvider.executeCommand(AbstractSvnScmProvider.java:371)\r\n at org.apache.maven.scm.provider.svn.AbstractSvnScmProvider.update(AbstractSvnScmProvider.java:362)\r\n at org.apache.maven.scm.provider.AbstractScmProvider.update(AbstractScmProvider.java:931)\r\n at org.apache.maven.scm.provider.AbstractScmProvider.update(AbstractScmProvider.java:906)\r\n at org.apache.maven.scm.provider.AbstractScmProvider.update(AbstractScmProvider.java:878)\r\n at org.apache.maven.continuum.scm.DefaultContinuumScm.updateProject(DefaultContinuumScm.java:255)\r\n ... 11 more\r\nCaused by: org.apache.maven.scm.ScmException: Error while executing command.\r\n at org.apache.maven.scm.provider.svn.svnexe.command.update.SvnUpdateCommand.executeUpdateCommand(SvnUpdateCommand.java:72)\r\n at org.apache.maven.scm.command.update.AbstractUpdateCommand.executeCommand(AbstractUpdateCommand.java:62)\r\n at org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:58)\r\n ... 17 more\r\nCaused by: org.codehaus.plexus.util.cli.CommandLineException: Error while executing process.\r\n at org.codehaus.plexus.util.cli.Commandline.execute(Commandline.java:652)\r\n at org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:102)\r\n at org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:89)\r\n at org.apache.maven.scm.provider.svn.svnexe.command.SvnCommandLineUtils.execute(SvnCommandLineUtils.java:126)\r\n at org.apache.maven.scm.provider.svn.svnexe.command.update.SvnUpdateCommand.executeUpdateCommand(SvnUpdateCommand.java:68)\r\n ... 19 more\r\nCaused by: java.io.IOException: java.io.IOException: Too many open files\r\n at java.lang.UNIXProcess.(UNIXProcess.java:148)\r\n at java.lang.ProcessImpl.start(ProcessImpl.java:65)\r\n at java.lang.ProcessBuilder.start(ProcessBuilder.java:451)\r\n at java.lang.Runtime.exec(Runtime.java:591)\r\n at org.codehaus.plexus.util.cli.Commandline.execute(Commandline.java:647)\r\n ... 23 more\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=silas1106","name":"silas1106","emailAddress":"silas1106@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Eping","active":true},"created":"2008-02-29T12:46:36.207-0600","updated":"2008-02-29T12:46:36.207-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/50086/comment/173149","id":"173149","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rt15","name":"rt15","emailAddress":"rt15@voila.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"rt15","active":true},"body":"Hi (And sorry for my horrible english),\r\n\r\nI also get this error...\r\n\r\nIt seems that it is linked to a well known issue :\r\nhttp://stuffthathappens.com/blog/2007/11/28/crash-boom-too-many-open-files/\r\nhttp://dlinsin.blogspot.com/2007/02/javas-runtimeexec-openes-too-many-files.html\r\nhttp://bytes.com/groups/java/18019-java-io-exception-too-many-open-files-sun-os-5-6-a\r\n\r\nI reproduced with following code, which look likes ArchiveEntryUtils.chmod (Decompiled) :\r\n\r\nimport org.codehaus.plexus.util.cli.*;\r\n \r\npublic class Main\r\n{\r\n \r\n public static void chmod()\r\n throws Exception\r\n {\r\n try\r\n {\r\n Commandline commandline = new Commandline();\r\n commandline.setExecutable(\"netstat\");\r\n org.codehaus.plexus.util.cli.CommandLineUtils.StringStreamConsumer stderr = new org.codehaus.plexus.util.cli.CommandLineUtils.StringStreamConsumer();\r\n org.codehaus.plexus.util.cli.CommandLineUtils.StringStreamConsumer stdout = new org.codehaus.plexus.util.cli.CommandLineUtils.StringStreamConsumer();\r\n int exitCode = CommandLineUtils.executeCommandLine(commandline, stderr, stdout);\r\n if(exitCode != 0)\r\n {\r\n System.out.println(\"-------------------------------\");\r\n System.out.println(\"Standard error:\");\r\n System.out.println(\"-------------------------------\");\r\n System.out.println(stderr.getOutput());\r\n System.out.println(\"-------------------------------\");\r\n System.out.println(\"Standard output:\");\r\n System.out.println(\"-------------------------------\");\r\n System.out.println(stdout.getOutput());\r\n System.out.println(\"-------------------------------\");\r\n throw new Exception(\"chmod exit code was: \" + exitCode);\r\n }\r\n }\r\n catch(CommandLineException e)\r\n {\r\n throw new Exception(\"Error while executing chmod.\", e);\r\n }\r\n }\r\n \r\n /**\r\n * @param args\r\n */\r\n public static void main(String[] args)\r\n {\r\n int i = 0;\r\n try\r\n {\r\n while (true)\r\n {\r\n chmod();\r\n Thread.sleep(1);\r\n System.out.println(i);\r\n i++;\r\n } \r\n }\r\n catch (Exception e)\r\n {\r\n e.printStackTrace();\r\n }\r\n }\r\n}\r\n\r\nHere is the error message, on a 32 bit linux with an 1.5.0 jre (Not reproduced on XP) :\r\n\r\n9411\r\n9412\r\n9413\r\n9414\r\n9415\r\njava.lang.Exception: Error while executing chmod.\r\n at Main.chmod(Main.java:32)\r\n at Main.main(Main.java:46)\r\nCaused by: org.codehaus.plexus.util.cli.CommandLineException: Error while executing process.\r\n at org.codehaus.plexus.util.cli.Commandline.execute(Commandline.java:658)\r\n at org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:118)\r\n at org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:93)\r\n at Main.chmod(Main.java:15)\r\n ... 1 more\r\nCaused by: java.io.IOException: java.io.IOException: Too many open files\r\n at java.lang.UNIXProcess.(UNIXProcess.java:148)\r\n at java.lang.ProcessImpl.start(ProcessImpl.java:65)\r\n at java.lang.ProcessBuilder.start(ProcessBuilder.java:451)\r\n at java.lang.Runtime.exec(Runtime.java:591)\r\n at java.lang.Runtime.exec(Runtime.java:507)\r\n at org.codehaus.plexus.util.cli.Commandline.execute(Commandline.java:638)\r\n ... 4 more\r\n\r\nWith lsof Linux command, I see that there are more and more openned pipes :\r\n\r\njava 12154 brbo 0u CHR 136,11 13 /dev/pts/11\r\njava 12154 brbo 1u CHR 136,11 13 /dev/pts/11\r\njava 12154 brbo 2u CHR 136,11 13 /dev/pts/11\r\njava 12154 brbo 4w FIFO 0,5 284090336 pipe\r\njava 12154 brbo 5w FIFO 0,5 284090372 pipe\r\njava 12154 brbo 6r FIFO 0,5 284090373 pipe\r\njava 12154 brbo 7w FIFO 0,5 284090377 pipe\r\njava 12154 brbo 8r FIFO 0,5 284090374 pipe\r\njava 12154 brbo 9w FIFO 0,5 284090415 pipe\r\njava 12154 brbo 10r FIFO 0,5 284090416 pipe\r\njava 12154 brbo 11w FIFO 0,5 284090420 pipe\r\njava 12154 brbo 12r FIFO 0,5 284090417 pipe\r\njava 12154 brbo 13w FIFO 0,5 284090457 pipe\r\njava 12154 brbo 14r FIFO 0,5 284090458 pipe\r\n...\r\njava 12154 brbo 528r FIFO 0,5 284089024 pipe\r\njava 12154 brbo 530r FIFO 0,5 284089025 pipe\r\njava 12154 brbo 531w FIFO 0,5 284090330 pipe\r\njava 12154 brbo 532r FIFO 0,5 284090331 pipe\r\njava 12154 brbo 534r FIFO 0,5 284090332 pipe\r\n\r\nI think the problem is in CommandLineUtils.execute.\r\nHere is the creation :\r\n\r\n Process p = cl.execute();\r\n processes.put(new Long(cl.getPid()), p);\r\n StreamFeeder inputFeeder = null;\r\n if(systemIn != null)\r\n inputFeeder = new StreamFeeder(systemIn, p.getOutputStream());\r\n StreamPumper outputPumper = new StreamPumper(p.getInputStream(), systemOut);\r\n StreamPumper errorPumper = new StreamPumper(p.getErrorStream(), systemErr);\r\n\r\n(See the strange Input <-> Output peers...)\r\n\r\nFrom my links above, following streams must be closed :\r\np.getInputStream()\r\np.getOutputStream()\r\np.getErrorStream()\r\n\r\n(Perhaps p.destroy() do this job).\r\n\r\nBut at the end of execute method, there is :\r\n\r\n finally\r\n {\r\n if(inputFeeder != null)\r\n inputFeeder.close();\r\n outputPumper.close();\r\n errorPumper.close();\r\n }\r\n\r\n(StreamPumper and StreamFeeder close the associated streams)\r\nIf systemIn is null (Which is the case with my example above), p.getOutputStream() is never closed.\r\nMaybe it is the bug.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rt15","name":"rt15","emailAddress":"rt15@voila.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"rt15","active":true},"created":"2009-04-16T07:41:02.083-0500","updated":"2009-04-16T07:41:02.083-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/50086/comment/173151","id":"173151","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rt15","name":"rt15","emailAddress":"rt15@voila.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"rt15","active":true},"body":"Sorry for the badly formatted code in my previous post. See the attached file.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rt15","name":"rt15","emailAddress":"rt15@voila.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"rt15","active":true},"created":"2009-04-16T07:43:54.410-0500","updated":"2009-04-16T07:43:54.410-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/50086/comment/178499","id":"178499","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"body":"Fixed in r.8235","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"created":"2009-05-28T16:45:58.005-0500","updated":"2009-05-28T16:45:58.005-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-113.json b/jira/PLXUTILS-113.json
new file mode 100644
index 00000000..3d84166a
--- /dev/null
+++ b/jira/PLXUTILS-113.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"88779","self":"http://jira.codehaus.org/rest/api/latest/issue/88779","key":"PLXUTILS-113","fields":{"progress":{"progress":0,"total":0},"summary":"Error in command line generation with BourneShell","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-113/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/6","id":"6","description":"The issue is not a bug","name":"Not A Bug"},"fixVersions":[],"resolutiondate":"2009-07-15T03:26:53.535-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=grzes","name":"grzes","emailAddress":"grzegorz.grzybek@winuel.com.pl","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Grzegorz Grzybek","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["grzes(grzes)"],"customfield_10160":null,"updated":"2009-07-15T03:26:53.530-0500","created":"2009-06-26T07:30:32.494-0500","description":"The path is:\n* Hudson runs Maven2 build\n* M2 build uses buildnumber-maven-plugin\n* which then uses svn info to get revision number\n\ntracing down the execution, Maven invokes:\nbq. /bin/sh -c cd /var/java/.hudson/jobs/com.winuel.pwi-trunk/workspace/trunk/com.winuel.pwi && svn --non-interactive info\ninstead of\nbq. /bin/sh -c 'cd /var/java/.hudson/jobs/com.winuel.pwi-trunk/workspace/trunk/com.winuel.pwi && svn --non-interactive info'\n\nthe former does not change the working directory for *svn --non-interactive info*\n\nI don't know why it doesn't work - even if Runtime.exec() is called with working dir argument...\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"173664000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-113/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"Debian GNU Linux, /bin/sh = /bin/bash (version 3.2-5)","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/88779/comment/181620","id":"181620","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=grzes","name":"grzes","emailAddress":"grzegorz.grzybek@winuel.com.pl","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Grzegorz Grzybek","active":true},"body":"The problem is:\r\n{noformat}\r\n[INFO] Storing buildNumber: null at timestamp: 20090626.1342\r\n\r\n[INFO] ------------------------------------------------------------------------\r\n[ERROR] FATAL ERROR\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] null\r\n[INFO] ------------------------------------------------------------------------\r\n[INFO] Trace\r\njava.lang.NullPointerException\r\n\tat java.util.Hashtable.put(Hashtable.java:394)\r\n\tat org.codehaus.mojo.build.CreateMojo.execute(CreateMojo.java:442)\r\n\tat org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:483)\r\n\tat hudson.maven.agent.PluginManagerInterceptor.executeMojo(PluginManagerInterceptor.java:182)\r\n\tat org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:678)\r\n\tat org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:540)\r\n\tat org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:519)\r\n ...\r\n{noformat}","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=grzes","name":"grzes","emailAddress":"grzegorz.grzybek@winuel.com.pl","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Grzegorz Grzybek","active":true},"created":"2009-06-26T07:32:16.114-0500","updated":"2009-06-26T07:32:16.114-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/88779/comment/183621","id":"183621","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=grzes","name":"grzes","emailAddress":"grzegorz.grzybek@winuel.com.pl","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Grzegorz Grzybek","active":true},"body":"The problem was that {{svn}} command was executed in Polish LOCALE and {{org.apache.maven.scm.provider.svn.svnexe.command.info.SvnInfoConsumer}} expected English labels for {{svn info}}....\r\n\r\nSo I'm closing the issue.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=grzes","name":"grzes","emailAddress":"grzegorz.grzybek@winuel.com.pl","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Grzegorz Grzybek","active":true},"created":"2009-07-15T03:26:53.520-0500","updated":"2009-07-15T03:26:53.520-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-114.json b/jira/PLXUTILS-114.json
new file mode 100644
index 00000000..e024bb9b
--- /dev/null
+++ b/jira/PLXUTILS-114.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"89982","self":"http://jira.codehaus.org/rest/api/latest/issue/89982","key":"PLXUTILS-114","fields":{"progress":{"progress":0,"total":0},"summary":"DirectoryScanner includes/excluses does not honour cross-platform file separators","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-114/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15598","id":"15598","description":"","name":"2.0.0","archived":false,"released":true,"releaseDate":"2009-09-22"}],"resolutiondate":"2009-07-21T11:53:38.024-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["igorfie(igorfie)","jdcasey(jdcasey)"],"customfield_10160":null,"updated":"2009-10-18T14:18:09.505-0500","created":"2009-07-21T10:46:54.585-0500","description":"DirectoryScanner#setIncluders and #setExcluders does not work for file path separator characters non-native to the system it runs on. This is despite the following statement in javadoc for the two methods\n\nbq. All '/' and '\\' characters are replaced by File.separatorChar, so the separator used need not match File.separatorChar.\n\nAttached is a unit test that demonstrates the problem.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"173059200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-114/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/43329","id":"43329","filename":"file-separators.zip","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"created":"2009-07-21T10:46:54.608-0500","size":3105,"mimeType":"application/x-zip","content":"http://jira.codehaus.org/secure/attachment/43329/file-separators.zip"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15515","id":"15515","description":"","name":"1.5.15","archived":false,"released":true,"releaseDate":"2009-06-05"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/89982/comment/184344","id":"184344","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"body":"fixed for 1.5.16","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"created":"2009-07-21T11:53:38.015-0500","updated":"2009-07-21T11:53:38.015-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-116.json b/jira/PLXUTILS-116.json
new file mode 100644
index 00000000..da03b638
--- /dev/null
+++ b/jira/PLXUTILS-116.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"91429","self":"http://jira.codehaus.org/rest/api/latest/issue/91429","key":"PLXUTILS-116","fields":{"progress":{"progress":0,"total":0},"summary":"PathTool.getRelativeFilePath gives different results on Windows and Linux","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-116/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:48:14.251-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lukas","name":"lukas","emailAddress":"ltheussl@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Lukas Theussl","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["lukas(lukas)","michael-o(michael-o)"],"customfield_10160":null,"updated":"2014-11-25T14:48:14.289-0600","created":"2009-07-26T08:00:18.184-0500","description":"On windows, {noformat}PathTool.getRelativeFilePath( \"index.html\", \"c:\\\\bin\" );{noformat} returns null, on Linux, {noformat}PathTool.getRelativeFilePath( \"index.html\", \"/bin\" );{noformat} returns \"../bin\".\n\nI guess it's probably not a valid use case since both paths are supposed to be absolute, however, the fact that different results are returned has caused me much grief: MSITE-404.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"23762","self":"http://jira.codehaus.org/rest/api/2/issueLink/23762","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"91460","key":"DOXIASITETOOLS-29","self":"http://jira.codehaus.org/rest/api/2/issue/91460","fields":{"summary":"PathUtils.getRelativePath returns different results on Windows and Linux","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-116/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/43419","id":"43419","filename":"PLXUTILS-116-test.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lukas","name":"lukas","emailAddress":"ltheussl@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Lukas Theussl","active":true},"created":"2009-07-26T08:02:02.106-0500","size":1147,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/43419/PLXUTILS-116-test.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15515","id":"15515","description":"","name":"1.5.15","archived":false,"released":true,"releaseDate":"2009-06-05"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/91429/comment/184916","id":"184916","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lukas","name":"lukas","emailAddress":"ltheussl@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Lukas Theussl","active":true},"body":"See attached patch for test case.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lukas","name":"lukas","emailAddress":"ltheussl@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Lukas Theussl","active":true},"created":"2009-07-26T08:02:02.114-0500","updated":"2009-07-26T08:02:02.114-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/91429/comment/251465","id":"251465","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lukas","name":"lukas","emailAddress":"ltheussl@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Lukas Theussl","active":true},"body":"Just got bitten by this again, there is another difference even if both paths are absolute:\r\n{noformat}PathTool.getRelativeFilePath( \"http://maven.apache.org/doxia/\", \"http://maven.apache.org/\");{noformat}\r\nreturns \"../\" on Linux but \"..\" on windows. The missing slash is important if the result is subsequently used in a URI constructor.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lukas","name":"lukas","emailAddress":"ltheussl@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Lukas Theussl","active":true},"created":"2011-01-13T08:08:05.101-0600","updated":"2011-01-13T08:08:05.101-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/91429/comment/357576","id":"357576","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:48:14.276-0600","updated":"2014-11-25T14:48:14.276-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-117.json b/jira/PLXUTILS-117.json
new file mode 100644
index 00000000..accecf86
--- /dev/null
+++ b/jira/PLXUTILS-117.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"96365","self":"http://jira.codehaus.org/rest/api/latest/issue/96365","key":"PLXUTILS-117","fields":{"progress":{"progress":0,"total":0},"summary":"The classes from org.codehaus.plexus.utils.interpolation are not self-contained","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-117/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2009-09-11T16:40:02.679-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","siveton(siveton)"],"customfield_10160":null,"updated":"2009-09-11T16:40:37.321-0500","created":"2009-08-22T10:41:22.197-0500","description":"[r8255|http://fisheye.codehaus.org/changelog/plexus/?cs=8255] caused exclusion of the plexus-interpolation classes from the plexus-utils JAR. This in turn makes usage of the {{org.codehaus.plexus.utils.intepolation.*}} classes from a standalone plexus-utils JAR impossible as their super classes can't be resolved. See the attached demo project that fails upon \"mvn clean compile\".\n\nNote sure whether the change in the above commit was actually necessary given that previous plexus-utils versions like 1.5.12 apparently shipped with a [dependency reduced POM|http://repo1.maven.org/maven2/org/codehaus/plexus/plexus-utils/1.5.12/plexus-utils-1.5.12.pom] that already declared plexus-interpolation as provided.\n\nDeclaring plexus-interpolation as provided in the original POM causes the dependency to be ignored by the Shade Plugin because that uses {{@requiresDependencyResolution runtime}} but provided dependencies are not resolved for this resolution scope...","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"24158","self":"http://jira.codehaus.org/rest/api/2/issueLink/24158","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"97362","key":"PLXUTILS-118","self":"http://jira.codehaus.org/rest/api/2/issue/97362","fields":{"summary":"Remove deprecated interpolation classes","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false}}}}],"customfield_10163":"168566400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-117/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/43963","id":"43963","filename":"pu-vs-pi.zip","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2009-08-22T10:41:22.222-0500","size":1077,"mimeType":"application/zip","content":"http://jira.codehaus.org/secure/attachment/43963/pu-vs-pi.zip"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15593","id":"15593","description":"","name":"1.5.13","archived":false,"released":true,"releaseDate":"2009-06-05"},{"self":"http://jira.codehaus.org/rest/api/2/version/15594","id":"15594","description":"","name":"1.5.14","archived":false,"released":true,"releaseDate":"2009-06-05"},{"self":"http://jira.codehaus.org/rest/api/2/version/15515","id":"15515","description":"","name":"1.5.15","archived":false,"released":true,"releaseDate":"2009-06-05"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/96365/comment/188179","id":"188179","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"For the log, it is related to:\r\n[Using latest Plexus Utils in javadoc-plugin|http://maven.markmail.org/message/4ebuh6i2qfdrxbs5]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-08-23T05:35:33.868-0500","updated":"2009-08-23T05:35:33.868-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/96365/comment/190664","id":"190664","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"The interpolation classes have been removed from newer versions (PLXUTILS-118), plugins will simply need to use plexus-interpolation instead.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2009-09-11T16:40:02.665-0500","updated":"2009-09-11T16:40:02.665-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-118.json b/jira/PLXUTILS-118.json
new file mode 100644
index 00000000..9b6d65c3
--- /dev/null
+++ b/jira/PLXUTILS-118.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"97362","self":"http://jira.codehaus.org/rest/api/latest/issue/97362","key":"PLXUTILS-118","fields":{"progress":{"progress":0,"total":0},"summary":"Remove deprecated interpolation classes","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-118/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15598","id":"15598","description":"","name":"2.0.0","archived":false,"released":true,"releaseDate":"2009-09-22"}],"resolutiondate":"2009-09-11T16:38:04.123-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)"],"customfield_10160":null,"updated":"2009-09-11T16:40:37.294-0500","created":"2009-09-11T16:36:34.586-0500","description":"plexus-interpolation has been long around and also considering the issues we had with the shading it's time to move forward.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[{"id":"24158","self":"http://jira.codehaus.org/rest/api/2/issueLink/24158","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"96365","key":"PLXUTILS-117","self":"http://jira.codehaus.org/rest/api/2/issue/96365","fields":{"summary":"The classes from org.codehaus.plexus.utils.interpolation are not self-contained","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"168566400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-118/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/97362/comment/190663","id":"190663","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Done in [r8377|http://fisheye.codehaus.org/changelog/plexus/?cs=8377].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2009-09-11T16:38:04.112-0500","updated":"2009-09-11T16:38:04.112-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-119.json b/jira/PLXUTILS-119.json
new file mode 100644
index 00000000..4be817cf
--- /dev/null
+++ b/jira/PLXUTILS-119.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"98424","self":"http://jira.codehaus.org/rest/api/latest/issue/98424","key":"PLXUTILS-119","fields":{"progress":{"progress":0,"total":86400,"percent":0},"summary":"org/codehaus/plexus/archiver/ArchiverException missing in plexus-archiver plugin","timetracking":{"originalEstimate":"1d","remainingEstimate":"1d","originalEstimateSeconds":86400,"remainingEstimateSeconds":86400},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-119/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/5","id":"5","description":"All attempts at reproducing this issue failed, or not enough information was available to reproduce the issue. Reading the code produces no clues as to why this behavior would occur. If more information appears later, please reopen the issue.","name":"Cannot Reproduce"},"fixVersions":[],"resolutiondate":"2010-10-28T17:54:07.082-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mgainty","name":"mgainty","emailAddress":"mgainty@hotmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Martin Gainty","active":true},"aggregatetimeoriginalestimate":86400,"customfield_10161":["bentmann(bentmann)","mgainty(mgainty)"],"customfield_10160":null,"updated":"2010-10-28T17:54:07.164-0500","created":"2009-09-30T13:19:30.739-0500","description":"[INFO] Internal error in the plugin manager executing goal 'org.apache.maven.plugins:maven-dependency-plugin:2.1:resolve-plugins': \nUnable to load the mojo 'org.apache.maven.plugins:maven-dependency-plugin:2.1:resolve-plugins' in the plugin\n'org.apache.maven.plugins:maven-dependency-plugin'. \nA required class is missing:\n org/codehaus/plexus/archiver/ArchiverException\n\nlocate org.codehaus.plexus.archiver.ArchiverException.java\ncompile ArchiverException.java\n\n\n \n]>\n\n 3\n.....\n \n \n \n Marit Finne J&OSlash;rgensen\n mfj\n marit ... \n\n\n\nThis works with maven 1.0. In order to use the project xml file with maven 1.1, the &OSlash; symbols must be replaced with their real letter 'ø', otherwise the plexus pullparser throws exceptionon the entity. \n\nWhile not supporting 'ø' actually could be considered a bug in all the other xml parsers, the Entity workaround is legal XML and should be parsable with all parsers.\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-12/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/26682/comment/128366","id":"128366","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Why bother with entity declarations if you can insert the character literally? The XML declaration allows you to select your favorite encoding, e.g. use UTF-8 and happily write quite any character around the world. All JVMs must support UTF-8 and all proper text editors support it.\r\n\r\nIf you really want to write ASCII-only, you could still use numeric entities like \"&\\#xuuuu;\" which XML parsers understand out-of-the-box.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-03-24T05:23:00.294-0500","updated":"2008-03-24T05:23:00.294-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/26682/comment/357364","id":"357364","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:31:04.723-0600","updated":"2014-11-25T14:31:04.723-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-120.json b/jira/PLXUTILS-120.json
new file mode 100644
index 00000000..430d5be9
--- /dev/null
+++ b/jira/PLXUTILS-120.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"99512","self":"http://jira.codehaus.org/rest/api/latest/issue/99512","key":"PLXUTILS-120","fields":{"progress":{"progress":0,"total":0},"summary":"DirectoryScanner misinterprets regex patterns with slash inside character class","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-120/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15870","id":"15870","description":"","name":"2.0.1","archived":false,"released":true,"releaseDate":"2009-10-19"}],"resolutiondate":"2009-10-18T14:12:10.236-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)"],"customfield_10160":null,"updated":"2009-10-20T16:27:54.441-0500","created":"2009-10-18T14:00:35.365-0500","description":"This code snippet says it all:\n\n{code:java}\n// test with user-provided pattern, yields expected result, i.e. false\nSystem.out.println( \"src-contains-output-dir-name-child1/src/main/java/target\".matches( \n \"(?!((?!target/)[^/]+/)*src/).*target.*\" ) );\n\n// internally employed pattern by DirectoryScanner, note the broken character class [^[\\\\\\\\/]], yields true\nSystem.out.println( \"src-contains-output-dir-name-child1/src/main/java/target\".matches( \n \"(?!((?!target[\\\\\\\\/])[^[\\\\\\\\/]]+[\\\\\\\\/])*src[\\\\\\\\/]).*target.*\" ) );\n{code}\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"24597","self":"http://jira.codehaus.org/rest/api/2/issueLink/24597","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"97499","key":"MASSEMBLY-446","self":"http://jira.codehaus.org/rest/api/2/issue/97499","fields":{"summary":"apache-source-release-assembly DOES NOT exclude target/** in maven-remote-resources-plugin build","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"165369600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-120/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15598","id":"15598","description":"","name":"2.0.0","archived":false,"released":true,"releaseDate":"2009-09-22"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/99512/comment/195191","id":"195191","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Fixed in [r8482|http://fisheye.codehaus.org/changelog/plexus/?cs=8482].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2009-10-18T14:12:10.199-0500","updated":"2009-10-18T14:12:10.199-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-121.json b/jira/PLXUTILS-121.json
new file mode 100644
index 00000000..d093fa12
--- /dev/null
+++ b/jira/PLXUTILS-121.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"100965","self":"http://jira.codehaus.org/rest/api/latest/issue/100965","key":"PLXUTILS-121","fields":{"progress":{"progress":0,"total":0},"summary":"AbstractScanner DEFAULT_EXCLUDES miss MKS pattern","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-121/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17364","id":"17364","description":"","name":"2.1","archived":false,"released":true,"releaseDate":"2011-06-09"}],"resolutiondate":"2011-05-16T14:04:23.794-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jbousque","name":"jbousque","emailAddress":"jeremie.bousquet@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jeremie BOUSQUET","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["jbousque(jbousque)","krosenvold(krosenvold)"],"customfield_10160":null,"updated":"2011-05-16T14:04:23.837-0500","created":"2009-11-16T08:24:50.070-0600","description":"Directory Scanner does not exclude by default files from SCM tool \"MKS\".\nThese files are named \"project.pj\" and located in every folder in workspace.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"115689600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-121/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"},{"self":"http://jira.codehaus.org/rest/api/2/version/15263","id":"15263","description":"","name":"1.5.8","archived":false,"released":true,"releaseDate":"2009-02-09"},{"self":"http://jira.codehaus.org/rest/api/2/version/15258","id":"15258","description":"","name":"1.5.9","archived":false,"released":true,"releaseDate":"2009-04-28"},{"self":"http://jira.codehaus.org/rest/api/2/version/15318","id":"15318","description":"","name":"1.5.10","archived":false,"released":true,"releaseDate":"2009-05-29"},{"self":"http://jira.codehaus.org/rest/api/2/version/15591","id":"15591","description":"","name":"1.5.11","archived":false,"released":true,"releaseDate":"2009-05-29"},{"self":"http://jira.codehaus.org/rest/api/2/version/15592","id":"15592","description":"","name":"1.5.12","archived":false,"released":true,"releaseDate":"2009-05-29"},{"self":"http://jira.codehaus.org/rest/api/2/version/15593","id":"15593","description":"","name":"1.5.13","archived":false,"released":true,"releaseDate":"2009-06-05"},{"self":"http://jira.codehaus.org/rest/api/2/version/15594","id":"15594","description":"","name":"1.5.14","archived":false,"released":true,"releaseDate":"2009-06-05"},{"self":"http://jira.codehaus.org/rest/api/2/version/15515","id":"15515","description":"","name":"1.5.15","archived":false,"released":true,"releaseDate":"2009-06-05"},{"self":"http://jira.codehaus.org/rest/api/2/version/15598","id":"15598","description":"","name":"2.0.0","archived":false,"released":true,"releaseDate":"2009-09-22"}],"customfield_10170":null,"environment":"N/A","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/100965/comment/267170","id":"267170","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Fixed in 3b455498e62f8bd72fa1f82b022b206de7c983e9","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2011-05-16T14:04:23.832-0500","updated":"2011-05-16T14:04:23.832-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-122.json b/jira/PLXUTILS-122.json
new file mode 100644
index 00000000..70b5f4c0
--- /dev/null
+++ b/jira/PLXUTILS-122.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"102870","self":"http://jira.codehaus.org/rest/api/latest/issue/102870","key":"PLXUTILS-122","fields":{"progress":{"progress":0,"total":0},"summary":"Extra Quotes in CommandLine arguments is causing failure to execute Maven-SCM in Linux","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-122/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:30:04.803-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=subirs","name":"subirs","emailAddress":"subir.sasikumar@wipro.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Subir S","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["michael-o(michael-o)","subirs(subirs)"],"customfield_10160":null,"updated":"2014-11-25T14:30:04.885-0600","created":"2009-12-17T03:21:37.606-0600","description":"While executing scm:update command in 'Linux', there is a single quote which appears in the start and end of the argument. This causes the already existing arguments to have wrong syntax.\n \nmvn scm:update -Dusername=user -Dpassword=pass -X shows the following output:\n \n[DEBUG] STDERR :\n[DEBUG] Synergy : Entering getWorkingProject method [DEBUG] Executing: /bin/sh -c ccm query -u -f %objectname {color:red} \n--> additonal start single quote '{color}\"owner='user' and status='working' and type='project' and has_predecessor('sm-3.3:project:inhytest#1')\"{color:red}'--> Additional end single quote{color}\n[DEBUG] Exit code :1\n[DEBUG] STDOUT : unavailable\n[DEBUG] STDERR :Warning: Syntax error in query request: \"owner=user and status=working and type=project and has_predecessor(sm-3.3:project:inhytest#1)\" {color:red} \n--> Note that now the single quotes after interpretation by the shell are removed.{color}\n\nThis works fine in 'Windows' platform.\n \nCorrect output should be: /bin/sh -c ccm query -u -f %objectname \"owner='user' and status='working' and type='project' and has_predecessor('sm-3.3:project:inhytest#1')\" {color:red} -->No single quotes, but double quotes and inner single quotes not modified then.{color}\n \nHow to get this working? I have seens some changes to plexus-utils on these quotes, but could not understand how to workaround this. Please help.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-122/watchers","watchCount":2,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":"http://jira.codehaus.org/browse/SCM-514","aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"customfield_10170":null,"environment":"Platform OS: RHEL 5\nJava: 1.6.0_17\nMaven: 2.1.0\nMaven SCM: 1.3-SNAPSHOT\nSCM: CM/Synergy 7.0","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/102870/comment/203774","id":"203774","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=subirs","name":"subirs","emailAddress":"subir.sasikumar@wipro.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Subir S","active":true},"body":"I have tried using 1.5.15 plexus-utils. \r\n\r\nIt now replaces double quotes with single quotes. Shell used in Bash.\r\n\r\nAre there any work arounds to make this like the argument is enclosed in double quotes irrespective of the shell in use??\r\n\r\nRelated issue in SCM is [SCM-514|http://jira.codehaus.org/browse/SCM-514]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=subirs","name":"subirs","emailAddress":"subir.sasikumar@wipro.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Subir S","active":true},"created":"2009-12-22T00:39:21.006-0600","updated":"2009-12-22T00:39:21.006-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/102870/comment/357164","id":"357164","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:30:04.858-0600","updated":"2014-11-25T14:30:04.858-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-123.json b/jira/PLXUTILS-123.json
new file mode 100644
index 00000000..8d9abfae
--- /dev/null
+++ b/jira/PLXUTILS-123.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"104675","self":"http://jira.codehaus.org/rest/api/latest/issue/104675","key":"PLXUTILS-123","fields":{"progress":{"progress":0,"total":0},"summary":"Shell uses doubleQuotedExecutableEscaped instead of doubleQuotedArgumentEscaped ","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-123/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/18702","id":"18702","name":"3.0.3","archived":false,"released":true,"releaseDate":"2012-08-01"}],"resolutiondate":"2012-09-15T05:46:14.188-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ndeloof","name":"ndeloof","emailAddress":"nicolas.deloof@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=ndeloof&avatarId=10411","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=ndeloof&avatarId=10411","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=ndeloof&avatarId=10411","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=ndeloof&avatarId=10411"},"displayName":"nicolas de loof","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["krosenvold(krosenvold)","ndeloof(ndeloof)"],"customfield_10160":null,"updated":"2012-09-15T05:46:14.230-0500","created":"2010-01-26T04:44:05.652-0600","description":"Shell defines properties to setup how executable and argument may be quote-escaped\n private boolean doubleQuotedArgumentEscaped = false;\n private boolean singleQuotedArgumentEscaped = false;\n private boolean doubleQuotedExecutableEscaped = false;\n private boolean singleQuotedExecutableEscaped = false;\n\nBut when arguments are processed (getRawCommandLine) the \"executable\" properties are used where \"argument\" ones should.\n\nAlso, setter beeing protected, there is no way to tweak a Shell for custom use","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/5","iconUrl":"http://jira.codehaus.org/images/icons/priorities/trivial.png","name":"Trivial","id":"5"},"duedate":null,"issuelinks":[{"id":"31578","self":"http://jira.codehaus.org/rest/api/2/issueLink/31578","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"outwardIssue":{"id":"139308","key":"PLXUTILS-152","self":"http://jira.codehaus.org/rest/api/2/issue/139308","fields":{"summary":"Shell fails to escape quotes in arguments","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"25216","self":"http://jira.codehaus.org/rest/api/2/issueLink/25216","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"104674","key":"MGWT-161","self":"http://jira.codehaus.org/rest/api/2/issue/104674","fields":{"summary":"gwt-maven-plugin does not work with spaces in project location on Linux","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"156816000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-123/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-124.json b/jira/PLXUTILS-124.json
new file mode 100644
index 00000000..647a3cd6
--- /dev/null
+++ b/jira/PLXUTILS-124.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"106311","self":"http://jira.codehaus.org/rest/api/latest/issue/106311","key":"PLXUTILS-124","fields":{"progress":{"progress":0,"total":0},"summary":"CommandLine enviroment variables are broken ( bad encoding )","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-124/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16267","id":"16267","description":"","name":"2.0.2","archived":false,"released":true,"releaseDate":"2010-03-29"}],"resolutiondate":"2010-03-05T15:05:40.111-0600","customfield_10210":"3.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["msk(msk)","hboutemy(hboutemy)"],"customfield_10160":null,"updated":"2010-03-27T17:33:40.958-0500","created":"2010-03-03T07:19:51.600-0600","description":"\"CommandLine\" plexus-utils class on non-us windows xp uses wrong environment variables values.\n\nTo see this bug, you need to use non-us windows xp.\n\n( Maybe it should be possible to reproduce it on US windows by setting some environment variable value using non-us charracters [ I haven't tested this possibility ] ).\n\nTake a look at following code:\n\n Commandline commandLine = new Commandline();\n String plexus_appdata = commandLine.getSystemEnvVars().getProperty(\"APPDATA\");\n String real_appdata = System.getenv(\"APPDATA\");\n\n PrintWriter w = new PrintWriter(System.out);\n w.println(plexus_appdata);\n w.println(real_appdata);\n w.println(plexus_appdata.equals(real_appdata));\n\nCode is getting \"APPDATA\" environment variable from System and from CommandLine instance.\nReal value of this env.variable is \"C:\\Documents and Settings\\admin\\Data aplikací\".\n\nBut output of my code is:\nC:\\Documents and Settings\\admin\\Data aplikacˇ\nC:\\Documents and Settings\\admin\\Data aplikací\nfalse\n\nPlexus CommandLine class uses WRONG value ( seems to be encoding problem ).\nI have found this bug using maven exec plugin on czech windows xp ( see http://jira.codehaus.org/browse/MEXEC-75 ), but because nobody cares about it I have\nstarted investigating this problem deeper and found problem in CommandLine.\n\nIt is a reason of big troubles developing java apps on non-us windows, because there are different env.variables when developing app and in final release.\n\nI have attached example maven project with simple run.bat script which runs it.\nDo not use Netbeans or other IDE to run this code, because it (should) use maven-exec-plugin which uses this buggy class.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"25663","self":"http://jira.codehaus.org/rest/api/2/issueLink/25663","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"107575","key":"PLXUTILS-127","self":"http://jira.codehaus.org/rest/api/2/issue/107575","fields":{"summary":"Plexus utils fork an external process to get env var even when running jdk 1.5+","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}},{"id":"25483","self":"http://jira.codehaus.org/rest/api/2/issueLink/25483","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"105658","key":"MEXEC-75","self":"http://jira.codehaus.org/rest/api/2/issue/105658","fields":{"summary":"Strange encoding of environment variables when using exec plugin","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"25494","self":"http://jira.codehaus.org/rest/api/2/issueLink/25494","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"106450","key":"PLXUTILS-125","self":"http://jira.codehaus.org/rest/api/2/issue/106450","fields":{"summary":"use System.getenv() API for Java 5+ instead of CommandLineUtils.getSystemEnvVars() Java 1.4- workaround","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"153446400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-124/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/47774","id":"47774","filename":"appdata.JPG","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"created":"2010-03-04T03:06:28.244-0600","size":180917,"mimeType":"image/jpeg","content":"http://jira.codehaus.org/secure/attachment/47774/appdata.JPG","thumbnail":"http://jira.codehaus.org/secure/thumbnail/47774/_thumb_47774.png"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/47775","id":"47775","filename":"env.txt","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"created":"2010-03-04T03:06:28.248-0600","size":1280,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/47775/env.txt"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/47759","id":"47759","filename":"plexusEnvVarBug.zip","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"created":"2010-03-03T07:19:51.662-0600","size":3716,"mimeType":"application/x-sdlc","content":"http://jira.codehaus.org/secure/attachment/47759/plexusEnvVarBug.zip"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15598","id":"15598","description":"","name":"2.0.0","archived":false,"released":true,"releaseDate":"2009-09-22"}],"customfield_10170":null,"environment":"Windows XP Czech, Sun JDK 6","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":8,"total":8,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/106311/comment/212330","id":"212330","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"strange\r\n\r\nsee CommandLineUtils.getSystemEnvVars( boolean ) in plexus-utils sources\r\n\r\nplease try and report results of following tests:\r\n- \"cmd.exe /c set\"\r\n- System.getProperty( \"file.encoding\" );\r\n- reader.getEncoding(); where reader = new InputStreamReader( p.getInputStream() )\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2010-03-03T15:33:57.414-0600","updated":"2010-03-03T15:33:57.414-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/106311/comment/212378","id":"212378","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"body":"- \"cmd.exe /c set\"\r\n\r\nseems to be ok in console ( see appdata.jpg )\r\n\r\n- \"cmd.exe /c set > env.txt\"\r\n\r\nseems to be BAD ( see env.txt )\r\n\r\n\r\n- System.getProperty( \"file.encoding\" );\r\n\r\nCp1250\r\n\r\n- reader.getEncoding(); where reader = new InputStreamReader( p.getInputStream() )\r\n\r\nCp1250\r\n\r\n\r\nSo problem seems to be somewhere in windows pipes maybe ...\r\nHow to deal with it? Any idea?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"created":"2010-03-04T03:06:01.688-0600","updated":"2010-03-04T03:06:01.688-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/106311/comment/212381","id":"212381","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"body":"My collegue told me he have an idea.\r\n\r\nThe output of \"cmd /c set\" seems not to use cp1250, but:\r\n\r\nC:\\>chcp\r\nAktivní znaková stránka: 852\r\n( Active codepage : 852 )\r\n\r\nHe thing that solution is to use \"cmd /U /c set\" and read it as \"UTF-16LE\".\r\n\r\nOther way you could use is to call \"chcp\" and parse its output to get codepage of cmd, but this should cause later problems.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"created":"2010-03-04T03:46:17.639-0600","updated":"2010-03-04T03:46:17.639-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/106311/comment/212762","id":"212762","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"ok, I'm starting to understand: \"cmd.exe /c set\" outputs 0xA1 in [CP-852|http://en.wikipedia.org/wiki/Code_page_852], then java code reads this byte in [CP-1250|http://en.wikipedia.org/wiki/Windows-1250], which is another character\r\n\r\n\r\nFirst, I think that the best solution is to use System.getenv() API when using JDK 1.5+: actual CommandLineUtils.getSystemEnvVars( boolean ) implementation has been done because this API didn't exist before.\r\n\r\nThen for JDK 1.4-, yes, using \"cmd /U /c set\" and read the stream as UTF-16LE seems to be the solution","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2010-03-04T17:26:34.409-0600","updated":"2010-03-04T17:26:34.409-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/106311/comment/212803","id":"212803","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"body":"Exactly. Will you fix this? Thanks.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"created":"2010-03-05T02:37:40.450-0600","updated":"2010-03-05T02:37:40.450-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/106311/comment/212814","id":"212814","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"code fixed in [r8656|http://fisheye.codehaus.org/changelog/plexus?cs=8656]\r\nI'll create another Jira issue later to use System.getenv() API when available instead of the old JDK 1.4- hack\r\n\r\ncan you try and confirm it is ok?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2010-03-05T04:27:55.517-0600","updated":"2010-03-05T04:27:55.517-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/106311/comment/212815","id":"212815","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"body":"It seems to be fixed on Czech WinXP now :)\r\n\r\nI'll wait until new release will come an inform the author of exec maven plugin to use it asap.\r\n\r\nThanks for fast response, great job.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=msk","name":"msk","emailAddress":"msk.conf@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dusan Zatkovsky","active":true},"created":"2010-03-05T04:56:42.812-0600","updated":"2010-03-05T04:56:42.812-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/106311/comment/212867","id":"212867","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"ok, thank you for your great report and help to fix the issue: such attitude helps a lot OSS projects, even more than direct code\r\n\r\nFYI, you can override dependency version of a plugin in your pom, so you don't need to wait for exec plugin release","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2010-03-05T15:05:40.150-0600","updated":"2010-03-05T15:05:40.150-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-125.json b/jira/PLXUTILS-125.json
new file mode 100644
index 00000000..e30ff475
--- /dev/null
+++ b/jira/PLXUTILS-125.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"106450","self":"http://jira.codehaus.org/rest/api/latest/issue/106450","key":"PLXUTILS-125","fields":{"progress":{"progress":0,"total":0},"summary":"use System.getenv() API for Java 5+ instead of CommandLineUtils.getSystemEnvVars() Java 1.4- workaround","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-125/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/3","id":"3","description":"The problem is a duplicate of an existing issue.","name":"Duplicate"},"fixVersions":[],"resolutiondate":"2010-03-27T17:33:59.660-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["hboutemy(hboutemy)"],"customfield_10160":null,"updated":"2010-03-27T17:33:59.681-0500","created":"2010-03-05T15:08:58.385-0600","description":"the new JDK API is simpler to use, more efficient (avoids executing a shell), and won't have bug like PLXUTILS-124","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"25662","self":"http://jira.codehaus.org/rest/api/2/issueLink/25662","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"inwardIssue":{"id":"107575","key":"PLXUTILS-127","self":"http://jira.codehaus.org/rest/api/2/issue/107575","fields":{"summary":"Plexus utils fork an external process to get env var even when running jdk 1.5+","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}},{"id":"25494","self":"http://jira.codehaus.org/rest/api/2/issueLink/25494","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"outwardIssue":{"id":"106311","key":"PLXUTILS-124","self":"http://jira.codehaus.org/rest/api/2/issue/106311","fields":{"summary":"CommandLine enviroment variables are broken ( bad encoding )","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"153446400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-125/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15870","id":"15870","description":"","name":"2.0.1","archived":false,"released":true,"releaseDate":"2009-10-19"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-126.json b/jira/PLXUTILS-126.json
new file mode 100644
index 00000000..5e974d83
--- /dev/null
+++ b/jira/PLXUTILS-126.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"95873","self":"http://jira.codehaus.org/rest/api/latest/issue/95873","key":"PLXUTILS-126","fields":{"progress":{"progress":0,"total":0},"summary":"mvn help:evaluate does not return an entry in a LinkedHashMap, even though the item is present","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-126/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:49:15.396-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ccaraivan","name":"ccaraivan","emailAddress":"ccaraivan@axway.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Costin Caraivan","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["brettporter(brettporter)","ccaraivan(ccaraivan)","michael-o(michael-o)"],"customfield_10160":null,"updated":"2014-11-25T14:49:15.425-0600","created":"2009-08-13T09:35:53.088-0500","description":"[INFO] Enter the Maven expression i.e. ${project.groupId} or 0 to exit?:\n${project.build.pluginsAsMap}\n\n\n[Content erased for brevity]\n\n \n org.apache.maven.plugins:maven-help-plugin\n \n true\n org.apache.maven.plugins\n maven-help-plugin\n 2.1\n false\n \n \n org.apache.maven.plugins:maven-help-plugin\n \n \n\n\nBut:\n\n[INFO] Enter the Maven expression i.e. ${project.groupId} or 0 to exit?:\n${project.build.pluginsAsMap(org.apache.maven.plugins:maven-help-plugin)}\n[INFO]\nnull object or invalid expression\n\nAm I doing something wrong? I'm using the key, as described here: http://jira.codehaus.org/browse/PLXUTILS-37","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-126/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15870","id":"15870","description":"","name":"2.0.1","archived":false,"released":true,"releaseDate":"2009-10-19"}],"customfield_10170":null,"environment":"Windows XP SP3, Maven 2.1.0, Java 1.5","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/95873/comment/214755","id":"214755","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"body":"This is a bug in the implementation in PLXUTILS-37 - it doesn't support key's that contain '.' due to the way they are tokenized.\r\n\r\nAt first I thought this was a problem with Maven using the less-featured plexus-interpolation version, but it seems to be correct as it will work with a plugin test:test-mojo.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"created":"2010-03-21T23:47:34.072-0500","updated":"2010-03-21T23:47:34.072-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/95873/comment/357742","id":"357742","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:49:15.422-0600","updated":"2014-11-25T14:49:15.422-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-127.json b/jira/PLXUTILS-127.json
new file mode 100644
index 00000000..64a41bd0
--- /dev/null
+++ b/jira/PLXUTILS-127.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"107575","self":"http://jira.codehaus.org/rest/api/latest/issue/107575","key":"PLXUTILS-127","fields":{"progress":{"progress":0,"total":0},"summary":"Plexus utils fork an external process to get env var even when running jdk 1.5+","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-127/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16267","id":"16267","description":"","name":"2.0.2","archived":false,"released":true,"releaseDate":"2010-03-29"}],"resolutiondate":"2010-03-27T17:31:01.178-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["olamy(olamy)"],"customfield_10160":null,"updated":"2010-03-27T17:33:40.953-0500","created":"2010-03-27T17:25:36.788-0500","description":"Currently p-u always forks an external process even when running on a 1.6 vm which has System.getenv().\nAnd forking a process is time and memory consuming.\nSo to preserve 1.4 we can use reflection to check if the method is available or not.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"25662","self":"http://jira.codehaus.org/rest/api/2/issueLink/25662","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"outwardIssue":{"id":"106450","key":"PLXUTILS-125","self":"http://jira.codehaus.org/rest/api/2/issue/106450","fields":{"summary":"use System.getenv() API for Java 5+ instead of CommandLineUtils.getSystemEnvVars() Java 1.4- workaround","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}},{"id":"25663","self":"http://jira.codehaus.org/rest/api/2/issueLink/25663","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"106311","key":"PLXUTILS-124","self":"http://jira.codehaus.org/rest/api/2/issue/106311","fields":{"summary":"CommandLine enviroment variables are broken ( bad encoding )","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"151545600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-127/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/107575/comment/215678","id":"215678","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"fixed [rev 8665|http://fisheye.codehaus.org/changelog/plexus/?cs=8665]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2010-03-27T17:31:01.191-0500","updated":"2010-03-27T17:31:01.191-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-128.json b/jira/PLXUTILS-128.json
new file mode 100644
index 00000000..e157331d
--- /dev/null
+++ b/jira/PLXUTILS-128.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"107744","self":"http://jira.codehaus.org/rest/api/latest/issue/107744","key":"PLXUTILS-128","fields":{"progress":{"progress":0,"total":0},"summary":"Extend ReaderFactory to allow for creation of readers that do strict validation of encoding","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-128/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)"],"customfield_10160":null,"updated":"2010-03-31T07:19:19.136-0500","created":"2010-03-31T07:18:45.378-0500","description":"Right now, the XML/input readers simply ignore byte sequences that don't match the specified file encoding. There should be a strict mode that ensure errors like reported in MNG-2187 show up in all cases such that the user gets immediately aware of the issue and can fix the file.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"151286400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-128/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16267","id":"16267","description":"","name":"2.0.2","archived":false,"released":true,"releaseDate":"2010-03-29"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-129.json b/jira/PLXUTILS-129.json
new file mode 100644
index 00000000..4a20c97e
--- /dev/null
+++ b/jira/PLXUTILS-129.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"107983","self":"http://jira.codehaus.org/rest/api/latest/issue/107983","key":"PLXUTILS-129","fields":{"progress":{"progress":0,"total":0},"summary":"Xpp3Dom.merge() produces wrong result upon merging two equal input DOMs","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-129/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16325","id":"16325","description":"","name":"2.0.3","archived":false,"released":true,"releaseDate":"2010-04-06"}],"resolutiondate":"2010-04-06T15:06:35.927-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)"],"customfield_10160":null,"updated":"2010-04-06T15:06:35.998-0500","created":"2010-04-06T15:03:10.027-0500","description":"Merging the DOM\n{code:xml}\n\n \n test\n \n\n{code}\nwith itself yields\n{code:xml}\n\n \n test\n test\n\n{code}\ninstead of just the unchanged input.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"25745","self":"http://jira.codehaus.org/rest/api/2/issueLink/25745","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"81122","key":"MNG-4022","self":"http://jira.codehaus.org/rest/api/2/issue/81122","fields":{"summary":"Incorrect merge behavior using profile driven plugin configuration","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"150681600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-129/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16267","id":"16267","description":"","name":"2.0.2","archived":false,"released":true,"releaseDate":"2010-03-29"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/107983/comment/216892","id":"216892","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Fixed in [r8680|http://fisheye.codehaus.org/changelog/plexus/?cs=8680].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2010-04-06T15:06:35.995-0500","updated":"2010-04-06T15:06:35.995-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-13.json b/jira/PLXUTILS-13.json
new file mode 100644
index 00000000..4990eb1f
--- /dev/null
+++ b/jira/PLXUTILS-13.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"35684","self":"http://jira.codehaus.org/rest/api/latest/issue/35684","key":"PLXUTILS-13","fields":{"progress":{"progress":0,"total":0},"summary":"FileUtils does not support encodings","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-13/votes","votes":2,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14042","id":"14042","description":"","name":"1.4.2","archived":false,"released":true,"releaseDate":"2007-05-20"}],"resolutiondate":"2007-05-01T19:31:11.522-0500","customfield_10210":"2.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nekop","name":"nekop","emailAddress":"nekop@jajakarta.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Takayoshi Kimura","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["carlos(carlos)","jochenw(jochenw)","nekop(nekop)"],"customfield_10160":null,"updated":"2008-02-02T15:37:41.456-0600","created":"2006-04-05T21:13:33.275-0500","description":"FileUtils uses String#getBytes, new String(bytes), FileReader and FileWriter with no encoding parameter. We cannot make encoding aware code with this class.\n\nFileUtils#fileRead() method contains a bug. This method cannot handle multi-byte characters properly.\n\nAttached patch is against trunk/plexus-utils.\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"243216000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-13/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/19996","id":"19996","filename":"FileUtils.java.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nekop","name":"nekop","emailAddress":"nekop@jajakarta.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Takayoshi Kimura","active":true},"created":"2006-04-05T21:13:33.373-0500","size":3955,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/19996/FileUtils.java.patch"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/19998","id":"19998","filename":"fixed-FileUtils.java.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nekop","name":"nekop","emailAddress":"nekop@jajakarta.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Takayoshi Kimura","active":true},"created":"2006-04-06T02:00:38.917-0500","size":9734,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/19998/fixed-FileUtils.java.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/35684/comment/62944","id":"62944","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"Thanks for the patch, but I can't apply it without unit tests. If you could provide them it'd be great, if not it will have to wait until somebody has the time to do it.\r\nAfter a first overview I already see a bug\r\n\r\n if ( encoding != null )\r\n {\r\n reader =\r\n new InputStreamReader(\r\n new FileInputStream( file ));\r\n }\r\n else\r\n {\r\n reader =\r\n new InputStreamReader(\r\n new FileInputStream( file ), encoding ); //encoding is null\r\n }\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2006-04-05T22:10:54.605-0500","updated":"2006-04-05T22:10:54.605-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/35684/comment/62956","id":"62956","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nekop","name":"nekop","emailAddress":"nekop@jajakarta.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Takayoshi Kimura","active":true},"body":"Sorry for bug in the patch. I have uploaded my old version :-(\r\n\r\nAttached patch is fixed the bug, with complete testcases.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nekop","name":"nekop","emailAddress":"nekop@jajakarta.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Takayoshi Kimura","active":true},"created":"2006-04-06T02:00:38.960-0500","updated":"2006-04-06T02:00:38.960-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/35684/comment/94735","id":"94735","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jochenw","name":"jochenw","emailAddress":"jochen.wiedmann@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jochen Wiedmann","active":true},"body":"Applied, with minor changes. (Formatting, added an ISO-8859-1 character, code simplifications)\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jochenw","name":"jochenw","emailAddress":"jochen.wiedmann@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jochen Wiedmann","active":true},"created":"2007-05-01T19:31:11.516-0500","updated":"2007-05-01T19:31:11.516-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-130.json b/jira/PLXUTILS-130.json
new file mode 100644
index 00000000..bd23415a
--- /dev/null
+++ b/jira/PLXUTILS-130.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"108632","self":"http://jira.codehaus.org/rest/api/latest/issue/108632","key":"PLXUTILS-130","fields":{"progress":{"progress":0,"total":0},"summary":"executeCommandLine can deadlock","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-130/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16348","id":"16348","description":"","name":"2.0.4","archived":false,"released":true,"releaseDate":"2010-04-22"}],"resolutiondate":"2010-04-20T13:39:21.205-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","krosenvold(krosenvold)"],"customfield_10160":null,"updated":"2010-08-09T10:51:44.137-0500","created":"2010-04-20T13:26:38.553-0500","description":"As part of locating concurrency issue in plexus-io, this unsafe publication issue was discovered. Although it has not been specifically observed, there is little doubt that this memory model violation can (and will) result in deadlocks/hangs every now and then, especially on 64 jvms and servers.\r\n \r\nI also reviewed the rest of plexus-utils for similar iussues and believe this patch covers all threading issues.\r\n\r\nThe supplied patch also updates the javadoc on executeCommandLine to indicate the required thread-safe constraint in client-supplied objects.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"25932","self":"http://jira.codehaus.org/rest/api/2/issueLink/25932","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"108924","key":"MSHARED-148","self":"http://jira.codehaus.org/rest/api/2/issue/108924","fields":{"summary":"Avoid possible corruption issues and deadlocks by upgrading plexus components","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"26813","self":"http://jira.codehaus.org/rest/api/2/issueLink/26813","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"113578","key":"SUREFIRE-633","self":"http://jira.codehaus.org/rest/api/2/issue/113578","fields":{"summary":"Upgrade plexus-utils to avoid potential deadlocks in versions prior to 2.0.5","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"25963","self":"http://jira.codehaus.org/rest/api/2/issueLink/25963","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"109088","key":"MINVOKER-103","self":"http://jira.codehaus.org/rest/api/2/issue/109088","fields":{"summary":"Update to plexus-utils:2.0.4+ to eliminate deadlock potential during forked Maven executions","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/5","iconUrl":"http://jira.codehaus.org/images/icons/priorities/trivial.png","name":"Trivial","id":"5"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false}}}}],"customfield_10163":"145670400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-130/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/48601","id":"48601","filename":"plexus-util.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2010-04-20T13:26:39.134-0500","size":2906,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/48601/plexus-util.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16325","id":"16325","description":"","name":"2.0.3","archived":false,"released":true,"releaseDate":"2010-04-06"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/108632/comment/218376","id":"218376","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Applied in [r8695|http://fisheye.codehaus.org/changelog/plexus/?cs=8695], thanks!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2010-04-20T13:39:21.235-0500","updated":"2010-04-20T13:39:21.235-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/108632/comment/223980","id":"223980","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"For future reference: the issue applies to all the executeCommandLine overloads and has been verified to happen \"in the wild\".","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2010-06-03T15:31:41.410-0500","updated":"2010-06-03T15:31:41.410-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-131.json b/jira/PLXUTILS-131.json
new file mode 100644
index 00000000..c4a5c486
--- /dev/null
+++ b/jira/PLXUTILS-131.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"108818","self":"http://jira.codehaus.org/rest/api/latest/issue/108818","key":"PLXUTILS-131","fields":{"progress":{"progress":0,"total":0},"summary":"Improper exception handling in executeCommandLine","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-131/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16410","id":"16410","description":"","name":"2.0.5","archived":false,"released":true,"releaseDate":"2010-04-25"}],"resolutiondate":"2010-04-24T07:11:54.223-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","krosenvold(krosenvold)"],"customfield_10160":null,"updated":"2011-03-04T00:42:32.531-0600","created":"2010-04-23T16:03:04.652-0500","description":"If the StreamConsumer throws an exception, it is swallowed quietly. ","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"28365","self":"http://jira.codehaus.org/rest/api/2/issueLink/28365","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"122630","key":"PLXUTILS-138","self":"http://jira.codehaus.org/rest/api/2/issue/122630","fields":{"summary":"executeCommandLine with timeout leaves StreamPumpers pumping data to client after method is returned","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"26902","self":"http://jira.codehaus.org/rest/api/2/issueLink/26902","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"114031","key":"SUREFIRE-640","self":"http://jira.codehaus.org/rest/api/2/issue/114031","fields":{"summary":"org.apache.maven.surefire.booter.shade.org.codehaus.plexus.util.cli.CommandLineException: Error inside systemErr parser","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"25933","self":"http://jira.codehaus.org/rest/api/2/issueLink/25933","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"108924","key":"MSHARED-148","self":"http://jira.codehaus.org/rest/api/2/issue/108924","fields":{"summary":"Avoid possible corruption issues and deadlocks by upgrading plexus components","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"27738","self":"http://jira.codehaus.org/rest/api/2/issueLink/27738","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"119168","key":"SUREFIRE-665","self":"http://jira.codehaus.org/rest/api/2/issue/119168","fields":{"summary":"Output to file stops after a while","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"149212800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-131/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/48660","id":"48660","filename":"dontSwallowException.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2010-04-23T16:03:04.937-0500","size":4172,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/48660/dontSwallowException.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16348","id":"16348","description":"","name":"2.0.4","archived":false,"released":true,"releaseDate":"2010-04-22"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/108818/comment/218829","id":"218829","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Applied in [r8699|http://fisheye.codehaus.org/changelog/plexus/?cs=8699], thanks!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2010-04-24T07:11:54.282-0500","updated":"2010-04-24T07:11:54.282-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-132.json b/jira/PLXUTILS-132.json
new file mode 100644
index 00000000..ca54dd62
--- /dev/null
+++ b/jira/PLXUTILS-132.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"108979","self":"http://jira.codehaus.org/rest/api/latest/issue/108979","key":"PLXUTILS-132","fields":{"progress":{"progress":0,"total":0},"summary":"XmlPullParserException to use generic getCause() method for access to detail exception","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-132/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16412","id":"16412","description":"","name":"2.0.6","archived":false,"released":true,"releaseDate":"2011-02-09"}],"resolutiondate":"2010-04-28T06:57:34.801-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkleint","name":"mkleint","emailAddress":"mkleint@codehaus.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Milos Kleint","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["mkleint(mkleint)"],"customfield_10160":null,"updated":"2010-04-28T06:57:34.823-0500","created":"2010-04-28T06:51:37.730-0500","description":"XmlPullParserException to use generic getCause() method for access to detail exception. solution is to use the Exception(string, Throwable) parameter available since 1.4 jdk. \r\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"148867200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-132/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkleint","name":"mkleint","emailAddress":"mkleint@codehaus.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Milos Kleint","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/108979/comment/219232","id":"219232","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkleint","name":"mkleint","emailAddress":"mkleint@codehaus.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Milos Kleint","active":true},"body":"revision 8722.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkleint","name":"mkleint","emailAddress":"mkleint@codehaus.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Milos Kleint","active":true},"created":"2010-04-28T06:57:34.820-0500","updated":"2010-04-28T06:57:34.820-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-133.json b/jira/PLXUTILS-133.json
new file mode 100644
index 00000000..bd228ea2
--- /dev/null
+++ b/jira/PLXUTILS-133.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"115123","self":"http://jira.codehaus.org/rest/api/latest/issue/115123","key":"PLXUTILS-133","fields":{"progress":{"progress":0,"total":0},"summary":"add FileUtils.fileWrite(File) API to existing fileWrite(String)","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-133/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16412","id":"16412","description":"","name":"2.0.6","archived":false,"released":true,"releaseDate":"2011-02-09"}],"resolutiondate":"2010-09-14T23:02:35.763-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["hboutemy(hboutemy)"],"customfield_10160":null,"updated":"2010-09-14T23:02:35.894-0500","created":"2010-09-14T23:01:20.978-0500","description":null,"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"136771200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-133/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16410","id":"16410","description":"","name":"2.0.5","archived":false,"released":true,"releaseDate":"2010-04-25"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/115123/comment/235292","id":"235292","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"done in r8746","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2010-09-14T23:02:35.892-0500","updated":"2010-09-14T23:02:35.892-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-134.json b/jira/PLXUTILS-134.json
new file mode 100644
index 00000000..fb65df21
--- /dev/null
+++ b/jira/PLXUTILS-134.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"116065","self":"http://jira.codehaus.org/rest/api/latest/issue/116065","key":"PLXUTILS-134","fields":{"progress":{"progress":0,"total":0},"summary":"Incorrect Xpp3Dom.mergeXpp3Dom","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-134/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/6","id":"6","description":"The issue is not a bug","name":"Not A Bug"},"fixVersions":[],"resolutiondate":"2010-10-06T14:23:32.089-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["olamy(olamy)"],"customfield_10160":null,"updated":"2010-10-06T14:23:32.122-0500","created":"2010-10-06T12:44:26.774-0500","description":"target dominant \r\n{code:xml}\r\n\r\n \r\n \r\n org.apache.maven.plugins\r\n maven-jxr-plugin\r\n 2.1\r\n \r\n \r\n org.apache.maven.plugins\r\n maven-javadoc-plugin\r\n 2.6.1\r\n \r\n ${basedir}/src/main/javadoc/stylesheet.css\r\n \r\n \r\n \r\n \r\n javadoc\r\n \r\n \r\n \r\n \r\n \r\n\r\n{code}\r\nsource recessive \r\n{code:xml}\r\n\r\n \r\n \r\n org.apache.maven.plugins\r\n maven-project-info-reports-plugin\r\n 2.2\r\n \r\n false\r\n \r\n \r\n \r\n \r\n summary\r\n index\r\n cim\r\n issue-tracking\r\n scm\r\n \r\n \r\n \r\n \r\n \r\n org.apache.maven.plugins\r\n maven-javadoc-plugin\r\n 2.6.1\r\n \r\n \r\n \r\n javadoc\r\n \r\n \r\n \r\n \r\n \r\n\r\n{code}\r\n\r\nResult \r\n{code:xml}\r\n\r\n \r\n \r\n org.apache.maven.plugins\r\n maven-jxr-plugin\r\n 2.1\r\n \r\n false\r\n \r\n \r\n \r\n \r\n summary\r\n index\r\n cim\r\n issue-tracking\r\n scm\r\n \r\n \r\n \r\n \r\n \r\n org.apache.maven.plugins\r\n maven-javadoc-plugin\r\n 2.6.1\r\n \r\n ${basedir}/src/main/javadoc/stylesheet.css\r\n \r\n \r\n \r\n \r\n javadoc\r\n \r\n \r\n \r\n \r\n \r\n\r\n{code}","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"27246","self":"http://jira.codehaus.org/rest/api/2/issueLink/27246","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"116056","key":"MNG-4856","self":"http://jira.codehaus.org/rest/api/2/issue/116056","fields":{"summary":"DefaultReportingConverter create incorrect site plugin configuration","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"134870400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-134/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16410","id":"16410","description":"","name":"2.0.5","archived":false,"released":true,"releaseDate":"2010-04-25"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/116065/comment/237708","id":"237708","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"my bad so Xpp3dom can do nothing here to \"merge\" models.\r\nI will write documentation for users to use combine.children=\"append\"","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2010-10-06T14:23:32.108-0500","updated":"2010-10-06T14:23:32.108-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-135.json b/jira/PLXUTILS-135.json
new file mode 100644
index 00000000..d9ba44bc
--- /dev/null
+++ b/jira/PLXUTILS-135.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"117178","self":"http://jira.codehaus.org/rest/api/latest/issue/117178","key":"PLXUTILS-135","fields":{"progress":{"progress":0,"total":0},"summary":"Apache 1.1 license is still used in some files","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-135/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:49:03.039-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ludovicc","name":"ludovicc","emailAddress":"ludovic.claude@laposte.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ludovic Claude","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["ludovicc(ludovicc)","michael-o(michael-o)"],"customfield_10160":null,"updated":"2014-11-25T14:49:03.078-0600","created":"2010-10-29T16:36:33.130-0500","description":"While packaging plexus-utils for Debian, I found that some files still have an Apache 1.1 license. Is it possible to re-license them to Apache 2.0?\r\n\r\n./src/main/java/org/codehaus/plexus/util/SelectorUtils.java: * The Apache Software License, Version 1.1\r\n./src/main/java/org/codehaus/plexus/util/IOUtil.java: * The Apache Software License, Version 1.1\r\n./src/main/java/org/codehaus/plexus/util/DirectoryScanner.java: * The Apache Software License, Version 1.1\r\n./src/main/java/org/codehaus/plexus/util/InterpolationFilterReader.java: * The Apache Software License, Version 1.1\r\n./src/main/java/org/codehaus/plexus/util/StringInputStream.java: * The Apache Software License, Version 1.1\r\n./src/main/java/org/codehaus/plexus/util/StringUtils.java: * The Apache Software License, Version 1.1\r\n./src/main/java/org/codehaus/plexus/util/FileUtils.java: * The Apache Software License, Version 1.1\r\n./src/main/java/org/codehaus/plexus/util/Expand.java: * The Apache Software License, Version 1.1\r\n./src/main/java/org/codehaus/plexus/util/Os.java: * The Apache Software License, Version 1.1\r\n./src/main/java/org/codehaus/plexus/util/ExceptionUtils.java: * The Apache Software License, Version 1.1\r\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/5","iconUrl":"http://jira.codehaus.org/images/icons/priorities/trivial.png","name":"Trivial","id":"5"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-135/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16410","id":"16410","description":"","name":"2.0.5","archived":false,"released":true,"releaseDate":"2010-04-25"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/117178/comment/357704","id":"357704","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:49:03.075-0600","updated":"2014-11-25T14:49:03.075-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-136.json b/jira/PLXUTILS-136.json
new file mode 100644
index 00000000..fed22b1c
--- /dev/null
+++ b/jira/PLXUTILS-136.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"121654","self":"http://jira.codehaus.org/rest/api/latest/issue/121654","key":"PLXUTILS-136","fields":{"progress":{"progress":0,"total":0},"summary":"Make Xpp3Dom serializable","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-136/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16412","id":"16412","description":"","name":"2.0.6","archived":false,"released":true,"releaseDate":"2011-02-09"}],"resolutiondate":"2011-02-09T12:49:34.987-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","igorfie(igorfie)"],"customfield_10160":null,"updated":"2011-02-09T12:49:35.017-0600","created":"2011-02-09T12:48:58.013-0600","description":"It would be useful if {{Xpp3Dom}} would be serializable, say just like the rest of Modello generated model classes.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/5","iconUrl":"http://jira.codehaus.org/images/icons/priorities/trivial.png","name":"Trivial","id":"5"},"duedate":null,"issuelinks":[],"customfield_10163":"123984000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-136/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16410","id":"16410","description":"","name":"2.0.5","archived":false,"released":true,"releaseDate":"2010-04-25"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/121654/comment/255477","id":"255477","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Done in [4a944bf134b9a6dbab78509352b3968f39ddbcd4|https://github.com/sonatype/plexus-utils/commit/4a944bf134b9a6dbab78509352b3968f39ddbcd4].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2011-02-09T12:49:35.014-0600","updated":"2011-02-09T12:49:35.014-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-137.json b/jira/PLXUTILS-137.json
new file mode 100644
index 00000000..add540e9
--- /dev/null
+++ b/jira/PLXUTILS-137.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"121939","self":"http://jira.codehaus.org/rest/api/latest/issue/121939","key":"PLXUTILS-137","fields":{"progress":{"progress":0,"total":0},"summary":"FileUtils.catPath doesn't work on Windows.","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-137/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:47:55.712-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=sjerman","name":"sjerman","emailAddress":"stjerman@cisco.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Steve Jerman","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["michael-o(michael-o)","sjerman(sjerman)"],"customfield_10160":null,"updated":"2014-11-25T14:47:55.772-0600","created":"2011-02-15T15:35:48.449-0600","description":"It's hardcoded to assume \"/\" as the file separator .. works on Mac/Linux.... not Windows:\r\n\r\nCaused by: java.lang.StringIndexOutOfBoundsException: String index out of range:\r\n -1\r\n at java.lang.String.substring(String.java:1937)\r\n at org.codehaus.plexus.util.FileUtils.catPath(FileUtils.java:1198)\r\n at org.eclipse.tigerstripe.maven.generation.TigerstripeGenerationMojo.ex\r\necRuntime(TigerstripeGenerationMojo.java:297)\r\n ... 22 more","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-137/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/121939/comment/357495","id":"357495","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:47:55.754-0600","updated":"2014-11-25T14:47:55.754-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-138.json b/jira/PLXUTILS-138.json
new file mode 100644
index 00000000..86f6cef4
--- /dev/null
+++ b/jira/PLXUTILS-138.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"122630","self":"http://jira.codehaus.org/rest/api/latest/issue/122630","key":"PLXUTILS-138","fields":{"progress":{"progress":0,"total":0},"summary":"executeCommandLine with timeout leaves StreamPumpers pumping data to client after method is returned","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-138/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17149","id":"17149","description":"","name":"2.0.7","archived":false,"released":true,"releaseDate":"2011-03-03"}],"resolutiondate":"2011-03-02T16:25:34.658-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["krosenvold(krosenvold)"],"customfield_10160":null,"updated":"2011-03-04T00:43:50.447-0600","created":"2011-03-02T16:22:39.679-0600","description":"When the interruptedexception is throw due to process timeout, the StreamPumper is not terminated or disabled in any way. This means the pumper can continue feeding data to the client even after executeCommandLine has returened. This is not a good idea and the caus of SUREFIRE-690","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[{"id":"28365","self":"http://jira.codehaus.org/rest/api/2/issueLink/28365","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"108818","key":"PLXUTILS-131","self":"http://jira.codehaus.org/rest/api/2/issue/108818","fields":{"summary":"Improper exception handling in executeCommandLine","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"28362","self":"http://jira.codehaus.org/rest/api/2/issueLink/28362","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"120984","key":"SUREFIRE-690","self":"http://jira.codehaus.org/rest/api/2/issue/120984","fields":{"summary":"testSetCompleted called before testSetStarting when using m3 parallel builds","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"28363","self":"http://jira.codehaus.org/rest/api/2/issueLink/28363","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"122517","key":"SUREFIRE-707","self":"http://jira.codehaus.org/rest/api/2/issue/122517","fields":{"summary":"NullPointerException in ConcurrentReporterManager on testSkipped (@Ignore on test class)","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"28361","self":"http://jira.codehaus.org/rest/api/2/issueLink/28361","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"122616","key":"SUREFIRE-710","self":"http://jira.codehaus.org/rest/api/2/issue/122616","fields":{"summary":"ConcurrentModificationException in ConcurrentReporterManager","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"122083200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-138/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16412","id":"16412","description":"","name":"2.0.6","archived":false,"released":true,"releaseDate":"2011-02-09"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/122630/comment/258259","id":"258259","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Fixed in 401347173783947805458893210afb3d37ade0ae","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2011-03-02T16:25:34.746-0600","updated":"2011-03-02T16:27:55.713-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/122630/comment/258484","id":"258484","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"The root cause of this \"trouble\" is the removal of the empty catch block in PLXUTILS-131, which turned out to be painful but important.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2011-03-04T00:42:32.778-0600","updated":"2011-03-04T00:43:50.435-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-139.json b/jira/PLXUTILS-139.json
new file mode 100644
index 00000000..bf39eb84
--- /dev/null
+++ b/jira/PLXUTILS-139.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"125181","self":"http://jira.codehaus.org/rest/api/latest/issue/125181","key":"PLXUTILS-139","fields":{"progress":{"progress":0,"total":0},"summary":"FileUtils.copyFile() ignores 'overwrite' when 'wrappers' (FilterWrappers[]) is non-empty","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-139/votes","votes":2,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:48:49.681-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rupigill","name":"rupigill","emailAddress":"rupigill@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Rupinder S. Gill","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["michael-o(michael-o)","rupigill(rupigill)"],"customfield_10160":null,"updated":"2014-12-16T05:55:33.154-0600","created":"2011-05-06T12:19:57.644-0500","description":"maven-resource-plugin is copying a resource even if it is unchanged and 'overwrite' is false. See http://stackoverflow.com/questions/3970157/is-there-a-way-to-force-maven-to-copy-resource-folder-changes-incrementally/5914467#5914467\r\n\r\nI chased the problem down to org.codehaus.plexus.util.FileUtils.copyFile() method. It is this method that is called by the maven-resource-plugin to ultimately copy the resource; the copyFile() method takes an 'overwrite' parameter, which the resource-plugin does pass in (and the default is indeed false), BUT...\r\n\r\nThe copyFile() method ignores the 'overwrite' parameter if the list of filter-wrappers passed is non-empty! And if you have filtering set to true for your resources, this list is indeed non-empty.\r\n\r\nI can understand the reasoning behind copyFile() ignoring the 'overwrite': just because the destination file is newer does not mean that new filtered-file will be the same (i.e. the values for the variables in your resource file may have been changed since the last filtering). \r\nIgnoring the 'overwrite' flag is \"convenient\" for the FileUtils implementor. But this comes at a great price; a single resource file unnecessarily updated can trigger off time-consuming but redundant processes (i.e. rebuilding a jar-with-dependencies in my case). This may only be a few seconds but can be enough to disrupt the flow of an intensive code-compile-test cycle.\r\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"36320","self":"http://jira.codehaus.org/rest/api/2/issueLink/36320","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"158513","key":"PLXUTILS-173","self":"http://jira.codehaus.org/rest/api/2/issue/158513","fields":{"summary":"CLONE - FileUtils.copyFile() ignores 'overwrite' when 'wrappers' (FilterWrappers[]) is non-empty","status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-139/watchers","watchCount":3,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17149","id":"17149","description":"","name":"2.0.7","archived":false,"released":true,"releaseDate":"2011-03-03"}],"customfield_10170":null,"environment":"Windows","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/125181/comment/357671","id":"357671","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:48:49.716-0600","updated":"2014-11-25T14:48:49.716-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-14.json b/jira/PLXUTILS-14.json
new file mode 100644
index 00000000..32577215
--- /dev/null
+++ b/jira/PLXUTILS-14.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"34123","self":"http://jira.codehaus.org/rest/api/latest/issue/34123","key":"PLXUTILS-14","fields":{"progress":{"progress":0,"total":0},"summary":"Xpp3Dom allows null attribute name or value, failing later in toString","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-14/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14038","id":"14038","description":"","name":"1.2","archived":false,"released":true,"releaseDate":"2006-04-19"}],"resolutiondate":"2006-02-22T18:00:30.824-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["carlos(carlos)"],"customfield_10160":null,"updated":"2008-02-02T15:58:30.855-0600","created":"2006-02-22T17:45:12.169-0600","description":null,"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"13640","self":"http://jira.codehaus.org/rest/api/2/issueLink/13640","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"34131","key":"SUREFIRE-32","self":"http://jira.codehaus.org/rest/api/2/issue/34131","fields":{"summary":"When a system property value is null, resulting xml reports are cropped","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"280627200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-14/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/34123/comment/59263","id":"59263","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"java.lang.NullPointerException\r\n\tat java.io.PrintWriter.write(PrintWriter.java:401)\r\n\tat org.codehaus.plexus.util.xml.PrettyPrintXMLWriter.write(PrettyPrintXMLWriter.java:180)\r\n\tat org.codehaus.plexus.util.xml.PrettyPrintXMLWriter.addAttribute(PrettyPrintXMLWriter.java:145)\r\n\tat org.codehaus.plexus.util.xml.Xpp3DomWriter.write(Xpp3DomWriter.java:31)\r\n\tat org.codehaus.plexus.util.xml.Xpp3DomWriter.write(Xpp3DomWriter.java:20)\r\n\tat org.codehaus.plexus.util.xml.Xpp3Dom.toString(Xpp3Dom.java:460)\r\n\tat org.codehaus.plexus.util.xml.Xpp3DomTest.testNullAttributeNameOrValue(Xpp3DomTest.java:139)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\r\n\tat java.lang.reflect.Method.invoke(Method.java:585)\r\n\tat junit.framework.TestCase.runTest(TestCase.java:154)\r\n\tat junit.framework.TestCase.runBare(TestCase.java:127)\r\n\tat junit.framework.TestResult$1.protect(TestResult.java:106)\r\n\tat junit.framework.TestResult.runProtected(TestResult.java:124)\r\n\tat junit.framework.TestResult.run(TestResult.java:109)\r\n\tat junit.framework.TestCase.run(TestCase.java:118)\r\n\tat junit.framework.TestSuite.runTest(TestSuite.java:208)\r\n\tat junit.framework.TestSuite.run(TestSuite.java:203)\r\n\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:478)\r\n\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:344)\r\n\tat org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:196)\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2006-02-22T17:52:44.958-0600","updated":"2006-02-22T17:52:44.958-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-140.json b/jira/PLXUTILS-140.json
new file mode 100644
index 00000000..e7b3f417
--- /dev/null
+++ b/jira/PLXUTILS-140.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"128148","self":"http://jira.codehaus.org/rest/api/latest/issue/128148","key":"PLXUTILS-140","fields":{"progress":{"progress":0,"total":0},"summary":"default excludes of scanner should include .gitignore and .gitattributes","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-140/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17517","id":"17517","description":"","name":"3.0.1","archived":false,"released":true,"releaseDate":"2012-04-03"}],"resolutiondate":"2011-08-05T14:54:55.695-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)"],"customfield_10160":null,"updated":"2011-08-05T14:54:55.742-0500","created":"2011-08-05T14:49:47.576-0500","description":"{{.gitattributes}} and {{.gitignore}} are two more entirely Git-related metadata files that should be ignored when scanning directories.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/5","iconUrl":"http://jira.codehaus.org/images/icons/priorities/trivial.png","name":"Trivial","id":"5"},"duedate":null,"issuelinks":[],"customfield_10163":"108691200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-140/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17516","id":"17516","description":"","name":"3.0","archived":false,"released":true,"releaseDate":"2011-06-23"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/128148/comment/275123","id":"275123","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Added in [dc2af9ae0dd58b8be58bee29cd52d7a75ccab047|https://github.com/sonatype/plexus-utils/commit/dc2af9ae0dd58b8be58bee29cd52d7a75ccab047].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2011-08-05T14:54:55.738-0500","updated":"2011-08-05T14:54:55.738-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-141.json b/jira/PLXUTILS-141.json
new file mode 100644
index 00000000..3d686417
--- /dev/null
+++ b/jira/PLXUTILS-141.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"128167","self":"http://jira.codehaus.org/rest/api/latest/issue/128167","key":"PLXUTILS-141","fields":{"progress":{"progress":0,"total":0},"summary":"More and better? Javadoc","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-141/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17517","id":"17517","description":"","name":"3.0.1","archived":false,"released":true,"releaseDate":"2012-04-03"}],"resolutiondate":"2011-08-07T08:08:08.564-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mwood","name":"mwood","emailAddress":"mwood@IUPUI.Edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Mark Wood","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","mwood(mwood)"],"customfield_10160":null,"updated":"2011-08-07T08:08:08.629-0500","created":"2011-08-06T21:38:33.814-0500","description":"Having found some classes that looked like what I needed, I sought the Javadoc and was not enlightened. Since I wound up studying the code, I wrote down the understanding gained.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"108604800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-141/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/56288","id":"56288","filename":"plexus-common-utilities.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mwood","name":"mwood","emailAddress":"mwood@IUPUI.Edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Mark Wood","active":true},"created":"2011-08-06T21:38:35.781-0500","size":10986,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/56288/plexus-common-utilities.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/128167/comment/275204","id":"275204","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Applied in [808551a59694bab5739d4934b5eb7a1d8d839336|https://github.com/sonatype/plexus-utils/commit/808551a59694bab5739d4934b5eb7a1d8d839336], thanks.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2011-08-07T08:08:08.601-0500","updated":"2011-08-07T08:08:08.601-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-142.json b/jira/PLXUTILS-142.json
new file mode 100644
index 00000000..579462a2
--- /dev/null
+++ b/jira/PLXUTILS-142.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"128534","self":"http://jira.codehaus.org/rest/api/latest/issue/128534","key":"PLXUTILS-142","fields":{"progress":{"progress":0,"total":0},"summary":"rollback the removal of ASF copyrights","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-142/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:49:21.256-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=struberg","name":"struberg","emailAddress":"struberg@yahoo.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Mark Struberg","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["struberg(struberg)","michael-o(michael-o)"],"customfield_10160":null,"updated":"2014-11-25T14:49:21.297-0600","created":"2011-08-17T07:08:29.646-0500","description":"Most of the classes in plexus-utils are forks from Apache projects (Ant, Avalon, Maven-1, Anakia, Commons, ...) and thus since forever had the \"Copyright The Apache Software Foundation\".\r\n\r\nThis only recently (last year or so) got changed to \"Copyright The Codehaus\". \r\nThis change must get reverted in SVN (and all forks from there).\r\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-142/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/128534/comment/357763","id":"357763","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:49:21.294-0600","updated":"2014-11-25T14:49:21.294-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-143.json b/jira/PLXUTILS-143.json
new file mode 100644
index 00000000..4753e97b
--- /dev/null
+++ b/jira/PLXUTILS-143.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"129968","self":"http://jira.codehaus.org/rest/api/latest/issue/129968","key":"PLXUTILS-143","fields":{"progress":{"progress":0,"total":0},"summary":"Xpp3Dom toString() always writes a xml header","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-143/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:48:37.814-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lukas","name":"lukas","emailAddress":"ltheussl@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Lukas Theussl","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["lukas(lukas)","michael-o(michael-o)"],"customfield_10160":null,"updated":"2014-11-25T14:48:37.852-0600","created":"2011-09-28T03:24:36.812-0500","description":"There is a comment in the source code [added by Brett| https://github.com/sonatype/plexus-utils/commit/5d71f7d8cd1c0868133b2f44ef01125c7b8a46b7#src/main/java/org/codehaus/plexus/util/xml/Xpp3Dom.java]. This causes MSITE-551.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"29928","self":"http://jira.codehaus.org/rest/api/2/issueLink/29928","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"121730","key":"MSITE-551","self":"http://jira.codehaus.org/rest/api/2/issue/121730","fields":{"summary":"custom content not returned correctly","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-143/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16410","id":"16410","description":"","name":"2.0.5","archived":false,"released":true,"releaseDate":"2010-04-25"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/129968/comment/357630","id":"357630","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:48:37.848-0600","updated":"2014-11-25T14:48:37.848-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-144.json b/jira/PLXUTILS-144.json
new file mode 100644
index 00000000..4915eaba
--- /dev/null
+++ b/jira/PLXUTILS-144.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"130886","self":"http://jira.codehaus.org/rest/api/latest/issue/130886","key":"PLXUTILS-144","fields":{"progress":{"progress":0,"total":0},"summary":"CLONE - add the ability to preserver parent directories when using copyDirectory(...) and include pattern.","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-144/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/3","id":"3","description":"The problem is a duplicate of an existing issue.","name":"Duplicate"},"fixVersions":[],"resolutiondate":"2011-10-25T10:35:11.977-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=icfantv","name":"icfantv","emailAddress":"adam.n.gordon@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"adam gordon","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["icfantv(icfantv)"],"customfield_10160":null,"updated":"2011-10-25T10:35:12.037-0500","created":"2011-10-25T10:34:08.789-0500","description":"Please note that this issue is somewhat related to http://jira.codehaus.org/browse/PLX-187 but not entirely. \n\nIt seems that with the current plexus-utils v1.3 release only files matching the include pattern are copied but if these files are in sub-directories then their parent directory structure is not preserved. For example, the bellow code will not create a sub-directory in the destination directory if the source directory contains only a sub directories with single files.\n \nFileUtils.copyDirectory(new File(\"c:/temp/copy/src\"), new File(\"c:/temp/copy/dest\"),\"**\", null);\n\nI have created a patch adds a new method called copyDirectory(...) with an extra Boolean parameter that allows one to preserver a files parent directory structure. The following is the new method's signature\n\ncopyDirectory(File sourceDirectory, File destinationDirectory, String includes, String excludes, boolean includeParentdir)\n\nExample:\nFileUtils.copyDirectory(new File(\"c:/temp/copy/src\"), new File(\"c:/temp/copy/dest\"),\"**\", null, true);\n\nThe patch also contains a unite test for the new method. \n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"101779200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-144/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/57454","id":"57454","filename":"plexus-util-r4533.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=icfantv","name":"icfantv","emailAddress":"adam.n.gordon@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"adam gordon","active":true},"created":"2011-10-25T10:34:09.062-0500","size":6521,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/57454/plexus-util-r4533.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"Windows XP, Cygwin, x86, Java 1.4.2","timeestimate":null,"customfield_10130":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10053","value":"Yes","id":"10053"},"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/130886/comment/282038","id":"282038","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=icfantv","name":"icfantv","emailAddress":"adam.n.gordon@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"adam gordon","active":true},"body":"Was hoping to change the type to bug, but apparently JIRA doesn't allow that when cloning.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=icfantv","name":"icfantv","emailAddress":"adam.n.gordon@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"adam gordon","active":true},"created":"2011-10-25T10:35:12.032-0500","updated":"2011-10-25T10:35:12.032-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-145.json b/jira/PLXUTILS-145.json
new file mode 100644
index 00000000..4a6880ae
--- /dev/null
+++ b/jira/PLXUTILS-145.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"132059","self":"http://jira.codehaus.org/rest/api/latest/issue/132059","key":"PLXUTILS-145","fields":{"progress":{"progress":0,"total":0},"summary":"org.codehaus.plexus.util.cli.shell.Shell#getRawCommandLine(String, String[]) passes #is[Single|Double]QuotedExecutableEscaped() to #getEscapeChars() for arguments","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-145/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/18703","id":"18703","name":"3.0.4","archived":false,"released":true,"releaseDate":"2012-08-06"}],"resolutiondate":"2012-09-15T05:43:41.832-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mbenson","name":"mbenson","emailAddress":"gudnabrsam@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Matt Benson","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["krosenvold(krosenvold)","mbenson(mbenson)"],"customfield_10160":null,"updated":"2012-09-15T05:43:41.873-0500","created":"2011-12-01T13:48:10.076-0600","description":"It appears that #is[Single|Double]QuotedArgumentEscaped() were included with the intent of calling them here, but what would appear to be an unfortunate C&P error made things otherwise. I have no idea of the ramifications of fixing the problem at this late date, however.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"31577","self":"http://jira.codehaus.org/rest/api/2/issueLink/31577","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"outwardIssue":{"id":"139308","key":"PLXUTILS-152","self":"http://jira.codehaus.org/rest/api/2/issue/139308","fields":{"summary":"Shell fails to escape quotes in arguments","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"98496000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-145/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17516","id":"17516","description":"","name":"3.0","archived":false,"released":true,"releaseDate":"2011-06-23"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-146.json b/jira/PLXUTILS-146.json
new file mode 100644
index 00000000..5fb113ac
--- /dev/null
+++ b/jira/PLXUTILS-146.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"133015","self":"http://jira.codehaus.org/rest/api/latest/issue/133015","key":"PLXUTILS-146","fields":{"progress":{"progress":0,"total":0},"summary":"CLI: Quoting for arguments considers 'isSingleQuotedExecutableEscaped' instead of 'isSingleQuotedArgumentEscaped'","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-146/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/3","id":"3","description":"The problem is a duplicate of an existing issue.","name":"Duplicate"},"fixVersions":[],"resolutiondate":"2012-08-01T15:21:35.910-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lcorneliussen","name":"lcorneliussen","emailAddress":"me@lcorneliussen.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Lars Corneliussen","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["krosenvold(krosenvold)","lcorneliussen(lcorneliussen)"],"customfield_10160":null,"updated":"2012-08-01T15:22:19.730-0500","created":"2012-01-04T06:19:14.144-0600","description":"{code:title=org.codehaus.plexus.util.cli.shell.Shell#getRawCommandLine}\r\nif ( isQuotedArgumentsEnabled() )\r\n{\r\n char[] escapeChars = getEscapeChars( isSingleQuotedExecutableEscaped(), isDoubleQuotedExecutableEscaped() );\r\n\r\n sb.append( StringUtils.quoteAndEscape( arguments[i], getArgumentQuoteDelimiter(), escapeChars, getQuotingTriggerChars(), '\\\\', false ) );\r\n]\r\n{code}\r\n\r\nshould be \r\n\r\n{code}\r\nchar[] escapeChars = getEscapeChars( isSingleQuotedArgumentEscaped(), isDoubleQuotedArgumentEscaped() );\r\n{code}","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/5","iconUrl":"http://jira.codehaus.org/images/icons/priorities/trivial.png","name":"Trivial","id":"5"},"duedate":null,"issuelinks":[{"id":"31573","self":"http://jira.codehaus.org/rest/api/2/issueLink/31573","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"outwardIssue":{"id":"139308","key":"PLXUTILS-152","self":"http://jira.codehaus.org/rest/api/2/issue/139308","fields":{"summary":"Shell fails to escape quotes in arguments","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"95644800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-146/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":["plexus-cli"],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15515","id":"15515","description":"","name":"1.5.15","archived":false,"released":true,"releaseDate":"2009-06-05"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-147.json b/jira/PLXUTILS-147.json
new file mode 100644
index 00000000..1bc376ee
--- /dev/null
+++ b/jira/PLXUTILS-147.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"133016","self":"http://jira.codehaus.org/rest/api/latest/issue/133016","key":"PLXUTILS-147","fields":{"progress":{"progress":0,"total":0},"summary":"Support custom quoting strategies in Plexus CLI","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-147/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lcorneliussen","name":"lcorneliussen","emailAddress":"me@lcorneliussen.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Lars Corneliussen","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["lcorneliussen(lcorneliussen)"],"customfield_10160":null,"updated":"2012-01-04T06:30:51.545-0600","created":"2012-01-04T06:30:51.545-0600","description":"I need to change the quoting of an argument from \"/x:a b c\" to /x:\"a b c\".\r\n\r\nCurrently this is quite complicated to achieve using Plexus Utils.\r\n\r\nIf {{StringUtils.quoteAndEscape}} in {{org.codehaus.plexus.util.cli.shell.Shell#getRawCommandLine}} was exchangable with a custom implementation through an interface, that would be wonderfully possible, without much hassle.\r\n\r\nWhat do you think? I'd be happy to provide a patch, if it had a chance to be applied.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"95644800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-147/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15591","id":"15591","description":"","name":"1.5.11","archived":false,"released":true,"releaseDate":"2009-05-29"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-148.json b/jira/PLXUTILS-148.json
new file mode 100644
index 00000000..abbf888f
--- /dev/null
+++ b/jira/PLXUTILS-148.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"135353","self":"http://jira.codehaus.org/rest/api/latest/issue/135353","key":"PLXCOMP-208","fields":{"progress":{"progress":0,"total":0},"summary":"Infinite loop in archiver.AbstractArchiver$1.hasNext","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXCOMP-208/votes","votes":4,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/18295","id":"18295","name":"plexus-archiver-2.2","archived":false,"released":true,"releaseDate":"2012-09-19"}],"resolutiondate":"2012-09-19T10:45:58.840-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=thezuck","name":"thezuck","emailAddress":"thezuck@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Amir Zucker","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["thezuck(thezuck)","hitesh_22(hitesh_22)","ebann(ebann)","krosenvold(krosenvold)","muji(muji)","plushnikov(plushnikov)","selliott@paml.com(selliott@paml.com)"],"customfield_10160":null,"updated":"2012-09-24T08:26:52.532-0500","created":"2012-03-19T04:39:32.121-0500","description":"Maven (3) install, not sure which phase this happened in\r\nHappened consistently (every time)\r\n\r\n{noformat}Exception in thread \"main\" java.lang.StackOverflowError\r\n\tat sun.nio.cs.SingleByteEncoder.encodeArrayLoop(SingleByteEncoder.java:91)\r\n\tat sun.nio.cs.SingleByteEncoder.encodeLoop(SingleByteEncoder.java:130)\r\n\tat java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544)\r\n\tat sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:252)\r\n\tat sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)\r\n\tat java.io.OutputStreamWriter.write(OutputStreamWriter.java:190)\r\n\tat java.io.BufferedWriter.flushBuffer(BufferedWriter.java:111)\r\n\tat java.io.PrintStream.write(PrintStream.java:476)\r\n\tat java.io.PrintStream.print(PrintStream.java:619)\r\n\tat org.apache.maven.cli.PrintStreamLogger.info(PrintStreamLogger.java:110)\r\n\tat org.codehaus.plexus.logging.AbstractLogger.info(AbstractLogger.java:51)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:464)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:430)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:453)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n{noformat}","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"duedate":null,"issuelinks":[{"id":"31805","self":"http://jira.codehaus.org/rest/api/2/issueLink/31805","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"122878","key":"MASSEMBLY-549","self":"http://jira.codehaus.org/rest/api/2/issue/122878","fields":{"summary":"StackOverflowError while creating assembly","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"31804","self":"http://jira.codehaus.org/rest/api/2/issueLink/31804","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"135373","key":"MASSEMBLY-602","self":"http://jira.codehaus.org/rest/api/2/issue/135373","fields":{"summary":"Multiple Assemblies Causes Infinite Loop\\Recursion","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"72835200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXCOMP-208/watchers","watchCount":5,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":["exception"],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/59257","id":"59257","filename":"exception.txt","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=thezuck","name":"thezuck","emailAddress":"thezuck@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Amir Zucker","active":true},"created":"2012-03-19T04:39:33.154-0500","size":89936,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/59257/exception.txt"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11440","id":"11440","key":"PLXCOMP","name":"Plexus Components","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11440&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11440&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11440&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11440&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"constituent[17]: file:/T:/apache-maven/lib/plexus-cipher-1.7.jar\r\nconstituent[18]: file:/T:/apache-maven/lib/plexus-component-annotations-1.5.5.jar\r\nconstituent[19]: file:/T:/apache-maven/lib/plexus-interpolation-1.14.jar\r\nconstituent[20]: file:/T:/apache-maven/lib/plexus-sec-dispatcher-1.3.jar\r\nconstituent[21]: file:/T:/apache-maven/lib/plexus-utils-2.0.6.jar\r\n","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[{"self":"http://jira.codehaus.org/rest/api/2/component/12540","id":"12540","name":"plexus-archiver"}],"comment":{"startAt":0,"maxResults":9,"total":9,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/135353/comment/294527","id":"294527","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=selliott%40paml.com","name":"selliott@paml.com","emailAddress":"javamonkey79@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Shaun","active":true},"body":"I am also getting this error when running the assembly plugin in maven 3.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=selliott%40paml.com","name":"selliott@paml.com","emailAddress":"javamonkey79@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Shaun","active":true},"created":"2012-03-19T12:36:48.693-0500","updated":"2012-03-19T12:36:48.693-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/135353/comment/297887","id":"297887","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=muji","name":"muji","emailAddress":"muji_mu@hotmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Matthew Eash","active":true},"body":"Same for me, using maven-assembly-plugin 2.3 in maven 3.0.4\r\n\r\n[INFO] --- maven-assembly-plugin:2.3:single (package-jar-with-dependencies) @ wsi ---\r\n[WARNING] Artifact: com.test:wsi:jar:1.0-SNAPSHOT references the same file as the assembly destination file. Moving it to a temporary location for inclusion.\r\n[INFO] META-INF/ already added, skipping\r\n... REPEAT \"already added, skipping\" for every file\r\n with exception & dump that matches original submitter's\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=muji","name":"muji","emailAddress":"muji_mu@hotmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Matthew Eash","active":true},"created":"2012-05-04T13:15:22.438-0500","updated":"2012-05-04T13:15:22.438-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/135353/comment/299814","id":"299814","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=plushnikov","name":"plushnikov","emailAddress":"plushnikov@web.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Plushnikov","active":true},"body":"Same for me:\r\nException in thread \"main\" java.lang.StackOverflowError\r\n\tat sun.nio.cs.UTF_8.updatePositions(UTF_8.java:58)\r\n\tat sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:392)\r\n\tat sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:447)\r\n\tat java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:544)\r\n\tat sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:252)\r\n\tat sun.nio.cs.StreamEncoder.write(StreamEncoder.java:106)\r\n\tat java.io.OutputStreamWriter.write(OutputStreamWriter.java:190)\r\n\tat java.io.BufferedWriter.flushBuffer(BufferedWriter.java:111)\r\n\tat java.io.PrintStream.write(PrintStream.java:476)\r\n\tat java.io.PrintStream.print(PrintStream.java:619)\r\n\tat org.apache.maven.cli.PrintStreamLogger.info(PrintStreamLogger.java:110)\r\n\tat org.codehaus.plexus.logging.AbstractLogger.info(AbstractLogger.java:55)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:464)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n\tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:467)\r\n....","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=plushnikov","name":"plushnikov","emailAddress":"plushnikov@web.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Plushnikov","active":true},"created":"2012-05-27T11:37:32.161-0500","updated":"2012-05-27T11:37:32.161-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/135353/comment/308060","id":"308060","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hitesh_22","name":"hitesh_22","emailAddress":"hitesh.h.patel@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Hitesh Patel","active":true},"body":"https://github.com/okamototk/KanonProject/issues/1\r\n\r\nDoing this fixed the problem for me: setting MAVEN_OPTS=\"-Xmx512m -Xms128m -Xss2m\" \r\n\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hitesh_22","name":"hitesh_22","emailAddress":"hitesh.h.patel@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Hitesh Patel","active":true},"created":"2012-09-09T16:04:07.204-0500","updated":"2012-09-09T16:04:07.204-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/135353/comment/308956","id":"308956","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ebann","name":"ebann","emailAddress":"ivan.boelle@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ivan","active":true},"body":"Reproduced too when using \"mvn clean install site-deploy\" on a big multimodules project:\r\n\r\n21:15:49 \tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n21:15:49 \tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\r\n21:15:49 \tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n21:15:49 \tat java.lang.reflect.Method.invoke(Method.java:601)\r\n21:15:49 \tat org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)\r\n21:15:49 \tat org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)\r\n21:15:49 \tat org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:158)\r\n21:15:49 \tat hudson.maven.Maven3Builder.call(Maven3Builder.java:121)\r\n21:15:49 \tat hudson.maven.Maven3Builder.call(Maven3Builder.java:73)\r\n21:15:49 \tat hudson.remoting.UserRequest.perform(UserRequest.java:118)\r\n21:15:49 \tat hudson.remoting.UserRequest.perform(UserRequest.java:48)\r\n21:15:49 \tat hudson.remoting.Request$2.run(Request.java:287)\r\n21:15:49 \tat java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)\r\n21:15:49 \tat java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)\r\n21:15:49 \tat java.util.concurrent.FutureTask.run(FutureTask.java:166)\r\n21:15:49 \tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)\r\n21:15:49 \tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)\r\n21:15:49 \tat java.lang.Thread.run(Thread.java:722)\r\n21:15:49 Caused by: java.lang.StackOverflowError\r\n21:15:49 \tat sun.nio.cs.UTF_8.updatePositions(UTF_8.java:77)\r\n21:15:49 \tat sun.nio.cs.UTF_8$Encoder.encodeArrayLoop(UTF_8.java:564)\r\n21:15:49 \tat sun.nio.cs.UTF_8$Encoder.encodeLoop(UTF_8.java:619)\r\n21:15:49 \tat java.nio.charset.CharsetEncoder.encode(CharsetEncoder.java:561)\r\n21:15:49 \tat sun.nio.cs.StreamEncoder.implWrite(StreamEncoder.java:271)\r\n21:15:49 \tat sun.nio.cs.StreamEncoder.write(StreamEncoder.java:125)\r\n21:15:49 \tat java.io.OutputStreamWriter.write(OutputStreamWriter.java:207)\r\n21:15:49 \tat java.io.BufferedWriter.flushBuffer(BufferedWriter.java:129)\r\n21:15:49 \tat java.io.PrintStream.write(PrintStream.java:526)\r\n21:15:49 \tat java.io.PrintStream.print(PrintStream.java:669)\r\n21:15:49 \tat java.io.PrintStream.println(PrintStream.java:806)\r\n21:15:49 \tat org.apache.maven.cli.PrintStreamLogger.info(PrintStreamLogger.java:111)\r\n21:15:49 \tat org.codehaus.plexus.logging.AbstractLogger.info(AbstractLogger.java:51)\r\n21:15:49 \tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:500)\r\n21:15:49 \tat org.codehaus.plexus.archiver.AbstractArchiver$1.hasNext(AbstractArchiver.java:504)\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ebann","name":"ebann","emailAddress":"ivan.boelle@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ivan","active":true},"created":"2012-09-19T02:25:30.616-0500","updated":"2012-09-19T02:25:30.616-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/135353/comment/309095","id":"309095","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Fixed with unit test in 4ff67988ddb736fc51bd0848a3ea39998dca40c8","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2012-09-19T10:45:58.891-0500","updated":"2012-09-19T10:45:58.891-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/135353/comment/309567","id":"309567","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ebann","name":"ebann","emailAddress":"ivan.boelle@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ivan","active":true},"body":"Where can I found a fixed version of plexus-archiver ?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ebann","name":"ebann","emailAddress":"ivan.boelle@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ivan","active":true},"created":"2012-09-24T02:39:29.437-0500","updated":"2012-09-24T02:39:29.437-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/135353/comment/309571","id":"309571","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"As the \"fix version\" says, version 2.2 or higher from maven central","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2012-09-24T03:14:29.843-0500","updated":"2012-09-24T03:14:29.843-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/135353/comment/309596","id":"309596","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ebann","name":"ebann","emailAddress":"ivan.boelle@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ivan","active":true},"body":"Sorry, my maven-proxy was not updating the central-repository correctly.\r\n\r\nThank you !","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ebann","name":"ebann","emailAddress":"ivan.boelle@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ivan","active":true},"created":"2012-09-24T08:26:52.439-0500","updated":"2012-09-24T08:26:52.439-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-149.json b/jira/PLXUTILS-149.json
new file mode 100644
index 00000000..86ff2fd3
--- /dev/null
+++ b/jira/PLXUTILS-149.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"136447","self":"http://jira.codehaus.org/rest/api/latest/issue/136447","key":"PLXUTILS-149","fields":{"progress":{"progress":0,"total":0},"summary":"CLONE - Copying resources with no modication date silently is ignored","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-149/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rfscholte","name":"rfscholte","emailAddress":"codehaus@sourcegrounds.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=rfscholte&avatarId=10919","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=rfscholte&avatarId=10919","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=rfscholte&avatarId=10919","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=rfscholte&avatarId=10919"},"displayName":"Robert Scholte","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["rfscholte(rfscholte)"],"customfield_10160":null,"updated":"2012-04-27T17:07:21.360-0500","created":"2012-04-27T17:06:01.342-0500","description":"If a file has no last modified date (File.lastModified() == 0), then the plugin just ignore it. This line in the file FileUtils.java of plexus-utils(2.0.5) is wrong:\r\n\r\n{{if ( to.lastModified() < from.lastModified() || overwrite )}}\r\n\r\nIt will be evaluated to {{false}} always if {{overwrite}} flag is not set.\r\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"31013","self":"http://jira.codehaus.org/rest/api/2/issueLink/31013","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"125233","key":"MRESOURCES-145","self":"http://jira.codehaus.org/rest/api/2/issue/125233","fields":{"summary":"Copying resources with no modication date silently is ignored","status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"85708800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-149/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17516","id":"17516","description":"","name":"3.0","archived":false,"released":true,"releaseDate":"2011-06-23"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-15.json b/jira/PLXUTILS-15.json
new file mode 100644
index 00000000..1c726246
--- /dev/null
+++ b/jira/PLXUTILS-15.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"25025","self":"http://jira.codehaus.org/rest/api/latest/issue/25025","key":"PLXUTILS-15","fields":{"progress":{"progress":0,"total":0},"summary":"MXParser is not able to read some XML document since PLX-126","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-15/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14045","id":"14045","description":"","name":"1.0.1","archived":true,"released":true,"releaseDate":"2005-07-10"}],"resolutiondate":"2005-06-22T11:03:49.920-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=sni","name":"sni","emailAddress":"stephane.nicoll@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Stéphane Nicoll","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["evenisse(evenisse)","sni(sni)"],"customfield_10160":null,"updated":"2008-02-02T15:58:58.570-0600","created":"2005-06-21T16:19:57.769-0500","description":"PLX-126 has introduced a bug which is fixed by the attached patch. Explication of the problem follows.\n\nAS described in PLX-126, the idea is to add an encoding and a doctype declaration support for the XMLWriter interface. Unfortunately, this interface is used in two different ways. PrettyPrintXMLWriter is an helper class to output a given XML document to a writer, SerializerXMLWriter might be used to output a document but also a single element.\n\nThe patch applied was assuming that SerialierXMLWriter is ALWAYS managing a whole document. This is not the case since the serializer is given in the constructor. the documentStarted boolean could NOT fulfill its contract.\n\nThe attached patch fixes this problem.\n\n- PrettyPrintXMLWriter is not impacted ; it works properly (provided that one uses it always to ouput a whole document and not a single element)\n- SerializerWMLWriter is impacted, it works as before ; setEnconding throws an IllegalStateEXception as the encoding should be set on the serializer\n\nPlease not that this might require a smal refactoring of the XMLWriter interface ; a mandatory startDocument method could solve all those issues.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"301881600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-15/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/15696","id":"15696","filename":"fix-mxparser.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=sni","name":"sni","emailAddress":"stephane.nicoll@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Stéphane Nicoll","active":true},"created":"2005-06-21T16:19:57.874-0500","size":1732,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/15696/fix-mxparser.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/25025/comment/41846","id":"41846","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=sni","name":"sni","emailAddress":"stephane.nicoll@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Stéphane Nicoll","active":true},"body":"Important note: if you guys consider that the XMLWriter interface is used *BOTH* for a whole document and a single element which will be incorporated in a document; the patch should not be applied.\r\n\r\nInstead I think we should remove the thing which has been applied in PLX-126 because it does not make sense. In this case, please let me know how I can write complete XML document with encoding and docType: I need this to finalize the m2 EAR plugin.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=sni","name":"sni","emailAddress":"stephane.nicoll@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Stéphane Nicoll","active":true},"created":"2005-06-22T02:15:40.724-0500","updated":"2005-06-22T02:15:40.724-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/25025/comment/41882","id":"41882","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"body":"o Rollback PLX-126 changes\r\no you can set encoding and doctype in PrettyPrintXMLWriter constructor","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"created":"2005-06-22T11:03:49.859-0500","updated":"2005-06-22T11:03:49.859-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-150.json b/jira/PLXUTILS-150.json
new file mode 100644
index 00000000..b69730af
--- /dev/null
+++ b/jira/PLXUTILS-150.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"136640","self":"http://jira.codehaus.org/rest/api/latest/issue/136640","key":"PLXUTILS-150","fields":{"progress":{"progress":0,"total":0},"summary":"XMLReader may be fail to load XML containing non-Latin characters in IBM's J9 JVM","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-150/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/6","id":"6","description":"The issue is not a bug","name":"Not A Bug"},"fixVersions":[],"resolutiondate":"2012-06-28T20:27:02.875-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=tan9","name":"tan9","emailAddress":"tangtheone@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10225","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10225","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10225","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10225"},"displayName":"Pei-Tang Huang","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["tan9(tan9)"],"customfield_10160":null,"updated":"2012-06-28T20:27:03.462-0500","created":"2012-05-06T22:30:52.877-0500","description":"org.codehaus.plexus.util.xml.XmlReader.getXmlProlog() may be fail to handle XML containing multibyte character located across the 4096-th byte.\r\n\r\nDue to the strange behavior of IBM J9's\r\n\r\n String(byte[] data, int start, int length, String encoding)\r\n\r\nconstructor implementation. If the length parameter fall on the middle of any multibyte character (Chinese, Japanese, Korean, etc.) The newly created String in IBM's J9 JVM will be length 1, and the numeric value of the only character is -1.\r\n\r\n\r\n\r\nRun \"mvn\" on J9 to the attached pom.xml can reproduce this problem.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"80352000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-150/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":["ibm","j9","jvm","xml"],"workratio":-1,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/59819","id":"59819","filename":"pom.xml","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=tan9","name":"tan9","emailAddress":"tangtheone@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10225","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10225","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10225","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10225"},"displayName":"Pei-Tang Huang","active":true},"created":"2012-05-06T22:30:53.749-0500","size":4555,"mimeType":"text/xml","content":"http://jira.codehaus.org/secure/attachment/59819/pom.xml"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/16412","id":"16412","description":"","name":"2.0.6","archived":false,"released":true,"releaseDate":"2011-02-09"},{"self":"http://jira.codehaus.org/rest/api/2/version/17149","id":"17149","description":"","name":"2.0.7","archived":false,"released":true,"releaseDate":"2011-03-03"},{"self":"http://jira.codehaus.org/rest/api/2/version/17364","id":"17364","description":"","name":"2.1","archived":false,"released":true,"releaseDate":"2011-06-09"},{"self":"http://jira.codehaus.org/rest/api/2/version/17516","id":"17516","description":"","name":"3.0","archived":false,"released":true,"releaseDate":"2011-06-23"}],"customfield_10170":null,"environment":"IBM J9 VM (build 2.4, JRE 1.6.0 IBM J9 2.4 Windows 7 amd64-64 jvmwa6460sr9-20110726_87724 (JIT enabled, AOT enabled)","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/136640/comment/302154","id":"302154","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=tan9","name":"tan9","emailAddress":"tangtheone@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10225","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10225","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10225","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10225"},"displayName":"Pei-Tang Huang","active":true},"body":"I can confirm that this problem is gone under IBM's J9 build pwa6460sr10fp1-20120321_01(SR10 FP1).","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=tan9","name":"tan9","emailAddress":"tangtheone@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10225","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10225","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10225","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10225"},"displayName":"Pei-Tang Huang","active":true},"created":"2012-06-28T20:26:25.964-0500","updated":"2012-06-28T20:26:25.964-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/136640/comment/302155","id":"302155","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=tan9","name":"tan9","emailAddress":"tangtheone@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10225","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10225","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10225","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10225"},"displayName":"Pei-Tang Huang","active":true},"body":"IBM's J9 fixed.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=tan9","name":"tan9","emailAddress":"tangtheone@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10225","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10225","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10225","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10225"},"displayName":"Pei-Tang Huang","active":true},"created":"2012-06-28T20:27:03.301-0500","updated":"2012-06-28T20:27:03.301-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-151.json b/jira/PLXUTILS-151.json
new file mode 100644
index 00000000..1806cd19
--- /dev/null
+++ b/jira/PLXUTILS-151.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"137589","self":"http://jira.codehaus.org/rest/api/latest/issue/137589","key":"PLXUTILS-151","fields":{"progress":{"progress":0,"total":0},"summary":"FileUtils.deleteDirectory() attempts to traverse symlinks, then fails when it encounters a file it can't delete","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-151/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/18570","id":"18570","name":"3.0.2","archived":false,"released":true,"releaseDate":"2012-07-09"}],"resolutiondate":"2012-06-05T17:56:20.682-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=minfrin","name":"minfrin","emailAddress":"minfrin@sharp.fm","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Graham Leggett","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["minfrin(minfrin)","olamy(olamy)"],"customfield_10160":null,"updated":"2012-06-05T17:57:44.973-0500","created":"2012-06-05T16:39:38.299-0500","description":"When deleteDirectory() walks the tree in an attempt to delete directories, it follows symbolic links. If the symlink points somewhere read only, the attempt to delete fails.\r\n\r\nThis renders it impossible to use symlinks with the rpm-maven-plugin when the symlinks point at the filesystem outside the build in http://jira.codehaus.org/browse/MRPM-115.\r\n\r\nThe fix is to attempt to delete the directory before attempting to delete children, and bypass the children walk if the delete succeeded. This removes symlinks safely without traversing them accidentally.\r\n\r\n{code}\r\nIndex: src/main/java/org/codehaus/plexus/util/FileUtils.java\r\n===================================================================\r\n--- src/main/java/org/codehaus/plexus/util/FileUtils.java\t(revision 8799)\r\n+++ src/main/java/org/codehaus/plexus/util/FileUtils.java\t(working copy)\r\n@@ -1567,6 +1567,14 @@\r\n return;\r\n }\r\n \r\n+ /* try delete the directory before its contents, which will take\r\n+ * care of any directories that are really symbolic links.\r\n+ */\r\n+ if ( directory.delete() )\r\n+ {\r\n+ \treturn;\r\n+ }\r\n+\r\n cleanDirectory( directory );\r\n if ( !directory.delete() )\r\n {\r\n{code}\r\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"82339200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-151/watchers","watchCount":2,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17516","id":"17516","description":"","name":"3.0","archived":false,"released":true,"releaseDate":"2011-06-23"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":"java version \"1.6.0_06\"\r\nJava(TM) SE Runtime Environment (build 1.6.0_06-b02)\r\nJava HotSpot(TM) 64-Bit Server VM (build 10.0-b22, mixed mode)\r\n","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":4,"total":4,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/137589/comment/300451","id":"300451","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"note sources are now hosted here: github.com/sonatype/plexus-utils\r\nSo you can play with a pull request","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2012-06-05T17:33:49.636-0500","updated":"2012-06-05T17:33:49.636-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/137589/comment/300452","id":"300452","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=minfrin","name":"minfrin","emailAddress":"minfrin@sharp.fm","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Graham Leggett","active":true},"body":"The patch applied cleanly to the git clone that I created and all tests still passed. I need to reread the git docs yet again to figure out how pull requests work, sigh.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=minfrin","name":"minfrin","emailAddress":"minfrin@sharp.fm","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Graham Leggett","active":true},"created":"2012-06-05T17:40:51.222-0500","updated":"2012-06-05T17:40:51.222-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/137589/comment/300454","id":"300454","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"ok NP I will use that.\r\nBut take a look on how fork a project :P","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2012-06-05T17:49:49.468-0500","updated":"2012-06-05T17:49:49.468-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/137589/comment/300456","id":"300456","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"fixed https://github.com/sonatype/plexus-utils/commit/4305d47b13c97bfddbef11d684e882261a292e3a","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2012-06-05T17:56:20.825-0500","updated":"2012-06-05T17:56:20.825-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-152.json b/jira/PLXUTILS-152.json
new file mode 100644
index 00000000..5e01e5c7
--- /dev/null
+++ b/jira/PLXUTILS-152.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"139308","self":"http://jira.codehaus.org/rest/api/latest/issue/139308","key":"PLXUTILS-152","fields":{"progress":{"progress":0,"total":0},"summary":"Shell fails to escape quotes in arguments","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-152/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/18702","id":"18702","name":"3.0.3","archived":false,"released":true,"releaseDate":"2012-08-01"},{"self":"http://jira.codehaus.org/rest/api/2/version/18703","id":"18703","name":"3.0.4","archived":false,"released":true,"releaseDate":"2012-08-06"}],"resolutiondate":"2012-08-10T09:57:41.241-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mahoney266","name":"mahoney266","emailAddress":"rob@lidalia.org.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Rob Elliot","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["krosenvold(krosenvold)","mahoney266(mahoney266)"],"customfield_10160":null,"updated":"2012-08-10T09:57:41.327-0500","created":"2012-07-31T18:23:01.986-0500","description":"The function getRawCommandLine incorrectly uses the escaping settings for the *executable* rather than the *arguments* when deciding what characters to escape in an argument. In the bourne shell this results in quotes within an argument not being escaped when the argument is quoted.\r\n\r\nThis is preventing me using the Maven release plugin as I need to pass a gpg passphrase containing single quotes.\r\n\r\nSee git hub pull request https://github.com/sonatype/plexus-utils/pull/5 which contains a unit test demonstrating the issue & a fix.\r\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"31577","self":"http://jira.codehaus.org/rest/api/2/issueLink/31577","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"inwardIssue":{"id":"132059","key":"PLXUTILS-145","self":"http://jira.codehaus.org/rest/api/2/issue/132059","fields":{"summary":"org.codehaus.plexus.util.cli.shell.Shell#getRawCommandLine(String, String[]) passes #is[Single|Double]QuotedExecutableEscaped() to #getEscapeChars() for arguments","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"31578","self":"http://jira.codehaus.org/rest/api/2/issueLink/31578","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"inwardIssue":{"id":"104675","key":"PLXUTILS-123","self":"http://jira.codehaus.org/rest/api/2/issue/104675","fields":{"summary":"Shell uses doubleQuotedExecutableEscaped instead of doubleQuotedArgumentEscaped ","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/5","iconUrl":"http://jira.codehaus.org/images/icons/priorities/trivial.png","name":"Trivial","id":"5"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"31573","self":"http://jira.codehaus.org/rest/api/2/issueLink/31573","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"inwardIssue":{"id":"133015","key":"PLXUTILS-146","self":"http://jira.codehaus.org/rest/api/2/issue/133015","fields":{"summary":"CLI: Quoting for arguments considers 'isSingleQuotedExecutableEscaped' instead of 'isSingleQuotedArgumentEscaped'","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/5","iconUrl":"http://jira.codehaus.org/images/icons/priorities/trivial.png","name":"Trivial","id":"5"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"31581","self":"http://jira.codehaus.org/rest/api/2/issueLink/31581","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"139309","key":"MRELEASE-785","self":"http://jira.codehaus.org/rest/api/2/issue/139309","fields":{"summary":"Arguments containing spaces and quotes cause the forked maven process to fail","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"77328000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-152/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17516","id":"17516","description":"","name":"3.0","archived":false,"released":true,"releaseDate":"2011-06-23"},{"self":"http://jira.codehaus.org/rest/api/2/version/17517","id":"17517","description":"","name":"3.0.1","archived":false,"released":true,"releaseDate":"2012-04-03"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":"All","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":6,"total":6,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/139308/comment/305127","id":"305127","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Fixed in ef26d83d3b6638ebfc0ac550e413c89ab98723ff, thanks for the patch!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2012-08-01T02:22:19.615-0500","updated":"2012-08-01T02:22:19.615-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/139308/comment/305198","id":"305198","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mahoney266","name":"mahoney266","emailAddress":"rob@lidalia.org.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Rob Elliot","active":true},"body":"Fantastic, thanks. Is it possible to give an estimate on when a fixed version might be released to maven central?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mahoney266","name":"mahoney266","emailAddress":"rob@lidalia.org.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Rob Elliot","active":true},"created":"2012-08-01T13:13:36.482-0500","updated":"2012-08-01T13:13:36.482-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/139308/comment/305214","id":"305214","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"3.0.3 is estimated to be visible in central in 4 hours or less.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2012-08-01T16:19:59.638-0500","updated":"2012-08-01T16:19:59.638-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/139308/comment/305270","id":"305270","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mahoney266","name":"mahoney266","emailAddress":"rob@lidalia.org.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Rob Elliot","active":true},"body":"Unfortunately the quote mechanism is insufficient even when invoked. For a bourne shell it now escapes:\r\n\r\necho 'here's my string'\r\n\r\nas\r\n\r\necho 'here\\'s my string'\r\n\r\nThis is incorrect - it should be\r\n\r\necho 'here'\\''s my string'\r\n\r\nSee http://wiki.bash-hackers.org/syntax/quoting#strong_quoting\r\n\r\nApologies, I should have given this a proper end to end test before submitting the pull request rather than just a unit test.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mahoney266","name":"mahoney266","emailAddress":"rob@lidalia.org.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Rob Elliot","active":true},"created":"2012-08-02T03:42:57.493-0500","updated":"2012-08-02T03:42:57.493-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/139308/comment/305280","id":"305280","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Want to submit another pull request ?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2012-08-02T05:00:33.239-0500","updated":"2012-08-02T05:00:33.239-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/139308/comment/305404","id":"305404","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mahoney266","name":"mahoney266","emailAddress":"rob@lidalia.org.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Rob Elliot","active":true},"body":"Done - https://github.com/sonatype/plexus-utils/pull/6. I have also tested this one and it works as expected.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mahoney266","name":"mahoney266","emailAddress":"rob@lidalia.org.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Rob Elliot","active":true},"created":"2012-08-02T18:40:31.550-0500","updated":"2012-08-02T18:40:31.550-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-153.json b/jira/PLXUTILS-153.json
new file mode 100644
index 00000000..3412f224
--- /dev/null
+++ b/jira/PLXUTILS-153.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"140485","self":"http://jira.codehaus.org/rest/api/latest/issue/140485","key":"PLXUTILS-153","fields":{"progress":{"progress":0,"total":0},"summary":"Use Java NIO for FileUtils.copyFile","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-153/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/18787","id":"18787","name":"3.0.6","archived":false,"released":true,"releaseDate":"2012-09-15"},{"self":"http://jira.codehaus.org/rest/api/2/version/18788","id":"18788","name":"3.0.7","archived":false,"released":true,"releaseDate":"2012-09-16"}],"resolutiondate":"2012-09-15T05:40:23.349-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=usultis","name":"usultis","emailAddress":"usultis@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ryszard Perkowski","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["krosenvold(krosenvold)","usultis(usultis)"],"customfield_10160":null,"updated":"2012-09-17T05:01:57.960-0500","created":"2012-09-14T16:35:55.320-0500","description":"Copying files could be made more efficient and less cpu intensive with Java NIO. Changes have been already made in commons-io and it would be beneficial to follow the same path in Plexus Utils.\r\n\r\nIt makes a difference especially with maven-war-plugin and similar maven plugins where large number of files copy operation is involved.\r\n\r\nBenefits are described here:\r\nhttp://java.dzone.com/articles/file-copy-java-%E2%80%93-benchmark\r\nhttp://www.javalobby.org/java/forums/t17036.html?start=0\r\n\r\nI'm also in favour of syncing with commons-io (PLXUTILS-21) but if it's a big task, in the meantime I would like this problem to be addressed as it saves time during maven builds.\r\n\r\nPatch contains changes merged from latest release of commons-io","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"73612800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-153/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":["copy","cpu","file","nio","performance"],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/61273","id":"61273","filename":"fileUtils-copy-nio.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=usultis","name":"usultis","emailAddress":"usultis@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ryszard Perkowski","active":true},"created":"2012-09-14T16:35:55.495-0500","size":114868,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/61273/fileUtils-copy-nio.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/140485/comment/308570","id":"308570","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Fixed in a5b09677d9fdb82512edfb80e14f53ae03025e83, thanks for the patch!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2012-09-15T05:40:23.395-0500","updated":"2012-09-15T05:40:23.395-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-154.json b/jira/PLXUTILS-154.json
new file mode 100644
index 00000000..46266ea6
--- /dev/null
+++ b/jira/PLXUTILS-154.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"142151","self":"http://jira.codehaus.org/rest/api/latest/issue/142151","key":"PLXUTILS-154","fields":{"progress":{"progress":0,"total":0},"summary":"Xpp3DomBuilder should support xml:space=\"preserve\"","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-154/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/18878","id":"18878","name":"3.0.9","archived":false,"released":true,"releaseDate":"2012-11-18"}],"resolutiondate":"2012-11-18T06:13:50.653-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["hboutemy(hboutemy)"],"customfield_10160":null,"updated":"2012-11-18T06:13:50.823-0600","created":"2012-11-18T06:00:27.968-0600","description":"required for MODELLO-263","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"32215","self":"http://jira.codehaus.org/rest/api/2/issueLink/32215","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"142150","key":"MODELLO-263","self":"http://jira.codehaus.org/rest/api/2/issue/142150","fields":{"summary":"support xml:space=\"preserve\" for DOM fields","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"68083200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-154/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/18877","id":"18877","name":"3.0.8","archived":false,"released":true,"releaseDate":"2012-09-20"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/142151/comment/313821","id":"313821","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"done in [d7b3c8ae2bd8947f5fce395c87324030d3d0497c|https://github.com/sonatype/plexus-utils/commit/d7b3c8ae2bd8947f5fce395c87324030d3d0497c]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2012-11-18T06:13:50.821-0600","updated":"2012-11-18T06:13:50.821-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-155.json b/jira/PLXUTILS-155.json
new file mode 100644
index 00000000..f3d18615
--- /dev/null
+++ b/jira/PLXUTILS-155.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"142383","self":"http://jira.codehaus.org/rest/api/latest/issue/142383","key":"PLXUTILS-155","fields":{"progress":{"progress":0,"total":0},"summary":"CommandLineUtils.getSystemEnvVars does not preopely handle process streams","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-155/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17518","id":"17518","description":"","name":"3.1","archived":false,"released":false}],"resolutiondate":"2012-11-28T04:52:27.653-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["krosenvold(krosenvold)","olamy(olamy)"],"customfield_10160":null,"updated":"2012-11-28T04:54:20.782-0600","created":"2012-11-28T04:40:31.335-0600","description":"The method does not use the established and well-functioning forking code in CommandLine, but instead tries to write its own code. \r\n\r\nThis code does not work, and the method should be updated to use the \"correct\" \r\nexecuteCommandLine implementatiojn instead of trying to reimplement this stuff which is almost impossible to get right ;)\r\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"32261","self":"http://jira.codehaus.org/rest/api/2/issueLink/32261","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"142365","key":"MDEP-391","self":"http://jira.codehaus.org/rest/api/2/issue/142365","fields":{"summary":"Unpack fails on linux with large archives","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"67219200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-155/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/18878","id":"18878","name":"3.0.9","archived":false,"released":true,"releaseDate":"2012-11-18"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/142383/comment/314540","id":"314540","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Fixed in 6a2ad293e18e9ab51d686377be6314d2c5143301 by removing pre-jdk 1.5 logic","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2012-11-28T04:52:28.028-0600","updated":"2012-11-28T04:52:28.028-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/142383/comment/314541","id":"314541","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"AFAIK we test if System.getenv is available so folks with 1.5 or more must not fork a cli to get env vars.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2012-11-28T04:54:20.779-0600","updated":"2012-11-28T04:54:20.779-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-156.json b/jira/PLXUTILS-156.json
new file mode 100644
index 00000000..cdc789d8
--- /dev/null
+++ b/jira/PLXUTILS-156.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"142924","self":"http://jira.codehaus.org/rest/api/latest/issue/142924","key":"PLXUTILS-156","fields":{"progress":{"progress":0,"total":0},"summary":"Cannot set environment variables under OSX","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-156/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/19006","id":"19006","name":"3.0.10","archived":false,"released":true,"releaseDate":"2012-11-28"}],"resolutiondate":"2012-12-19T23:55:30.320-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=cowwoc","name":"cowwoc","emailAddress":"cowwoc@bbs.darktech.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Gili","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["cowwoc(cowwoc)","krosenvold(krosenvold)"],"customfield_10160":null,"updated":"2012-12-20T01:26:12.573-0600","created":"2012-12-19T23:19:39.329-0600","description":"When I attempt to perform releases under OSX I get the following exception:\r\n\r\n{code}\r\norg.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.1:perform (default-cli) on project cmake: An error is occurred in the checkout process: Exception while executing SCM command.\r\n\tat org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)\r\n\tat org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)\r\n\tat org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)\r\n\tat org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)\r\n\tat org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)\r\n\tat org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)\r\n\tat org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)\r\n\tat org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320)\r\n\tat org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)\r\n\tat org.jvnet.hudson.maven3.launcher.Maven3Launcher.main(Maven3Launcher.java:79)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\r\n\tat sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)\r\n\tat sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)\r\n\tat java.lang.reflect.Method.invoke(Method.java:601)\r\n\tat org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)\r\n\tat org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)\r\n\tat org.jvnet.hudson.maven3.agent.Maven3Main.launch(Maven3Main.java:158)\r\n\tat hudson.maven.Maven3Builder.call(Maven3Builder.java:98)\r\n\tat hudson.maven.Maven3Builder.call(Maven3Builder.java:64)\r\n\tat hudson.remoting.UserRequest.perform(UserRequest.java:118)\r\n\tat hudson.remoting.UserRequest.perform(UserRequest.java:48)\r\n\tat hudson.remoting.Request$2.run(Request.java:326)\r\n\tat hudson.remoting.InterceptingExecutorService$1.call(InterceptingExecutorService.java:72)\r\n\tat java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)\r\n\tat java.util.concurrent.FutureTask.run(FutureTask.java:166)\r\n\tat java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)\r\n\tat java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)\r\n\tat java.lang.Thread.run(Thread.java:722)\r\nCaused by: org.apache.maven.plugin.MojoExecutionException: An error is occurred in the checkout process: Exception while executing SCM command.\r\n\tat org.apache.maven.plugins.release.PerformReleaseMojo.execute(PerformReleaseMojo.java:136)\r\n\tat org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)\r\n\tat org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)\r\n\t... 27 more\r\nCaused by: org.apache.maven.shared.release.ReleaseExecutionException: An error is occurred in the checkout process: Exception while executing SCM command.\r\n\tat org.apache.maven.shared.release.phase.CheckoutProjectFromScm.execute(CheckoutProjectFromScm.java:151)\r\n\tat org.apache.maven.shared.release.DefaultReleaseManager.perform(DefaultReleaseManager.java:343)\r\n\tat org.apache.maven.shared.release.DefaultReleaseManager.perform(DefaultReleaseManager.java:289)\r\n\tat org.apache.maven.shared.release.DefaultReleaseManager.perform(DefaultReleaseManager.java:269)\r\n\tat org.apache.maven.plugins.release.PerformReleaseMojo.execute(PerformReleaseMojo.java:132)\r\n\t... 29 more\r\nCaused by: org.apache.maven.scm.ScmException: Exception while executing SCM command.\r\n\tat org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:63)\r\n\tat org.apache.maven.scm.provider.hg.HgScmProvider.checkout(HgScmProvider.java:230)\r\n\tat org.apache.maven.scm.provider.AbstractScmProvider.checkOut(AbstractScmProvider.java:426)\r\n\tat org.apache.maven.scm.provider.AbstractScmProvider.checkOut(AbstractScmProvider.java:403)\r\n\tat org.apache.maven.shared.release.phase.CheckoutProjectFromScm.execute(CheckoutProjectFromScm.java:143)\r\n\t... 33 more\r\nCaused by: org.apache.maven.scm.ScmException: Command could not be executed: /bin/sh -c cd /Users/builds/.jenkins/workspace/cmake/target && hg clone -r release-2.8.10-b1 https://cmake-maven-project.googlecode.com/hg/ /Users/builds/.jenkins/workspace/cmake/target/checkout\r\n\tat org.apache.maven.scm.provider.hg.HgUtils.executeCmd(HgUtils.java:163)\r\n\tat org.apache.maven.scm.provider.hg.HgUtils.execute(HgUtils.java:85)\r\n\tat org.apache.maven.scm.provider.hg.command.checkout.HgCheckOutCommand.executeCheckOutCommand(HgCheckOutCommand.java:78)\r\n\tat org.apache.maven.scm.command.checkout.AbstractCheckOutCommand.executeCommand(AbstractCheckOutCommand.java:81)\r\n\tat org.apache.maven.scm.command.AbstractCommand.execute(AbstractCommand.java:59)\r\n\t... 37 more\r\nCaused by: org.codehaus.plexus.util.cli.CommandLineException: Error setting up environmental variables\r\n\tat org.codehaus.plexus.util.cli.Commandline.getEnvironmentVariables(Commandline.java:468)\r\n\tat org.codehaus.plexus.util.cli.Commandline.execute(Commandline.java:630)\r\n\tat org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:118)\r\n\tat org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:93)\r\n\tat org.apache.maven.scm.provider.hg.HgUtils.executeCmd(HgUtils.java:159)\r\n\t... 41 more\r\nCaused by: java.io.IOException: Cannot run program \"env\": error=2, No such file or directory\r\n\tat java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)\r\n\tat java.lang.Runtime.exec(Runtime.java:615)\r\n\tat java.lang.Runtime.exec(Runtime.java:448)\r\n\tat java.lang.Runtime.exec(Runtime.java:345)\r\n\tat org.codehaus.plexus.util.cli.CommandLineUtils.getSystemEnvVars(CommandLineUtils.java:260)\r\n\tat org.codehaus.plexus.util.cli.CommandLineUtils.getSystemEnvVars(CommandLineUtils.java:226)\r\n\tat org.codehaus.plexus.util.cli.Commandline.addSystemEnvironment(Commandline.java:444)\r\n\tat org.codehaus.plexus.util.cli.Commandline.getEnvironmentVariables(Commandline.java:464)\r\n\t... 45 more\r\nCaused by: java.io.IOException: error=2, No such file or directory\r\n\tat java.lang.UNIXProcess.forkAndExec(Native Method)\r\n\tat java.lang.UNIXProcess.(UNIXProcess.java:135)\r\n\tat java.lang.ProcessImpl.start(ProcessImpl.java:130)\r\n\tat java.lang.ProcessBuilder.start(ProcessBuilder.java:1021)\r\n\t... 52 more\r\n{code}\r\n\r\nAs you can see, the release plugin depends on Plexus Utils and it fails trying to set environment variables.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"65318400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-156/watchers","watchCount":2,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/18877","id":"18877","name":"3.0.8","archived":false,"released":true,"releaseDate":"2012-09-20"}],"customfield_10170":null,"environment":"OSX 10.8.2","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":4,"total":4,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/142924/comment/315978","id":"315978","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=cowwoc","name":"cowwoc","emailAddress":"cowwoc@bbs.darktech.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Gili","active":true},"body":"According to http://youtrack.jetbrains.com/issue/IDEA-52448 \"env\" might not in the PATH. In my case, I see it in /usr/bin/env. It *seems* to be on my PATH.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=cowwoc","name":"cowwoc","emailAddress":"cowwoc@bbs.darktech.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Gili","active":true},"created":"2012-12-19T23:49:37.041-0600","updated":"2012-12-19T23:49:37.041-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/142924/comment/315979","id":"315979","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"This issue is already fixed for 3.0.10, you can upgrade the dependency in the plugin","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2012-12-19T23:55:30.596-0600","updated":"2012-12-19T23:55:30.596-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/142924/comment/315980","id":"315980","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=cowwoc","name":"cowwoc","emailAddress":"cowwoc@bbs.darktech.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Gili","active":true},"body":"Hi Kristian,\r\n\r\nThank you for the quick reply. How do I upgrade the dependency in the plugin (seeing as I did not author it)?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=cowwoc","name":"cowwoc","emailAddress":"cowwoc@bbs.darktech.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Gili","active":true},"created":"2012-12-19T23:59:57.982-0600","updated":"2012-12-19T23:59:57.982-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/142924/comment/315982","id":"315982","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=cowwoc","name":"cowwoc","emailAddress":"cowwoc@bbs.darktech.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Gili","active":true},"body":"Here is what worked for me (in case anyone else runs across this bug report). Simply add this to your pom.xml file:\r\n\r\n{code}\r\n \r\n org.apache.maven.plugins\r\n maven-release-plugin\r\n 2.4\r\n \r\n \r\n org.codehaus.plexus\r\n plexus-utils\r\n 3.0.10\r\n \r\n \r\n \r\n{code}","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=cowwoc","name":"cowwoc","emailAddress":"cowwoc@bbs.darktech.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Gili","active":true},"created":"2012-12-20T01:26:12.453-0600","updated":"2012-12-20T01:26:12.453-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-157.json b/jira/PLXUTILS-157.json
new file mode 100644
index 00000000..777eed0b
--- /dev/null
+++ b/jira/PLXUTILS-157.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"143855","self":"http://jira.codehaus.org/rest/api/latest/issue/143855","key":"PLXUTILS-157","fields":{"progress":{"progress":0,"total":0},"summary":"MXParser.getText() creates strings without intern()","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-157/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=j.kubrynski","name":"j.kubrynski","emailAddress":"jkubrynski@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jakub Kubrynski","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["j.kubrynski(j.kubrynski)","krosenvold(krosenvold)","mkleint(mkleint)","mcculls(mcculls)"],"customfield_10160":null,"updated":"2013-03-12T02:53:26.233-0500","created":"2013-01-30T16:46:22.833-0600","description":"As in summary. Creating new string each time the method is executed results in PermGen error.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"58233600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-157/watchers","watchCount":4,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":5,"total":5,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/143855/comment/321780","id":"321780","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Since we love numbers, I quickly instrumented p-u to see which texts were being created in an arbitrary multi-module build. The following list strings which were instantiated;\r\n\r\n(The first few are whitespace combos and do not render well in jira)\r\n\r\n\r\n\t\t\t\t\t\t:324\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n :632\r\n :614\r\n :673\r\n :292\r\n :1494\r\n :1589\r\n :2249\r\n :2822\r\n :3065\r\n :7480\r\n :3608\r\n :1973\r\n :650\r\n${jetty.version}:314\r\n${plexus.utils.version}:210\r\n${project.version}:1136\r\n${spring.version}:405\r\n+1:310\r\n1.0-SNAPSHOT:221\r\n1.0:326\r\n1.1:244\r\n1.3:289\r\n1.4:298\r\n1.5:396\r\n1.7:202\r\n2.1:300\r\n2.2:261\r\n2.3:275\r\n2.4:263\r\n2.5:314\r\n4.0.0:917\r\nASF:248\r\nCommitter:395\r\nDeveloper:327\r\nJava Developer:222\r\nPMC Member:412\r\nString usage report\r\nUTF-8:240\r\nboolean:221\r\ncommons-logging:254\r\ncompile:254\r\ndefault:286\r\nfalse:1681\r\njar:969\r\njava.lang.String:203\r\njunit:794\r\nlog4j:230\r\nmaven-assembly-plugin:282\r\nmaven-compiler-plugin:318\r\nmaven-gpg-plugin:240\r\nmaven-jar-plugin:314\r\nmaven-javadoc-plugin:523\r\nmaven-jxr-plugin:205\r\nmaven-pmd-plugin:202\r\nmaven-release-plugin:275\r\nmaven-site-plugin:349\r\nmaven-source-plugin:308\r\nmaven-surefire-plugin:386\r\norg.apache.maven.doxia:206\r\norg.apache.maven.plugins:4072\r\norg.apache.maven.wagon:318\r\norg.apache.maven:575\r\norg.apache.wicket:360\r\norg.codehaus.mojo:576\r\norg.codehaus.plexus:1047\r\norg.eclipse.jetty:392\r\norg.seleniumhq.selenium:215\r\norg.slf4j:361\r\norg.springframework:638\r\npackage:230\r\nplexus-utils:383\r\npom:427\r\nprovided:383\r\nrepo:213\r\ntest:1049\r\ntrue:3104\r\n\r\n\r\nlargeDuped = 59770 (number of strings that were instantiated > 200 times)\r\ntotalLarge = 764801 (total #chars that were allocated as a consequence (string.length * numallocs)\r\n\r\noverallDuped = 128597 All strings that were instantiated\r\ntotalOverall = 2230676 #total allocated #chars \r\n\r\nI made no attempt to study who was retaining strings, but it seems fairly obvious that groupid and artifactid are retained...\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2013-03-11T12:55:08.704-0500","updated":"2013-03-11T12:59:32.096-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/143855/comment/321781","id":"321781","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Please note there is some interesting history/discussion at https://github.com/sonatype/plexus-utils/pull/9","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2013-03-11T12:57:56.807-0500","updated":"2013-03-11T12:57:56.807-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/143855/comment/321789","id":"321789","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkleint","name":"mkleint","emailAddress":"mkleint@codehaus.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Milos Kleint","active":true},"body":"no matter what the solution, for IDE embedding would be great if there were a way share the strings across invokations. eg 20 inter-related projects are likely to share quite a deal of strings but each is loaded individually.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkleint","name":"mkleint","emailAddress":"mkleint@codehaus.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Milos Kleint","active":true},"created":"2013-03-11T15:30:03.526-0500","updated":"2013-03-11T15:30:03.526-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/143855/comment/321794","id":"321794","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mcculls","name":"mcculls","emailAddress":"mcculls@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Stuart McCulloch","active":true},"body":"I think the modello generator is a good candidate - it generates code that uses MXParser to construct in-memory models and it already has a per-element option to trim strings. A similar per-element intern option would let you specify which elements of the model should be interned (such as the groupId) on a case-by-case basis.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mcculls","name":"mcculls","emailAddress":"mcculls@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Stuart McCulloch","active":true},"created":"2013-03-11T16:06:20.581-0500","updated":"2013-03-11T16:06:20.581-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/143855/comment/321802","id":"321802","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"The numbers in my simple test would seem to indicate approximately 5-10mb generated strings for this arbitrary build. As I understand this, interning a portion of these would simply lead to these being gc'ed on the young generation as opposed to growing older, for a slight drop in overall memory usage for a slight incerease in cpu usage for interning. While it is certainly worth looking into, I am somewhat sceptical to the overall gains in terms of performance; I would definitely like to see some real numbers before making any such flag a reality. I am assuming that we keep references to everything in the pom files, which would seem to indicate interning *whitespace* would be the biggest win ;)","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2013-03-12T02:53:26.233-0500","updated":"2013-03-12T02:53:26.233-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-158.json b/jira/PLXUTILS-158.json
new file mode 100644
index 00000000..9bde90a2
--- /dev/null
+++ b/jira/PLXUTILS-158.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"146568","self":"http://jira.codehaus.org/rest/api/latest/issue/146568","key":"PLXUTILS-158","fields":{"progress":{"progress":0,"total":0},"summary":"maven-plugin-api:3.0.3 uses different version of org.codehaus.plexus:plexus-utils","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-158/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michibk","name":"michibk","emailAddress":"mbiarnes@redhat.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Biarnes","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["michibk(michibk)"],"customfield_10160":null,"updated":"2013-06-06T09:08:23.288-0500","created":"2013-06-06T09:08:23.288-0500","description":"we use the maven-plugin-api 3.0.3 in our project and as you can see this has different versions of transient dependencies of plexus-utils.\r\n\r\n[WARNING] Rule 2: org.apache.maven.plugins.enforcer.RequireUpperBoundDeps failed with message:\r\nFailed while enforcing RequireUpperBoundDeps. The error(s) are [\r\nRequire upper bound dependencies error for org.codehaus.plexus:plexus-utils:2.0.6 paths to dependency are:\r\n+-org.drools:drools-maven-plugin:6.0.0-SNAPSHOT\r\n +-org.apache.maven:maven-plugin-api:3.0.3\r\n +-org.apache.maven:maven-model:3.0.3\r\n +-org.codehaus.plexus:plexus-utils:2.0.6\r\nand\r\n+-org.drools:drools-maven-plugin:6.0.0-SNAPSHOT\r\n +-org.apache.maven:maven-plugin-api:3.0.3\r\n +-org.apache.maven:maven-artifact:3.0.3\r\n +-org.codehaus.plexus:plexus-utils:2.0.6\r\nand\r\n+-org.drools:drools-maven-plugin:6.0.0-SNAPSHOT\r\n +-org.apache.maven:maven-plugin-api:3.0.3\r\n +-org.sonatype.sisu:sisu-inject-plexus:2.1.1\r\n +-org.codehaus.plexus:plexus-utils:2.0.5\r\nand\r\n+-org.drools:drools-maven-plugin:6.0.0-SNAPSHOT\r\n +-org.apache.maven.plugin-testing:maven-plugin-testing-harness:2.1\r\n +-org.codehaus.plexus:plexus-archiver:2.2\r\n +-org.codehaus.plexus:plexus-utils:3.0.7\r\nand\r\n+-org.drools:drools-maven-plugin:6.0.0-SNAPSHOT\r\n +-org.apache.maven.plugin-testing:maven-plugin-testing-harness:2.1\r\n +-org.codehaus.plexus:plexus-archiver:2.2\r\n +-org.codehaus.plexus:plexus-container-default:1.0-alpha-9-stable-1\r\n +-org.codehaus.plexus:plexus-utils:1.0.4\r\nand\r\n+-org.drools:drools-maven-plugin:6.0.0-SNAPSHOT\r\n +-org.apache.maven.plugin-testing:maven-plugin-testing-harness:2.1\r\n +-org.codehaus.plexus:plexus-archiver:2.2\r\n +-org.codehaus.plexus:plexus-io:2.0.4\r\n +-org.codehaus.plexus:plexus-utils:3.0\r\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"50803200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-158/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"lenovo laptop 16G RAM, Fedora 17","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-159.json b/jira/PLXUTILS-159.json
new file mode 100644
index 00000000..92c23462
--- /dev/null
+++ b/jira/PLXUTILS-159.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"146897","self":"http://jira.codehaus.org/rest/api/latest/issue/146897","key":"PLXUTILS-159","fields":{"progress":{"progress":0,"total":0},"summary":"Verify length of cmdline per OS","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-159/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rfscholte","name":"rfscholte","emailAddress":"codehaus@sourcegrounds.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=rfscholte&avatarId=10919","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=rfscholte&avatarId=10919","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=rfscholte&avatarId=10919","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=rfscholte&avatarId=10919"},"displayName":"Robert Scholte","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["rfscholte(rfscholte)"],"customfield_10160":null,"updated":"2013-09-26T14:43:52.530-0500","created":"2013-06-20T13:22:46.586-0500","description":"SCM-723 is an interresting issue: the cmdline fails and the first analyse by the user is that there's a quoting issue. In the end it was the length of the commandline.\r\nPer OS the total length of the cmdline is restricted. It would help a lot if the user was warned when the cmdline exceeds the max length.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"41040000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-159/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/19006","id":"19006","name":"3.0.10","archived":false,"released":true,"releaseDate":"2012-11-28"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/146897/comment/333345","id":"333345","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rfscholte","name":"rfscholte","emailAddress":"codehaus@sourcegrounds.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=rfscholte&avatarId=10919","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=rfscholte&avatarId=10919","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=rfscholte&avatarId=10919","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=rfscholte&avatarId=10919"},"displayName":"Robert Scholte","active":true},"body":"Here's an interesting link: http://msdn.microsoft.com/en-us/library/windows/desktop/aa365247(v=vs.85).aspx\r\n{quote}\r\nMaximum Path Length Limitation\r\n\r\nIn the Windows API (with some exceptions discussed in the following paragraphs), the maximum length for a path is MAX_PATH, which is defined as 260 characters. A local path is structured in the following order: drive letter, colon, backslash, name components separated by backslashes, and a terminating null character. For example, the maximum path on drive D is \"D:\\some 256-character path string\" where \"\" represents the invisible terminating null character for the current system codepage. (The characters < > are used here for visual clarity and cannot be part of a valid path string.)\r\n\r\nNote File I/O functions in the Windows API convert \"/\" to \"\\\" as part of converting the name to an NT-style name, except when using the \"\\\\?\\\" prefix as detailed in the following sections.\r\n\r\nThe Windows API has many functions that also have Unicode versions to permit an extended-length path for a maximum total path length of 32,767 characters. This type of path is composed of components separated by backslashes, each up to the value returned in the lpMaximumComponentLength parameter of the GetVolumeInformation function (this value is commonly 255 characters). To specify an extended-length path, use the \"\\\\?\\\" prefix. For example, \"\\\\?\\D:\\very long path\".\r\n\r\nNote The maximum path of 32,767 characters is approximate, because the \"\\\\?\\\" prefix may be expanded to a longer string by the system at run time, and this expansion applies to the total length.\r\n{quote}\r\n\r\nThis would mean, that if an absolute path is used on Windows, the path should be prefixed with \\\\?\\ to allow a longer path. Otherwise it would fail anyhow.\r\n\r\nhttp://support.microsoft.com/kb/830473 tells about the max length of the commandline itself.\r\n{quote}\r\nOn computers running Microsoft Windows XP or later, the maximum length of the string that you can use at the command prompt is 8191 characters. On computers running Microsoft Windows 2000 or Windows NT 4.0, the maximum length of the string that you can use at the command prompt is 2047 characters.\r\n{quote}","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rfscholte","name":"rfscholte","emailAddress":"codehaus@sourcegrounds.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=rfscholte&avatarId=10919","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=rfscholte&avatarId=10919","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=rfscholte&avatarId=10919","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=rfscholte&avatarId=10919"},"displayName":"Robert Scholte","active":true},"created":"2013-09-26T14:43:52.530-0500","updated":"2013-09-26T14:43:52.530-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-16.json b/jira/PLXUTILS-16.json
new file mode 100644
index 00000000..5f105b47
--- /dev/null
+++ b/jira/PLXUTILS-16.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"33720","self":"http://jira.codehaus.org/rest/api/latest/issue/33720","key":"PLXUTILS-16","fields":{"progress":{"progress":0,"total":0},"summary":"incorporate \"followSymlinks\" functionality in FileUtils API","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-16/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","minfrin(minfrin)","jdcasey(jdcasey)","kenneyw(kenneyw)"],"customfield_10160":null,"updated":"2012-06-05T16:51:35.989-0500","created":"2006-02-14T12:29:58.514-0600","description":"In order to avoid infinite looping when deleting directories in FileUtils, we should add a \"followSymlinks\" flag to the API to allow people to determine which semantics they want. This will allow the maven-clean-plugin to start using FileUtils instead of its homespun version of the directory delete.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[{"id":"13549","self":"http://jira.codehaus.org/rest/api/2/issueLink/13549","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"33547","key":"MCLEAN-5","self":"http://jira.codehaus.org/rest/api/2/issue/33547","fields":{"summary":"Replace removeDirectory() and delete by FileUtils.deleteDirectory()","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false}}}}],"customfield_10163":"82339200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-16/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/33720/comment/98231","id":"98231","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=kenneyw","name":"kenneyw","emailAddress":"kenney@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=kenneyw&avatarId=12410","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=kenneyw&avatarId=12410","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=kenneyw&avatarId=12410","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=kenneyw&avatarId=12410"},"displayName":"Kenney Westerhof","active":true},"body":"Just out of curiosity - is there a way to detect symlinks in java?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=kenneyw","name":"kenneyw","emailAddress":"kenney@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=kenneyw&avatarId=12410","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=kenneyw&avatarId=12410","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=kenneyw&avatarId=12410","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=kenneyw&avatarId=12410"},"displayName":"Kenney Westerhof","active":true},"created":"2007-06-03T17:03:11.922-0500","updated":"2007-06-03T17:03:11.922-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/33720/comment/128365","id":"128365","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"bq. is there a way to detect symlinks in java?\r\nSomehow: As described in the javadoc for {{[File.getCanonicalPath()|http://java.sun.com/javase/6/docs/api/java/io/File.html#getCanonicalPath()]}}, this method resolves symbolic links, unlike {{File.getAbsolutePath()}}. So, if for a given path the return values from {{getCanonicalPath()}} and {{getAbsolutePath()}} differ, this is likely caused by a symlink. See also the docs for the [Ant symlink task|http://ant.apache.org/manual/OptionalTasks/symlink.html] and the implementation of Plexus' {{DirectoryScanner.isSymbolicLink()}}.\r\n\r\nImplementors of this heuristic need to keep in mind the following cases that can cause false positives for the symlink detection:\r\n- {{getCanonicalPath()}} also performs path normalization (e.g. removing \"..\" references), so any non-normalized input path will be errorneously detected as a symlink.\r\n- On Windows, {{getCanonicalPath()}} performs case corrections to deliver the original case-preserved file path (e.g. \"c:\\POM.XML\" might become \"C:\\pom.xml\"). For this reason, symlink detection should not compare canonical and absolute paths literally using {{String.equals()}} but rather using {{File.equals()}} which will automatically perform a case-insensitive comparison on Windows.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-03-24T05:11:24.245-0500","updated":"2008-03-24T05:11:24.245-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/33720/comment/300445","id":"300445","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=minfrin","name":"minfrin","emailAddress":"minfrin@sharp.fm","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Graham Leggett","active":true},"body":"In theory, this patch should fix this:\r\n\r\nhttp://jira.codehaus.org/browse/PLXUTILS-151","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=minfrin","name":"minfrin","emailAddress":"minfrin@sharp.fm","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Graham Leggett","active":true},"created":"2012-06-05T16:51:35.859-0500","updated":"2012-06-05T16:51:35.859-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-160.json b/jira/PLXUTILS-160.json
new file mode 100644
index 00000000..8dddd92b
--- /dev/null
+++ b/jira/PLXUTILS-160.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"107280","self":"http://jira.codehaus.org/rest/api/latest/issue/107280","key":"PLXUTILS-160","fields":{"progress":{"progress":0,"total":0},"summary":"NullPointerException in directory scanner in case the directory permissions are too restrictive","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-160/votes","votes":1,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=dma_k","name":"dma_k","emailAddress":"dma_k@mail.ru","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dmitry Katsubo","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["dma_k(dma_k)"],"customfield_10160":null,"updated":"2013-08-15T15:47:26.266-0500","created":"2010-03-22T15:58:03.183-0500","description":"Maven fails to perform {{mvn clean}} if directory permissions are too strict. Expected: more descriptive error message.\n\n{code}\n$ ls -ld target\n\nd--x--x--x 2 tavernag tavernag 4096 Mar 15 21:07 target\n{code}\n\n{code}\njava.lang.NullPointerException\n at org.codehaus.plexus.util.DirectoryScanner.scandir(DirectoryScanner.java:677)\n at org.codehaus.plexus.util.DirectoryScanner.scan(DirectoryScanner.java:593)\n at org.apache.maven.shared.model.fileset.util.FileSetManager.scan(FileSetManager.java:659)\n at org.apache.maven.shared.model.fileset.util.FileSetManager.findDeletableDirectories(FileSetManager.java:378)\n at org.apache.maven.shared.model.fileset.util.FileSetManager.findDeletablePaths(FileSetManager.java:365)\n at org.apache.maven.shared.model.fileset.util.FileSetManager.delete(FileSetManager.java:284)\n at org.apache.maven.plugin.clean.CleanMojo.removeDirectory(CleanMojo.java:261)\n at org.apache.maven.plugin.clean.CleanMojo.execute(CleanMojo.java:173)\n at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:556)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:535)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:348)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)\n at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)\n at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)\n at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)\n at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n at java.lang.reflect.Method.invoke(Method.java:597)\n at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)\n at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)\n at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)\n at org.codehaus.classworlds.Launcher.main(Launcher.java:375)\n{code}","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"151977600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-160/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/19534","id":"19534","name":"3.0.14","archived":false,"released":true,"releaseDate":"2013-08-06"}],"customfield_10170":null,"environment":"Linux Debian 2.6.9, Apache Maven 2.2.1","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-161.json b/jira/PLXUTILS-161.json
new file mode 100644
index 00000000..3e8173e0
--- /dev/null
+++ b/jira/PLXUTILS-161.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"148945","self":"http://jira.codehaus.org/rest/api/latest/issue/148945","key":"PLXUTILS-161","fields":{"progress":{"progress":0,"total":0},"summary":"Commandline class shell injection vulnerabilities","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-161/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/19579","id":"19579","name":"3.0.16","archived":false,"released":true,"releaseDate":"2013-12-21"}],"resolutiondate":"2013-10-23T12:56:05.086-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["charles@dyfis.net(charles@dyfis.net)","gdomjan(gdomjan)","krosenvold(krosenvold)","mizdebsk(mizdebsk)"],"customfield_10160":null,"updated":"2014-01-27T13:47:22.700-0600","created":"2013-09-26T15:36:11.492-0500","description":"The Commandline class in plexus-utils does not correctly quote the contents of double-quoted strings.\r\n\r\nFrankly, it makes more sense to stop using a shell altogether than to try to improve the shell code-generation logic. A patch to do the same is provided.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"30412800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-161/watchers","watchCount":4,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/64134","id":"64134","filename":"use-no-shell-r2.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2013-09-27T14:51:14.194-0500","size":21555,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/64134/use-no-shell-r2.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/19535","id":"19535","name":"3.0.15","archived":false,"released":true,"releaseDate":"2013-08-19"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":19,"total":19,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/333392","id":"333392","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mizdebsk","name":"mizdebsk","emailAddress":"mizdebsk@redhat.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Mikolaj Izdebski","active":true},"body":"Related to a bug in Red Hat bugzilla:\r\nhttps://bugzilla.redhat.com/show_bug.cgi?id=958733","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mizdebsk","name":"mizdebsk","emailAddress":"mizdebsk@redhat.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Mikolaj Izdebski","active":true},"created":"2013-09-27T12:45:04.116-0500","updated":"2013-09-27T12:45:04.116-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/333393","id":"333393","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"Discussion in the Red Hat bugzilla indicates that shell-generation code is explicitly and intentionally used for remote invocations over SSH, and that the given patch bypassing the problem is thus insufficient.\r\n\r\nI do hold that this patch is necessary, but no longer, given this discussion, that it is sufficient.\r\n\r\nI wrote a secure implementation of shell quoting for Rundeck a while back under the Apache 2.0 license -- it's available at https://github.com/charles-dyfis-net/rundeck/commit/093c9d21666d4d56318646924840fa4a7c0e6377. It may be appropriate to adopt that here.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2013-09-27T13:26:58.306-0500","updated":"2013-09-27T13:26:58.306-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/333395","id":"333395","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"Updated version still avoids shell use for local execution -- but also correctly quotes contents for remote execution, using an extremely conservative (and thus safe) mechanism.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2013-09-27T14:51:14.204-0500","updated":"2013-09-27T14:51:14.204-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/333576","id":"333576","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"A few comments on why it's safer to use single-quotes everywhere --\r\n\r\nWhile all modern operating systems provide a /bin/sh which complies with POSIX rules, shells are welcome to add new syntax above and beyond what POSIX mandates, and few are rigorously tested to ensure that all of this is completely disabled when invoked as /bin/sh (as is traditionally done for POSIX compatibility mode). bash, zsh and kin add substantial new expansion syntax beyond both POSIX and bash.\r\n\r\nWhile double-quotes allow internal expansions (which can, by nature, include additional expansions added by the local shell above and beyond those mandated by POSIX), single-quotes do not; one cannot have any form of expansion within single-quotes while remaining a POSIX-compatible shell.\r\n\r\nThus, transforming foo to 'foo' is the Right Thing to use in an environment where one trusts that the available shell will be a superset of POSIX, but does not trust it to implement only behavior mandated by POSIX sh proper.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2013-10-03T13:14:41.915-0500","updated":"2013-10-03T13:14:41.915-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/333975","id":"333975","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"I have reviewed this patch and it looks good to me. I will claim mostly ignorance shell escaping issues, and I just need convincing/explanation of this one thing before I apply the patch:\r\n\r\nHow can we be sure that we're not loosing side effects of the shell startup if we move from wrapping the process in a shell an just using runtime exec directly. Feel free to tell me that I am an idiot to not understand the all the escaping business is about avoiding exactly that. I just need this with a very small spoon....","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2013-10-11T03:06:04.832-0500","updated":"2013-10-11T03:06:04.832-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/334499","id":"334499","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"Apologies about the lag -- wedding and honeymoon intervened.\r\n\r\nAnd yes -- the purpose of the escaping is to prevent side effects from the shell, which using Runtime.exec will similarly (but more efficiently) accomplish.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2013-10-21T15:10:29.816-0500","updated":"2013-10-21T15:10:29.816-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/334500","id":"334500","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"...well. To be _entirely_ clear, there are other potential side effects from the invocation of a non-interactive, non-login shell, but a lot of them are things that fall under the aegis of \"bugs\", when they're noticed / noticable at all.\r\n\r\nFor instance, environment variables not complying with POSIX standards for allowed shell variable names will be filtered from the environment by some shells, but not others; using Runtime.exec() will suppress this effect, passing the current (or desired) environment through verbatim.\r\n\r\nFor another, having a shell in place can cause signal delivery to be disrupted -- signals intended for the command being run can be eaten by the shell, preventing the command from receiving them. (Suppressing this properly when using sh -c '...' would require sh -c 'exec ...' to be used instead, which would provide behavior closer to Runtime.exec()'s).\r\n\r\nIf ENV or shell-specific analogs such as BASH_ENV are set in the environment, they may specify a file whose commands are sourced by the new shell prior to execution of the desired command. (This is an XSI extension to POSIX, and not guaranteed to be honored on all POSIX systems, so relying on this behavior is generally an undesirable practice).","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2013-10-21T15:22:04.143-0500","updated":"2013-10-21T15:22:04.143-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/334578","id":"334578","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Applied in b38a1b3a4352303e4312b2bb601a0d7ec6e28f41\r\n\r\nNow for the interesting part;\r\n\r\nThis code is actually forked in various versions, and this is not the \"original\". We have a duplicate under maven-shared-utils http://jira.codehaus.org/browse/MSHARED/component/15606\r\n\r\nIdeally I would like you to reapply thia patch there too; since we are migrating from this version to the maven-shared-utils version (the packages are different, but I suppose most of the actual diff is identical). Alternately you can just submit the existing diff as a patch to a MSHARED issue, and I'll see if I can apply it. But we need a clear record of submission to MSHARED, I can't just move your patch.\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2013-10-23T12:56:05.183-0500","updated":"2013-10-23T12:56:05.183-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/334579","id":"334579","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"And yeah, thanks for the patch!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2013-10-23T13:09:39.063-0500","updated":"2013-10-23T13:09:39.063-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/334589","id":"334589","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"Hmm. maven-utils has the addition of translateCommandline(), which doesn't exactly match POSIX shell behavior, but I don't think that any of its divergences are exploitable.\r\n\r\nIts BourneShell implementation, on the other hand, looks to be an exact match for the one where this issue applied.\r\n\r\nNot sure when I'll have a chance to port this patch over -- a bit swamped right now. I'll submit an MSHARED issue immediately, and do the port if it's still incomplete at such time as opportunity permits.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2013-10-23T15:44:19.464-0500","updated":"2013-10-23T15:44:19.464-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/334591","id":"334591","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"Created MSHARED-297","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2013-10-23T15:50:07.127-0500","updated":"2013-10-23T15:50:07.127-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/339948","id":"339948","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=gdomjan","name":"gdomjan","emailAddress":"gorf4673@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Greg Domjan","active":true},"body":"3.0.16 appears to have cause regression, command line args are no longer quoted properly.\r\nWorking with versions [1.5.1,3.0.15] - one example original issue was fixed with PLXUTILS-64 originally identified to me through MSHARED-21 ","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=gdomjan","name":"gdomjan","emailAddress":"gorf4673@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Greg Domjan","active":true},"created":"2014-01-23T16:31:14.867-0600","updated":"2014-01-23T16:31:14.867-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/339949","id":"339949","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"Greg, could you construct a test case demonstrating any of these new failure modes? (Otherwise, I'd have to dig into exactly how the tools in question are invoking this code).","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2014-01-23T17:17:07.637-0600","updated":"2014-01-23T17:17:07.637-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/339954","id":"339954","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=gdomjan","name":"gdomjan","emailAddress":"gorf4673@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Greg Domjan","active":true},"body":"Are you after a plexus unit test case, or something using plexus showing an integration test case?\r\nMy current usage is in https://github.com/GregDomjan/wix-maven-plugin various modules use it, however the example I have from PLXUTILS-164 comes from\r\nhttps://github.com/GregDomjan/wix-maven-plugin/blob/master/src/main/java/net/sf/wix/AbstractLinker.java","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=gdomjan","name":"gdomjan","emailAddress":"gorf4673@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Greg Domjan","active":true},"created":"2014-01-23T19:39:38.479-0600","updated":"2014-01-23T19:39:38.479-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/339955","id":"339955","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"Thanks -- the AbstractLinker use case is exactly what I was looking for.\r\n\r\nThere's some... interesting behavior in there, inasmuch as it appears to be trying to handle a Commandline class that it *assumes* will misbehave, and I'm going to need to dig in a bit to analyze what's going on.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2014-01-23T19:43:34.796-0600","updated":"2014-01-23T19:43:34.796-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/340219","id":"340219","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"An update --\r\n\r\nI've confirmed that Commandline.exec() is using a local shell in this case. This is contrary to intent -- the code is intended to call Runtime.exec(String[], String[], File) with the list of user-provided commands, with no shell quoting whatsoever applied, in the case in question.\r\n\r\nThe new test suite cases validate that shell quoting is correct when it's performed. What we have here, though, is a case wherein shell quoting isn't being performed at all -- which would be safe and correct if Runtime.exec were being used to invoke the user's argument list without a shell; however, it's happening even when a shell is in use.\r\n\r\nI'm travelling for the next 8 days, and so can't promise as to when continued analysis will have an opportunity to take place.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2014-01-26T18:26:05.706-0600","updated":"2014-01-26T18:26:49.934-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/340236","id":"340236","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"Trying to determine how I reproduced this behaviour last night -- CNR using the following code:\r\n\r\n{code}\r\n(import '[org.codehaus.plexus.util.cli Commandline])\r\n(doto (Commandline.)\r\n (.addArguments (into-array String [\"printf\" \"%s\\n\" \"hel'lo$cruel\" \"wor'ld\"]))\r\n (.setWorkingDirectory \"/tmp\")\r\n (.execute))\r\n{code}\r\n\r\n...using strace on this command line shows that it's being passed to execve correctly -- no /bin/sh involved.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2014-01-27T07:05:14.909-0600","updated":"2014-01-27T07:05:14.909-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/340262","id":"340262","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=gdomjan","name":"gdomjan","emailAddress":"gorf4673@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Greg Domjan","active":true},"body":"Thanks for feedback Charles. If I'm understanding correctly so far\r\n* the CommandLine/Execution class should handle an argument containing spaces and also ending with backslash '\\'. \r\n* as such there should have been no need for escaping the backslash in the argument list as that should be done by the CommandLine or execution class based on actually using cmd executor Vs calling execv (or simliar?) api directly.\r\n* wix-maven-plugin should not try and escape the final \\\r\n\r\nFrom the perspective of the wix-maven-plugin\r\nRemoving the escape and using 3.0.16 results in successful execution.\r\nRemoving the escape using 3.0.15 fails.\r\nSo it appears to be my issue that you fixed it and my workaround now breaks - should it be able to end with an arbitrary number of \\ ?\r\n\r\nIn both cases getLog().info(cl.toString()); generates log info like \r\n[INFO] cmd.exe /X /C \"light.exe -out ... -b \"c:\\test repo\\\\\" ... \"\r\n\r\nis 'cmd.exe' an indication of using the command shell rather than execv or is this just a toString representation?\r\n\r\nAs I'm not familiar with the execution path, wondering if the simplification has taken out the cause\r\nWould it have anything to do with how the org.codehaus.plexus.util.cli.CommandLineUtils class calls or configures the Commandline or the Process ? \r\n?Perhaps the example test would better show escaping using - \"hel\\\"lo$cruel wor'ld\\\\\"\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=gdomjan","name":"gdomjan","emailAddress":"gorf4673@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Greg Domjan","active":true},"created":"2014-01-27T12:20:53.808-0600","updated":"2014-01-27T12:20:53.808-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/148945/comment/340266","id":"340266","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"body":"It should be possible to end with an arbitrary number of backslashes, and they should be passed to the target process literally.\r\n\r\nThe .toString() call is definitely generating things which aren't legal/valid, and which also don't correctly represent the actual mechanism used for invocation. I'm going to attempt to look into this as time permits.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=charles%40dyfis.net","name":"charles@dyfis.net","emailAddress":"charles@dyfis.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Charles Duffy","active":true},"created":"2014-01-27T13:47:22.700-0600","updated":"2014-01-27T13:47:22.700-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-162.json b/jira/PLXUTILS-162.json
new file mode 100644
index 00000000..1cefc8d7
--- /dev/null
+++ b/jira/PLXUTILS-162.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"150232","self":"http://jira.codehaus.org/rest/api/latest/issue/150232","key":"PLXUTILS-162","fields":{"progress":{"progress":0,"total":3600,"percent":0},"summary":"Eclipse crashes while Installing JAR files on Linux","timetracking":{"originalEstimate":"1h","remainingEstimate":"1h","originalEstimateSeconds":3600,"remainingEstimateSeconds":3600},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-162/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"aggregatetimeoriginalestimate":3600,"customfield_10161":["digulla(digulla)","igorfie(igorfie)","jason(jason)","krosenvold(krosenvold)"],"customfield_10160":null,"updated":"2014-01-23T11:12:15.807-0600","created":"2013-11-20T04:26:37.267-0600","description":"The Java VM has a bug which can crash a Java application when reading a corrupt JAR file.\r\n\r\nOne common scenario is running a Maven build parallel with Eclipse. Maven will write JAR files in the repository. If the build is long enough, Eclipse will start picking up those changes and start building itself.\r\n\r\nIf Eclipse happens to try to read a JAR file which Maven is currently writing, then the VM will crash. This sometimes leads to a corrupt Eclipse workspace since the caches containing information about the Java classes will now be in an inconsistent state.\r\n\r\nUsually, Eclipse does recover from those but sometimes, you end up with Eclipse being unable to navigate your Java code.\r\n\r\nThe solution is to write JAR files with a temporary name in {{FileUtils.doCopyFile()}} and rename them after copy was successful.\r\n\r\nSome considerations:\r\n\r\n- This happens on all Unix-like file systems (unlike Windows, they don't lock the file when you change it).\r\n- Not many people are affected but those who are have a hard time to figure out what is going on and how to fix it.\r\n- This bug doesn't cause data corruption but it can and does break Eclipse, making people believe that Eclipse is \"buggy\".\r\n- Writing to a temporary file does need more space on disk. But JAR files are rarely hundreds of megabytes (some WAR files are, though), so that usually shouldn't be a problem.\r\n- The fix doesn't do much on Windows but it also doesn't hurt","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"30758400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-162/watchers","watchCount":4,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":0,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/64565","id":"64565","filename":"PLXUTILS-162-JvmCrash.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2013-11-21T02:40:21.436-0600","size":3637,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/64565/PLXUTILS-162-JvmCrash.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":3600,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/19535","id":"19535","name":"3.0.15","archived":false,"released":true,"releaseDate":"2013-08-19"}],"customfield_10170":null,"environment":null,"timeestimate":3600,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":3600,"percent":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":22,"total":22,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/336040","id":"336040","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"I have a patch but I can't access Github from my workplace. Should I post it here (it's an additional method + 1 line of original code that you need to change, so applying it manually will take only a few seconds)?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2013-11-20T04:28:45.943-0600","updated":"2013-11-20T04:28:45.943-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/336045","id":"336045","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"You can post it here as plain text","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2013-11-20T05:17:52.888-0600","updated":"2013-11-20T05:17:52.888-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/336092","id":"336092","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"Patch which applies cleanly against b38a1b3a4352303e4312b2bb601a0d7ec6e28f41","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2013-11-21T02:40:21.458-0600","updated":"2013-11-21T02:40:21.458-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/336093","id":"336093","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"Instructions for people who need a this fix quickly:\r\n\r\n# Checkout plexus-utils from https://github.com/sonatype/plexus-utils\r\n# Apply the attached patch\r\n# mvn install\r\n# Change your parent pom and add this to the {{pluginManagement}}:\r\n\r\n{code}\r\n\r\n org.apache.maven.plugins\r\n maven-install-plugin\r\n 2.5.1\r\n \r\n \r\n \r\n org.codehaus.plexus\r\n plexus-utils\r\n 3.0.16-SNAPSHOT\r\n \r\n \r\n\r\n{code}\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2013-11-21T02:43:24.485-0600","updated":"2013-11-21T02:43:24.485-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/336313","id":"336313","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"Note: I would prefer a solution where the install plugin would create a temporary folder for all artifacts and then makes them all visible to consumers with a single rename but looking at the code of the plugin, I didn't see a simple solution to achieve that.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2013-11-25T07:41:06.052-0600","updated":"2013-11-25T07:41:06.052-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/336525","id":"336525","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"Any feedback on this one? Is the patch good/bad?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2013-11-29T04:14:18.689-0600","updated":"2013-11-29T04:14:18.689-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/336531","id":"336531","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"This patch is definitely not going in as standard behaviour for copyFile. We might consider making atomicCopyFile public instead and use this from the proper place instead. I will try to take a closer look at this issue this weekend","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2013-11-29T05:51:06.760-0600","updated":"2013-11-29T05:51:06.760-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/336647","id":"336647","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"Please share your reasons for this decision. From my experience, the original code causes subtle bugs that are really hard to track down and reproduce (like incomplete files when free space gets tight or corrupt files on non-locking file systems).","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2013-12-03T03:31:38.880-0600","updated":"2013-12-03T03:31:38.880-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/336727","id":"336727","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"copyFile is a generic file copy function; adding this behavior there is too much of a hack and it would come into effect in numerous other (unintended) places.\r\n\r\nAre you using maven 2.2.1 ? The install logic in 3.X does not appear to be using this library at all (to my knowledge it uses org.apache.maven.artifact.installer.DefaultArtifactInstaller#install and DefaultFileProcessor#copy in aether)","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2013-12-04T00:58:43.487-0600","updated":"2013-12-04T00:58:43.487-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338220","id":"338220","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"Sorry for the long delay; I was on holidays.\r\n\r\nFirst of all, in the mind of many developers, \"copy\" is assumed to be atomic. It really isn't and most people know this but it often takes a bug like this one to remind them to handle this case correctly.\r\n\r\nSecondly, copy really should be atomic - there is not a single use case where it being non-atomic makes sense. Streaming isn't copying - when I write to stdout, I don't expect all the output to become visible to the consumers all at once. But Stackoverflow.com is full of questions \"how can I know that a process has finished writing a file\" which indicates to me that the current default behavior of all programming languages is bad.\r\n\r\nLastly, while it slightly changes the behavior of a lot of code, I would be interesting in any scenarios where my patch could actually break anything. As I said, it does waste a bit of disk space but it does clean up after itself properly.\r\n\r\nSo for me, you saying \"it's a hack\" feels like you don't want to say \"I'm afraid what this change might cause\".\r\n\r\nI'm using Maven 3.0.5 with the maven-install-plugin 2.5.1. When I run mvn with -X, I see that my version of plexus-utils is picked up.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2014-01-08T04:10:01.310-0600","updated":"2014-01-08T04:10:01.310-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338228","id":"338228","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Just do the right thing and I can assure you all the patches will be applied. ","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2014-01-08T05:16:27.117-0600","updated":"2014-01-08T05:16:27.117-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338239","id":"338239","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"I had a look at the sources once more. In my case, {{DefaultArtifactInstaller}} from {{~/.m2/repository/org/apache/maven/maven-artifact-manager/2.0.6/maven-artifact-manager-2.0.6.jar}} is being used when I open the source in Eclipse.\r\n\r\nLine 32 reads: {{FileUtils.copyFile( source, destination );}}\r\n\r\nAs for \"just do the right thing\": I use hundreds of OSS projects every day and I simply can't afford to learn the rules of each one of them. So it's either filing bug reports and getting some love back or giving up for me :-)\r\n\r\nAlong the same lines, it doesn't help that your \"right thing\" will never be my \"right thing.\"","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2014-01-08T06:45:07.740-0600","updated":"2014-01-08T07:09:28.029-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338303","id":"338303","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"body":"I am on the fence about this patch. On one hand, I agree with Aaron that all users FileUtils.copyFile expect atomic behaviour. On the other hand, I don't believe the attached patch covers all interesting cases. I am particularly concerned about concurrent invocation of FileUtils.copyFile from multiple threads/processes for the same destination file. Cleanup after process crashes is another concern.\r\n\r\nI am also not sure I understand the purpose of backup file. This seems like new and unexpected feature.\r\n\r\nAlso, I wonder if we can use jdk7 atomic move, without breaking compatibility with earlier java versions of course.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"created":"2014-01-09T07:03:18.586-0600","updated":"2014-01-09T07:03:18.586-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338309","id":"338309","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jason","name":"jason","emailAddress":"jason@takari.io","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jason van Zyl","active":true},"body":"Or just slowly replace the code in Plexus with Guava. I just ran into a concurrency issue in FileUtils.copyDirectory a couple days ago and replaced it with some Guava code and it was fine. If we're going to slowly get rid of Plexus we should use Guava (that's my strong preference) or Commons code. This stuff has been fixed elsewhere. Definitely in Guava.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jason","name":"jason","emailAddress":"jason@takari.io","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jason van Zyl","active":true},"created":"2014-01-09T08:27:49.511-0600","updated":"2014-01-09T08:27:49.511-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338310","id":"338310","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"body":"Do you suggest adding Guava as plexus-utils dependency (possible shaded, to avoid conflicts)? Otherwise it is up to individual plexus-utils consumers to migrate and we still need to support existing clients.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"created":"2014-01-09T09:06:53.930-0600","updated":"2014-01-09T09:06:53.930-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338311","id":"338311","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"Re multi-threading: It's rare that a low-level helper function can handle the necessary locking for multiple threads. I think this would be a nice thing to have but clearly out of scope here unless we completely revamp the API.\r\n\r\nThe purpose of the backup file is to be able to roll back several copies if one of them fails. It's useless in the patch and can be removed - I just copied the code from my source base and massaged it a bit for your API.\r\n\r\nBut if we think that installing an artifact with all the related files is one atomic operation, then using backup files would allow us to write each file individually (instead of having to synchronize all the writes and then rename all of them in one loop in a postprocessor).\r\n\r\nGuava's {{Files.copy()}} also isn't atomic but it's easier to fix; a custom {{OutputSupplier}} would solve the issue.\r\n\r\nAs a side note: I use my own {{File*Stream}} and similar classes which keep a copy of the file name so I can create better error messages. But I felt that such a change would be way too disruptive, so I didn't mention it before.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2014-01-09T09:10:58.156-0600","updated":"2014-01-09T09:10:58.156-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338312","id":"338312","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"body":"I think using File.createTempFile(destination.getName(), \".tmp\", destination.getParentFile()) together with jdk7 atomic move will make this multi- thread/process safe without changing API. Everyone is using jdk7 anyways, so degraded behaviour on older java versions is mostly a theoretical problem at this point.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"created":"2014-01-09T09:34:47.645-0600","updated":"2014-01-09T09:34:47.645-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338314","id":"338314","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jason","name":"jason","emailAddress":"jason@takari.io","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jason van Zyl","active":true},"body":"@Aaron, where Plexus failed Guava worked for me in a highly concurrent build. I didn't look at the code in Guava it just tends to work for me.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jason","name":"jason","emailAddress":"jason@takari.io","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jason van Zyl","active":true},"created":"2014-01-09T10:01:54.548-0600","updated":"2014-01-09T10:01:54.548-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338322","id":"338322","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"@Igor: We just barely upgraded from Java 5, so I resent your comment :-) Some of our customers complain for our lack of support for Java 1.4.\r\n\r\n{{File.createTempFile()}} sounds like a nice idea; only my experience is that a bug prevents the rename of the temp file (Windows loves to keep a lock on temp files) and then your target folder fills up with temporary files. My version is more simple and it eventually cleans up temporary files.\r\n\r\n@Jason: Yes, Guava solves a lot of problems. We're also migrating to it. But I have already seen a few of places where theory and OO religion was more important than practice, so I'm not a 100% dedicated fan of it anymore.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2014-01-09T10:31:44.264-0600","updated":"2014-01-09T10:31:44.264-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338325","id":"338325","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Guava might be nice, but to be honest solving this issue in p-u is a bit of a lost cause. \r\n\r\nThe *real* problem that should be fixed is that whatever eclipse code you're using should be updated to use a maven 3.1+ implementation. Even then, the underlying file copy problem needs to be solved for aether, since the same problem still exists in aether (which uses its own internal file-copy code btw :).\r\n\r\nThe code you're using uses maven 2.0.9, and that oldest version one could *hope* to be patched is a future maven 2.2.2. Even then, the 2.2.X range is mostly being patched for security fixes, which might even mean the plexus-utils upgrade might be skipped. If we apply anything like this patch to plexus-utils it would be at least version 3.0.16 (which has a jdk 1.5 requirement).\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2014-01-09T11:04:10.777-0600","updated":"2014-01-09T11:04:10.777-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/338599","id":"338599","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"I need some help to come up with a new patch. When I check out maven-install-plugin 2.5.1, then there is no dependency on anything called \"aether\". What's aether, where can I find it and where is the connection between it and the install plugin?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2014-01-13T04:59:00.713-0600","updated":"2014-01-13T04:59:00.713-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/150232/comment/339890","id":"339890","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"body":"@Kristian: I think you still misunderstand what this bug is about. Aether (as in the Eclipse plugin) is not involved. In fact, you can achieve the same result by starting Eclipse and creating project which depends on a JAR file on the hard disk.\r\n\r\nIf you create a shell script which copies over the JAR file in a loop, the Java VM will eventually crash. Any Java program that accesses JAR files is vulnerable to this. It's a bug in the code which reads ZIP archives when the ZIP archive is corrupt.\r\n\r\nIt's not limited to Eclipse, it's not related to the m2e plugin.\r\n\r\nThe code I patched is used in Maven 3.0.x. If I add a `System.out.println()` in plexus-utils, then I see it when I run Maven from the command line.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=digulla","name":"digulla","emailAddress":"digulla@hepe.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Aaron Digulla","active":true},"created":"2014-01-23T11:11:13.678-0600","updated":"2014-01-23T11:12:15.535-0600"}]},"timeoriginalestimate":3600,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-163.json b/jira/PLXUTILS-163.json
new file mode 100644
index 00000000..4d2c2328
--- /dev/null
+++ b/jira/PLXUTILS-163.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"151116","self":"http://jira.codehaus.org/rest/api/latest/issue/151116","key":"PLXUTILS-163","fields":{"progress":{"progress":0,"total":0},"summary":"DirectoryWalker: sort traversed files to have reproducible and predictable walking order","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-163/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pkozelka","name":"pkozelka","emailAddress":"pkozelka@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Petr Kozelka","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["pkozelka(pkozelka)"],"customfield_10160":null,"updated":"2014-07-12T04:12:58.504-0500","created":"2014-01-09T17:13:01.279-0600","description":"The pull request #13 ( https://github.com/sonatype/plexus-utils/pull/13 ) adds a property \"sorted\" that sorts the directory during walking the tree.\r\n\r\nIt might be also a default behavior, but I am not sure about performance impact so I made it turned off by default.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"16156800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-163/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":["wish"],"workratio":-1,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/66159","id":"66159","filename":"PLXUTILS-163-sortedWalker.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pkozelka","name":"pkozelka","emailAddress":"pkozelka@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Petr Kozelka","active":true},"created":"2014-07-12T04:12:58.447-0500","size":2156,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/66159/PLXUTILS-163-sortedWalker.diff"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":"https://github.com/sonatype/plexus-utils/pull/13","aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/19535","id":"19535","name":"3.0.15","archived":false,"released":true,"releaseDate":"2013-08-19"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/151116/comment/349559","id":"349559","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pkozelka","name":"pkozelka","emailAddress":"pkozelka@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Petr Kozelka","active":true},"body":"patch for the pull-request https://github.com/sonatype/plexus-utils/pull/13 ","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pkozelka","name":"pkozelka","emailAddress":"pkozelka@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Petr Kozelka","active":true},"created":"2014-07-12T04:12:58.471-0500","updated":"2014-07-12T04:12:58.471-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-164.json b/jira/PLXUTILS-164.json
new file mode 100644
index 00000000..d08db1a7
--- /dev/null
+++ b/jira/PLXUTILS-164.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"151507","self":"http://jira.codehaus.org/rest/api/latest/issue/151507","key":"PLXUTILS-164","fields":{"progress":{"progress":0,"total":0},"summary":"Command line not quoted","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-164/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=gdomjan","name":"gdomjan","emailAddress":"gorf4673@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Greg Domjan","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["gdomjan(gdomjan)"],"customfield_10160":null,"updated":"2014-01-23T16:29:45.565-0600","created":"2014-01-23T16:29:45.565-0600","description":"Working [1.5.1,3.0.15]\r\n\r\nFrom a cmd, the following works when directly executed\r\nlight.exe -b \"C:\\Data\\S pace\\.m2\\repository\\..\\narrepository\\\\\" -b \"C:\\Data\\S pace\\.m2\\repository\\com\\sun\\java\\accessibility\\jaccess\\1.3\\\\\" some.wixobj\r\n\r\nHowever when run using Commandline and org.codehaus.plexus.util.cli.CommandLineUtils\r\n\r\n[INFO] cmd.exe /X /C \"light.exe -b \"C:\\Data\\S pace\\.m2\\repository\\..\\narrepository\\\\\" -b \"C:\\Data\\S pace\\.m2\\repository\\com\\sun\\java\\accessibility\\jaccess\\1.3\\\\\" some.wixobj\"\r\n\r\n[ERROR] light.exe : error LGHT0117 : Your file or directory path 'C:\\Data\\S pace\\.m2\\repository\\..\\narrepository\\\" -b C:\\Data\\S' cannot contain a quote.\r\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"30758400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-164/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":["regression"],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/19579","id":"19579","name":"3.0.16","archived":false,"released":true,"releaseDate":"2013-12-21"}],"customfield_10170":null,"environment":"Windows (2008/7)","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-165.json b/jira/PLXUTILS-165.json
new file mode 100644
index 00000000..4dfcf704
--- /dev/null
+++ b/jira/PLXUTILS-165.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"156757","self":"http://jira.codehaus.org/rest/api/latest/issue/156757","key":"PLXUTILS-165","fields":{"progress":{"progress":0,"total":0},"summary":"Improve semantics of followSymlinks","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-165/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/20654","id":"20654","name":"3.0.18","archived":false,"released":true,"releaseDate":"2014-09-27"}],"resolutiondate":"2014-09-27T03:42:51.646-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["krosenvold(krosenvold)"],"customfield_10160":null,"updated":"2014-09-27T03:43:14.035-0500","created":"2014-09-27T02:42:27.205-0500","description":"See MSHARED-350","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"35860","self":"http://jira.codehaus.org/rest/api/2/issueLink/35860","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"156756","key":"MSHARED-350","self":"http://jira.codehaus.org/rest/api/2/issue/156756","fields":{"summary":"Improve semantics of followSymlinks","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"9504000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-165/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/156757/comment/353303","id":"353303","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Fixed in 6eb7fdfb83c5b83901e99322785dfb3ed8dd11ec","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2014-09-27T03:42:51.724-0500","updated":"2014-09-27T03:42:51.724-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/156757/comment/353304","id":"353304","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"While m-s-u was correct on this, p-u wasn't","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2014-09-27T03:43:14.035-0500","updated":"2014-09-27T03:43:14.035-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-166.json b/jira/PLXUTILS-166.json
new file mode 100644
index 00000000..b23dc4b9
--- /dev/null
+++ b/jira/PLXUTILS-166.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"156925","self":"http://jira.codehaus.org/rest/api/latest/issue/156925","key":"PLXUTILS-166","fields":{"progress":{"progress":0,"total":0},"summary":"Case insensitive environment block build incorrectly","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-166/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=dmaslakov","name":"dmaslakov","emailAddress":"dmaslakov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dmitry Maslakov","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["dmaslakov(dmaslakov)"],"customfield_10160":null,"updated":"2014-10-02T02:31:07.351-0500","created":"2014-10-02T02:31:07.351-0500","description":"Method org.codehaus.plexus.util.cli.Commandline#addSystemEnvironment does not take into account the case insensitive environment variables. It results with following:\r\n\r\n- create Commandline object\r\n- call addEvironment(\"Path\", ...)\r\n- then call execute() (which performs merging of own vars with system vars)\r\n\r\nThe process will be created with two vars: Path and PATH.\r\nEspecially for the PATH environment variable Windows will fail to find the correct DLLs.\r\n\r\nThere could be other places where case insensitive vars are broken.\r\n\r\nThe workaround is using uppercase vars on Windows when calling addEnvironment.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"9072000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-166/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/20654","id":"20654","name":"3.0.18","archived":false,"released":true,"releaseDate":"2014-09-27"}],"customfield_10170":null,"environment":"Windows","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-167.json b/jira/PLXUTILS-167.json
new file mode 100644
index 00000000..656fac2b
--- /dev/null
+++ b/jira/PLXUTILS-167.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"157301","self":"http://jira.codehaus.org/rest/api/latest/issue/157301","key":"PLXUTILS-167","fields":{"progress":{"progress":0,"total":0},"summary":"ReflectionValueExctractor regression on root descriptors","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-167/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/20655","id":"20655","name":"3.0.19","archived":false,"released":true,"releaseDate":"2014-10-18"}],"resolutiondate":"2014-10-18T07:05:27.471-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["krosenvold(krosenvold)"],"customfield_10160":null,"updated":"2014-10-18T12:32:40.989-0500","created":"2014-10-18T04:16:37.303-0500","description":"Several unit tests in maven plugins fail due to this. IT basically does not evaluate an expression like \"description\" properly","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"36000","self":"http://jira.codehaus.org/rest/api/2/issueLink/36000","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"157307","key":"MSHARED-369","self":"http://jira.codehaus.org/rest/api/2/issue/157307","fields":{"summary":"ReflectionValueExtractor regression; incorrect parsing","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"7689600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-167/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/19579","id":"19579","name":"3.0.16","archived":false,"released":true,"releaseDate":"2013-12-21"},{"self":"http://jira.codehaus.org/rest/api/2/version/20653","id":"20653","name":"3.0.17","archived":false,"released":true,"releaseDate":"2014-01-27"},{"self":"http://jira.codehaus.org/rest/api/2/version/20654","id":"20654","name":"3.0.18","archived":false,"released":true,"releaseDate":"2014-09-27"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/157301/comment/354577","id":"354577","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Fixed in 0bde0ac31bd1749405251083077a4fd9edadd0f6.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2014-10-18T07:05:27.537-0500","updated":"2014-10-18T07:05:27.537-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-168.json b/jira/PLXUTILS-168.json
new file mode 100644
index 00000000..5cf0bd5c
--- /dev/null
+++ b/jira/PLXUTILS-168.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"157313","self":"http://jira.codehaus.org/rest/api/latest/issue/157313","key":"PLXUTILS-168","fields":{"progress":{"progress":0,"total":0},"summary":"Compatibility break InterpolationFilterReader when adding generics","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-168/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/20701","id":"20701","name":"3.0.20","archived":false,"released":true,"releaseDate":"2014-10-18"}],"resolutiondate":"2014-10-18T15:27:29.109-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["krosenvold(krosenvold)"],"customfield_10160":null,"updated":"2014-10-18T15:27:29.223-0500","created":"2014-10-18T15:24:18.407-0500","description":null,"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"7603200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-168/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/20655","id":"20655","name":"3.0.19","archived":false,"released":true,"releaseDate":"2014-10-18"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-169.json b/jira/PLXUTILS-169.json
new file mode 100644
index 00000000..8c27c142
--- /dev/null
+++ b/jira/PLXUTILS-169.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"151069","self":"http://jira.codehaus.org/rest/api/latest/issue/151069","key":"PLXUTILS-169","fields":{"progress":{"progress":0,"total":0},"summary":"Annotate IOUtil.close method with @WillClose","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-169/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mickael.istria","name":"mickael.istria","emailAddress":"mistria@redhat.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Mickael Istria","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["mickael.istria(mickael.istria)"],"customfield_10160":null,"updated":"2014-10-23T23:11:51.978-0500","created":"2014-01-08T02:49:51.227-0600","description":"I analyze some Maven plugins with Sonar, and I often see reports about streams that are not closed although I use IOUtil.close(stream).\r\nFindBugs seems to understand jsr-305 and it look likes annotating the IOUtil.close() method would prevent FindBugs and family from sending a false positive.\r\n\r\nCan you please annotate the IOUtil.close() method with @WillClose from JSR-305 ?\r\nIt's quite a small change, but by preventing false positive, it helps to highlight better real issues and benefit from static analysis. ","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"32140800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-169/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-17.json b/jira/PLXUTILS-17.json
new file mode 100644
index 00000000..be73e450
--- /dev/null
+++ b/jira/PLXUTILS-17.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"34940","self":"http://jira.codehaus.org/rest/api/latest/issue/34940","key":"PLXUTILS-17","fields":{"progress":{"progress":18000,"total":18000,"percent":100},"summary":"A new method that copies only source files that are newer compated to target files","timetracking":{"originalEstimate":"2h","remainingEstimate":"0m","timeSpent":"5h","originalEstimateSeconds":7200,"remainingEstimateSeconds":0,"timeSpentSeconds":18000},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-17/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14038","id":"14038","description":"","name":"1.2","archived":false,"released":true,"releaseDate":"2006-04-19"}],"resolutiondate":"2006-03-16T07:18:59.177-0600","customfield_10210":"1.0","timespent":18000,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jtolentino","name":"jtolentino","emailAddress":"john.tolentino@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Tolentino","active":true},"aggregatetimeoriginalestimate":7200,"customfield_10161":["evenisse(evenisse)","jtolentino(jtolentino)"],"customfield_10160":null,"updated":"2008-02-02T15:57:58.344-0600","created":"2006-03-16T06:13:26.074-0600","description":"Need this to resolve MWAR-26. The FileUtil is used to copy files but it overwrites even up-to-date (e.g. web.xml) files. A need for a copy method that copies only newer (based on timestamp) files for faster deployment of exploded wars.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"278726400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-17/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":2,"worklogs":[{"self":"http://jira.codehaus.org/rest/api/2/issue/34940/worklog/61220","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jtolentino","name":"jtolentino","emailAddress":"john.tolentino@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Tolentino","active":true},"updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jtolentino","name":"jtolentino","emailAddress":"john.tolentino@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Tolentino","active":true},"comment":"New methods and unit tests for copying only updated files to directories.","created":"2006-03-16T06:45:36.469-0600","updated":"2006-03-16T06:45:36.469-0600","started":"2006-03-16T06:45:36.469-0600","timeSpent":"1h","timeSpentSeconds":3600,"id":"61220"},{"self":"http://jira.codehaus.org/rest/api/2/issue/34940/worklog/61359","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jtolentino","name":"jtolentino","emailAddress":"john.tolentino@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Tolentino","active":true},"updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jtolentino","name":"jtolentino","emailAddress":"john.tolentino@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Tolentino","active":true},"comment":"Configured a Linux machine to run Maven 2. Investigated cause of test failure and fixed bug.","created":"2006-03-17T02:18:55.094-0600","updated":"2006-03-17T02:18:55.094-0600","started":"2006-03-17T02:18:55.094-0600","timeSpent":"4h","timeSpentSeconds":14400,"id":"61359"}]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":250,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jtolentino","name":"jtolentino","emailAddress":"john.tolentino@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Tolentino","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/19656","id":"19656","filename":"PLX-205-plexus-utils.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jtolentino","name":"jtolentino","emailAddress":"john.tolentino@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Tolentino","active":true},"created":"2006-03-16T06:43:12.087-0600","size":9799,"mimeType":"application/octet-stream","content":"http://jira.codehaus.org/secure/attachment/19656/PLX-205-plexus-utils.diff"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":0,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":0,"customfield_10130":null,"aggregateprogress":{"progress":18000,"total":18000,"percent":100},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/34940/comment/61219","id":"61219","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jtolentino","name":"jtolentino","emailAddress":"john.tolentino@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Tolentino","active":true},"body":"Found out the need for a method that copies to directories if a file is modified. Supplied unit tests for these as well.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jtolentino","name":"jtolentino","emailAddress":"john.tolentino@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Tolentino","active":true},"created":"2006-03-16T06:43:12.130-0600","updated":"2006-03-16T06:43:12.130-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/34940/comment/61223","id":"61223","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"body":"Applied.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"created":"2006-03-16T07:18:59.165-0600","updated":"2006-03-16T07:18:59.165-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/34940/comment/61358","id":"61358","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jtolentino","name":"jtolentino","emailAddress":"john.tolentino@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Tolentino","active":true},"body":"A Linux-specific bug in the unit test caused a test failure. Bugfix was done and code was updated.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jtolentino","name":"jtolentino","emailAddress":"john.tolentino@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Tolentino","active":true},"created":"2006-03-17T02:17:17.682-0600","updated":"2006-03-17T02:17:17.682-0600"}]},"timeoriginalestimate":7200,"aggregatetimespent":18000}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-170.json b/jira/PLXUTILS-170.json
new file mode 100644
index 00000000..cd6f3c69
--- /dev/null
+++ b/jira/PLXUTILS-170.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"130642","self":"http://jira.codehaus.org/rest/api/latest/issue/130642","key":"PLXUTILS-170","fields":{"progress":{"progress":0,"total":0},"summary":"Please add new exclusion to DEFAULTEXCLUDES","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/5","id":"5","description":"General wishlist item","iconUrl":"http://jira.codehaus.org/images/icons/improvement.gif","name":"Wish","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-170/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=adanilenko","name":"adanilenko","emailAddress":"adanilenko@serena.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Artem Danilenko","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["adanilenko(adanilenko)"],"customfield_10160":null,"updated":"2014-10-23T23:13:42.861-0500","created":"2011-10-19T05:18:01.654-0500","description":"Serena Dimension currently have new scm files storage in .dm folder, So please add **/.dm and **/.dm/** to AbstractScanner.DEFAULTEXCLUDES. Previous storage (.metadata) is still supported - so shoild not be removed.\r\n\r\nThanks","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"102297600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-170/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-171.json b/jira/PLXUTILS-171.json
new file mode 100644
index 00000000..63238c88
--- /dev/null
+++ b/jira/PLXUTILS-171.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"157612","self":"http://jira.codehaus.org/rest/api/latest/issue/157612","key":"PLXUTILS-171","fields":{"progress":{"progress":0,"total":0},"summary":".gitignore can't be included by includes","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-171/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=khmarbaise","name":"khmarbaise","emailAddress":"codehaus@soebes.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=khmarbaise&avatarId=10920","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=khmarbaise&avatarId=10920","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=khmarbaise&avatarId=10920","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=khmarbaise&avatarId=10920"},"displayName":"Karl-Heinz Marbaise","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["khmarbaise(khmarbaise)"],"customfield_10160":null,"updated":"2014-11-01T17:39:18.465-0500","created":"2014-11-01T17:36:52.142-0500","description":"If i define an include \".gitignore\" it will not being picked up by the DirectoryScanner. I think it's related to the DEFAULT_EXCLUDES which contains \".gitignore\"....\r\nIf i define to include \".gitignore\" it should be in my opinion returned.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"6393600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-171/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/20701","id":"20701","name":"3.0.20","archived":false,"released":true,"releaseDate":"2014-10-18"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/157612/comment/355412","id":"355412","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=khmarbaise","name":"khmarbaise","emailAddress":"codehaus@soebes.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=khmarbaise&avatarId=10920","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=khmarbaise&avatarId=10920","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=khmarbaise&avatarId=10920","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=khmarbaise&avatarId=10920"},"displayName":"Karl-Heinz Marbaise","active":true},"body":"Added pull request to show the failure.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=khmarbaise","name":"khmarbaise","emailAddress":"codehaus@soebes.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=khmarbaise&avatarId=10920","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=khmarbaise&avatarId=10920","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=khmarbaise&avatarId=10920","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=khmarbaise&avatarId=10920"},"displayName":"Karl-Heinz Marbaise","active":true},"created":"2014-11-01T17:39:18.465-0500","updated":"2014-11-01T17:39:18.465-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-172.json b/jira/PLXUTILS-172.json
new file mode 100644
index 00000000..32a13cb5
--- /dev/null
+++ b/jira/PLXUTILS-172.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"157864","self":"http://jira.codehaus.org/rest/api/latest/issue/157864","key":"PLXUTILS-172","fields":{"progress":{"progress":0,"total":0},"summary":"Make CopyFile use NIO copyFile (java 7) if available","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-172/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/20702","id":"20702","name":"3.0.21","archived":false,"released":true,"releaseDate":"2014-11-14"}],"resolutiondate":"2014-11-14T12:17:50.898-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["krosenvold(krosenvold)"],"customfield_10160":null,"updated":"2014-11-14T12:17:50.950-0600","created":"2014-11-14T12:08:55.601-0600","description":"Using NIO copy preserves all attributes and file creation date.\r\n\r\nIt's going to be interesting to see if this breaks anything","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"5270400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-172/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/20701","id":"20701","name":"3.0.20","archived":false,"released":true,"releaseDate":"2014-10-18"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/157864/comment/356172","id":"356172","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Fixed in 840c72371bdc154a2638627aa898b60151736517","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2014-11-14T12:17:50.946-0600","updated":"2014-11-14T12:17:50.946-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-173.json b/jira/PLXUTILS-173.json
new file mode 100644
index 00000000..741a92dc
--- /dev/null
+++ b/jira/PLXUTILS-173.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"158513","self":"http://jira.codehaus.org/rest/api/latest/issue/158513","key":"PLXUTILS-173","fields":{"progress":{"progress":0,"total":0},"summary":"CLONE - FileUtils.copyFile() ignores 'overwrite' when 'wrappers' (FilterWrappers[]) is non-empty","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-173/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ntshko","name":"ntshko","emailAddress":"hannes.kogler@ntswincash.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Hannes Kogler","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["ntshko(ntshko)"],"customfield_10160":null,"updated":"2014-12-16T06:01:15.191-0600","created":"2014-12-16T05:51:56.469-0600","description":"maven-resource-plugin is copying a resource even if it is unchanged and 'overwrite' is false. See http://stackoverflow.com/questions/3970157/is-there-a-way-to-force-maven-to-copy-resource-folder-changes-incrementally/5914467#5914467\r\n\r\nI chased the problem down to org.codehaus.plexus.util.FileUtils.copyFile() method. It is this method that is called by the maven-resource-plugin to ultimately copy the resource; the copyFile() method takes an 'overwrite' parameter, which the resource-plugin does pass in (and the default is indeed false), BUT...\r\n\r\nThe copyFile() method ignores the 'overwrite' parameter if the list of filter-wrappers passed is non-empty! And if you have filtering set to true for your resources, this list is indeed non-empty.\r\n\r\nI can understand the reasoning behind copyFile() ignoring the 'overwrite': just because the destination file is newer does not mean that new filtered-file will be the same (i.e. the values for the variables in your resource file may have been changed since the last filtering). \r\nIgnoring the 'overwrite' flag is \"convenient\" for the FileUtils implementor. But this comes at a great price; a single resource file unnecessarily updated can trigger off time-consuming but redundant processes (i.e. rebuilding a jar-with-dependencies in my case). This may only be a few seconds but can be enough to disrupt the flow of an intensive code-compile-test cycle.\r\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"duedate":null,"issuelinks":[{"id":"36320","self":"http://jira.codehaus.org/rest/api/2/issueLink/36320","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"125181","key":"PLXUTILS-139","self":"http://jira.codehaus.org/rest/api/2/issue/125181","fields":{"summary":"FileUtils.copyFile() ignores 'overwrite' when 'wrappers' (FilterWrappers[]) is non-empty","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"2592000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-173/watchers","watchCount":4,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17149","id":"17149","description":"","name":"2.0.7","archived":false,"released":true,"releaseDate":"2011-03-03"},{"self":"http://jira.codehaus.org/rest/api/2/version/19535","id":"19535","name":"3.0.15","archived":false,"released":true,"releaseDate":"2013-08-19"}],"customfield_10170":null,"environment":"Windows","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/158513/comment/359151","id":"359151","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ntshko","name":"ntshko","emailAddress":"hannes.kogler@ntswincash.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Hannes Kogler","active":true},"body":"this problem still exists, and makes maven UNUSABLE in IDEs like Eclipse (m2e) for big projects with many child module projects, because of *build times of over 30min and more* for just one single change!\r\n\r\nThere should be an option to the resources plugin where you can set if the overwrite flag should work or not.\r\n\r\nThis is the Maven output logging of the senseless automated triggered maven-resource-plugin for EVERY project on the workspace, just because of the described bug here.\r\n\r\n{color:blue}\r\n12/16/14, 12:55:54 PM GMT+1: [INFO] Using 'UTF-8' encoding to copy filtered resources.\r\n12/16/14, 12:55:54 PM GMT+1: [INFO] Copying 0 resource\r\n12/16/14, 12:55:55 PM GMT+1: [INFO] Using 'UTF-8' encoding to copy filtered resources.\r\n12/16/14, 12:55:55 PM GMT+1: [INFO] Copying 0 resource\r\n12/16/14, 12:55:57 PM GMT+1: [INFO] Using 'UTF-8' encoding to copy filtered resources.\r\n12/16/14, 12:55:57 PM GMT+1: [INFO] Copying 0 resource\r\n12/16/14, 12:55:58 PM GMT+1: [INFO] Using 'UTF-8' encoding to copy filtered resources.\r\n12/16/14, 12:55:58 PM GMT+1: [INFO] Copying 1 resource\r\n12/16/14, 12:56:00 PM GMT+1: [INFO] Using 'UTF-8' encoding to copy filtered resources.\r\n12/16/14, 12:56:00 PM GMT+1: [INFO] Copying 0 resource\r\n12/16/14, 12:56:00 PM GMT+1: [INFO] Copying 0 resource\r\n12/16/14, 12:56:00 PM GMT+1: [INFO] Using 'UTF-8' encoding to copy filtered resources.\r\n12/16/14, 12:56:00 PM GMT+1: [INFO] Copying 0 resource\r\n12/16/14, 12:56:00 PM GMT+1: [INFO] Copying 0 resource\r\n12/16/14, 12:56:02 PM GMT+1: [INFO] Using 'UTF-8' encoding to copy filtered resources.\r\n12/16/14, 12:56:02 PM GMT+1: [INFO] Copying 0 resource\r\n{color}","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ntshko","name":"ntshko","emailAddress":"hannes.kogler@ntswincash.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Hannes Kogler","active":true},"created":"2014-12-16T05:54:31.816-0600","updated":"2014-12-16T05:58:48.157-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-18.json b/jira/PLXUTILS-18.json
new file mode 100644
index 00000000..a4741616
--- /dev/null
+++ b/jira/PLXUTILS-18.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"16915","self":"http://jira.codehaus.org/rest/api/latest/issue/16915","key":"PLXUTILS-18","fields":{"progress":{"progress":0,"total":3600,"percent":0},"summary":"implement partitioned DAG/sorter/detector for pre-, main-, and post-processing types of operations","timetracking":{"originalEstimate":"1h","remainingEstimate":"1h","originalEstimateSeconds":3600,"remainingEstimateSeconds":3600},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-18/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"aggregatetimeoriginalestimate":3600,"customfield_10161":["jdcasey(jdcasey)"],"customfield_10160":null,"updated":"2007-01-13T01:01:56.145-0600","created":"2004-08-02T20:13:36.000-0500","description":"With maven2, it's easier to add preGoals and postGoals directly into the DAG, to allow reuse of the topo sorter for assembling an execution chain. However, we must ensure that preGoals always execute before their target goals, and postGoals always execute afterward. Mixing them into the general population of the DAG and maintaining them at the boundaries of the topo-sort result is too complex.\n\nIn light of this, I have created a DAG implementation that is partitioned arbitrarily, with a default partition index to support the default addEdge(), getChildren(), etc. operations. In this implementation, the getSuccessorLabels() method will use a variant of the TopologicalSorter to sort the vertices normally, except that for each vertex it examines, it iterates through the partitions in ascending order to assemble the list of successors. The current vertex label is appended to the end of the default partition's sub-range within the list.\n\nAccompanying my new implementation classes is a new unit test case, called PartitionedDAGTest, which tests the high points of the changes I made in creating this variant.\n\nOnce again, I want to emphasize that this is in support of the Maven2 project, and will allow the simplest possible fusion of goals and goal decorators, with maximum reuse of the recursive tree-walking logic used to build the execution chain implied by one m2 goal being included on the command line.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"329788800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-18/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":0,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/12722","id":"12722","filename":"PartitionedDAG-and-accessories-20040802.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"created":"2004-08-02T20:14:57.000-0500","size":36489,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/12722/PartitionedDAG-and-accessories-20040802.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":3600,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"any","timeestimate":3600,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":3600,"percent":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/16915/comment/22653","id":"22653","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"body":"here is the implementation patch.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"created":"2004-08-02T20:14:57.000-0500","updated":"2004-08-02T20:14:57.000-0500"}]},"timeoriginalestimate":3600,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-19.json b/jira/PLXUTILS-19.json
new file mode 100644
index 00000000..697959c1
--- /dev/null
+++ b/jira/PLXUTILS-19.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"17855","self":"http://jira.codehaus.org/rest/api/latest/issue/17855","key":"PLXUTILS-19","fields":{"progress":{"progress":0,"total":0},"summary":"Merge xpp3 parser into plexus","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-19/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14043","id":"14043","description":"","name":"1.0-alpha-1","archived":true,"released":true,"releaseDate":"2005-01-18"}],"resolutiondate":"2005-01-03T17:05:10.000-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jason","name":"jason","emailAddress":"jason@takari.io","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jason van Zyl","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["jason(jason)"],"customfield_10160":null,"updated":"2008-02-02T15:56:53.097-0600","created":"2004-09-17T00:31:35.000-0500","description":"The xml parser is one file and it removes a dep which is good.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"316483200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-19/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/17855/comment/28550","id":"28550","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jason","name":"jason","emailAddress":"jason@takari.io","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jason van Zyl","active":true},"body":"Finished","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jason","name":"jason","emailAddress":"jason@takari.io","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jason van Zyl","active":true},"created":"2005-01-03T17:05:10.000-0600","updated":"2005-01-03T17:05:10.000-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-2.json b/jira/PLXUTILS-2.json
new file mode 100644
index 00000000..8ee99e2a
--- /dev/null
+++ b/jira/PLXUTILS-2.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"36390","self":"http://jira.codehaus.org/rest/api/latest/issue/36390","key":"PLXUTILS-2","fields":{"progress":{"progress":0,"total":0},"summary":"PrettyPrintXMLWriter writes unix line endings always","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-2/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14039","id":"14039","description":"","name":"1.3","archived":false,"released":true,"releaseDate":"2006-09-28"}],"resolutiondate":"2006-04-27T00:45:31.824-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["carlos(carlos)","evenisse(evenisse)"],"customfield_10160":null,"updated":"2008-02-02T16:00:27.377-0600","created":"2006-04-27T00:40:29.497-0500","description":null,"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"14032","self":"http://jira.codehaus.org/rest/api/2/issueLink/14032","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"36389","key":"MNG-2244","self":"http://jira.codehaus.org/rest/api/2/issue/36389","fields":{"summary":"Plugin xdoc generator outputs xdoc with unix file endings","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"275097600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-2/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/36390/comment/64266","id":"64266","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"Fixed in 1.2-SNAPSHOT","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2006-04-27T00:45:31.777-0500","updated":"2006-04-27T00:45:31.777-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/36390/comment/64272","id":"64272","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"body":"No, 1.3-SNAPSHOT. 1.2 was release last week.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"created":"2006-04-27T02:07:17.730-0500","updated":"2006-04-27T02:07:17.730-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/36390/comment/64302","id":"64302","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"you are right","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2006-04-27T11:41:02.512-0500","updated":"2006-04-27T11:41:02.512-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-20.json b/jira/PLXUTILS-20.json
new file mode 100644
index 00000000..857d9868
--- /dev/null
+++ b/jira/PLXUTILS-20.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"26150","self":"http://jira.codehaus.org/rest/api/latest/issue/26150","key":"PLXUTILS-20","fields":{"progress":{"progress":0,"total":0},"summary":"Allows includes/excludes patterns with whitespaces","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-20/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14046","id":"14046","description":"","name":"1.0.2","archived":true,"released":true,"releaseDate":"2005-09-13"}],"resolutiondate":"2005-08-19T01:20:51.623-0500","customfield_10210":"2.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=danttran","name":"danttran","emailAddress":"dantran@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Tran","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["brettporter(brettporter)","danttran(danttran)"],"customfield_10160":null,"updated":"2008-02-02T15:57:23.232-0600","created":"2005-08-04T01:35:16.127-0500","description":"This enhancement will allow DirectorScanner to accept includes/includes with whitepaces\n\nFor example the following pattern taken from a xml element will have \\n\\r in it\n\n \n file1,\n file2,\n file3\n\n\nattaches are the diff for DirectoryScanner and its test file DirectoryScannerTest.java","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"296870400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-20/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/16114","id":"16114","filename":"diff.txt","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=danttran","name":"danttran","emailAddress":"dantran@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Tran","active":true},"created":"2005-08-04T01:35:16.222-0500","size":1153,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/16114/diff.txt"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/16115","id":"16115","filename":"DirectoryScannerTest.java","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=danttran","name":"danttran","emailAddress":"dantran@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Tran","active":true},"created":"2005-08-04T01:35:16.249-0500","size":3331,"mimeType":"text/java","content":"http://jira.codehaus.org/secure/attachment/16115/DirectoryScannerTest.java"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"xp","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/26150/comment/44725","id":"44725","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"body":"applied, thanks","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"created":"2005-08-19T01:20:51.553-0500","updated":"2005-08-19T01:20:51.553-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-21.json b/jira/PLXUTILS-21.json
new file mode 100644
index 00000000..aeb23113
--- /dev/null
+++ b/jira/PLXUTILS-21.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"24237","self":"http://jira.codehaus.org/rest/api/latest/issue/24237","key":"PLXUTILS-21","fields":{"progress":{"progress":0,"total":0},"summary":"sync or replace parts of plexus-utils with Apache commons, Apache Ant...","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-21/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["brettporter(brettporter)","siveton(siveton)"],"customfield_10160":null,"updated":"2009-01-06T18:49:05.280-0600","created":"2005-05-25T20:07:34.556-0500","description":"glancing over FileUtils, there are opportunities for file handles to leak due to improperly caught exceptions. It is based on a very old version, and it seems to have been fixed in commons-io-1.0.\n\nI suggest we remove these from plexus-utils in the next release and start using commons-io (it will require method signature changes, however). In a lot of cases, this will allow us to drop plexus-utils (a 250k dep down to an 80k dep for commons-io).\n\n\n\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"189993600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-21/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/24237/comment/160182","id":"160182","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"IMHO I will prefer a general approach, using the shade plugin for instance.\r\n\r\nSome p-u classes could be extended from there original classes, i.e.\r\n\r\n{noformat}\r\norg.codehaus.plexus.util.Base64 => org.apache.commons.codec.binary.Base64\r\norg.codehaus.plexus.util.DirectoryScanner => org.apache.tools.ant.DirectoryScanner\r\norg.codehaus.plexus.util.ExceptionUtils => org.apache.commons.lang.exception.ExceptionUtils\r\norg.codehaus.plexus.util.Expand => org.apache.tools.ant.taskdefs.Expand\r\norg.codehaus.plexus.util.FileUtils => org.apache.commons.io.FileUtils\r\norg.codehaus.plexus.util.IOUtil => org.apache.commons.io.IOUtils\r\norg.codehaus.plexus.util.Os => org.apache.commons.exec.Os (partial)\r\norg.codehaus.plexus.util.SelectorUtils => org.apache.tools.ant.types.selectors.SelectorUtils\r\norg.codehaus.plexus.util.StringInputStream => org.apache.tools.ant.filters.StringInputStream\r\norg.codehaus.plexus.util.StringUtils => org.apache.commons.lang.StringUtils\r\n{noformat}\r\n\r\n*Note*: we need to take care of the implementation of each methods. For instance, StringUtils#isEmpty() has not the same behaviour from commons (no trim()...)\r\n\r\nConfigure the shade plugin for each wanted classes, ie:\r\n\r\n{noformat}\r\n \r\n maven-shade-plugin\r\n \r\n \r\n shade\r\n \r\n shade\r\n \r\n \r\n \r\n \r\n org.codehaus.plexus:plexus-interpolation\r\n commons-lang:commons-lang\r\n \r\n \r\n \r\n \r\n org.codehaus.plexus.interpolation\r\n \r\n \r\n org.apache.commons.lang\r\n \r\n \r\n \r\n \r\n commons-lang:commons-lang\r\n \r\n org/apache/commons/lang/StringUtils.*\r\n \r\n \r\n \r\n \r\n true\r\n \r\n \r\n \r\n \r\n...\r\n{noformat}","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-01-06T18:49:05.252-0600","updated":"2009-01-06T18:49:05.252-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-22.json b/jira/PLXUTILS-22.json
new file mode 100644
index 00000000..990383d4
--- /dev/null
+++ b/jira/PLXUTILS-22.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"26618","self":"http://jira.codehaus.org/rest/api/latest/issue/26618","key":"PLXUTILS-22","fields":{"progress":{"progress":10800,"total":10800,"percent":100},"summary":"allow disctinction between merge and override semantics on Xpp3Dom merge method","timetracking":{"originalEstimate":"6h","remainingEstimate":"0m","timeSpent":"3h","originalEstimateSeconds":21600,"remainingEstimateSeconds":0,"timeSpentSeconds":10800},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-22/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14046","id":"14046","description":"","name":"1.0.2","archived":true,"released":true,"releaseDate":"2005-09-13"}],"resolutiondate":"2005-08-25T13:30:53.603-0500","customfield_10210":"0.0","timespent":10800,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"aggregatetimeoriginalestimate":21600,"customfield_10161":["jdcasey(jdcasey)"],"customfield_10160":null,"updated":"2008-02-02T15:55:54.687-0600","created":"2005-08-22T17:16:49.392-0500","description":"The configuration of maven plugins sometimes depend on merging DOM instances, as in when computing inheritance. When configurations represent lists and other complex objects, the DOMs can only handle override semantics...we need to allow merging of DOM elements which have the same element name, with an optional attribute for overriding.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"12415","self":"http://jira.codehaus.org/rest/api/2/issueLink/12415","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"26381","key":"MNG-732","self":"http://jira.codehaus.org/rest/api/2/issue/26381","fields":{"summary":"Improve plugin configuration property merge algorithm","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"296265600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-22/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":1,"worklogs":[{"self":"http://jira.codehaus.org/rest/api/2/issue/26618/worklog/45206","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"comment":"implemented:\n\n- merge vs. override for self (values, attributes, children) DEFAULT == merge\n- merge vs. append for children (merging or adding recessive children) == merge\n\nAlso added tests.","created":"2005-08-25T13:30:19.887-0500","updated":"2005-08-25T13:30:19.887-0500","started":"2005-08-25T13:30:19.887-0500","timeSpent":"3h","timeSpentSeconds":10800,"id":"45206"}]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":50,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":0,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":0,"customfield_10130":null,"aggregateprogress":{"progress":10800,"total":10800,"percent":100},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/26618/comment/45207","id":"45207","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"body":"see org.codehaus.plexus.xml.Xpp3DomTest in src/test/java","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"created":"2005-08-25T13:30:53.528-0500","updated":"2005-08-25T13:30:53.528-0500"}]},"timeoriginalestimate":21600,"aggregatetimespent":10800}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-23.json b/jira/PLXUTILS-23.json
new file mode 100644
index 00000000..4c3d32c8
--- /dev/null
+++ b/jira/PLXUTILS-23.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"43371","self":"http://jira.codehaus.org/rest/api/latest/issue/43371","key":"PLXUTILS-23","fields":{"progress":{"progress":0,"total":0},"summary":"add the ability to preserver parent directories when using copyDirectory(...) and include pattern.","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-23/votes","votes":1,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=saden1","name":"saden1","emailAddress":"aden.list@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Sharmarke Aden","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["icfantv(icfantv)","saden1(saden1)"],"customfield_10160":null,"updated":"2011-10-25T10:51:41.718-0500","created":"2006-11-01T19:13:33.079-0600","description":"Please note that this issue is somewhat related to http://jira.codehaus.org/browse/PLX-187 but not entirely. \n\nIt seems that with the current plexus-utils v1.3 release only files matching the include pattern are copied but if these files are in sub-directories then their parent directory structure is not preserved. For example, the bellow code will not create a sub-directory in the destination directory if the source directory contains only a sub directories with single files.\n \nFileUtils.copyDirectory(new File(\"c:/temp/copy/src\"), new File(\"c:/temp/copy/dest\"),\"**\", null);\n\nI have created a patch adds a new method called copyDirectory(...) with an extra Boolean parameter that allows one to preserver a files parent directory structure. The following is the new method's signature\n\ncopyDirectory(File sourceDirectory, File destinationDirectory, String includes, String excludes, boolean includeParentdir)\n\nExample:\nFileUtils.copyDirectory(new File(\"c:/temp/copy/src\"), new File(\"c:/temp/copy/dest\"),\"**\", null, true);\n\nThe patch also contains a unite test for the new method. \n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"101779200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-23/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/23769","id":"23769","filename":"plexus-util-r4533.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=saden1","name":"saden1","emailAddress":"aden.list@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Sharmarke Aden","active":true},"created":"2006-11-01T19:13:33.178-0600","size":6521,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/23769/plexus-util-r4533.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"Windows XP, Cygwin, x86, Java 1.4.2","timeestimate":null,"customfield_10130":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10053","value":"Yes","id":"10053"},"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/43371/comment/282037","id":"282037","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=icfantv","name":"icfantv","emailAddress":"adam.n.gordon@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"adam gordon","active":true},"body":"IMO, this is a bug rather than an improvement. When one copies directories I think it is implicitly assumed that the directory structure is to be preserved. I certainly recognize that there are situations where one might want to copy all the files (recursively) from one directory to a flat structure in another directory but would argue that this is the exception rather than the rule.\r\n\r\nIf anyone finds this and needs a workaround using existing code and not patching sources you can use the following syntax in a Commandline object to accomplish what you need:\r\n\r\nAssume the following exist:\r\n\r\ndir1\r\n subdir1\r\n subfile1\r\n subdir2\r\n subfile2\r\n subdir3\r\n subfile3\r\n file1\r\n\r\ndir2\r\n file2\r\n\r\nThen, assuming you are in dir2, the command 'cp -R ../dir1/. .' will do what you want on *nix and OSX.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=icfantv","name":"icfantv","emailAddress":"adam.n.gordon@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"adam gordon","active":true},"created":"2011-10-25T10:33:36.311-0500","updated":"2011-10-25T10:51:41.715-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/43371/comment/282039","id":"282039","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=icfantv","name":"icfantv","emailAddress":"adam.n.gordon@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"adam gordon","active":true},"body":"Here's the code for above:\r\n\r\n String dir1 = \"/home/gordona/tmp/dir1\";\r\n String dir2 = \"/home/gordona/tmp/dir2\";\r\n\r\n Commandline cl = new Commandline();\r\n cl.setWorkingDirectory(dir2);\r\n cl.setExecutable(\"cp\");\r\n cl.createArg().setValue(\"-R\");\r\n cl.createArg().setValue(dir1 + File.separator + \".\");\r\n cl.createArg().setValue(\".\");\r\n System.out.println(\"command: \" + cl.toString());\r\n try {\r\n cl.execute();\r\n } catch (CommandLineException ex) {\r\n ex.printStackTrace();\r\n }\r\n\r\nNote that you *need* to have the last '.' in a separate createArg() call or Commandline will lumb them all together in the same set of tick marks and \"cp\" will complain about missing the destination file operand.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=icfantv","name":"icfantv","emailAddress":"adam.n.gordon@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"adam gordon","active":true},"created":"2011-10-25T10:50:40.547-0500","updated":"2011-10-25T10:50:40.547-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-24.json b/jira/PLXUTILS-24.json
new file mode 100644
index 00000000..c2b6af19
--- /dev/null
+++ b/jira/PLXUTILS-24.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"26947","self":"http://jira.codehaus.org/rest/api/latest/issue/26947","key":"PLXUTILS-24","fields":{"progress":{"progress":0,"total":0},"summary":"Add FileUtils.fileAppend","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-24/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14048","id":"14048","description":"","name":"1.0.4","archived":true,"released":true,"releaseDate":"2005-10-11"}],"resolutiondate":"2005-10-07T23:38:39.225-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=danttran","name":"danttran","emailAddress":"dantran@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Tran","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["brettporter(brettporter)","danttran(danttran)"],"customfield_10160":null,"updated":"2008-02-02T15:54:35.707-0600","created":"2005-09-03T21:11:42.521-0500","description":"Attached is the new added method FileUtils.fileAppend and its test case","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"292550400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-24/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/16528","id":"16528","filename":"fileAppend.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=danttran","name":"danttran","emailAddress":"dantran@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Tran","active":true},"created":"2005-09-03T21:11:42.609-0500","size":1817,"mimeType":"application/octet-stream","content":"http://jira.codehaus.org/secure/attachment/16528/fileAppend.diff"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"xp","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/26947/comment/48090","id":"48090","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"body":"applied","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"created":"2005-10-07T23:38:39.103-0500","updated":"2005-10-07T23:38:39.103-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-25.json b/jira/PLXUTILS-25.json
new file mode 100644
index 00000000..93a1b86c
--- /dev/null
+++ b/jira/PLXUTILS-25.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"45651","self":"http://jira.codehaus.org/rest/api/latest/issue/45651","key":"PLXUTILS-25","fields":{"progress":{"progress":0,"total":0},"summary":"Runtime.addShutdownHook() prevents maven embedding","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-25/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17364","id":"17364","description":"","name":"2.1","archived":false,"released":true,"releaseDate":"2011-06-09"}],"resolutiondate":"2011-05-16T12:33:54.091-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkleint","name":"mkleint","emailAddress":"mkleint@codehaus.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Milos Kleint","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["igorfie(igorfie)","lacostej(lacostej)","krosenvold(krosenvold)","mkleint(mkleint)"],"customfield_10160":null,"updated":"2011-06-18T04:36:29.190-0500","created":"2007-01-05T04:01:17.204-0600","description":"\nwhile I haven't found an actual problem with the CommandLineUtils' use of shutdown hooks, I believe it's potencially dangerous for maven's execution in embedded environment.\n\nhttp://jira.codehaus.org/browse/MASSEMBLY-158 is related.\n\n\njava.lang.IllegalThreadStateException\n at java.lang.ThreadGroup.add(ThreadGroup.java:856)\n at java.lang.Thread.start(Thread.java:573)\n at java.lang.Shutdown.runHooks(Shutdown.java:128)\n at java.lang.Shutdown.sequence(Shutdown.java:173)\n at java.lang.Shutdown.exit(Shutdown.java:218)\n at java.lang.Runtime.exit(Runtime.java:90)\n at java.lang.System.exit(System.java:869)\n at org.netbeans.TopSecurityManager.exit(TopSecurityManager.java:128)\n at org.netbeans.core.NbTopManager$3.run(NbTopManager.java:408)\n at org.openide.util.Task.run(Task.java:222)\n at org.openide.util.RequestProcessor$Task.run(RequestProcessor.java:541)\n[catch] at org.openide.util.RequestProcessor$Processor.run(RequestProcessor.java:963)\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"17514","self":"http://jira.codehaus.org/rest/api/2/issueLink/17514","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"43526","key":"MASSEMBLY-158","self":"http://jira.codehaus.org/rest/api/2/issue/43526","fields":{"summary":"tempRoot directory not created, exceptions thrown when filtering files","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"29190","self":"http://jira.codehaus.org/rest/api/2/issueLink/29190","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"126583","key":"SUREFIRE-748","self":"http://jira.codehaus.org/rest/api/2/issue/126583","fields":{"summary":"Ensure plugin classloader is unloadable","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"115689600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-25/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/42364","id":"42364","filename":"PLXUTILS-25.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"created":"2009-06-02T12:31:15.584-0500","size":2255,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/42364/PLXUTILS-25.diff"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":5,"total":5,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/45651/comment/84101","id":"84101","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkleint","name":"mkleint","emailAddress":"mkleint@codehaus.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Milos Kleint","active":true},"body":"Checking the Ant's Execute class reveals that ant uses the same/similar strategy. It however removes the shutdown hook if all the processes exited normally. If done in plexus-utils as well it should cater for 99.9 percent cases of possible failure in embedders as well.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkleint","name":"mkleint","emailAddress":"mkleint@codehaus.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Milos Kleint","active":true},"created":"2007-01-05T04:17:47.272-0600","updated":"2007-01-05T04:17:47.272-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/45651/comment/93757","id":"93757","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"the bug is probably in Thread.start which shouldn't take the assumption to add the Thread to the group at that time...\r\n\r\n1 idea: load the CommandLineUtils class before embedding maven (as to force the thread group of the shutdown hook to be the one of the embedder)\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-21T00:51:36.807-0500","updated":"2007-04-21T00:51:36.807-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/45651/comment/93758","id":"93758","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"Another more robust/intuitive solution is to assign a System Thread group to the Thread created and specieid to addShutdownHook().\r\n\r\nMaybe doing something like :\r\n\r\n static\r\n {\r\n\r\nThreadGroup root = Thread.currentThread().getThreadGroup().getParent();\r\n while (root.getParent() != null) {\r\n root = root.getParent();\r\n }\r\n\r\n Runtime.getRuntime().addShutdownHook( new Thread( root, \"CommandlineUtil shutdown\" )\r\n {\r\n ....\r\n\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-21T00:56:56.821-0500","updated":"2007-04-21T00:56:56.821-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/45651/comment/179038","id":"179038","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"body":"I ran into this/related issue when running maven in a \"recyclable\" while setting up maven performance regression tests. Registered shutdown hook instances are holding entire maven classloader in memory, which results in \"OutOfMemoryError: PermGen spac\" exceptions.\r\n\r\nI think proper long-term solution would be to turn CommandLineUtils into a component, so it can be shutdown properly as part of container shutdown. Proposed short-term solution (attached), is to allow embedding application to explicitly remove shutdown hook, optionally running it.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=igorfie","name":"igorfie","emailAddress":"igor@ifedorenko.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Igor Fedorenko","active":true},"created":"2009-06-02T12:31:15.594-0500","updated":"2009-06-02T12:31:15.594-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/45651/comment/267160","id":"267160","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"Fixed in dff209e5a1f7c1bb4a4de2a19582bbc2cb3c6f0c. Registered shutdown hook per-invocation.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2011-05-16T12:33:54.159-0500","updated":"2011-05-16T12:33:54.159-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-26.json b/jira/PLXUTILS-26.json
new file mode 100644
index 00000000..eab92e9a
--- /dev/null
+++ b/jira/PLXUTILS-26.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"32432","self":"http://jira.codehaus.org/rest/api/latest/issue/32432","key":"PLXUTILS-26","fields":{"progress":{"progress":0,"total":0},"summary":"Allow to deep copy directories with includes/excludes","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-26/votes","votes":2,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","lacostej(lacostej)"],"customfield_10160":null,"updated":"2008-09-16T05:44:24.324-0500","created":"2006-01-16T14:05:05.571-0600","description":null,"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[{"id":"20507","self":"http://jira.codehaus.org/rest/api/2/issueLink/20507","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"73599","key":"PLXUTILS-91","self":"http://jira.codehaus.org/rest/api/2/issue/73599","fields":{"summary":"add a copyDirectoryLayout which support excludes and includes","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false}}}},{"id":"19269","self":"http://jira.codehaus.org/rest/api/2/issueLink/19269","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"66306","key":"MINVOKER-32","self":"http://jira.codehaus.org/rest/api/2/issue/66306","fields":{"summary":"Exclude some files by default when using \"cloneProjectsTo\"","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"218505600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-26/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/18642","id":"18642","filename":"patch-PLX-187.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2006-01-16T14:06:11.487-0600","size":6078,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/18642/patch-PLX-187.diff"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/32432/comment/56021","id":"56021","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"Patch that seems to work...\r\nCould perhaps be improved (the for (int i = 1) is a little bit hackish.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2006-01-16T14:06:11.533-0600","updated":"2006-01-16T14:06:11.533-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/32432/comment/123296","id":"123296","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"+1 on the general idea. This would be useful for the Maven Invoker Plugin's option [cloneProjectsTo|http://maven.apache.org/plugins/maven-invoker-plugin/run-mojo.html#cloneProjectsTo] to exclude the usual SCM stuff when copying the IT projects.\r\n\r\n-1 on the System.out.println()'s that got into the patch.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-02-11T12:41:47.007-0600","updated":"2008-02-11T12:41:47.007-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-27.json b/jira/PLXUTILS-27.json
new file mode 100644
index 00000000..32f61c70
--- /dev/null
+++ b/jira/PLXUTILS-27.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"41758","self":"http://jira.codehaus.org/rest/api/latest/issue/41758","key":"PLXCOMP-70","fields":{"progress":{"progress":0,"total":0},"summary":"Embedded error: String index out of range: 70","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXCOMP-70/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/17474","id":"17474","description":"","name":"plexus-archiver-2.1","archived":false,"released":true,"releaseDate":"2012-01-23"}],"resolutiondate":"2012-01-23T16:08:47.365-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pinghe","name":"pinghe","emailAddress":"mzhx@163.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"pinghe","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["ffray(ffray)","hboutemy(hboutemy)","krosenvold(krosenvold)","pinghe(pinghe)"],"customfield_10160":null,"updated":"2012-01-24T00:47:10.887-0600","created":"2006-09-19T23:42:12.128-0500","description":"Embedded error: String index out of range: 70\r\n\r\n{noformat}Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: 70\r\n at java.lang.String.substring(String.java:1441)\r\n at org.codehaus.plexus.archiver.jar.Manifest$Attribute.writeLine(Manifest.java:389){noformat}\r\n\r\nerror code:\r\n{code:java} while ( line.getBytes().length > MAX_LINE_LENGTH )\r\n {\r\n // try to find a MAX_LINE_LENGTH byte section\r\n int breakIndex = MAX_SECTION_LENGTH;\r\n String section = line.substring( 0, breakIndex );{code}\r\nfix:\r\n{code:java}line.getBytes().length --->> line.length, line is unicode, {code}","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"duedate":null,"issuelinks":[{"id":"28723","self":"http://jira.codehaus.org/rest/api/2/issueLink/28723","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"124003","key":"PLXCOMP-172","self":"http://jira.codehaus.org/rest/api/2/issue/124003","fields":{"summary":"remove Ant's Manifest class: use JDK's class instead","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false}}}}],"customfield_10163":"93916800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXCOMP-70/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/37210","id":"37210","filename":"PLXCOMP-70.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ffray","name":"ffray","emailAddress":"fray@itcf.biz","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Florian Fray","active":true},"created":"2008-09-25T19:32:45.739-0500","size":5388,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/37210/PLXCOMP-70.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11440","id":"11440","key":"PLXCOMP","name":"Plexus Components","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11440&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11440&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11440&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11440&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"windows","timeestimate":null,"customfield_10130":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10053","value":"Yes","id":"10053"},"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[{"self":"http://jira.codehaus.org/rest/api/2/component/12540","id":"12540","name":"plexus-archiver"}],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/41758/comment/149036","id":"149036","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ffray","name":"ffray","emailAddress":"fray@itcf.biz","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Florian Fray","active":true},"body":"Here's a patch. Gets also rid of this extensive substring-stuff.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ffray","name":"ffray","emailAddress":"fray@itcf.biz","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Florian Fray","active":true},"created":"2008-09-25T19:32:45.808-0500","updated":"2008-09-25T19:32:45.808-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/41758/comment/262325","id":"262325","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"thanks for your patch\r\nbut there is a problem: the limit in a line of the manifest is not expressed as characters but as bytes\r\nthen the whole API working with PrintWriters is broken, since the 72 bytes limit can happen inside the bytes of a character, which cannot be represented in a writer\r\n\r\nperhaps it's time to throw away Manifest class from Ant and use JDK one intead (which is here since java 1.2)","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2011-04-02T12:08:14.432-0500","updated":"2011-04-02T12:08:14.432-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/41758/comment/289195","id":"289195","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"FIxed in 838ab2e61ab6540631abe8a792292ea672e97a85","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2012-01-23T16:08:47.433-0600","updated":"2012-01-23T16:08:47.433-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-28.json b/jira/PLXUTILS-28.json
new file mode 100644
index 00000000..7d02f906
--- /dev/null
+++ b/jira/PLXUTILS-28.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"46873","self":"http://jira.codehaus.org/rest/api/latest/issue/46873","key":"PLXUTILS-28","fields":{"progress":{"progress":0,"total":0},"summary":"FileUtils.cleanDirectory() does not remove symbolic links","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-28/votes","votes":6,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"resolutiondate":"2008-07-20T18:27:31.259-0500","customfield_10210":"2.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=srp","name":"srp","emailAddress":"srp@ncsa.uiuc.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Steve Pietrowicz","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","pamdirac(pamdirac)","srp(srp)"],"customfield_10160":null,"updated":"2008-09-03T14:56:49.448-0500","created":"2007-02-02T09:27:33.187-0600","description":"FileUtils.cleanDirectory() will not remove symbolic links if they are located in the directory that you're trying to delete.\n\nYou can test this by running this shell script:\n-----\n#!/bin/sh\nmkdir /tmp/test_clean\necho > /tmp/test_clean/1\necho > /tmp/test_clean/2\nln -s /tmp/test_clean/foo /tmp/test_clean/bar\n----------\n\nand compiling and running this test program:\n----\n{code:java}\nimport org.codehaus.plexus.util.FileUtils;\nimport java.io.*;\n\npublic class broken {\n\n static public void main(String[] argv) {\n try {\n File file = new File(argv[0]);\n FileUtils.cleanDirectory(file);\n } catch (Exception e) {\n System.out.println(e);\n }\n }\n}\n{code}\n-------------------\n\nI looked around for a fix to for this, and found this page: http://joust.kano.net/weblog/archives/000071.html\n\nwhich offers the following public domain code, with a slight modification by me to only clean the directory, not delete it.\n{code:java}\n public static boolean cleanDirectory(File dir) {\n // to see if this directory is actually a symbolic link to a directory,\n // we want to get its canonical path - that is, we follow the link to\n // the file it's actually linked to\n File candir;\n try {\n candir = dir.getCanonicalFile();\n } catch (IOException e) {\n return false;\n }\n\n // a symbolic link has a different canonical path than its actual path,\n // unless it's a link to itself\n if (!candir.equals(dir.getAbsoluteFile())) {\n // this file is a symbolic link, and there's no reason for us to\n // follow it, because then we might be deleting something outside of\n // the directory we were told to delete\n return false;\n }\n\n // now we go through all of the files and subdirectories in the\n // directory and delete them one by one\n File[] files = candir.listFiles();\n if (files != null) {\n for (int i = 0; i < files.length; i++) {\n File file = files[i];\n\n // in case this directory is actually a symbolic link, or it's\n // empty, we want to try to delete the link before we try\n // anything\n boolean deleted = file.delete();\n if (!deleted) {\n // deleting the file failed, so maybe it's a non-empty\n // directory\n if (file.isDirectory()) {\n cleanDirectory(file);\n file.delete();\n }\n\n // otherwise, there's nothing else we can do\n }\n }\n }\n\n return true;\n }\n{code}\n\nI wrote a test program that incorporates this method and tested it using the same shell script, and it works.\n\nI've uploaded the test programs and a shell script that creates additional links, directories and links to directories to try and be sure all test cases are covered.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"20424","self":"http://jira.codehaus.org/rest/api/2/issueLink/20424","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"60741","key":"MCLEAN-28","self":"http://jira.codehaus.org/rest/api/2/issue/60741","fields":{"summary":"maven-clean-plugin doesn't delete directories with symlinks in them","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"20422","self":"http://jira.codehaus.org/rest/api/2/issueLink/20422","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"73105","key":"MSHARED-58","self":"http://jira.codehaus.org/rest/api/2/issue/73105","fields":{"summary":"FileSetManager.delete() fails to delete dangling symlinks","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"204681600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-28/watchers","watchCount":3,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/25544","id":"25544","filename":"cleanDirectory_fix.tar.gz","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=srp","name":"srp","emailAddress":"srp@ncsa.uiuc.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Steve Pietrowicz","active":true},"created":"2007-02-02T09:27:33.245-0600","size":1411,"mimeType":"application/x-gzip","content":"http://jira.codehaus.org/secure/attachment/25544/cleanDirectory_fix.tar.gz"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/27038","id":"27038","filename":"r6344.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pamdirac","name":"pamdirac","emailAddress":"john@mcnair.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John McNair","active":true},"created":"2007-04-26T15:41:26.054-0500","size":2445,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/27038/r6344.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"Tested on Linux, Fedora Core 5","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":4,"total":4,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/46873/comment/86672","id":"86672","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=srp","name":"srp","emailAddress":"srp@ncsa.uiuc.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Steve Pietrowicz","active":true},"body":"Sorry for the formatting on the code. Download the tarball to see the code.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=srp","name":"srp","emailAddress":"srp@ncsa.uiuc.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Steve Pietrowicz","active":true},"created":"2007-02-02T13:07:36.642-0600","updated":"2007-02-02T13:07:36.642-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/46873/comment/94277","id":"94277","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pamdirac","name":"pamdirac","emailAddress":"john@mcnair.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John McNair","active":true},"body":"I fixed this an alternate way. The real problem is that dangling symlinks don't exist according to File.exists(), so forceDelete() skips over them. This can be a problem in deleteDirectory() even if you have valid symlinks because you don't necessarily know that a given symlink will be deleted before its target.\r\n\r\nThe solution is just to make forceDelete() a little more forceful, i.e., try to delete even if the file does not exist and ignore failure for that one case only.\r\n\r\nI also added 3 unit tests to verify:\r\n- can delete symlink->file\r\n- can delete symlink->directory\r\n- can delete symlink->nothing at all (this was what was broken)\r\n\r\nThe unit tests only run on Linux (and do nothing elsewhere). I had to use Runtime to execute /bin/ls. That obviously doesn't work on Windows and likely several other Java hosts. Would you rather determine the execution set via inclusion or excusion?\r\n\r\nI have attached the output of 'svn diff' where my working copy is r6344.\r\n\r\nThis bug bites people using Continuum that have symlinks in their build directories (like me). Continuum explodes, and you have to manually clean up. So it would be cool if this could be fixed.\r\n\r\nThanks.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pamdirac","name":"pamdirac","emailAddress":"john@mcnair.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John McNair","active":true},"created":"2007-04-26T15:41:26.058-0500","updated":"2007-04-26T15:41:26.058-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/46873/comment/142541","id":"142541","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Related to [IO-147|https://issues.apache.org/jira/browse/IO-147].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-07-20T17:00:01.960-0500","updated":"2008-07-20T17:00:01.960-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/46873/comment/142547","id":"142547","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Applied John's patch in [r7530|http://fisheye.codehaus.org/changelog/plexus/?cs=7530], thanks!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-07-20T18:27:31.239-0500","updated":"2008-07-20T18:27:31.239-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-29.json b/jira/PLXUTILS-29.json
new file mode 100644
index 00000000..7e16db35
--- /dev/null
+++ b/jira/PLXUTILS-29.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"47040","self":"http://jira.codehaus.org/rest/api/latest/issue/47040","key":"PLXUTILS-29","fields":{"progress":{"progress":0,"total":0},"summary":"Unknown os family gets validated as the current os family","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-29/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14041","id":"14041","description":"","name":"1.4.1","archived":false,"released":true,"releaseDate":"2007-03-10"}],"resolutiondate":"2007-02-07T03:32:57.448-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=franz+see","name":"franz see","emailAddress":"franz.see@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Franz Allan Valencia See","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["evenisse(evenisse)","franz see(franz see)"],"customfield_10160":null,"updated":"2008-02-02T15:38:46.306-0600","created":"2007-02-06T19:23:29.800-0600","description":"Os#isOs( \"bogus family\", null, null, null ) and Os#isFamily( \"bogus family\" ) should return false instead of true","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"15789","self":"http://jira.codehaus.org/rest/api/2/issueLink/15789","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"47039","key":"MNG-2812","self":"http://jira.codehaus.org/rest/api/2/issue/47039","fields":{"summary":"Profile with an undefined os family activation should not activate","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"250473600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-29/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/25603","id":"25603","filename":"PLXUTILS-29-plexus-utils.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=franz+see","name":"franz see","emailAddress":"franz.see@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Franz Allan Valencia See","active":true},"created":"2007-02-06T19:35:24.088-0600","size":1120,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/25603/PLXUTILS-29-plexus-utils.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/47040/comment/86963","id":"86963","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=franz+see","name":"franz see","emailAddress":"franz.see@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Franz Allan Valencia See","active":true},"body":"PLXUTILS-29-plexus-utils.patch fixes this issue ( includes test case )","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=franz+see","name":"franz see","emailAddress":"franz.see@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Franz Allan Valencia See","active":true},"created":"2007-02-06T19:35:24.116-0600","updated":"2007-02-06T19:35:24.116-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/47040/comment/86989","id":"86989","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"body":"Applied.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"created":"2007-02-07T03:32:57.419-0600","updated":"2007-02-07T03:32:57.419-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-3.json b/jira/PLXUTILS-3.json
new file mode 100644
index 00000000..d32e419d
--- /dev/null
+++ b/jira/PLXUTILS-3.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"36613","self":"http://jira.codehaus.org/rest/api/latest/issue/36613","key":"PLXUTILS-3","fields":{"progress":{"progress":0,"total":0},"summary":"Case issue in Os.isOs(). Creates hard to identify maven profile activation failures (Patch attached)","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-3/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14039","id":"14039","description":"","name":"1.3","archived":false,"released":true,"releaseDate":"2006-09-28"}],"resolutiondate":"2006-05-12T04:36:37.365-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["evenisse(evenisse)","lacostej(lacostej)"],"customfield_10160":null,"updated":"2008-12-28T14:29:58.129-0600","created":"2006-05-03T11:26:42.362-0500","description":"My os.name is Linux. If I use Linux in my pom.xml, the profile doesn't get activated. If I use linux.. it is.\n\nProblem probably created because the Os class mixes instance and class methods. Calls to instance methods are correctly handled (fields are case-lowered when set), while class ones are not (parameters are not case-lowered). Wonder if the issue was fixed in Ant...\n\nI haven't tested the patch yet, having problems making maven reuse the fixed plexus-utils, but I believe this should work.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"duedate":null,"issuelinks":[{"id":"21659","self":"http://jira.codehaus.org/rest/api/2/issueLink/21659","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"47066","key":"MNG-2814","self":"http://jira.codehaus.org/rest/api/2/issue/47066","fields":{"summary":"OS name is only detected if lower cased","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"273888000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-3/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/20388","id":"20388","filename":"patch.txt","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2006-05-03T11:26:42.462-0500","size":1446,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/20388/patch.txt"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/36613/comment/64674","id":"64674","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"I've tested that this indeed fixes my issues by updating plexus-utils jar in $MAVEN_HOME/core/","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2006-05-03T12:09:53.386-0500","updated":"2006-05-03T12:09:53.386-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/36613/comment/65269","id":"65269","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"body":"Applied with some other changes","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"created":"2006-05-12T04:36:37.343-0500","updated":"2006-05-12T04:36:37.343-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-30.json b/jira/PLXUTILS-30.json
new file mode 100644
index 00000000..0e7070c9
--- /dev/null
+++ b/jira/PLXUTILS-30.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"47325","self":"http://jira.codehaus.org/rest/api/latest/issue/47325","key":"PLXUTILS-30","fields":{"progress":{"progress":0,"total":0},"summary":"Need to specify license type in pom","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-30/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14041","id":"14041","description":"","name":"1.4.1","archived":false,"released":true,"releaseDate":"2007-03-10"}],"resolutiondate":"2007-03-02T03:24:31.014-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=danttran","name":"danttran","emailAddress":"dantran@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Tran","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["danttran(danttran)","jdcasey(jdcasey)","olamy(olamy)"],"customfield_10160":null,"updated":"2008-02-02T13:53:01.877-0600","created":"2007-02-13T19:06:37.029-0600","description":"I want to use plexus-utils in my apps, and since it does not have any license info, I can not include it","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[],"customfield_10163":"248659200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-30/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":4,"total":4,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/47325/comment/88726","id":"88726","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"License information added in parent pom rev [5948|http://fisheye.codehaus.org/changelog/plexus/?cs=5947].\r\nUpgrade plexus-utils parent pom [5950|http://fisheye.codehaus.org/changelog/plexus/?cs=5950].\r\nIssue not close : some sources need license header review.\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-02-27T18:00:48.522-0600","updated":"2007-02-27T18:00:48.522-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/47325/comment/88737","id":"88737","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"Update license headers rev [5956|http://fisheye.codehaus.org/changelog/plexus/?cs=5956].\r\nAdd external licenses rev [5957|http://fisheye.codehaus.org/changelog/plexus/?cs=595].\r\n\r\nJohn files in org.codehaus.plexus.util.reflection.* contains :\r\n/*\r\n\r\n Copyright (c) 2002 John Casey. All rights reserved.\r\n\r\n SEE licenses/cj-license.txt FOR MORE INFORMATION.\r\n\r\n */\r\n\r\nCan you change this ?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-02-28T02:31:52.002-0600","updated":"2007-02-28T02:31:52.002-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/47325/comment/88749","id":"88749","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"rev 5856 reverted.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-02-28T04:31:15.524-0600","updated":"2007-02-28T04:31:15.524-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/47325/comment/88793","id":"88793","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"body":"org.codehaus.plexus.util.reflection.* is changed to APL 2.0.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"created":"2007-02-28T09:31:16.329-0600","updated":"2007-02-28T09:31:16.329-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-31.json b/jira/PLXUTILS-31.json
new file mode 100644
index 00000000..9e9277af
--- /dev/null
+++ b/jira/PLXUTILS-31.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"49571","self":"http://jira.codehaus.org/rest/api/latest/issue/49571","key":"PLXUTILS-31","fields":{"progress":{"progress":0,"total":0},"summary":"Quoting issue on Windows. Potential regression ?","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-31/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14042","id":"14042","description":"","name":"1.4.2","archived":false,"released":true,"releaseDate":"2007-05-20"}],"resolutiondate":"2007-05-13T15:57:10.647-0500","customfield_10210":"2.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["baerrach(baerrach)","carlos(carlos)","fj(fj)","lacostej(lacostej)"],"customfield_10160":null,"updated":"2011-12-05T00:56:45.476-0600","created":"2007-04-06T04:10:04.213-0500","description":"When trying to update from p-u 1.0.5 to 1.4.1 in the webstart maven plugin i encountered an CommandLine execution issue.\n\ntestAddThenRemoveSignatureCheckUsingJarSignVerifyMojo(org.codehaus.mojo.webstart.JarUnsignMojoTest) Time elapsed: 1.594 sec <<< ERROR!\njava.lang.IllegalArgumentException\n\tat java.lang.ProcessImpl.(ProcessImpl.java:69)\n\tat java.lang.ProcessImpl.start(ProcessImpl.java:30)\n\tat java.lang.ProcessBuilder.start(ProcessBuilder.java:451)\n\tat java.lang.Runtime.exec(Runtime.java:591)\n\tat org.codehaus.plexus.util.cli.Commandline.execute(Commandline.java:653)\n\tat org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLine(CommandLineUtils.java:102)\n\tat org.codehaus.mojo.keytool.GenkeyMojo.executeCommandLine(GenkeyMojo.java:374)\n\nThe command looks properly quoted:\n\n[debug] Executing: cmd.exe /X /C '\"C:\\Program Files\\Java\\jdk1.5.0_11\\jre\\..\\bin\\keytool.exe\" -genkey -dname \"CN=CN, OU=OU, L=L, ST=ST, O=O, C=C\" -alias test -keypass 123456 -keystore C:\\DOCUME~1\\et4642\\LOCALS~1\\Temp\\keystore -storepass 123456'\n\nSo I wonder if this is not: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6468220 \n\nIn that issue a work-around is identified. I will try to create a test case for p-u.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[{"id":"16490","self":"http://jira.codehaus.org/rest/api/2/issueLink/16490","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"27795","key":"PLXUTILS-85","self":"http://jira.codehaus.org/rest/api/2/issue/27795","fields":{"summary":"under windows when executing java classpaths with embedded spaces cause the execution to fail","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"16340","self":"http://jira.codehaus.org/rest/api/2/issueLink/16340","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"48914","key":"SUREFIRE-310","self":"http://jira.codehaus.org/rest/api/2/issue/48914","fields":{"summary":"surefire-reports failes to locate java, returns \"There are test failures.\"","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"16530","self":"http://jira.codehaus.org/rest/api/2/issueLink/16530","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"50969","key":"MINVOKER-3","self":"http://jira.codehaus.org/rest/api/2/issue/50969","fields":{"summary":"Invoker always returns 0 on Windows due to cmd.exe and exit /b in mvn.bat","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"16312","self":"http://jira.codehaus.org/rest/api/2/issueLink/16312","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"49529","key":"MNG-2936","self":"http://jira.codehaus.org/rest/api/2/issue/49529","fields":{"summary":"IllegalArgumentException forking during javadoc","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"16586","self":"http://jira.codehaus.org/rest/api/2/issueLink/16586","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"51281","key":"MNG-2996","self":"http://jira.codehaus.org/rest/api/2/issue/51281","fields":{"summary":"maven-test-tools: Updates for PLXUTILS-31 patches","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"16298","self":"http://jira.codehaus.org/rest/api/2/issueLink/16298","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"47984","key":"MWEBSTART-29","self":"http://jira.codehaus.org/rest/api/2/issue/47984","fields":{"summary":"Problem with keytool execution whitespace in path","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"98236800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-31/watchers","watchCount":4,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/26698","id":"26698","filename":"PLXUTILS-31.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-06T16:32:44.975-0500","size":4836,"mimeType":"application/octet-stream","content":"http://jira.codehaus.org/secure/attachment/26698/PLXUTILS-31.diff"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/27291","id":"27291","filename":"PLXUTILS-31-bae-patch.txt","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=baerrach","name":"baerrach","emailAddress":"baerrach@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrie Treloar","active":true},"created":"2007-05-13T04:05:12.334-0500","size":5458,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/27291/PLXUTILS-31-bae-patch.txt"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10053","value":"Yes","id":"10053"},"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":12,"total":12,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/92292","id":"92292","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"I think that the CMD quoting in plexus 1.4.1 is invalid.\r\n\r\nIf I use it to generate the command line for the keytool plugin, the generated command line doesn't work on Windows:\r\n\r\nC:\\b2bdev\\projects\\plexus\\plexus-utils>cmd.exe /X /C '\"C:\\Program Files\\Java\\jdk1.5.0_11\\jre\\..\\bin\\keytool.exe\" -genkey -dname \"CN=CN, OU=OU, L=L, ST=ST, O=O, C=C\" -alias test -keypass 123456 -keystore C:\\DOCUME~1\\et4642\\LOCALS~1\\Temp\\keystore -storepass 123456'\r\nThe filename, directory name, or volume label syntax is incorrect.\r\n\r\nI tried adding backslash but that didn't help:\r\n\r\nC:\\b2bdev\\projects\\plexus\\plexus-utils>cmd.exe /X /C \"\\\"C:\\Program Files\\Java\\jdk1.5.0_11\\jre\\..\\bin\\keytool.exe\\\" -genkey -dname \\\"CN=CN, OU=OU, L=L, ST=ST, O=O, C=C\\\" -alias test -keypass 123456 -keystore keystore -storepass 123456\"\r\n'\\\"C:\\Program Files\\Java\\jdk1.5.0_11\\jre\\..\\bin\\keytool.exe\\\"' is not recognized as an internal or external command,\r\noperable program or batch file.\r\n\r\ndoubling the quotes [1] seems the appropriate behavior:\r\n\r\nC:\\b2bdev\\projects\\plexus\\plexus-utils>cmd.exe /X /C \"\"C:\\Program Files\\Java\\jdk1.5.0_11\\jre\\..\\bin\\keytool.exe\" -genkey -dname \"CN=CN, OU=OU, L=L, ST=ST, O=O, C=C\" -alias test -keypass 123456 -keystore keystore -storepass 123456\"\r\nkeytool error: java.lang.Exception: Key pair not generated, alias already exists\r\n\r\n\r\n\r\nSo I tested the above patch and it works for me. Unfortunately it breaks 3 unit tests, but I believe these tests to be incorrect (their expectations are invalid).\r\n\r\nCan someone double check the issue ? I don't use Windows so much usually.\r\n\r\nI can provide a cleaned up unit test & patch. Thanks!\r\n\r\n\r\n[1] See also http://www.ss64.com/ntsyntax/esc.html \"Using \"Double Quotes\"\"","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-06T16:32:45.009-0500","updated":"2007-04-06T16:32:45.009-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/92293","id":"92293","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"And can someone affects the issue to 1.4.1, and bump the issue priority? I would like to update 2-3 maven plugins to p-u 1.4.x but won't be able until this is fixed. Thanks again!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-06T16:34:48.115-0500","updated":"2007-04-06T16:34:48.115-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/92297","id":"92297","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"pasting code from the JDK is a bad idea, have you read the license...\r\n\r\nthis is definitely a regression on windows","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2007-04-06T17:03:13.904-0500","updated":"2007-04-06T17:03:13.904-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/92350","id":"92350","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"> pasting code from the JDK is a bad idea, have you read the license...\r\n\r\nHei Carlos. Sorry for that. That was the quickest way for me to reproduce the issue. The code is available in Google's cache for Sun's issue:\r\n\r\nhttp://66.102.9.104/search?q=cache:FLbIKWL9oqgJ:bugs.sun.com/bugdatabase/view_bug.do%3Fbug_id%3D6468220\r\n\r\nDo you want me to create a new test case without the offending code ?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-08T11:39:31.714-0500","updated":"2007-04-08T11:39:31.714-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/92766","id":"92766","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"yes, we can't use code from the JDK\r\n\r\nThis is definitely a regression, I think I added tests time ago for windows, probably they were incorrectly changed","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2007-04-12T13:49:11.240-0500","updated":"2007-04-12T13:49:11.240-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/92921","id":"92921","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"My only question then is: should we try to have clean room rewrite of the unit test (because I have seen the code I shouldn't have used), or is it OK if I rewrite them myself ?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-14T09:08:08.106-0500","updated":"2007-04-14T09:08:08.106-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/93177","id":"93177","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"My patch isn't complete. My plan is to do the following. Write a batch file to test the various expected behaviors.\r\n\r\nE.g. with a simple Echo class similar to this\r\n\r\npublic class Echo {\r\n public static void main(String[] args) {\r\n for (int i = 0; i < args.length; i++) {\r\n System.out.println(args[i]);\r\n }\r\n }\r\n}\r\n\r\nThen in the batch script, have\r\n\r\n\"...\\Program Files\\Java\\.....\\java.exe\" Echo\r\n\"...\\Program Files\\Java\\.....\\java.exe\" Echo \"Hihi\"\r\n\"...\\Program Files\\Java\\.....\\java.exe\" Echo \"Hello World\"\r\n\r\nsame command with a shell (find the appropriate quoting so that this works, probbaly needs double quotes)\r\n\r\ncmd /X /C \"...\\Program Files\\Java\\.....\\java.exe\" Echo\r\ncmd /X /C \"...\\Program Files\\Java\\.....\\java.exe\" Echo \"Hihi\"\r\ncmd /X /C \"...\\Program Files\\Java\\.....\\java.exe\" Echo \"Hello World\"\r\n\r\nAnd now same thing (with and without CMD) using another java.exe installed in a directory with non space in the absolute path.\r\n\r\nc:\\Java\\bin\\java.exe ....\r\n\r\nTest the batch script under XP. Store the logs.\r\n\r\nOnce this batch script works (i.e we've identified all the required quoting), write a simple java class that runs the same commands directly calling\r\n\r\nRuntime.getRuntime().exec(....)\r\n\r\nand figuring out what Runtime.getRuntime().exec() will require for this to work. From there it will be straightforward to write the patch.\r\n\r\nThanks to anyone running Windows for helping with the first part...","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-17T16:29:40.947-0500","updated":"2007-04-17T16:29:40.947-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/93702","id":"93702","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"jerome, if you go back in the revisions you could get my test, it was pretty complete for windows IIRC","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2007-04-20T12:53:50.474-0500","updated":"2007-04-20T12:53:50.474-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/95162","id":"95162","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"Seems regression of PLX-161","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2007-05-05T21:07:26.587-0500","updated":"2007-05-05T21:07:26.587-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/95167","id":"95167","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=baerrach","name":"baerrach","emailAddress":"baerrach@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrie Treloar","active":true},"body":"Yes, this is a regression.\r\n\r\nrevision 5960 broke the windows tests.\r\n\r\nWill supply patch from the working revisions.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=baerrach","name":"baerrach","emailAddress":"baerrach@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrie Treloar","active":true},"created":"2007-05-06T00:37:45.026-0500","updated":"2007-05-06T00:37:45.026-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/95768","id":"95768","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=baerrach","name":"baerrach","emailAddress":"baerrach@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrie Treloar","active":true},"body":"Patch that puts back the tests for windows full command line quoting.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=baerrach","name":"baerrach","emailAddress":"baerrach@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrie Treloar","active":true},"created":"2007-05-13T04:05:12.374-0500","updated":"2007-05-13T04:05:12.374-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49571/comment/284883","id":"284883","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=fj","name":"fj","emailAddress":"Frank.Jakop@tolina.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Frank Jakop","active":true},"body":"Why use a shell at all? Using a shell has another nasty side-effect. Due to the process architecture on Windows the ececuted process is not terminated when hitting ctrl+c.\r\nSee http://jira.codehaus.org/browse/PLXUTILS-40?focusedCommentId=284881&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-284881","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=fj","name":"fj","emailAddress":"Frank.Jakop@tolina.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Frank Jakop","active":true},"created":"2011-12-05T00:56:45.387-0600","updated":"2011-12-05T00:56:45.387-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-32.json b/jira/PLXUTILS-32.json
new file mode 100644
index 00000000..73b89955
--- /dev/null
+++ b/jira/PLXUTILS-32.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"49847","self":"http://jira.codehaus.org/rest/api/latest/issue/49847","key":"PLXUTILS-32","fields":{"progress":{"progress":0,"total":0},"summary":"CommandLineUtils hangs when served interactive process execution","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-32/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:48:31.667-0600","customfield_10210":"2.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["lacostej(lacostej)","krosenvold(krosenvold)","michael-o(michael-o)"],"customfield_10160":null,"updated":"2014-11-25T14:48:31.748-0600","created":"2007-04-14T03:05:15.928-0500","description":"If I present a process that requires user input to the util classes, the execution will never end.\n\nThere are in fact several threading and io bugs in the code. I've fixed most of them, but still lack one. Providing my current patch as I have to take a break, maybe someone will identify the correct way to solve the issue.\n\nThe attached patch isn't yet complete as I don't manage to exactly reproduce the System.in behavior. Comments appreciated. I will look into that later this week-end or next week.\n\nNot sure if the problem is platform/JDK specific, haven't tried with other configurations Could be, so we need to find a solution that is resistant to external issues.\n\n[Gosh I am tired of having to fix these issues in all exec implementations... this is probably not supported by the CruiseControl implementations]","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-32/watchers","watchCount":3,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/26805","id":"26805","filename":"CommandLine utils.png","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-14T15:31:22.926-0500","size":71000,"mimeType":"image/png","content":"http://jira.codehaus.org/secure/attachment/26805/CommandLine+utils.png","thumbnail":"http://jira.codehaus.org/secure/thumbnail/26805/_thumb_26805.png"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/26794","id":"26794","filename":"PLXUTILS-XXX-incomplete-patch.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-14T03:05:15.936-0500","size":12233,"mimeType":"text/x-diff","content":"http://jira.codehaus.org/secure/attachment/26794/PLXUTILS-XXX-incomplete-patch.diff"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"Linux expresso2 2.6.20-14-generic #2 SMP Mon Apr 2 20:37:49 UTC 2007 i686 GNU/Linux\n\njava version \"1.5.0_11\"\nJava(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_11-b03)\nJava HotSpot(TM) Server VM (build 1.5.0_11-b03, mixed mode)\n","timeestimate":null,"customfield_10130":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10053","value":"Yes","id":"10053"},"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":5,"total":5,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/49847/comment/92931","id":"92931","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"Diagram representing the interaction of the various classes...\r\n\r\nSomeone wants to add this to the doc ? Maybe for the cli package.html","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-14T15:31:22.930-0500","updated":"2007-04-14T15:31:22.930-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49847/comment/92933","id":"92933","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"(note in the diagram above read StreamFeeder instead of SystemFeeder).\r\n\r\nI've some more changes on my local tree, but still no clear solution to the problem.\r\n\r\nThe issue is coming from the StreamFeeder that blocks on the call to input.read(). Because it blocks, feed() doesn't terminate. And then inputFeeder.wait() blocks forever.\r\n\r\nUnfortunately I don't find a way to make sure read() stops hanging.\r\n\r\nI've tried:\r\n* closing the input stream (and I don't think this should be done anyway)\r\n* puting the inputFeeder to null and remove the call to wait(), to open that it would discard itself and be sufficient. That didn't help\r\n* I don't want to make it a daemon thread. Otherwise they would accumulate...\r\n* I've tried removing the direct call to read() and use an InputStreamReader.ready() call. It's better but doesn't cover all cases (i.e. it works with the official System.in, but doesn't work with other InputStream (probably because they don't support nio??)). So I don't like it. Maybe I missed something ?\r\n* I am now considering killing the thread.... Yack...\r\n\r\nThere must be a way to do this properly....","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-14T16:34:39.482-0500","updated":"2007-04-14T16:34:39.482-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49847/comment/92941","id":"92941","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"I looked at how other implementations do their work:\r\n\r\nCruiseControl assumes no input stream is used.\r\n\r\nCommons exec makes the Thread that reads the input a DaemonThread. But I am not sure if commons-exec has the same problem as p-u.\r\nhttp://svn.apache.org/repos/asf/jakarta/commons/sandbox/exec/trunk/src/main/java/org/apache/commons/exec/PumpStreamHandler.java\r\n\r\nIsn't there a part of maven that calls a process that interacts with the user ? ","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2007-04-15T01:56:40.800-0500","updated":"2007-04-15T01:56:40.800-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49847/comment/267161","id":"267161","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"All the threading bugs have been fixed as part of other issues, the only bit left in this issue might be about termination when reading from the console.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2011-05-16T12:41:50.773-0500","updated":"2011-05-16T12:41:50.773-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49847/comment/357616","id":"357616","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:48:31.746-0600","updated":"2014-11-25T14:48:31.746-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-33.json b/jira/PLXUTILS-33.json
new file mode 100644
index 00000000..1db8af74
--- /dev/null
+++ b/jira/PLXUTILS-33.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"49924","self":"http://jira.codehaus.org/rest/api/latest/issue/49924","key":"PLXUTILS-33","fields":{"progress":{"progress":0,"total":0},"summary":"Make plexus-utils Os more user friendly (patch attached)","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-33/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14029","id":"14029","description":"","name":"1.4.3","archived":false,"released":true,"releaseDate":"2007-07-13"}],"resolutiondate":"2007-05-31T09:14:49.204-0500","customfield_10210":"3.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["handyande(handyande)","brianfox(brianfox)"],"customfield_10160":null,"updated":"2008-02-02T15:37:02.053-0600","created":"2007-04-16T20:38:17.387-0500","description":"I used the os code quite extensively in the maven-enforcer-plugin. I found that I had to write a lot of workarounds for missing functionality. Specifically:\n-no way to find out what the current values are (especially family)\n-no way to get a list of possibly families\n\nI added more methods to os to get a list of valid families. The static name,version,arch are now public and an additional family static variable has been added. I also updated the java doc to remove references to ant. I also added unit tests for this and the existing functionality.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"240710400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-33/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=handyande","name":"handyande","emailAddress":"andy@handyande.co.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andrew Williams","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/26840","id":"26840","filename":"plexuspatch.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"created":"2007-04-16T20:38:17.395-0500","size":17071,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/26840/plexuspatch.patch"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/27082","id":"27082","filename":"plexuspatch2.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"created":"2007-04-30T22:10:45.695-0500","size":17322,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/27082/plexuspatch2.patch"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/27536","id":"27536","filename":"plexuspatch3.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"created":"2007-05-22T20:17:37.786-0500","size":16885,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/27536/plexuspatch3.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10053","value":"Yes","id":"10053"},"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":6,"total":6,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/49924/comment/93112","id":"93112","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=handyande","name":"handyande","emailAddress":"andy@handyande.co.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andrew Williams","active":true},"body":"A good patch. I was about to apply it but I noticed something that made me feel uneasy.\r\nThere are many lines in the isOs method consisting of something like:\r\n\r\nif ( OS_NAME.indexOf( FAMILY_SOMETHING ) )\r\n\r\nas can bee seen on some of the branches, the OS_NAME and FAMILY_X do not necessarily correlate, so I wonder if that is entirely appropriate? (see tandem or win9x tests)\r\n\r\nOf course as these values rearely chang then it is probably not a problem but it reads badly.\r\n\r\nOne other small issue is that there is a lot of refactoring of the javadoc. Where ant is removed it is good, but in some places the text is just moved around - sometimes for the better sometimes not, e.g. sometimes a @param has it's value on a new line, sometimes not - seems a shame as it was consistant before and it makes patches harder to read.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=handyande","name":"handyande","emailAddress":"andy@handyande.co.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andrew Williams","active":true},"created":"2007-04-17T05:27:04.389-0500","updated":"2007-04-17T05:27:04.389-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49924/comment/93851","id":"93851","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"body":"Hi Andy,\r\nWith the if (OS_NAME.....) stuff... \r\n\r\nWhat I simply did was define the strings so they could be used by someone else instead of them being hard coded and not accessible. Previously all of those lines simply tested against the string like if (OS_NAME.indexof (\"win9x\")). These strings needed to be used again to add it to the ValidFamilies array as well, having them defined twice inside the same class seemed bad.\r\n\r\nFor the javadoc, I noticed that eclipse reformatted some of it along the way on me. I tried to fix up all the ones that had no other changes, but I might have missed some. If it's a problem, I can update an resubmit the patch.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"created":"2007-04-22T21:51:32.805-0500","updated":"2007-04-22T21:51:32.805-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49924/comment/94365","id":"94365","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=handyande","name":"handyande","emailAddress":"andy@handyande.co.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andrew Williams","active":true},"body":"Yes I can see your point on the constants declaration. It was just little counter-intuative to have name.indexOf(FAMILY) at a first glance, but it does make sense having another look.\r\nI can commit as-is with no javadoc changes (to skip the reformat issues) but I see there were some good javadoc updates there, so it would be cool if you could provide another patch with the correct javadoc changes :)","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=handyande","name":"handyande","emailAddress":"andy@handyande.co.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andrew Williams","active":true},"created":"2007-04-27T14:54:20.266-0500","updated":"2007-04-27T14:54:20.266-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49924/comment/94666","id":"94666","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"body":"try this one on for size. All the jdocs should be consistent now.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"created":"2007-04-30T22:10:45.708-0500","updated":"2007-04-30T22:10:45.708-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49924/comment/96787","id":"96787","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"body":"updated patch. This should fix the jdoc format issues.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"created":"2007-05-22T20:17:37.797-0500","updated":"2007-05-22T20:17:37.797-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/49924/comment/97721","id":"97721","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=handyande","name":"handyande","emailAddress":"andy@handyande.co.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andrew Williams","active":true},"body":"Added to subversion.\r\n\r\nA small change was needed due to the order that the static fields were being created. The getOsFamily() method was called before the PATH_SEP field was defined, which it depended on.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=handyande","name":"handyande","emailAddress":"andy@handyande.co.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andrew Williams","active":true},"created":"2007-05-31T09:14:49.199-0500","updated":"2007-05-31T09:14:49.199-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-34.json b/jira/PLXUTILS-34.json
new file mode 100644
index 00000000..e888f8f0
--- /dev/null
+++ b/jira/PLXUTILS-34.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"51203","self":"http://jira.codehaus.org/rest/api/latest/issue/51203","key":"PLXUTILS-34","fields":{"progress":{"progress":0,"total":0},"summary":"BourneShell.java assumes its execuable is /bin/bash and therefor break in os that does not have /bin/bash","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-34/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14032","id":"14032","description":"","name":"1.4.6","archived":false,"released":true,"releaseDate":"2007-09-13"}],"resolutiondate":"2007-08-21T10:21:46.372-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=danttran","name":"danttran","emailAddress":"dantran@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Tran","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["handyande(handyande)","danttran(danttran)","jburrell(jburrell)"],"customfield_10160":null,"updated":"2008-02-02T15:32:57.062-0600","created":"2007-05-18T02:20:06.241-0500","description":"staring vervsion 1.4.1, Commandline now use /bin/bash to invoke execuable. This will not work on system that does have\n/bin/bash like AiX We should assume /bin/sh instead.\n\nI endedup to reverse back to plexus-utils-1.4\n\n\n\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[{"id":"17808","self":"http://jira.codehaus.org/rest/api/2/issueLink/17808","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"57114","key":"MJAVADOC-154","self":"http://jira.codehaus.org/rest/api/2/issue/57114","fields":{"summary":"Bump to plexus-utils:1.4.6","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false}}}}],"customfield_10163":"235699200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-34/watchers","watchCount":2,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=handyande","name":"handyande","emailAddress":"andy@handyande.co.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andrew Williams","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/28249","id":"28249","filename":"PLXUTILS-34.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jburrell","name":"jburrell","emailAddress":"jamieburrell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jamie Burrell","active":true},"created":"2007-07-03T07:22:57.326-0500","size":2512,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/28249/PLXUTILS-34.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"aix, solaris, linux","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/51203/comment/101137","id":"101137","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jburrell","name":"jburrell","emailAddress":"jamieburrell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jamie Burrell","active":true},"body":"Added a patch to cover this for 1.4.3-SNAPSHOT","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jburrell","name":"jburrell","emailAddress":"jamieburrell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jamie Burrell","active":true},"created":"2007-07-03T06:50:58.995-0500","updated":"2007-07-03T06:50:58.995-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/51203/comment/103458","id":"103458","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=danttran","name":"danttran","emailAddress":"dantran@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Tran","active":true},"body":"Can we have this applied? another benefit is surefire can use it as well to solve other fixes which were put in after 1.4","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=danttran","name":"danttran","emailAddress":"dantran@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Tran","active":true},"created":"2007-07-27T11:35:57.890-0500","updated":"2007-07-27T11:35:57.890-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-35.json b/jira/PLXUTILS-35.json
new file mode 100644
index 00000000..5c3fde13
--- /dev/null
+++ b/jira/PLXUTILS-35.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"51575","self":"http://jira.codehaus.org/rest/api/latest/issue/51575","key":"PLXUTILS-35","fields":{"progress":{"progress":0,"total":0},"summary":"Need to use getCanonicalFile() to delete long pathnames on Windows due to jdk bugs","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-35/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14029","id":"14029","description":"","name":"1.4.3","archived":false,"released":true,"releaseDate":"2007-07-13"}],"resolutiondate":"2007-05-26T15:41:48.956-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["olamy(olamy)","siveton(siveton)"],"customfield_10160":null,"updated":"2008-02-02T13:42:09.130-0600","created":"2007-05-26T08:44:53.498-0500","description":"The method FileUtils#deleteFile( File file ) should use getCanonicalFile() on windows. It is due to jvm bugs:\nhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4403166\nhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6182812\nhttp://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6481955\n\nBTW these bugs have been fixed in jdk 6u1 and 5u11.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"16616","self":"http://jira.codehaus.org/rest/api/2/issueLink/16616","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"inwardIssue":{"id":"51267","key":"MCLEAN-26","self":"http://jira.codehaus.org/rest/api/2/issue/51267","fields":{"summary":"Long pathnames on windows platforms cannot be deleted","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"241056000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-35/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/27599","id":"27599","filename":"PLXUTILS-35.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2007-05-26T08:46:19.122-0500","size":4724,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/27599/PLXUTILS-35.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"win xp","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/51575/comment/97128","id":"97128","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"Here is the fix and a test case","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2007-05-26T08:46:19.127-0500","updated":"2007-05-26T08:46:19.127-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/51575/comment/97161","id":"97161","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"Patch apply in rev 6517.\r\nsnapshot deployed 1.4.3-20070526.204011-1.\r\nThanks","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-05-26T15:41:48.951-0500","updated":"2007-05-26T15:41:48.951-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-36.json b/jira/PLXUTILS-36.json
new file mode 100644
index 00000000..192d18ea
--- /dev/null
+++ b/jira/PLXUTILS-36.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"52038","self":"http://jira.codehaus.org/rest/api/latest/issue/52038","key":"PLXUTILS-36","fields":{"progress":{"progress":0,"total":0},"summary":"Off-by-one error in CommandLineUtils.getSystemEnvVars(boolean) breaks envvars with single character names","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-36/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14029","id":"14029","description":"","name":"1.4.3","archived":false,"released":true,"releaseDate":"2007-07-13"}],"resolutiondate":"2007-06-30T06:32:41.802-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=maxb","name":"maxb","emailAddress":"maxb@f2s.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Max Bowsher","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["maxb(maxb)","olamy(olamy)"],"customfield_10160":null,"updated":"2008-02-02T15:35:32.786-0600","created":"2007-06-05T10:05:58.540-0500","description":"There is an off-by-one error in org.codehaus.plexus.util.cli.CommandLineUtils.getSystemEnvVars(boolean) which manifests as environment variables having a single character name being ignored, and the previously occurring envvar being corrupted.\n\nI noticed this one when it broke \"mvn deploy\", by corrupting my SSH_AUTH_SOCK environment variable.\n\nThe error is in the parsing of the output of the \"env\" program - the code does:\n{code}\n int idx = line.indexOf( '=' );\n\n if ( idx > 1 )\n{code}\n\nThe correct test is\n{code}\n if ( idx > 0 )\n{code}","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"238118400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-36/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/52038/comment/100912","id":"100912","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"Fix svn rev 6570. (snapshot deployed)\r\nThanks.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-06-30T06:32:41.794-0500","updated":"2007-06-30T06:32:41.794-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-37.json b/jira/PLXUTILS-37.json
new file mode 100644
index 00000000..6f734d9e
--- /dev/null
+++ b/jira/PLXUTILS-37.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"52218","self":"http://jira.codehaus.org/rest/api/latest/issue/52218","key":"PLXUTILS-37","fields":{"progress":{"progress":0,"total":0},"summary":"Ability to pick items from a list in a property declaration.","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-37/votes","votes":7,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2009-01-06T17:58:36.973-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jburrell","name":"jburrell","emailAddress":"jamieburrell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jamie Burrell","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["hubick(hubick)","ccaraivan(ccaraivan)","danielharvey(danielharvey)","jburrell(jburrell)","hohwille(hohwille)","rpassos(rpassos)","siveton(siveton)"],"customfield_10160":null,"updated":"2011-09-01T17:43:12.443-0500","created":"2007-06-06T05:01:13.172-0500","description":"I needed the ability to get values from lists in the Maven POM, like so:\n\nproject.developers.0.id (should give me project.getDevelopers().get(0).getId()).\n\nI couldn't find how to do it, and after looking in the 1.4.3 trunk source of Plexus Utils, found that it was impossible to do as it stands (correct me if I'm wrong).\n\nThis patch has been created using the premise that Java variable names cannot be numbers. Thus, if the property token is an integer, treat it as an index and call get(), otherwise continue as normal.\n\nThe JUnit test for the affected class has been patched too, and runs successfully.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"106358400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-37/watchers","watchCount":11,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/27818","id":"27818","filename":"plexus-utils-index.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jburrell","name":"jburrell","emailAddress":"jamieburrell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jamie Burrell","active":true},"created":"2007-06-06T05:01:13.176-0500","size":7303,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/27818/plexus-utils-index.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":"plexus-utils 1.4.3-SNAPSHOT","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":6,"total":6,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/52218/comment/111970","id":"111970","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hubick","name":"hubick","emailAddress":"chris@hubick.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Chris Hubick","active":true},"body":"What would be really nice is the ability to have some way to use an XPath!\r\n\r\n\r\n ...\r\n \r\n ${'urn:xpath:/project/developers/developer[properties/user.name=\"${user.name}\"]/id'}\r\n \r\n\r\n\r\nOr that may be crazy talk?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hubick","name":"hubick","emailAddress":"chris@hubick.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Chris Hubick","active":true},"created":"2007-10-29T20:19:37.762-0500","updated":"2007-10-29T20:19:37.762-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/52218/comment/118179","id":"118179","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=danielharvey","name":"danielharvey","emailAddress":"daniel@amristar.com.au","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Daniel Harvey","active":true},"body":"I'd love to see this patch incorporated.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=danielharvey","name":"danielharvey","emailAddress":"daniel@amristar.com.au","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Daniel Harvey","active":true},"created":"2007-12-29T22:54:50.590-0600","updated":"2007-12-29T22:54:50.590-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/52218/comment/160175","id":"160175","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"Fixed in [r8008|http://fisheye.codehaus.org/changelog/plexus/?cs=8008]\r\n\r\nThe patch wasn't apply because I prefer to use the common JSP approach as defined in [this Struts article|http://struts.apache.org/1.x/struts-taglib/indexedprops.html]. \r\nMainly, you could use:\r\n* project.dependencies[0] if dependencies is a java.util.List object or an array object\r\n* project.dependenciesAsMap(dep1) if dependenciesAsMap is a java.util.Map object","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-01-06T17:58:36.961-0600","updated":"2009-01-06T17:58:36.961-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/52218/comment/231882","id":"231882","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ccaraivan","name":"ccaraivan","emailAddress":"ccaraivan@axway.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Costin Caraivan","active":true},"body":"It doesn't work. I don't know what kind of object is, but it's not a List (or at least it doesn't act like one), and it's not a Map. Neither of those methods work.\r\n\r\nTry: \r\nmvn help:evaluate, then ${project.dependenciesAsMap()} and ${project.dependencies[0]}","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ccaraivan","name":"ccaraivan","emailAddress":"ccaraivan@axway.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Costin Caraivan","active":true},"created":"2010-08-13T03:38:47.881-0500","updated":"2010-08-13T03:38:47.881-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/52218/comment/244106","id":"244106","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hohwille","name":"hohwille","emailAddress":"joerg@j-hohwiller.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jörg Hohwiller","active":true},"body":"This issue is closed as fixed but it does not work.\r\nCould you please reopen. Even setting to \"wontfix\" is better than leaving as fixed.\r\nI would like to get the license via ${project.lincenses.0.license.name} or ${project.lincenses[0].license.name} but there seems to be no way to do so via variables.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hohwille","name":"hohwille","emailAddress":"joerg@j-hohwiller.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jörg Hohwiller","active":true},"created":"2010-11-23T04:52:19.742-0600","updated":"2010-11-23T04:52:19.742-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/52218/comment/277589","id":"277589","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rpassos","name":"rpassos","emailAddress":"renato.passos.santos@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Renato Passos Santos","active":true},"body":"I would also like to ask to have this issue re-opened.\r\n\r\nFunniest thing is, when I use _\"mvn help:evaluate\"_ on the command-line and then input \"${project.activeProfiles[0].id}\" I have the correct answer. But when I try to use that expression during the build process to set a property to a given value - for example:\r\n\r\njdbc:hsqldb:file:${project.build.directory}/arquivosDesenv/${project.activeProfiles[0].id}/db/${db.name}.db;shutdown=true\r\n\r\n...the \"${project.activeProfiles[0].id}\" expression is the only one that is never evaluated to anything - all the others work. Actually, all of the above expression evaluates correctly during _\"mvn help:evaluate\"_, but doesn't work at all in the build process itself!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=rpassos","name":"rpassos","emailAddress":"renato.passos.santos@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Renato Passos Santos","active":true},"created":"2011-09-01T17:43:12.328-0500","updated":"2011-09-01T17:43:12.328-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-38.json b/jira/PLXUTILS-38.json
new file mode 100644
index 00000000..44a829ee
--- /dev/null
+++ b/jira/PLXUTILS-38.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"53539","self":"http://jira.codehaus.org/rest/api/latest/issue/53539","key":"PLXUTILS-38","fields":{"progress":{"progress":0,"total":0},"summary":"BourneShell#getExecutable() doesnt support quote","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-38/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14029","id":"14029","description":"","name":"1.4.3","archived":false,"released":true,"releaseDate":"2007-07-13"}],"resolutiondate":"2007-07-07T07:20:10.700-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["olamy(olamy)","siveton(siveton)"],"customfield_10160":null,"updated":"2008-02-02T15:35:13.077-0600","created":"2007-07-06T09:45:37.591-0500","description":"Suppose that you have this following structure:\n{noformat} \n/dir/quotedpath'test/executable\n{noformat} \n\nBourneShell#getExecutable() calls \"cd /dir/quotedpath'test && /dir/quotedpath'test/executable\" which fails on unix system.\nWe need to replace *'* by *\\\\'*","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"17121","self":"http://jira.codehaus.org/rest/api/2/issueLink/17121","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"52658","key":"MJAVADOC-127","self":"http://jira.codehaus.org/rest/api/2/issue/52658","fields":{"summary":"Tests fail on MacOS X","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"237513600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-38/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/28286","id":"28286","filename":"quoted.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2007-07-06T09:45:37.598-0500","size":6668,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/28286/quoted.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":"Unix based","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/53539/comment/101577","id":"101577","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"patch commit in rev 6605.\r\nThanks.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-07-07T07:20:10.678-0500","updated":"2007-07-07T07:20:10.678-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-39.json b/jira/PLXUTILS-39.json
new file mode 100644
index 00000000..bc7a9611
--- /dev/null
+++ b/jira/PLXUTILS-39.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"54158","self":"http://jira.codehaus.org/rest/api/latest/issue/54158","key":"PLXUTILS-39","fields":{"progress":{"progress":0,"total":0},"summary":"Faulty test in CommandlineTest","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-39/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14030","id":"14030","description":"","name":"1.4.4","archived":false,"released":true,"releaseDate":"2007-07-20"}],"resolutiondate":"2007-07-20T17:28:07.248-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jason","name":"jason","emailAddress":"jason@takari.io","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jason van Zyl","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["jason(jason)","olamy(olamy)"],"customfield_10160":null,"updated":"2008-02-02T13:42:40.194-0600","created":"2007-07-20T16:22:00.102-0500","description":"Line 333 the testEnvironmentWitSystemEnvironment() test expects a System property of JAVA_HOME which doesn't exist unless you set it. It's \"java.home\" which is the system property. I don't know what this test is trying to accomplish. I've commented it out because it fails and would never work unless you manually set a JAVA_HOME system property, it's only an envar.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"236304000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-39/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/54158/comment/102820","id":"102820","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"uhm will be difficult to run this junit with mvn without having a JAVA_HOME envvar ? (before commit tested with windows and solaris).\r\nchanged in rev 6555. To be sure of this test working adding this in pom (surefire configuration) :\r\n{code:xml} \r\n \r\n \r\n JAVA_HOME\r\n ${JAVA_HOME} \r\n \r\n \r\n M2_HOME\r\n ${M2_HOME} \r\n \r\n \r\n{code}\r\nI wanted to check using overriding of envvar when with Runtime.getRuntime().exec(cmd, String[]).\r\nBefore the changes, it was impossible to override envar in a *n*x env.\r\nUse case : having a .profile with a JAVA_HOME defined, export a different JAVA_HOME in the current shell session.\r\nUsing CommandLine class with overriding JAVA_HOME (with method addEnvironment(String, String) failed because the generated String[] contains three differents \"JAVA_HOME=.\".\r\nIt was to ensure this fix works with a junit.\r\n\r\nBut now I'm sure it works and we can remove the junit :-) if you prefer.\r\n\r\n--\r\nOlivier\r\n\r\nPS : the fix not the junit was needed to fix CONTINUUM-44\r\n\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-07-20T17:10:39.444-0500","updated":"2007-07-20T17:10:39.444-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/54158/comment/102823","id":"102823","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jason","name":"jason","emailAddress":"jason@takari.io","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jason van Zyl","active":true},"body":"Just remove the faulty test. Entirely setup and system specific.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jason","name":"jason","emailAddress":"jason@takari.io","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jason van Zyl","active":true},"created":"2007-07-20T17:28:07.240-0500","updated":"2007-07-20T17:28:07.240-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-4.json b/jira/PLXUTILS-4.json
new file mode 100644
index 00000000..26848a60
--- /dev/null
+++ b/jira/PLXUTILS-4.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"20183","self":"http://jira.codehaus.org/rest/api/latest/issue/20183","key":"PLXUTILS-4","fields":{"progress":{"progress":0,"total":0},"summary":"Put the tests for plexus-utils back.","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-4/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14044","id":"14044","description":"","name":"1.0","archived":true,"released":true,"releaseDate":"2005-05-27"}],"resolutiondate":"2005-01-06T14:38:32.000-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=trygvis","name":"trygvis","emailAddress":"trygvis@inamo.no","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Trygve Laugstøl","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["trygvis(trygvis)"],"customfield_10160":null,"updated":"2008-02-02T16:01:50.278-0600","created":"2005-01-06T11:17:25.000-0600","description":"When the utils was split out of the container the tests remained with the container. ","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"316224000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-4/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=trygvis","name":"trygvis","emailAddress":"trygvis@inamo.no","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Trygve Laugstøl","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-40.json b/jira/PLXUTILS-40.json
new file mode 100644
index 00000000..0152e1de
--- /dev/null
+++ b/jira/PLXUTILS-40.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"54267","self":"http://jira.codehaus.org/rest/api/latest/issue/54267","key":"PLXUTILS-40","fields":{"progress":{"progress":0,"total":0},"summary":"shutdown hook in CommandLineUtils does not kill process with GUI on windows","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-40/votes","votes":6,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jaxzin","name":"jaxzin","emailAddress":"brian@jaxzin.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brian Jackson","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","jaxzin(jaxzin)","fj(fj)","jan.sievers(jan.sievers)","krosenvold(krosenvold)","mkleint(mkleint)"],"customfield_10160":null,"updated":"2014-02-12T07:52:38.189-0600","created":"2007-07-24T22:50:48.651-0500","description":"Calling executeCommandLine(\"notepad\", new MyStreamConsumer(), new MyStreamConsumer()) on Windows and then Ctrl-C the process. Notepad is left running in background. Problem also exists for long running java processes.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"23586","self":"http://jira.codehaus.org/rest/api/2/issueLink/23586","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"89238","key":"MNG-4229","self":"http://jira.codehaus.org/rest/api/2/issue/89238","fields":{"summary":"ctrl+c interrupted maven junit tests don't actually get interrupted in windows","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"33940","self":"http://jira.codehaus.org/rest/api/2/issueLink/33940","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"148610","key":"MSHARED-295","self":"http://jira.codehaus.org/rest/api/2/issue/148610","fields":{"summary":"Non reliable killing of processes by CommandLineUtils","status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"29116800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-40/watchers","watchCount":7,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"Windows XP SP2\nMaven 2.0.7\nplexus-utils 1.1-beta-2","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":4,"total":4,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/54267/comment/142531","id":"142531","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"As described in the API docs for {{CommandLineUtils.killProcess()}} this is not possible due to a limitation of the Windows process model, compare [Sun Bug ID 4770092|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4770092].\r\n\r\nYou could try out the upcoming [Commons Exec|http://commons.apache.org/exec/] which to my knowledge launches programs directly instead of using \"cmd.exe\". Taking this intermediate process out of the game might at least make your scenaria with Notepad work.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-07-20T13:51:10.672-0500","updated":"2008-07-20T13:51:10.672-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/54267/comment/170984","id":"170984","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkleint","name":"mkleint","emailAddress":"mkleint@codehaus.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Milos Kleint","active":true},"body":"Actually I seem to have problems with it even on linux. it seems the only way that kills a running test for example is Ctrl-C on console. Sending appropriate (I've tried many) signals to the maven build only kills the build but the test keeps running. Sometimes the Shutdown hooks that shall kill the subprocess are run, sometimes not.\r\n\r\nI've tried to write a -javaagent for the maven build that patches the org.codehaus.classworlds.Launcher class (main class of the build JVM) to spawn a Thread that just listens on a port and when the connection is established, kills itself with System.exit().\r\nThat seems to exhibit the same behaviour as sending signals. The build jvm is shutdown, the shutdown hooks are run, but the forked test JVM keeps running. I suspect it's caused by the (IMHO dubious) execution of \"sh -c cd && java -cp \". What purpose does the shell wrapping and cd command execution serve?\r\n\r\nnetbeans integration issue that is related to this problem.\r\nhttp://www.netbeans.org/issues/show_bug.cgi?id=135475","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkleint","name":"mkleint","emailAddress":"mkleint@codehaus.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Milos Kleint","active":true},"created":"2009-03-25T15:37:55.372-0500","updated":"2009-03-25T15:37:55.372-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/54267/comment/284881","id":"284881","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=fj","name":"fj","emailAddress":"Frank.Jakop@tolina.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Frank Jakop","active":true},"body":"The problem is located in {{org.codehaus.plexus.util.cli.CommandLineUtils.executeCommandLineAsCallable(Commandline, InputStream, StreamConsumer, StreamConsumer, int)}}.\r\n\r\nIf you replace the line \r\n{noformat}\r\nfinal Process p = cl.execute();\r\n{noformat}\r\n, which executes the process (notepad) with {{cmd.exe}} with a direct execution like \r\n{noformat}\r\nProcess pr = null;\r\n try \\{\r\n pr = Runtime.getRuntime().exec(cl.getCommandline(), cl.getEnvironmentVariables(), cl.getWorkingDirectory());\r\n } catch (IOException e) {\r\n throw new CommandLineException(\"Failed to start process\", e);\r\n }\r\n\r\n final Process p = pr;\r\n{noformat}\r\n\r\ntermination behaviour works as expected, at least, if notepad does not start child processe ;)\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=fj","name":"fj","emailAddress":"Frank.Jakop@tolina.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Frank Jakop","active":true},"created":"2011-12-05T00:51:44.964-0600","updated":"2011-12-05T00:51:44.964-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/54267/comment/341281","id":"341281","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jan.sievers","name":"jan.sievers","emailAddress":"jan.sievers@sap.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jan Sievers","active":true},"body":"{quote}\r\nI suspect it's caused by the (IMHO dubious) execution of \"sh -c cd && java -cp \". What purpose does the shell wrapping and cd command execution serve?\r\n{quote}\r\n\r\nI guess the shell cd command is an ancient workaround for pre- JDK 1.3 times when the [java.lang.Runtime.exec(...)|http://docs.oracle.com/javase/7/docs/api/java/lang/Runtime.html] methods did not have a File workingDir parameter yet.\r\nYou can check the @since 1.3 annotations of the methods. Apache commons-exec still has the [same workaround in the code| http://svn.apache.org/viewvc/commons/proper/exec/trunk/src/main/java/org/apache/commons/exec/launcher/WinNTCommandLauncher.java?view=markup] but it's no longer used. Actual [implementation uses JDK >= 1.3| http://svn.apache.org/viewvc/commons/proper/exec/trunk/src/main/java/org/apache/commons/exec/launcher/Java13CommandLauncher.java?view=markup].\r\n\r\nIn a similar [tycho bug|https://bugs.eclipse.org/bugs/show_bug.cgi?id=427556], the intermediate shell was the root cause and omitting it (by using commons-exec) fixed the problem.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jan.sievers","name":"jan.sievers","emailAddress":"jan.sievers@sap.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jan Sievers","active":true},"created":"2014-02-12T07:52:38.189-0600","updated":"2014-02-12T07:52:38.189-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-41.json b/jira/PLXUTILS-41.json
new file mode 100644
index 00000000..b608bf30
--- /dev/null
+++ b/jira/PLXUTILS-41.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"54784","self":"http://jira.codehaus.org/rest/api/latest/issue/54784","key":"PLXUTILS-41","fields":{"progress":{"progress":0,"total":0},"summary":"create a doclet for @plexus.* CDC tags to make better javadoc","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-41/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14032","id":"14032","description":"","name":"1.4.6","archived":false,"released":true,"releaseDate":"2007-09-13"}],"resolutiondate":"2007-08-25T16:22:27.240-0500","customfield_10210":"2.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["brettporter(brettporter)","olamy(olamy)","siveton(siveton)"],"customfield_10160":null,"updated":"2008-02-02T15:53:43.535-0600","created":"2007-08-07T03:16:45.226-0500","description":null,"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"233193600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-41/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/29129","id":"29129","filename":"plexus-javadoc.png","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2007-08-24T07:58:06.775-0500","size":69572,"mimeType":"image/png","content":"http://jira.codehaus.org/secure/attachment/29129/plexus-javadoc.png","thumbnail":"http://jira.codehaus.org/secure/thumbnail/29129/_thumb_29129.png"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/29128","id":"29128","filename":"plexus-javadoc.zip","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2007-08-24T07:58:06.768-0500","size":21709,"mimeType":"application/zip","content":"http://jira.codehaus.org/secure/attachment/29128/plexus-javadoc.zip"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/54784/comment/105633","id":"105633","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"I don't like the idea to put Plexus taglets or doclets directly in p-u.\r\n- we need a new dependency tools.jar from sun\r\n- we want to use it in the maven-javadoc-plugin as a Tag dependency, ie something like the following:\r\n\r\n{code:xml} \r\n\r\n ...\r\n \r\n \r\n \r\n org.apache.maven.plugins\r\n maven-javadoc-plugin\r\n \r\n \r\n \r\n org.codehaus.plexus.javadoc.PlexusComponentTaglet\r\n \r\n org.codehaus.plexus\r\n plexus-javadoc\r\n 1.0-SNAPSHOT\r\n \r\n \r\n \r\n ...\r\n \r\n \r\n \r\n ...\r\n \r\n{code} \r\n\r\nSo, I proposed to create a new Plexus project, called plexus-javadoc to handle @plexus.* CDC tags. See the PNG to see the result.\r\n\r\nThis patch contains Taglets, tests with maven-javadoc-plugin and site.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2007-08-24T07:58:06.778-0500","updated":"2007-08-24T07:58:06.778-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/54784/comment/105695","id":"105695","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"plexus-tools looks a nice place to put this.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-08-25T14:57:34.340-0500","updated":"2007-08-25T14:57:34.340-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/54784/comment/105699","id":"105699","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"Comiited in rev 6797.\r\nThanks.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-08-25T16:22:27.233-0500","updated":"2007-08-25T16:22:27.233-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-42.json b/jira/PLXUTILS-42.json
new file mode 100644
index 00000000..c7cb2049
--- /dev/null
+++ b/jira/PLXUTILS-42.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"55261","self":"http://jira.codehaus.org/rest/api/latest/issue/55261","key":"PLXUTILS-42","fields":{"progress":{"progress":0,"total":0},"summary":"Add XhtmlXpp3DomBuilder to handle xhtml specific features ","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-42/votes","votes":0,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["maxb(maxb)","siveton(siveton)"],"customfield_10160":null,"updated":"2007-08-22T05:37:10.679-0500","created":"2007-08-21T07:21:56.604-0500","description":"The current Xpp3DomBuilder and Xpp3Dom classes do not support xhtml specific features like text, comment, doctype and cdata.\nI propose to add in p-u XhtmlXpp3DomBuilder which includes XhtmlXpp3Dom to fix them. The XhtmlXpp3Dom class extends Xpp3Dom and overrides toString() to beautify the renderer.\n\nComments are welcome.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"233539200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-42/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/29054","id":"29054","filename":"XhtmlXpp3DomBuilder.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2007-08-21T07:21:56.611-0500","size":16708,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/29054/XhtmlXpp3DomBuilder.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":4,"total":4,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/55261/comment/105308","id":"105308","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=maxb","name":"maxb","emailAddress":"maxb@f2s.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Max Bowsher","active":true},"body":"The concepts of text, comment, doctype and cdata are not XHTML-specific, they are pure XML. So the proposed classnames do not make any sense.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=maxb","name":"maxb","emailAddress":"maxb@f2s.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Max Bowsher","active":true},"created":"2007-08-21T07:55:12.581-0500","updated":"2007-08-21T07:55:12.581-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/55261/comment/105384","id":"105384","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"Agree with your comment for doctype, comment and cdata but not for text. \r\n\r\nIn xhtml, we could have\r\n{code:xml}\r\n
\r\n{code} \r\n\r\nWFYT?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2007-08-21T21:09:08.089-0500","updated":"2007-08-21T21:09:08.089-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/55261/comment/105409","id":"105409","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=maxb","name":"maxb","emailAddress":"maxb@f2s.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Max Bowsher","active":true},"body":"Afraid I have to disagree again.\r\n\r\nTTBOMK, for your comment to be correct, you need to replace \"in xml\" with \"in a particular application of xml which adds the additional restriction that tags may contain only tags *or* text, not a mixture of both\".\r\n\r\nXHTML 1.0 is an application of XML 1.0 - i.e. there is no correct XHTML 1.0 syntax that is not also correct XML 1.0.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=maxb","name":"maxb","emailAddress":"maxb@f2s.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Max Bowsher","active":true},"created":"2007-08-22T05:36:23.722-0500","updated":"2007-08-22T05:36:23.722-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/55261/comment/105410","id":"105410","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=maxb","name":"maxb","emailAddress":"maxb@f2s.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Max Bowsher","active":true},"body":"Also, \"WFYT?\" == ???","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=maxb","name":"maxb","emailAddress":"maxb@f2s.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Max Bowsher","active":true},"created":"2007-08-22T05:37:10.670-0500","updated":"2007-08-22T05:37:10.670-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-43.json b/jira/PLXUTILS-43.json
new file mode 100644
index 00000000..10b3835c
--- /dev/null
+++ b/jira/PLXUTILS-43.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"55266","self":"http://jira.codehaus.org/rest/api/latest/issue/55266","key":"PLXUTILS-43","fields":{"progress":{"progress":0,"total":0},"summary":"Review Notification for PLXUTILS","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-43/votes","votes":1,"hasVoted":false},"resolution":null,"fixVersions":[],"resolutiondate":null,"customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","siveton(siveton)"],"customfield_10160":null,"updated":"2008-07-20T11:21:43.317-0500","created":"2007-08-21T07:50:51.831-0500","description":"No email is send to the reporter.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"204681600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-43/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/55266/comment/142518","id":"142518","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Confirming to be still an issue.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-07-20T11:21:43.307-0500","updated":"2008-07-20T11:21:43.307-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-44.json b/jira/PLXUTILS-44.json
new file mode 100644
index 00000000..4c7ac46e
--- /dev/null
+++ b/jira/PLXUTILS-44.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"55274","self":"http://jira.codehaus.org/rest/api/latest/issue/55274","key":"PLXUTILS-44","fields":{"progress":{"progress":0,"total":0},"summary":"Backslash is neither quoted nor escaped on Bash","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-44/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:30:41.519-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=sannies","name":"sannies","emailAddress":"Sebastian.Annies@googlemail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Sebastian Annies","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["michael-o(michael-o)","sannies(sannies)"],"customfield_10160":null,"updated":"2014-11-25T14:30:41.564-0600","created":"2007-08-21T10:32:54.314-0500","description":"The error occurs with Maven-SCM & continuum in my case. Maven-SCM creates following commandline:\n\n{{/bin/bash \\-c \"p4 -d /opt/continuum-1.1-beta-3-SNAPSHOT/apps/continuum/webapp/WEB-INF/working-directory/1 -cbackground-sojus-MavenSCM\\opt\\continuum-1.1-beta-3-SNAPSHOT\\apps\\continuum\\webapp\\WEB-INF\\working-directory\\1 sync\"}}\n\nthe \\-c argument is created by: \n\n{{Commandline command = PerforceScmProvider.createP4Command( repo, workingDirectory );}}\n{{command.createArgument().setValue( \"-c\"+ specname );}}\n\nthe specname contains backslashes. The bash then removes the backslashes in {{specname}}. Ouch! That doesn't work. I think that CommandLine (or the underlying Shell) has to deal with this case. What do you think?\n\nTo test easily type:\n{{/bin/bash \\-c \"echo a\\\\bc\"}}\nresult: abc\n\nSolution 1:\n{{/bin/bash \\-c \"echo a\\\\\\\\bc\"}}\nresult: ab\\\\c\n\nSolution 2:\n{{/bin/bash \\-c \"echo 'a\\\\bc'\"}}\nresult: ab\\\\c\n\n\n\n\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"17475","self":"http://jira.codehaus.org/rest/api/2/issueLink/17475","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"55262","key":"CONTINUUM-1402","self":"http://jira.codehaus.org/rest/api/2/issue/55262","fields":{"summary":"Syncing with Perforce on Linux/Unix/Bash fails","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-44/watchers","watchCount":3,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"Bash / Unix","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/55274/comment/105337","id":"105337","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=sannies","name":"sannies","emailAddress":"Sebastian.Annies@googlemail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Sebastian Annies","active":true},"body":"Ignore the \"To test easily type:\" examples. I have difficulties with the wiki syntax:\r\n\r\nTo test easily type:\r\n/bin/bash -c \"echo a\\bc\"\r\nresult: abc\r\n\r\nSolution 1:\r\n/bin/bash -c \"echo a\\ \\bc\"\r\nresult: ab\\c\r\n\r\nSolution 2:\r\n/bin/bash -c \"echo 'a\\bc'\"\r\nresult: ab\\c","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=sannies","name":"sannies","emailAddress":"Sebastian.Annies@googlemail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Sebastian Annies","active":true},"created":"2007-08-21T10:35:38.819-0500","updated":"2007-08-21T10:35:38.819-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/55274/comment/106314","id":"106314","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=sannies","name":"sannies","emailAddress":"Sebastian.Annies@googlemail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Sebastian Annies","active":true},"body":"This is a pain in the ... \r\n\r\ndepending on the shell we start the bash we have to escape differently: \r\n\r\nif the shell we start bash -c ... is not a bash (and is not using backslash (\\) as an escape character) we have to escape backslash with backslash. But if the shell we start the bash in is itself a bash we have to add three more backslashes: The first call to the bash (the call that will start bash itself) makes 4 backslashes to 2 backslashes. The bash that has be instantiated by the call will now process the arguements again and will reduce the number of backslashes to just one backslash. OUCH. I hate unix\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=sannies","name":"sannies","emailAddress":"Sebastian.Annies@googlemail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Sebastian Annies","active":true},"created":"2007-09-03T13:54:47.159-0500","updated":"2007-09-03T13:54:47.159-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/55274/comment/357280","id":"357280","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:30:41.544-0600","updated":"2014-11-25T14:30:41.544-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-45.json b/jira/PLXUTILS-45.json
new file mode 100644
index 00000000..fb7679f0
--- /dev/null
+++ b/jira/PLXUTILS-45.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"55301","self":"http://jira.codehaus.org/rest/api/latest/issue/55301","key":"PLXUTILS-45","fields":{"progress":{"progress":0,"total":0},"summary":"Test methods in DirectoryScannerTest do not actually test the DirectoryScanner class","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-45/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/6","id":"6","description":"The issue is not a bug","name":"Not A Bug"},"fixVersions":[],"resolutiondate":"2008-07-20T14:03:41.485-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=wfay","name":"wfay","emailAddress":"waynefay@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Wayne Fay","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","wfay(wfay)"],"customfield_10160":null,"updated":"2008-07-20T14:03:41.479-0500","created":"2007-08-21T20:41:27.947-0500","description":"I've been poking around in Plexus lately and patching a few JIRA issues. I thought I'd debug PLXUTILS-8 a bit so I looked at DirectoryScannerTest.java.\n\nHumorously enough, while the file is named DirectoryScannerTest, there is not a single mention of DS anywhere in the tests nor in the file itself.\n\nThis file should be renamed, or eliminated with the tests in the file moved to FileUtilsTest. Also, DS could stand to have some unit tests added, but that's another story...","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"204681600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-45/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/55301/comment/142533","id":"142533","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"The tests call {{FileUtils.getFiles()}} which at the end of the day boils down to the {{DirectoryScanner}}, so effectively it's doing the job.\r\n\r\nbq. Also, DS could stand to have some unit tests added, but that's another story...\r\nLet's hope the Ant guys have some, then the copy here at plexus-utils should be fine, too ;-)","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-07-20T14:03:41.475-0500","updated":"2008-07-20T14:03:41.475-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-46.json b/jira/PLXUTILS-46.json
new file mode 100644
index 00000000..c8d5cd7a
--- /dev/null
+++ b/jira/PLXUTILS-46.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"55784","self":"http://jira.codehaus.org/rest/api/latest/issue/55784","key":"PLXUTILS-46","fields":{"progress":{"progress":0,"total":0},"summary":"NPE in DirectoryScanner.scandir with dangling NTFS junctions","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-46/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14039","id":"14039","description":"","name":"1.3","archived":false,"released":true,"releaseDate":"2006-09-28"}],"resolutiondate":"2008-07-20T15:20:09.553-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=u_302320","name":"u_302320","emailAddress":"make@gmx.li","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Matthias Kerkhoff","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","u_302320(u_302320)"],"customfield_10160":null,"updated":"2008-07-20T15:20:09.545-0500","created":"2007-09-04T05:15:21.549-0500","description":"NTFS supports symbolic links to directories, so-called junction points or junctions. It is possible to create a junction point and delete the target directory afterwards. The junction point itself continues to exist although its target does no longer exist (quite similar to unix symbolic links). \nIf a DirectoryScanner.scan() is executed with the junction point as basedir an NPE will be thrown:\n\n{noformat}\njava.lang.NullPointerException\n at org.codehaus.plexus.util.DirectoryScanner.scandir(DirectoryScanner.java:712)\n at org.codehaus.plexus.util.DirectoryScanner.scan(DirectoryScanner.java:593)\n at de.xxx.yyy.utils.FileUtil.findDirectories(FileUtil.java:315)\n{noformat}\n\nThis happens because the code in DirectoryScanner.scan does properly handle this case\n{preformat}\n if ( !basedir.exists() )\n {\n throw new IllegalStateException( \"basedir \" + basedir\n + \" does not exist\" );\n }\n{preformat}\ndoes not work for junction points with non-existing target.\n\nA possible solution might be to reactivate the initial check in DiectoryScanner.scandir() which is currently commented out.\n{preformat}\n if ( newfiles == null )\n {\n /*\n * two reasons are mentioned in the API docs for File.list\n * (1) dir is not a directory. This is impossible as\n * we wouldn't get here in this case.\n * (2) an IO error occurred (why doesn't it throw an exception\n * then???)\n */\n //throw new Exception( \"IO error scanning directory \" + dir.getAbsolutePath() );\n }\n{preformat}\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"204681600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-46/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14048","id":"14048","description":"","name":"1.0.4","archived":true,"released":true,"releaseDate":"2005-10-11"}],"customfield_10170":null,"environment":"Windows XP, NTFS, plexus-utils-1.0.4","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/55784/comment/142537","id":"142537","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Already fixed since [r3569|http://fisheye.codehaus.org/changelog/plexus/?cs=3569].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-07-20T15:20:09.541-0500","updated":"2008-07-20T15:20:09.541-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-47.json b/jira/PLXUTILS-47.json
new file mode 100644
index 00000000..b3d9887c
--- /dev/null
+++ b/jira/PLXUTILS-47.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"55898","self":"http://jira.codehaus.org/rest/api/latest/issue/55898","key":"PLXUTILS-47","fields":{"progress":{"progress":0,"total":1800,"percent":0},"summary":"FileUtils.basename( filename ) blows up due to false assumptions about inputs","timetracking":{"originalEstimate":"30m","remainingEstimate":"30m","originalEstimateSeconds":1800,"remainingEstimateSeconds":1800},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-47/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14036","id":"14036","description":"","name":"1.5","archived":false,"released":true,"releaseDate":"2008-02-18"}],"resolutiondate":"2008-02-12T15:55:27.034-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=skaze","name":"skaze","emailAddress":"skazer@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Allen","active":true},"aggregatetimeoriginalestimate":1800,"customfield_10161":["bentmann(bentmann)","jburrell(jburrell)","skaze(skaze)","olamy(olamy)"],"customfield_10160":null,"updated":"2008-02-12T15:55:26.838-0600","created":"2007-09-06T12:54:38.428-0500","description":"Can you spot the deliberate mistake?\n\n{code}\n /**\n * Returns the filename portion of a file specification string.\n * Matches the equally named unix command.\n * @return The filename string without extension.\n */\n public static String basename( String filename )\n {\n return basename( filename, extension( filename ) );\n }\n{code}\n\nSo we pass in a full filename but if it contains a DOT '.' in the path we're screwed. Why? Because extension( filename ) is naive in its implementation...\n\n{code}\n /**\n * Returns the extension portion of a file specification string.\n * This everything after the last dot '.' in the filename (NOT including\n * the dot).\n */\n public static String extension( String filename )\n {\n int lastDot = filename.lastIndexOf( '.' );\n\n if ( lastDot >= 0 )\n {\n return filename.substring( lastDot + 1 );\n }\n else\n {\n return \"\";\n }\n }\n{code}\n\nSo the search for the holy '.' does not properly stop when it meets a file separator. Instead it keeps on looking until it finds one, period.\n\nYou could argue that you're supposed to pass only a filename in BUT as basename uses it and basename is all about directories and filenames that don't hold up.\n\nSimple fix, change extension() to not be so stupid.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"duedate":null,"issuelinks":[],"customfield_10163":"218419200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-47/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":0,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/29521","id":"29521","filename":"PLXUTILS-47.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jburrell","name":"jburrell","emailAddress":"jamieburrell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jamie Burrell","active":true},"created":"2007-09-20T07:37:53.981-0500","size":7075,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/29521/PLXUTILS-47.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":1800,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":1800,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":1800,"percent":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":4,"total":4,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/55898/comment/107819","id":"107819","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jburrell","name":"jburrell","emailAddress":"jamieburrell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jamie Burrell","active":true},"body":"Patched. \r\nThere are two methods in FileUtils that do the same thing (at least that's the way it looks) - extension and getExtension. Both suffered from this issue, so I have fixed extension and pointed getExtension to it.\r\nI have also edited the (previously disabled) unit test testGetExtensionsWithPaths, as the utilities are dependent on File.separator, which varies by platform. This means that running the test on Unix against Windows paths obviously fails. These now all pass successfully.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jburrell","name":"jburrell","emailAddress":"jamieburrell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jamie Burrell","active":true},"created":"2007-09-20T07:19:06.052-0500","updated":"2007-09-20T07:19:06.052-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/55898/comment/107825","id":"107825","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jburrell","name":"jburrell","emailAddress":"jamieburrell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jamie Burrell","active":true},"body":"Apologies - just after previous patch upload, I noticed removeExtension had the same problem. That is now fixed too.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jburrell","name":"jburrell","emailAddress":"jamieburrell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jamie Burrell","active":true},"created":"2007-09-20T07:37:53.991-0500","updated":"2007-09-20T07:37:53.991-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/55898/comment/123298","id":"123298","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Any chances of getting this triviality fixed/released soon? I mean the patch is there...","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-02-11T12:48:33.644-0600","updated":"2008-02-11T12:49:02.143-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/55898/comment/123451","id":"123451","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"fixed in rev 7197.\r\nThanks","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2008-02-12T15:55:26.685-0600","updated":"2008-02-12T15:55:26.685-0600"}]},"timeoriginalestimate":1800,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-48.json b/jira/PLXUTILS-48.json
new file mode 100644
index 00000000..c7285f2a
--- /dev/null
+++ b/jira/PLXUTILS-48.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"56134","self":"http://jira.codehaus.org/rest/api/latest/issue/56134","key":"CONTINUUM-1447","fields":{"progress":{"progress":0,"total":0},"summary":"To fix /bin/bash issue on some platform, update plexus-utils to 1.4.6","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/CONTINUUM-1447/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/13661","id":"13661","description":"Third Beta Release in the Continuum 1.1 series","name":"1.1-beta-3","archived":true,"released":true,"releaseDate":"2007-09-25"}],"resolutiondate":"2007-09-14T02:06:22.831-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["evenisse(evenisse)"],"customfield_10160":null,"updated":"2007-09-14T02:06:22.822-0500","created":"2007-09-13T07:17:54.865-0500","description":"need a release of plexus-utils.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"231638400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/CONTINUUM-1447/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"customfield_10221":null,"attachment":[],"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/10540","id":"10540","key":"CONTINUUM","name":"Continuum","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=10540&avatarId=10044","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=10540&avatarId=10044","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=10540&avatarId=10044","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=10540&avatarId=10044"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10008","id":"10008","description":"code quality-related","name":"quality"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/13606","id":"13606","description":"Second Beta Release in the Continuum 1.1 series","name":"1.1-beta-2","archived":true,"released":true,"releaseDate":"2007-08-17"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"customfield_10010":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10011","value":"Intermediate","id":"10011"},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-49.json b/jira/PLXUTILS-49.json
new file mode 100644
index 00000000..e3538d2c
--- /dev/null
+++ b/jira/PLXUTILS-49.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"56703","self":"http://jira.codehaus.org/rest/api/latest/issue/56703","key":"PLXUTILS-49","fields":{"progress":{"progress":0,"total":0},"summary":"cli causes error code to be lost on windows","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-49/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:30:36.078-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["brianfox(brianfox)","michael-o(michael-o)"],"customfield_10160":null,"updated":"2014-11-25T14:30:36.140-0600","created":"2007-09-26T20:00:21.791-0500","description":"I'm investigating why the maven-invoker isn't detecting a failed build on windows. I see that the cli is generated as:\n{noformat}\ncmd.exe /X /C '\"\"C:\\Program Files\\maven2\\bin\\mvn.bat\" -B -X -Dmaven.repo.local=E:\\svn\\Maven\\maven-plugins\\maven-dependency-plugin\\target\\test-classes\\m2repo -Dtest=true install\"'\n{noformat}\n\nThe cmd /C part is swallowing the error code. For more info, see the linked issue.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-49/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/56703/comment/108386","id":"108386","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"body":"MNG-2127","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"created":"2007-09-26T20:00:43.446-0500","updated":"2007-09-26T20:00:43.446-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/56703/comment/357256","id":"357256","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:30:36.138-0600","updated":"2014-11-25T14:30:36.138-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-5.json b/jira/PLXUTILS-5.json
new file mode 100644
index 00000000..b134bf8c
--- /dev/null
+++ b/jira/PLXUTILS-5.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"35108","self":"http://jira.codehaus.org/rest/api/latest/issue/35108","key":"PLXUTILS-5","fields":{"progress":{"progress":0,"total":0},"summary":"empty removes the directory of the fileset","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-5/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:30:42.302-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jesse","name":"jesse","emailAddress":"jesse.mcconnell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jesse McConnell","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["brettporter(brettporter)","jesse(jesse)","michael-o(michael-o)"],"customfield_10160":null,"updated":"2014-11-25T14:30:42.354-0600","created":"2006-03-21T09:39:00.687-0600","description":"I was shifting the unit tests over to use the plugin harness and noticed a test case failing.\n\nif you look at the test case for the fileset test case, the second fileset test has an addFileset(dir, \"**\", \"\");\n\nthis unit test works fine, but when you try and actually do this behavior using the plugin configuration it brings up an error\n\n \n ${basedir}/target/test-classes/fileset-clean-test/buildOutputDirectory\n \n **\n \n \n\nthat would be the plugin configuration of the same deal. ( results in a stack trace)\n\nIn this case the directory is getting deleted when configured. You can exhibit the same behavior with the existing test case if you try and pass null into the addFileset signature...\n\n\nthis would be the failing test case using the existing plugin, note the null in the second addFileset()\n------\n\n public void testFilesets()\n throws Exception\n {\n String base = TARGET_TEST_DIR + \"/target\";\n\n CleanMojo mojo = new CleanMojo();\n\n mojo.addFileset( createFileset( base, \"**/file.txt\", \"**/subdir/**\" ) );\n\n String outputDirectory = TARGET_TEST_DIR + \"/buildOutputDirectory\";\n mojo.addFileset( createFileset( outputDirectory, \"**\", null ) );\n\n mojo.execute();\n\n // fileset 1\n assertTrue( checkExists( base ) );\n assertTrue( checkExists( base + \"/classes\" ) );\n assertFalse( checkExists( base + \"/classes/file.txt\" ) );\n/* TODO: looks like a bug in the file-management library\n assertTrue( FileUtils.fileExists( base + \"/subdir/file.txt\" ) );\n*/\n\n // fileset 2\n assertTrue( checkExists( outputDirectory ) );\n assertFalse( checkExists( outputDirectory + \"/file.txt\" ) );\n\tSystem.exit(-1);\n }\n\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-5/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":6,"total":6,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/35108/comment/61731","id":"61731","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jesse","name":"jesse","emailAddress":"jesse.mcconnell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jesse McConnell","active":true},"body":"the jist of the problem is that when the excludes is set to \"\" then that is translating to 'don't remove the directory' of the fileset\r\n\r\nperhaps the thing to do is add the \"\" to the default excludes?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jesse","name":"jesse","emailAddress":"jesse.mcconnell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jesse McConnell","active":true},"created":"2006-03-22T17:22:52.302-0600","updated":"2006-03-22T17:22:52.302-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/35108/comment/61796","id":"61796","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jesse","name":"jesse","emailAddress":"jesse.mcconnell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jesse McConnell","active":true},"body":"ok, the setting the fileset to null above seems to throw the same exception now that using an empty excludes statement does...\r\n\r\nblows on line 502 of DirectoryScanner when setting excludes.\r\n\r\nnow...\r\n\r\n blows up and have the excludes as an arraylist of size 1 and null inside..\r\n\r\nnot having the excludes and just the includes yields an arraylist of size 0 and removes the directory..\r\n\r\nand the existing unit test ends up with a excludes arraylist of size 1 with a \"\" element inside.. (which is the only one that passes unit test atm)\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jesse","name":"jesse","emailAddress":"jesse.mcconnell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jesse McConnell","active":true},"created":"2006-03-23T11:46:51.582-0600","updated":"2006-03-23T11:46:51.582-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/35108/comment/61804","id":"61804","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jesse","name":"jesse","emailAddress":"jesse.mcconnell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jesse McConnell","active":true},"body":"Not sure what to do here...\r\n\r\nthe original test case used the \"**\" includes and \"\" excludes which exhibited the desired behavior...\r\n\r\nNow it would seem to me that \r\n\r\n\r\n \r\n **\r\n \r\n\r\n\r\nnow to me that would be the same thing, but DirectoryScanner specificaly looks for \"\" in the exclude to decide if the directory should be deleted.\r\n\r\n\r\n \r\n **\r\n \r\n \r\n \r\n \r\n\r\n\r\nNow this builds an excludes arraylist of size 1 but null inside, which triggers a NPE in DirectoryScanner..\r\n\r\n\r\n \r\n **\r\n \r\n \r\n \"\"\r\n \r\n\r\n\r\nThis certainly doesn't work since it translate to \"\\\"\\\"\" in the fileset\r\n\r\nBUT!\r\n\r\n\r\n \r\n **\r\n \r\n \r\n **\r\n \r\n\r\n\r\ndoes exhibit the correct behavior, since the includes ** matchs the files in the directory and the ** actually seems to protect the directory. The files end up getting smoked but the base directory of the fileset is perserved.\r\n\r\nThis seems a bit off to me, but I am able to configure a fileset that exhibits the same end behavior of the test case...but this feels like another issue to me, that ** in includes means something other then ** in excludes.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jesse","name":"jesse","emailAddress":"jesse.mcconnell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jesse McConnell","active":true},"created":"2006-03-23T14:00:16.330-0600","updated":"2006-03-23T14:00:16.330-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/35108/comment/61873","id":"61873","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"body":"I think we should scratch this issue. To me == == null, that is, exclude nothing.\r\n\r\nThe bug should be filed against plexus-utils / file management API (if appropriate). Perhaps we should rebase DirectoryScanner against the latest from Ant to see if such bugs have been fixed. Anyway, not a big issue.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"created":"2006-03-24T06:06:08.219-0600","updated":"2006-03-24T06:06:08.219-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/35108/comment/61915","id":"61915","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jesse","name":"jesse","emailAddress":"jesse.mcconnell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jesse McConnell","active":true},"body":"moved this issue from the clean plugin...\r\n\r\nthe crux of the issue is that \"\" as the excludes detection in the DirectoryScanner doesn't map out to an xml configuration, the way to get around it was to use and include of ** and an exclude of ** which is interesting in that the ** seem to mean to different things in both includes and excludes.\r\n\r\nThis should be against file-management API but I don't rights to tweak.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jesse","name":"jesse","emailAddress":"jesse.mcconnell@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jesse McConnell","active":true},"created":"2006-03-24T15:57:59.854-0600","updated":"2006-03-24T15:57:59.854-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/35108/comment/357284","id":"357284","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:30:42.334-0600","updated":"2014-11-25T14:30:42.334-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-50.json b/jira/PLXUTILS-50.json
new file mode 100644
index 00000000..f653f65f
--- /dev/null
+++ b/jira/PLXUTILS-50.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"57123","self":"http://jira.codehaus.org/rest/api/latest/issue/57123","key":"PLXUTILS-50","fields":{"progress":{"progress":0,"total":0},"summary":"InterpolationFilterReader do not handle lonely tokens if starttoken == endtoken","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-50/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14033","id":"14033","description":"","name":"1.4.7","archived":false,"released":true,"releaseDate":"2007-10-16"}],"resolutiondate":"2007-10-14T15:40:59.704-0500","customfield_10210":"2.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pikus","name":"pikus","emailAddress":"pikus@ais.pl","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Tomasz Pik","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["olamy(olamy)","pikus(pikus)"],"customfield_10160":null,"updated":"2008-02-02T15:32:11.105-0600","created":"2007-10-07T15:27:40.277-0500","description":"InteropolationFilterReader do not handle lonely tokens if the same token is used as a start and end token.\nThis is causing problems in for example jsp filtering with '@' character as a start and end token (jsp is using @ in directives).\nAlso, with such filtering, adding email address to file being filtered will effectively disable filtering.\n\nAttached test case showing problem.\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"17810","self":"http://jira.codehaus.org/rest/api/2/issueLink/17810","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"57122","key":"MWAR-123","self":"http://jira.codehaus.org/rest/api/2/issue/57122","fields":{"summary":"filtering with @ is working randomly","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"228873600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-50/watchers","watchCount":3,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/29879","id":"29879","filename":"InterpolationFilterReader.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pikus","name":"pikus","emailAddress":"pikus@ais.pl","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Tomasz Pik","active":true},"created":"2007-10-12T19:02:29.658-0500","size":2524,"mimeType":"application/octet-stream","content":"http://jira.codehaus.org/secure/attachment/29879/InterpolationFilterReader.diff"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/29776","id":"29776","filename":"plexus-filter.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pikus","name":"pikus","emailAddress":"pikus@ais.pl","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Tomasz Pik","active":true},"created":"2007-10-08T02:57:38.164-0500","size":916,"mimeType":"application/octet-stream","content":"http://jira.codehaus.org/secure/attachment/29776/plexus-filter.diff"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/57123/comment/109821","id":"109821","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pikus","name":"pikus","emailAddress":"pikus@ais.pl","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Tomasz Pik","active":true},"body":"adding a patch solving problem","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pikus","name":"pikus","emailAddress":"pikus@ais.pl","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Tomasz Pik","active":true},"created":"2007-10-12T19:02:29.672-0500","updated":"2007-10-12T19:02:29.672-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/57123/comment/109892","id":"109892","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"Fixed in rev 6937.\r\nThanks.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-10-14T15:40:59.679-0500","updated":"2007-10-14T15:40:59.679-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-51.json b/jira/PLXUTILS-51.json
new file mode 100644
index 00000000..e4f319a6
--- /dev/null
+++ b/jira/PLXUTILS-51.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"57659","self":"http://jira.codehaus.org/rest/api/latest/issue/57659","key":"PLXUTILS-51","fields":{"progress":{"progress":0,"total":0},"summary":"Bug in thread synchronization in executeCommandLine","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-51/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"resolutiondate":"2008-07-20T13:22:03.938-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nirschl","name":"nirschl","emailAddress":"heinrich.nirschl@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Heinrich Nirschl","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","nirschl(nirschl)"],"customfield_10160":null,"updated":"2008-07-20T13:22:03.926-0500","created":"2007-10-21T01:50:16.719-0500","description":"Synchronization with wait - notify does not work reliably when used with if instead of while. The attached patch fixes that.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"204681600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-51/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/30018","id":"30018","filename":"cmd-exec.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=nirschl","name":"nirschl","emailAddress":"heinrich.nirschl@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Heinrich Nirschl","active":true},"created":"2007-10-21T01:50:16.739-0500","size":1113,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/30018/cmd-exec.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/57659/comment/142526","id":"142526","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Applied in [r7525|http://fisheye.codehaus.org/changelog/plexus/?cs=7525], thanks Heinrich!\r\n\r\nFor the record: The possibility of a \"spurious wakeup\" is also documented in the latest API docs for [{{Object.wait()}}|http://java.sun.com/javase/6/docs/api/java/lang/Object.html#wait()].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-07-20T13:22:03.922-0500","updated":"2008-07-20T13:22:03.922-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-52.json b/jira/PLXUTILS-52.json
new file mode 100644
index 00000000..901a9e4c
--- /dev/null
+++ b/jira/PLXUTILS-52.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"58547","self":"http://jira.codehaus.org/rest/api/latest/issue/58547","key":"PLXUTILS-52","fields":{"progress":{"progress":0,"total":0},"summary":"FileUtils.extensions() misbehaves on paths that contain dots","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-52/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14034","id":"14034","description":"","name":"1.4.8","archived":false,"released":true,"releaseDate":"2007-11-27"}],"resolutiondate":"2007-11-14T15:49:05.655-0600","customfield_10210":"2.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=vps","name":"vps","emailAddress":"pawel.veselov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Pawel S. Veselov","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["olamy(olamy)","vps(vps)"],"customfield_10160":null,"updated":"2008-02-02T15:31:40.700-0600","created":"2007-11-09T00:33:38.237-0600","description":"I ran into this problem testing maven-native-api. The pwd was '/home/vps/opensource/svn.codehaus.org/mojo/trunk/mojo/maven-native'. The maven compiler tests failed, because FileUtils.extension() was throwing an exception (full stack trace attached)\n\njava.lang.StringIndexOutOfBoundsException: String index out of range: -43\n\tat java.lang.String.substring(String.java:1768)\n\tat org.codehaus.plexus.util.FileUtils.basename(FileUtils.java:226)\n\tat org.codehaus.plexus.util.FileUtils.basename(FileUtils.java:212)\n\tat org.codehaus.mojo.natives.compiler.AbstractCompiler.getObjectFile(AbstractCompiler.java:139)\n\nApparently, when there are other dots in the full path name, the extension() method chokes. A verified patch, including new tests, is attached.\n\nThanks,\n Pawel.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"226195200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-52/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/30476","id":"30476","filename":"4.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=vps","name":"vps","emailAddress":"pawel.veselov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Pawel S. Veselov","active":true},"created":"2007-11-09T00:38:40.371-0600","size":2254,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/30476/4.diff"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/30475","id":"30475","filename":"org.codehaus.mojo.natives.compiler.CompilerUtilTest.txt","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=vps","name":"vps","emailAddress":"pawel.veselov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Pawel S. Veselov","active":true},"created":"2007-11-09T00:38:24.382-0600","size":2918,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/30475/org.codehaus.mojo.natives.compiler.CompilerUtilTest.txt"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":"Generic","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":4,"total":4,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/58547/comment/113275","id":"113275","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=vps","name":"vps","emailAddress":"pawel.veselov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Pawel S. Veselov","active":true},"body":"Failed maven-native test, includes full stack trace for the issue","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=vps","name":"vps","emailAddress":"pawel.veselov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Pawel S. Veselov","active":true},"created":"2007-11-09T00:38:24.403-0600","updated":"2007-11-09T00:38:24.403-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/58547/comment/113276","id":"113276","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=vps","name":"vps","emailAddress":"pawel.veselov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Pawel S. Veselov","active":true},"body":"Patch for the bug.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=vps","name":"vps","emailAddress":"pawel.veselov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Pawel S. Veselov","active":true},"created":"2007-11-09T00:38:40.379-0600","updated":"2007-11-09T00:38:40.379-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/58547/comment/113277","id":"113277","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=vps","name":"vps","emailAddress":"pawel.veselov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Pawel S. Veselov","active":true},"body":"To reproduce the problem:\r\n\r\n$ cd /tmp\r\n$ mkdir -p svn.codehaus.org/mojo/trunk/mojo/maven-native\r\n$ cd svn.codehaus.org/mojo/trunk/mojo/maven-native\r\n$ svn co http://svn.codehaus.org/mojo/trunk/mojo/maven-native .\r\n$ mvn test\r\n\r\n(reproduced with maven-native 1.0-alpha-3-SNAPSHOT, svn rev 5617)\r\n ","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=vps","name":"vps","emailAddress":"pawel.veselov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Pawel S. Veselov","active":true},"created":"2007-11-09T00:41:43.560-0600","updated":"2007-11-09T00:41:43.560-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/58547/comment/113854","id":"113854","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"comitted in rev 7069.\r\nThanks.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-11-14T15:49:05.460-0600","updated":"2007-11-14T15:49:05.460-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-53.json b/jira/PLXUTILS-53.json
new file mode 100644
index 00000000..b42e00f1
--- /dev/null
+++ b/jira/PLXUTILS-53.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"59260","self":"http://jira.codehaus.org/rest/api/latest/issue/59260","key":"PLXUTILS-53","fields":{"progress":{"progress":0,"total":0},"summary":"Add a timeout to CommandLineUtils","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-53/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14034","id":"14034","description":"","name":"1.4.8","archived":false,"released":true,"releaseDate":"2007-11-27"}],"resolutiondate":"2007-11-25T02:06:38.871-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=dfabulich","name":"dfabulich","emailAddress":"dan@fabulich.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Fabulich","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["dfabulich(dfabulich)","olamy(olamy)"],"customfield_10160":null,"updated":"2008-03-05T08:01:49.158-0600","created":"2007-11-24T18:54:14.387-0600","description":"Command line utils calls Process.waitFor() with no timeout. It would be nice to be able to pass in a timeout argument to kill hanging processes.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"18840","self":"http://jira.codehaus.org/rest/api/2/issueLink/18840","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"64177","key":"PLXUTILS-67","self":"http://jira.codehaus.org/rest/api/2/issue/64177","fields":{"summary":"CommandLineUtils.executeCommandLine() to throw TimeoutException on timeout","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}},{"id":"18187","self":"http://jira.codehaus.org/rest/api/2/issueLink/18187","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"50199","key":"SUREFIRE-320","self":"http://jira.codehaus.org/rest/api/2/issue/50199","fields":{"summary":"Add a timeout property to the plugin","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false}}}}],"customfield_10163":"225331200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-53/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/30800","id":"30800","filename":"PLEXUTILS-53.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=dfabulich","name":"dfabulich","emailAddress":"dan@fabulich.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Fabulich","active":true},"created":"2007-11-24T18:54:45.764-0600","size":2834,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/30800/PLEXUTILS-53.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/59260/comment/114826","id":"114826","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"fixed in rev 7085.\r\nsnapshot deployed http://snapshots.repository.codehaus.org/org/codehaus/plexus/plexus-utils/1.4.8-SNAPSHOT/plexus-utils-1.4.8-20071125.080501-2.jar\r\n\r\nThanks ;-)","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-11-25T02:06:38.863-0600","updated":"2007-11-25T02:06:38.863-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-54.json b/jira/PLXUTILS-54.json
new file mode 100644
index 00000000..b256142f
--- /dev/null
+++ b/jira/PLXUTILS-54.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"59891","self":"http://jira.codehaus.org/rest/api/latest/issue/59891","key":"PLXUTILS-54","fields":{"progress":{"progress":0,"total":0},"summary":"BourneShell fails to execute files in a path with spaces","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-54/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14035","id":"14035","description":"","name":"1.4.9","archived":false,"released":true,"releaseDate":"2007-12-19"}],"resolutiondate":"2007-12-10T12:05:59.196-0600","customfield_10210":"2.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=dfabulich","name":"dfabulich","emailAddress":"dan@fabulich.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Fabulich","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["dfabulich(dfabulich)","olamy(olamy)"],"customfield_10160":null,"updated":"2008-02-02T15:30:24.693-0600","created":"2007-12-09T03:59:50.703-0600","description":"Run the attached patch to diff CommandlineTest on a UNIX/Linux box. testQuotedPath will fail with \"Exit code: 2 - cd: too many arguments\". I've also added a new test that asserts on BourneShell that it should add quotes around the path name, since it contains spaces.\n\nI attempted to fix this myself just by adding \"s around the working directory, but I got a funny error \"Can't handle single and double quotes in same argument\" that I didn't really have time to investigate. (I didn't try to set up a debugger on people.apache.org; that's the most convenient Unix box available to me.)","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"duedate":null,"issuelinks":[{"id":"18257","self":"http://jira.codehaus.org/rest/api/2/issueLink/18257","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"59892","key":"SUREFIRE-403","self":"http://jira.codehaus.org/rest/api/2/issue/59892","fields":{"summary":"TestNgPathWithSpaces integration test fails on Unix","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"223948800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-54/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/31095","id":"31095","filename":"path-with-spaces-test.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=dfabulich","name":"dfabulich","emailAddress":"dan@fabulich.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Fabulich","active":true},"created":"2007-12-09T03:59:50.777-0600","size":2714,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/31095/path-with-spaces-test.patch"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/31101","id":"31101","filename":"plxutils54.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=dfabulich","name":"dfabulich","emailAddress":"dan@fabulich.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Fabulich","active":true},"created":"2007-12-09T18:19:54.560-0600","size":2604,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/31101/plxutils54.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"FreeBSD (people.apache.org)","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/59891/comment/116330","id":"116330","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=dfabulich","name":"dfabulich","emailAddress":"dan@fabulich.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Fabulich","active":true},"body":"This patch fixes the bug by escaping spaces with \\ instead of trying to use more quotes.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=dfabulich","name":"dfabulich","emailAddress":"dan@fabulich.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Fabulich","active":true},"created":"2007-12-09T18:19:54.577-0600","updated":"2007-12-09T18:19:54.577-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/59891/comment/116387","id":"116387","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"comitted in rev 7111. snapshot 1.4.9-20071210.180520-1 deployed.\r\nThanks","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-12-10T12:05:59.186-0600","updated":"2007-12-10T12:05:59.186-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-55.json b/jira/PLXUTILS-55.json
new file mode 100644
index 00000000..80097656
--- /dev/null
+++ b/jira/PLXUTILS-55.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"59907","self":"http://jira.codehaus.org/rest/api/latest/issue/59907","key":"PLXUTILS-55","fields":{"progress":{"progress":0,"total":0},"summary":"BourneShell fails to execute files in a path with both single and double quotes","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-55/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2009-01-05T11:58:13.261-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=dfabulich","name":"dfabulich","emailAddress":"dan@fabulich.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Dan Fabulich","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["dfabulich(dfabulich)","siveton(siveton)"],"customfield_10160":null,"updated":"2009-01-05T11:58:13.253-0600","created":"2007-12-09T18:22:14.333-0600","description":"In CommandlineTest.testQuotedPath, change the example path to \"target/quoted path\\\"'test\", so the path contains both an apostrophe ' and a double quote \". (This is a legal file name on Linux.) The test will fail.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"190080000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-55/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/59907/comment/159980","id":"159980","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"fixed in [r8007|http://fisheye.codehaus.org/changelog/plexus/?cs=8007]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-01-05T11:58:13.238-0600","updated":"2009-01-05T11:58:13.238-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-56.json b/jira/PLXUTILS-56.json
new file mode 100644
index 00000000..12628c11
--- /dev/null
+++ b/jira/PLXUTILS-56.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"60413","self":"http://jira.codehaus.org/rest/api/latest/issue/60413","key":"PLXUTILS-56","fields":{"progress":{"progress":0,"total":0},"summary":"Improve URL decoding done by FileUtils.toFile()","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-56/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"}],"resolutiondate":"2008-04-11T13:24:39.212-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)"],"customfield_10160":null,"updated":"2008-04-11T13:24:39.204-0500","created":"2007-12-18T12:41:18.835-0600","description":"A URL like \"file:/C:/name%20with%20encoded%20spaces.txt\" currently fails to get properly converted to the file path \"C:\\name with spaces.txt\". The problem stems from URL.getFile() returning a raw (i.e. still URL-encoded) substring, see [Sun Bug ID 4466485|http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4466485] for a vivid discussion.\n\nThe attached patch is not perfect, i.e. may still fail for certain URLs as it only decodes selected escape sequences. In the long term, the method should be updated to use java.io.File.(java.net.URI) which does the proper decoding.\n\nThe patch includes some minor tweaks to the class which are not related to this issue but I could not resist.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"213321600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-56/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/33663","id":"33663","filename":"url-to-file.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-06T07:24:04.509-0500","size":2417,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/33663/url-to-file.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14048","id":"14048","description":"","name":"1.0.4","archived":true,"released":true,"releaseDate":"2005-10-11"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/60413/comment/123045","id":"123045","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Made patch compile against Java 1.4","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-02-08T12:53:05.748-0600","updated":"2008-02-08T12:53:05.748-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/60413/comment/129928","id":"129928","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Next try: Copied code from Commons IO 1.4. I included an index fix such that \"%2520\" properly decodes to \"%20\" rather than \" \".","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-06T07:24:04.523-0500","updated":"2008-04-06T07:24:04.523-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/60413/comment/130532","id":"130532","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Fixed in [r7278|http://fisheye.codehaus.org/changelog/plexus/?cs=7278].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-11T13:24:39.201-0500","updated":"2008-04-11T13:24:39.201-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-57.json b/jira/PLXUTILS-57.json
new file mode 100644
index 00000000..104171e0
--- /dev/null
+++ b/jira/PLXUTILS-57.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"60578","self":"http://jira.codehaus.org/rest/api/latest/issue/60578","key":"PLXUTILS-57","fields":{"progress":{"progress":0,"total":0},"summary":"Use Jira versionning to track open/closed issues","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-57/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14036","id":"14036","description":"","name":"1.5","archived":false,"released":true,"releaseDate":"2008-02-18"}],"resolutiondate":"2008-02-02T13:41:04.076-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["hboutemy(hboutemy)","lacostej(lacostej)"],"customfield_10160":null,"updated":"2008-02-02T13:41:03.980-0600","created":"2007-12-20T12:01:50.718-0600","description":"P-u is a component that I reuse in many places and has platform specific issues.\nIssues are not linked to versions and it becomes hard to track in which versions a particular issue is fixed / reported against.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"duedate":null,"issuelinks":[],"customfield_10163":"219283200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-57/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/60578/comment/122151","id":"122151","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"I just karma to create versions (hope I'm not the only one): now there shouldn't be any problem to set the \"Fix Version\" field when closing an issue\r\nI'm creating versions for old releases, to be able to reassign some closed Jira issues to proper releases","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2008-02-02T13:41:03.893-0600","updated":"2008-02-02T13:41:03.893-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-58.json b/jira/PLXUTILS-58.json
new file mode 100644
index 00000000..eb10ddd4
--- /dev/null
+++ b/jira/PLXUTILS-58.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"60764","self":"http://jira.codehaus.org/rest/api/latest/issue/60764","key":"PLXUTILS-58","fields":{"progress":{"progress":0,"total":0},"summary":"Re-use plexus.util.Os for OS detection instead of System.getProperty(\"os.*\")","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-58/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14036","id":"14036","description":"","name":"1.5","archived":false,"released":true,"releaseDate":"2008-02-18"}],"resolutiondate":"2007-12-25T14:08:02.019-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","olamy(olamy)"],"customfield_10160":null,"updated":"2008-02-02T15:29:55.217-0600","created":"2007-12-25T04:49:40.831-0600","description":"While the project itself provides the handy Os class to detect various operating systems, several code spots still perform there own OS detection by directly evaluating the corresponding system properties. This is error-prone and hard to maintain. The attached patch re-uses the methods and constants from Os.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"222652800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-58/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/31443","id":"31443","filename":"os.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2007-12-25T04:49:40.992-0600","size":4177,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/31443/os.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/60764/comment/117843","id":"117843","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"committed in rev 7128\r\nThanks.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2007-12-25T14:08:01.898-0600","updated":"2007-12-25T14:08:01.898-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-59.json b/jira/PLXUTILS-59.json
new file mode 100644
index 00000000..426d64ac
--- /dev/null
+++ b/jira/PLXUTILS-59.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"60769","self":"http://jira.codehaus.org/rest/api/latest/issue/60769","key":"PLXUTILS-59","fields":{"progress":{"progress":0,"total":0},"summary":"Fix case-insensitive string comparisons","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-59/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"}],"resolutiondate":"2008-04-23T16:59:48.413-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)"],"customfield_10160":null,"updated":"2008-04-23T16:59:48.383-0500","created":"2007-12-25T07:01:33.485-0600","description":"Unlike Character.toUpperCase()/toLowerCase() and String.equalsIgnoreCase(), the methods String.toUpperCase() and String.toLowerCase() are locale-sensitive. This in turn makes case-insensitive string comparisions by the idiom\n{code:java}\nif ( str1.toLowerCase().equals( str2.toLowerCase() ) )\n ...;\n{code}\nlocale-sensitive, too, resulting in platform dependent behavior. However, this is usually not intended. See [Comparing Strings For Equality|http://cafe.elharo.com/java/turkish/] for a more detailed description of the problem.\n\nFurthermore, case-insensitive matching of single characters should always test both upper case and lower case. Otherwise, the results are inconsistent with String.equalsIgnoreCase() and give rise to confusion and unexpected behavior.\n\nThe attached patch provides the required fixes.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"212284800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-59/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/31447","id":"31447","filename":"case-insensitivity.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2007-12-25T07:01:33.690-0600","size":10462,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/31447/case-insensitivity.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/60769/comment/132110","id":"132110","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Fixed in [r7305|http://fisheye.codehaus.org/changelog/plexus/?cs=7305].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-23T16:59:48.284-0500","updated":"2008-04-23T16:59:48.284-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-6.json b/jira/PLXUTILS-6.json
new file mode 100644
index 00000000..efc04158
--- /dev/null
+++ b/jira/PLXUTILS-6.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"26628","self":"http://jira.codehaus.org/rest/api/latest/issue/26628","key":"PLXUTILS-6","fields":{"progress":{"progress":0,"total":0},"summary":"Commandline: Command not found when executable has a in its path","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-6/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/3","id":"3","description":"The problem is a duplicate of an existing issue.","name":"Duplicate"},"fixVersions":[],"resolutiondate":"2006-04-03T11:44:49.934-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=elpunzalan","name":"elpunzalan","emailAddress":"epunzalan@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Edwin Punzalan","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["carlos(carlos)","elpunzalan(elpunzalan)"],"customfield_10160":null,"updated":"2007-01-13T01:01:52.290-0600","created":"2005-08-23T05:20:00.247-0500","description":"When setting an executable file for Commandline whose path includes space(s), I get an error:\n\n is not recognized as an internal or external command\n\nAlthough, doing Commandline.toString(), I can see that the quotes are present... So, when I do:\n\nRuntime.exec( cmd.toString() )\n\nThe command gets executed.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"13916","self":"http://jira.codehaus.org/rest/api/2/issueLink/13916","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"outwardIssue":{"id":"27795","key":"PLXUTILS-85","self":"http://jira.codehaus.org/rest/api/2/issue/27795","fields":{"summary":"under windows when executing java classpaths with embedded spaces cause the execution to fail","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"296524800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-6/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":"Windows XP","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":0,"total":0,"comments":[]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-60.json b/jira/PLXUTILS-60.json
new file mode 100644
index 00000000..46ae121b
--- /dev/null
+++ b/jira/PLXUTILS-60.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"61343","self":"http://jira.codehaus.org/rest/api/latest/issue/61343","key":"PLXUTILS-60","fields":{"progress":{"progress":0,"total":0},"summary":"XmlStreamReader barfs at attribues named .*encoding","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-60/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14036","id":"14036","description":"","name":"1.5","archived":false,"released":true,"releaseDate":"2008-02-18"}],"resolutiondate":"2008-01-12T02:57:06.103-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["hboutemy(hboutemy)"],"customfield_10160":null,"updated":"2008-02-02T15:28:44.635-0600","created":"2008-01-09T16:36:29.939-0600","description":"The class fails at reading following XML content: {code:xml}{code}\nit causes {code}java.io.UnsupportedEncodingException: ATTRIBUTE VALUE{code}\n\nthe regexp used to extract encoding value in XML prolog is wrong, and extracts wrong content...","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[{"id":"18452","self":"http://jira.codehaus.org/rest/api/2/issueLink/18452","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"53770","key":"MSITE-242","self":"http://jira.codehaus.org/rest/api/2/issue/53770","fields":{"summary":"remove copy of plexus-utils sources from site plugin sources since it is a dependency","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false}}}},{"id":"18417","self":"http://jira.codehaus.org/rest/api/2/issueLink/18417","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"59991","key":"MNG-3316","self":"http://jira.codehaus.org/rest/api/2/issue/59991","fields":{"summary":"Barfs at attribues named .*encoding","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"221184000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-60/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14029","id":"14029","description":"","name":"1.4.3","archived":false,"released":true,"releaseDate":"2007-07-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14030","id":"14030","description":"","name":"1.4.4","archived":false,"released":true,"releaseDate":"2007-07-20"},{"self":"http://jira.codehaus.org/rest/api/2/version/14031","id":"14031","description":"","name":"1.4.5","archived":false,"released":true,"releaseDate":"2007-07-31"},{"self":"http://jira.codehaus.org/rest/api/2/version/14032","id":"14032","description":"","name":"1.4.6","archived":false,"released":true,"releaseDate":"2007-09-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14033","id":"14033","description":"","name":"1.4.7","archived":false,"released":true,"releaseDate":"2007-10-16"},{"self":"http://jira.codehaus.org/rest/api/2/version/14034","id":"14034","description":"","name":"1.4.8","archived":false,"released":true,"releaseDate":"2007-11-27"},{"self":"http://jira.codehaus.org/rest/api/2/version/14035","id":"14035","description":"","name":"1.4.9","archived":false,"released":true,"releaseDate":"2007-12-19"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/61343/comment/119642","id":"119642","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"fixed in r7158, which should be released in plexus-utils 1.5","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2008-01-12T02:57:06.069-0600","updated":"2008-01-12T02:57:06.069-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-61.json b/jira/PLXUTILS-61.json
new file mode 100644
index 00000000..31862183
--- /dev/null
+++ b/jira/PLXUTILS-61.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"63043","self":"http://jira.codehaus.org/rest/api/latest/issue/63043","key":"PLXUTILS-61","fields":{"progress":{"progress":0,"total":0},"summary":"Improve PathTool","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-61/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14036","id":"14036","description":"","name":"1.5","archived":false,"released":true,"releaseDate":"2008-02-18"}],"resolutiondate":"2008-02-12T15:25:35.818-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["olamy(olamy)","siveton(siveton)"],"customfield_10160":null,"updated":"2008-02-16T08:57:26.234-0600","created":"2008-02-11T17:48:58.091-0600","description":"PathTool needs to be merged with [1]. This should be helpful for doxia and wagon.\nThe proposed patch add several methods from [1], improve javadoc and add test cases.\n\n[1] https://svn.apache.org/repos/asf/maven/doxia/doxia-sitetools/trunk/doxia-decoration-model/src/main/java/org/apache/maven/doxia/site/decoration/inheritance/PathUtils.java","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"18722","self":"http://jira.codehaus.org/rest/api/2/issueLink/18722","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"63288","key":"DOXIA-219","self":"http://jira.codehaus.org/rest/api/2/issue/63288","fields":{"summary":"Bump to new release of plexus-utils","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false}}}}],"customfield_10163":"218419200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-61/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/32522","id":"32522","filename":"path.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-02-11T17:48:58.489-0600","size":21044,"mimeType":"text/x-diff","content":"http://jira.codehaus.org/secure/attachment/32522/path.diff"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14035","id":"14035","description":"","name":"1.4.9","archived":false,"released":true,"releaseDate":"2007-12-19"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/63043/comment/123446","id":"123446","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"committed in rev 7195.\r\nThanks.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2008-02-12T15:25:33.886-0600","updated":"2008-02-12T15:25:33.886-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-62.json b/jira/PLXUTILS-62.json
new file mode 100644
index 00000000..3ea3bcae
--- /dev/null
+++ b/jira/PLXUTILS-62.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"63246","self":"http://jira.codehaus.org/rest/api/latest/issue/63246","key":"PLXUTILS-62","fields":{"progress":{"progress":0,"total":0},"summary":"Add method \"contains\" to StringUtils","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-62/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2009-01-03T07:04:36.608-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pgier","name":"pgier","emailAddress":"pgier@redhat.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Paul Gier","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["olamy(olamy)","pgier(pgier)","siveton(siveton)"],"customfield_10160":null,"updated":"2009-01-03T07:04:36.600-0600","created":"2008-02-15T09:21:31.239-0600","description":"For better interoperability with pre JDK 1.5 builds, it would be useful to have a \"contains\" method in the StringUtils class. The contains method was added to the String class in the sun jdk since 1.5.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"190339200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-62/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/32610","id":"32610","filename":"plexus-utils-string-contains-r7199.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=pgier","name":"pgier","emailAddress":"pgier@redhat.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Paul Gier","active":true},"created":"2008-02-15T09:21:31.292-0600","size":849,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/32610/plexus-utils-string-contains-r7199.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/63246/comment/123815","id":"123815","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"IMHO we must handle null and do the same as in commons-lang [javadoc|http://commons.apache.org/lang/api-release/org/apache/commons/lang/StringUtils.html#contains(java.lang.String,%20java.lang.String)]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2008-02-15T12:09:53.427-0600","updated":"2008-02-15T12:09:53.427-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/63246/comment/159795","id":"159795","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"Using org.apache.commons.lang.StringUtils instead of your patch. Applied in [r8000|http://fisheye.codehaus.org/changelog/plexus/?cs=8000]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-01-03T07:04:36.587-0600","updated":"2009-01-03T07:04:36.587-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-63.json b/jira/PLXUTILS-63.json
new file mode 100644
index 00000000..35a30ff0
--- /dev/null
+++ b/jira/PLXUTILS-63.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"61808","self":"http://jira.codehaus.org/rest/api/latest/issue/61808","key":"PLXUTILS-63","fields":{"progress":{"progress":0,"total":0},"summary":"plexus-utils: NullPointerException in Xpp3Dom.equals()","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-63/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"resolutiondate":"2008-07-20T12:57:18.561-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=barrett","name":"barrett","emailAddress":"Barrett.Nuzum@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrett Nuzum","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["barrett(barrett)","bentmann(bentmann)"],"customfield_10160":null,"updated":"2012-08-01T15:33:01.202-0500","created":"2008-01-18T12:07:10.808-0600","description":"org.codehaus.plexus.util.xml.Xpp3Dom.equals() fails with a NullPointerException if (this.value != null) && (obj.value == null). The code wrongly assumes that if this.value is non-null, obj.value must be non-null as well. Same thing for the \"name\" field.\n\nSuggested fix:\n\n public boolean equals( Object obj )\n {\n .......\n if ( name == null ? dom.name != null : (dom.name == null) || !dom.name.equals( name ) )\n {\n return false;\n }\n else if ( value == null ? dom.value != null : (dom.value == null) || !dom.value.equals( value ) )\n {\n return false;\n }\n ........\n }","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"31576","self":"http://jira.codehaus.org/rest/api/2/issueLink/31576","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"inwardIssue":{"id":"83649","key":"PLXUTILS-105","self":"http://jira.codehaus.org/rest/api/2/issue/83649","fields":{"summary":"more NullPointerException's in Xpp3Dom.equals()","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"20124","self":"http://jira.codehaus.org/rest/api/2/issueLink/20124","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"41769","key":"PLXUTILS-84","self":"http://jira.codehaus.org/rest/api/2/issue/41769","fields":{"summary":"plexus-utils: NullPointerException in Xpp3Dom.equals()","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"204681600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-63/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/31956","id":"31956","filename":"PLX-362.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=barrett","name":"barrett","emailAddress":"Barrett.Nuzum@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrett Nuzum","active":true},"created":"2008-01-18T12:22:36.768-0600","size":2481,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/31956/PLX-362.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10053","value":"Yes","id":"10053"},"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/61808/comment/120493","id":"120493","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=barrett","name":"barrett","emailAddress":"Barrett.Nuzum@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrett Nuzum","active":true},"body":"The issue is now in attributes and childList.\r\nI will attach a patch shortly.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=barrett","name":"barrett","emailAddress":"Barrett.Nuzum@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrett Nuzum","active":true},"created":"2008-01-18T12:07:40.013-0600","updated":"2008-01-18T12:07:40.013-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/61808/comment/120495","id":"120495","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=barrett","name":"barrett","emailAddress":"Barrett.Nuzum@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrett Nuzum","active":true},"body":"Feel free to move to PLXUTILS. sorry.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=barrett","name":"barrett","emailAddress":"Barrett.Nuzum@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrett Nuzum","active":true},"created":"2008-01-18T12:15:04.413-0600","updated":"2008-01-18T12:15:04.413-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/61808/comment/142523","id":"142523","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Applied in [r7524|http://fisheye.codehaus.org/changelog/plexus/?cs=7524], thanks for the patch Barrett!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-07-20T12:57:18.539-0500","updated":"2008-07-20T12:57:18.539-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-64.json b/jira/PLXUTILS-64.json
new file mode 100644
index 00000000..58e7e43b
--- /dev/null
+++ b/jira/PLXUTILS-64.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"62302","self":"http://jira.codehaus.org/rest/api/latest/issue/62302","key":"PLXUTILS-64","fields":{"progress":{"progress":0,"total":0},"summary":"working directory not quoted: unpack of tar files fail with ArchiverException: chmod exit code was: 1","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-64/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14086","id":"14086","description":"","name":"1.5.1","archived":false,"released":true,"releaseDate":"2008-02-21"}],"resolutiondate":"2008-02-19T16:43:53.110-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=enahir","name":"enahir","emailAddress":"enahir@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Erez Nahir","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["brianfox(brianfox)","elecharny(elecharny)","enahir(enahir)","hboutemy(hboutemy)","jdcasey(jdcasey)","mosabua(mosabua)","tpounds(tpounds)"],"customfield_10160":null,"updated":"2010-07-09T08:38:48.187-0500","created":"2008-01-29T01:33:02.556-0600","description":"Using this configuration:\n\n org.apache.maven.plugins\n maven-dependency-plugin\n \n \n \n unpack\n process-resources\n \n unpack\n \n \n \n \n org.apache.catalina\n tomcat\n 5.5.20\n tar\n ${mgmt.directory}\n \n\nWe get build failure with the exception:\nError:\n[INFO] [dependency:unpack {execution: unpack}]\n[INFO] Configured Artifact: org.apache.catalina:tomcat:5.5.20:tar\n[INFO] Unpacking /tmp/maven-repo/org/apache/catalina/tomcat/5.5.20/tomcat-5.5.20.tarto\n /vob/nm_acs/acs/install/target/stage/mgmt\nwith Includes null and excludes:null\n[INFO] Expanding: /tmp/maven-repo/org/apache/catalina/tomcat/5.5.20/tomcat-5.5.20.tar into /vob/nm_acs/acs/install/target/stage/mgmt\n[WARNING] -------------------------------\n[WARNING] Standard error:\n[WARNING] -------------------------------\n[WARNING] \n[WARNING] -------------------------------\n[WARNING] Standard output:\n[WARNING] -------------------------------\n[WARNING] chmod: cannot access `/vob/nm_acs/acs/install/target/stage/mgmt/apache-tomcat-5.5.20/webapps/jsp-examples/WEB-INF/classes/org/apache/jsp/jsp2/jspattribute/shuffle_jsp.class': No such file or directory\n[WARNING] -------------------------------\norg.codehaus.plexus.archiver.ArchiverException: chmod exit code was: 1\n at org.codehaus.plexus.archiver.util.ArchiveEntryUtils.chmod(ArchiveEntryUtils.java:59)\n at org.codehaus.plexus.archiver.zip.AbstractZipUnArchiver.extractFile(AbstractZipUnArchiver.java:236)\n at org.codehaus.plexus.archiver.tar.TarUnArchiver.execute(TarUnArchiver.java:92)\n at org.codehaus.plexus.archiver.AbstractUnArchiver.extract(AbstractUnArchiver.java:108)\n at org.apache.maven.plugin.dependency.AbstractDependencyMojo.unpack(AbstractDependencyMojo.java:266)\n at org.apache.maven.plugin.dependency.fromConfiguration.UnpackMojo.unpackArtifact(UnpackMojo.java:122)\n at org.apache.maven.plugin.dependency.fromConfiguration.UnpackMojo.execute(UnpackMojo.java:95)\n at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:443)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:480)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:459)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:278)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:143)\n at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334)\n at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125)\n at org.apache.maven.cli.MavenCli.main(MavenCli.java:280)\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n at java.lang.reflect.Method.invoke(Method.java:585)\n at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)\n at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)\n at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)\n at org.codehaus.classworlds.Launcher.main(Launcher.java:375)\n[INFO] ------------------------------------------------------------------------\n[ERROR] BUILD ERROR\n[INFO] ------------------------------------------------------------------------\n[INFO] Error unpacking file: /tmp/maven-repo/org/apache/catalina/tomcat/5.5.20/tomcat-5.5.20.tar to: /vob/nm_acs/acs/install/target/stage/mgmt\norg.codehaus.plexus.archiver.ArchiverException: chmod exit code was: 1\n[INFO] ------------------------------------------------------------------------\n[INFO] Trace\norg.apache.maven.lifecycle.LifecycleExecutionException: Error unpacking file: /tmp/maven-repo/org/apache/catalina/tomcat/5.5.20/tomcat-5.5.20.tar to: /vob/nm_acs/acs/install/target/stage/mgmt\norg.codehaus.plexus.archiver.ArchiverException: chmod exit code was: 1\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:564)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalWithLifecycle(DefaultLifecycleExecutor.java:480)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:459)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:311)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:278)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:143)\n at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:334)\n at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:125)\n at org.apache.maven.cli.MavenCli.main(MavenCli.java:280)\n at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)\n at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)\n at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)\n at java.lang.reflect.Method.invoke(Method.java:585)\n at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)\n at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)\n at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)\n at org.codehaus.classworlds.Launcher.main(Launcher.java:375)\nCaused by: org.apache.maven.plugin.MojoExecutionException: Error unpacking file: /tmp/maven-repo/org/apache/catalina/tomcat/5.5.20/tomcat-5.5.20.tar to: /vob/nm_acs/acs/install/target/stage/mgmt\norg.codehaus.plexus.archiver.ArchiverException: chmod exit code was: 1\n at org.apache.maven.plugin.dependency.AbstractDependencyMojo.unpack(AbstractDependencyMojo.java:275)\n at org.apache.maven.plugin.dependency.fromConfiguration.UnpackMojo.unpackArtifact(UnpackMojo.java:122)\n at org.apache.maven.plugin.dependency.fromConfiguration.UnpackMojo.execute(UnpackMojo.java:95)\n at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:443)\n at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:539)\n ... 16 more\nCaused by: org.codehaus.plexus.archiver.ArchiverException: chmod exit code was: 1\n at org.codehaus.plexus.archiver.util.ArchiveEntryUtils.chmod(ArchiveEntryUtils.java:59)\n at org.codehaus.plexus.archiver.zip.AbstractZipUnArchiver.extractFile(AbstractZipUnArchiver.java:236)\n at org.codehaus.plexus.archiver.tar.TarUnArchiver.execute(TarUnArchiver.java:92)\n at org.codehaus.plexus.archiver.AbstractUnArchiver.extract(AbstractUnArchiver.java:108)\n at org.apache.maven.plugin.dependency.AbstractDependencyMojo.unpack(AbstractDependencyMojo.java:266)\n ... 20 more\n[INFO] ------------------------------------------------------------------------\n[INFO] Total time: 53 seconds\n[INFO] Finished at: Mon Jan 28 16:40:41 IST 2008\n[INFO] Final Memory: 12M/401M\n[INFO] ------------------------------------------------------------------------","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[{"id":"18609","self":"http://jira.codehaus.org/rest/api/2/issueLink/18609","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"outwardIssue":{"id":"62520","key":"PLXCOMP-91","self":"http://jira.codehaus.org/rest/api/2/issue/62520","fields":{"summary":"Archiver does not quote paths with spaces when executing command lines","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"19711","self":"http://jira.codehaus.org/rest/api/2/issueLink/19711","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"68743","key":"MSHARED-21","self":"http://jira.codehaus.org/rest/api/2/issue/68743","fields":{"summary":"Spaces are incorrectly handled on command line","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"19701","self":"http://jira.codehaus.org/rest/api/2/issueLink/19701","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"68457","key":"MJAVADOC-193","self":"http://jira.codehaus.org/rest/api/2/issue/68457","fields":{"summary":"Bump plexus-utils to 1.5.1","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}},{"id":"18847","self":"http://jira.codehaus.org/rest/api/2/issueLink/18847","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"63486","key":"MNG-3414","self":"http://jira.codehaus.org/rest/api/2/issue/63486","fields":{"summary":"Plexus bundled in Maven 2.1-SNAPSHOT built on 19 Feb 2008 introduced a regression in path handling","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"18596","self":"http://jira.codehaus.org/rest/api/2/issueLink/18596","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"62564","key":"MDEP-138","self":"http://jira.codehaus.org/rest/api/2/issue/62564","fields":{"summary":"unpack of tar files fail with ArchiverException: chmod exit code was: 1","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"26618","self":"http://jira.codehaus.org/rest/api/2/issueLink/26618","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"112180","key":"MDEP-274","self":"http://jira.codehaus.org/rest/api/2/issue/112180","fields":{"summary":"unpack mojo suffers from PLXUTILS-64","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"217555200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-64/watchers","watchCount":4,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14036","id":"14036","description":"","name":"1.5","archived":false,"released":true,"releaseDate":"2008-02-18"}],"customfield_10170":null,"environment":"Maven version: 2.0.7\nJava version: 1.5.0_10\nOS name: \"linux\" version: \"2.6.9-42.7.elsmp\" arch: \"i386\"","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":12,"total":12,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/122069","id":"122069","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=elecharny","name":"elecharny","emailAddress":"elecharny@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Lécharny","active":true},"body":"We have the very same problem. The problem occurs only on MAC for us (Apache Directory Studio), while trying to unpack a file containing some spaves in the name :\r\n\r\n[INFO] Expanding /Users/elecharny/.m2/repository/org/apache/directory/studio/launcher-macosx/1.1.0/launcher-macosx-1.1.0.tar.gz to /tmp/tmp10812.tar\r\n[INFO] Expanding: /tmp/tmp10812.tar into /Users/elecharny/apacheDS/ldapstudio/studio/target/ApacheDirectoryStudio-macosx\r\n[WARNING] -------------------------------\r\n[WARNING] Standard error:\r\n[WARNING] -------------------------------\r\n[WARNING] \r\n[WARNING] -------------------------------\r\n[WARNING] Standard output:\r\n[WARNING] -------------------------------\r\n[WARNING] /bin/sh: line 1: cd: /Users/elecharny/apacheDS/ldapstudio/studio/target/ApacheDirectoryStudio-macosx/Apache: No such file or directory\r\n\r\n[WARNING] -------------------------------\r\norg.codehaus.plexus.archiver.ArchiverException: chmod exit code was: 1\r\n at org.codehaus.plexus.archiver.util.ArchiveEntryUtils.chmod(ArchiveEntryUtils.java:59)\r\n at org.codehaus.plexus.archiver.zip.AbstractZipUnArchiver.extractFile(AbstractZipUnArchiver.java:236)\r\n at org.codehaus.plexus.archiver.tar.TarUnArchiver.execute(TarUnArchiver.java:92)\r\n at org.codehaus.plexus.archiver.tar.TarGZipUnArchiver.execute(TarGZipUnArchiver.java:76)\r\n at org.codehaus.plexus.archiver.AbstractUnArchiver.extract(AbstractUnArchiver.java:108)\r\n at org.apache.maven.plugin.dependency.AbstractDependencyMojo.unpack(AbstractDependencyMojo.java:266)\r\n\r\n\r\nThe name is supposed to be :\r\n\"/Users/elecharny/apacheDS/ldapstudio/studio/target/ApacheDirectoryStudio-macosx/Apache Directory Studio.app\"\r\n\r\nI think that the spaces must be escaped before a chmod can be done.\r\n\r\nHope it helps ...","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=elecharny","name":"elecharny","emailAddress":"elecharny@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Lécharny","active":true},"created":"2008-02-01T11:23:08.449-0600","updated":"2008-02-01T11:23:08.449-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/122147","id":"122147","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=enahir","name":"enahir","emailAddress":"enahir@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Erez Nahir","active":true},"body":"In our case, I think the issue is with internal java class:\r\n\r\nls /vob/nm_acs/acs/install/target/stage/mgmt/apache-tomcat-5.5.20/webapps/jsp-examples/WEB-INF/classes/org/apache/jsp/jsp2/jspattribute\r\njspattribute_jsp.class shuffle_jsp$shuffle_jspHelper.class","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=enahir","name":"enahir","emailAddress":"enahir@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Erez Nahir","active":true},"created":"2008-02-02T12:43:04.060-0600","updated":"2008-02-02T12:43:04.060-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/122154","id":"122154","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"body":"Are the files actually unpacked? I wonder if catching this exception in the dependency plugin is a good workaround for now.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"created":"2008-02-02T13:55:25.986-0600","updated":"2008-02-02T13:55:25.986-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/122155","id":"122155","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"body":"This seems related to PLXCOMP-91 but i don't seem to have karma to link the issues.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brianfox","name":"brianfox","emailAddress":"brianf@infinity.nu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"brianfox brianfox","active":true},"created":"2008-02-02T13:57:15.198-0600","updated":"2008-02-02T13:57:15.198-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/122159","id":"122159","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=enahir","name":"enahir","emailAddress":"enahir@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Erez Nahir","active":true},"body":"Files are unpacked, catching the exception should solve the issue on my side.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=enahir","name":"enahir","emailAddress":"enahir@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Erez Nahir","active":true},"created":"2008-02-02T14:41:25.496-0600","updated":"2008-02-02T14:41:25.496-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/123813","id":"123813","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=tpounds","name":"tpounds","emailAddress":"trevor.pounds@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Trevor Pounds","active":true},"body":"We have the same issue with internal class file names. In our case we are just trying to unpack the sun jdk. The offending file is jdk1.50_12/demo/applets/Blink/Blink$1.class. The chmod translates this to Blink.class. I see that Blink$1.class has been unpacked but not a Blink.class. This makes me suspect the $1 is getting dropped or translated into a null string.\r\n\r\nThe error is as follows:\r\n\r\n[WARNING] chmod: cannot access `unpack/java/jdk1.5.0_12/demo/applets/Blink/Blink.class': No such file or directory\r\n\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=tpounds","name":"tpounds","emailAddress":"trevor.pounds@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Trevor Pounds","active":true},"created":"2008-02-15T11:29:58.156-0600","updated":"2008-02-15T11:29:58.156-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/124251","id":"124251","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"body":"I ran across this the other day, and fixed it.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"created":"2008-02-18T21:43:44.542-0600","updated":"2008-02-18T21:43:44.542-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/124252","id":"124252","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"body":"nevermind. My issue centered on the use of $1 and such for anonymous inner classes, where /bin/sh was interpreting this as an argument to the present script...and choking.\r\n\r\nquoting of working directory paths is actually an issue in plexus-utils, though.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"created":"2008-02-18T21:47:52.319-0600","updated":"2008-02-18T21:47:52.319-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/124253","id":"124253","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"body":"this is an issue with paths not being quoted correctly, particularly in the working directory of the Commandline and Shell logic.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"created":"2008-02-18T21:49:31.748-0600","updated":"2008-02-18T21:49:31.748-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/124385","id":"124385","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"body":"should be fixed.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"created":"2008-02-19T16:43:53.003-0600","updated":"2008-02-19T16:43:53.003-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/124531","id":"124531","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mosabua","name":"mosabua","emailAddress":"manfred@mosabuam.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Manfred Moser","active":true},"body":"What version of plexus-utils the fix in if it is released. Otherwise .. can you cut a release or at least have a latest snapshot that includes it somewhere?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mosabua","name":"mosabua","emailAddress":"manfred@mosabuam.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Manfred Moser","active":true},"created":"2008-02-20T17:27:21.046-0600","updated":"2008-02-20T17:27:21.046-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/62302/comment/124736","id":"124736","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"fixed in plexus-utils 1.5.1","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2008-02-23T00:57:23.207-0600","updated":"2008-02-23T00:57:23.207-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-65.json b/jira/PLXUTILS-65.json
new file mode 100644
index 00000000..16fa2198
--- /dev/null
+++ b/jira/PLXUTILS-65.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"63946","self":"http://jira.codehaus.org/rest/api/latest/issue/63946","key":"PLXUTILS-65","fields":{"progress":{"progress":0,"total":0},"summary":"ReaderFactory does not close created input streams","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-65/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2008-03-01T11:27:36.386-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mihobson","name":"mihobson","emailAddress":"markhobson@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Mark Hobson","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["hboutemy(hboutemy)","mihobson(mihobson)"],"customfield_10160":null,"updated":"2008-03-01T16:06:38.102-0600","created":"2008-02-29T05:10:52.295-0600","description":"Methods that create an InputStream from Files or URLs should also close them in a finally block.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"216864000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-65/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/63946/comment/125732","id":"125732","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"I don't understand the rationale: these methods are here to create Readers and let them open for use by the caller.\r\nThey can't close anything.\r\nIt's caller's responsibility to close the reader after use.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2008-03-01T11:27:36.255-0600","updated":"2008-03-01T11:27:36.255-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/63946/comment/125742","id":"125742","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mihobson","name":"mihobson","emailAddress":"markhobson@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Mark Hobson","active":true},"body":"Apologies, not sure what I was thinking.. ignore me :)","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mihobson","name":"mihobson","emailAddress":"markhobson@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Mark Hobson","active":true},"created":"2008-03-01T16:06:37.791-0600","updated":"2008-03-01T16:06:37.791-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-66.json b/jira/PLXUTILS-66.json
new file mode 100644
index 00000000..bb25e7b8
--- /dev/null
+++ b/jira/PLXUTILS-66.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"64041","self":"http://jira.codehaus.org/rest/api/latest/issue/64041","key":"PLXUTILS-66","fields":{"progress":{"progress":0,"total":0},"summary":"new method in FileUtils to copyFile with FilterWrapper[] with new parameter : boolean overwrite","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-66/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"}],"resolutiondate":"2008-03-24T03:02:02.335-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["olamy(olamy)"],"customfield_10160":null,"updated":"2008-03-24T03:02:02.318-0500","created":"2008-03-02T16:49:44.886-0600","description":null,"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"216777600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-66/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/64041/comment/125830","id":"125830","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"fixed in rev 7229","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2008-03-02T17:01:24.399-0600","updated":"2008-03-02T17:01:24.399-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-67.json b/jira/PLXUTILS-67.json
new file mode 100644
index 00000000..9d52e8f8
--- /dev/null
+++ b/jira/PLXUTILS-67.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"64177","self":"http://jira.codehaus.org/rest/api/latest/issue/64177","key":"PLXUTILS-67","fields":{"progress":{"progress":0,"total":0},"summary":"CommandLineUtils.executeCommandLine() to throw TimeoutException on timeout","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-67/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/15258","id":"15258","description":"","name":"1.5.9","archived":false,"released":true,"releaseDate":"2009-04-28"}],"resolutiondate":"2010-08-09T11:36:33.951-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=avalon","name":"avalon","emailAddress":"akostadinov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"A","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["avalon(avalon)","kwellman(kwellman)","krosenvold(krosenvold)","olamy(olamy)"],"customfield_10160":null,"updated":"2010-08-09T11:36:34.003-0500","created":"2008-03-05T07:59:00.237-0600","description":"http://fisheye.codehaus.org/viewrep/plexus/plexus-utils/trunk/src/main/java/org/codehaus/plexus/util/cli/CommandLineUtils.java\n\nCurrently CommandLineUtils.executeCommandLine() throws an InterruptedException no matter if timeout occurred or some other issue.\n\nIt would be useful for one to know when the reason was simply the command timing out and throwing TimeoutException will make that possible. \n\nI know the exception error message makes that clear but that makes things complicated for tools like the maven surefire test runner which will need to parse exception descriptions to know it was timeout and not something else.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"18841","self":"http://jira.codehaus.org/rest/api/2/issueLink/18841","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"64179","key":"SUREFIRE-468","self":"http://jira.codehaus.org/rest/api/2/issue/64179","fields":{"summary":"When tests timeout, report files on disk are incorrect","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"18840","self":"http://jira.codehaus.org/rest/api/2/issueLink/18840","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"59260","key":"PLXUTILS-53","self":"http://jira.codehaus.org/rest/api/2/issue/59260","fields":{"summary":"Add a timeout to CommandLineUtils","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"139881600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-67/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/34815","id":"34815","filename":"PLXUTILS-67.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=kwellman","name":"kwellman","emailAddress":"kwellman@kivasystems.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Keith Wellman","active":true},"created":"2008-05-28T09:18:13.742-0500","size":3071,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/34815/PLXUTILS-67.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14086","id":"14086","description":"","name":"1.5.1","archived":false,"released":true,"releaseDate":"2008-02-21"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/64177/comment/126131","id":"126131","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=avalon","name":"avalon","emailAddress":"akostadinov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"A","active":true},"body":"Timeout was added in PLXUTILS-53","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=avalon","name":"avalon","emailAddress":"akostadinov@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"A","active":true},"created":"2008-03-05T08:01:49.717-0600","updated":"2008-03-05T08:01:49.717-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/64177/comment/136480","id":"136480","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=kwellman","name":"kwellman","emailAddress":"kwellman@kivasystems.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Keith Wellman","active":true},"body":"Here is a patch for this issue. This lack of a distinct timeout specific exception has made it painful to attempt handling timeout events in surefire. \r\n\r\nConverts the thrown InterruptedException for a timeout condition into a java.util.concurrent.TimeoutException and extends handling for this Exception type. Exceptions are still wrapped as expected in a CommandLineException.\r\n\r\nAlso includes a new test in CommandLineUtilsTest which forces a timeout and ensures that a TimeoutException is the root cause.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=kwellman","name":"kwellman","emailAddress":"kwellman@kivasystems.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Keith Wellman","active":true},"created":"2008-05-28T09:18:13.754-0500","updated":"2008-05-28T09:18:13.754-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/64177/comment/231493","id":"231493","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"body":"This issue was fixed in r8152 by Olivier Lamy, although with a slightly different implementation/testcase. Judging by release dates, that's 1.5.9\r\n\r\nThrows CommandLineTimeOutException","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=krosenvold","name":"krosenvold","emailAddress":"krosenvold@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=krosenvold&avatarId=11127","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=krosenvold&avatarId=11127","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=krosenvold&avatarId=11127","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=krosenvold&avatarId=11127"},"displayName":"Kristian Rosenvold","active":true},"created":"2010-08-09T11:36:33.993-0500","updated":"2010-08-09T11:36:33.993-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-68.json b/jira/PLXUTILS-68.json
new file mode 100644
index 00000000..85d81691
--- /dev/null
+++ b/jira/PLXUTILS-68.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"64674","self":"http://jira.codehaus.org/rest/api/latest/issue/64674","key":"PLXUTILS-68","fields":{"progress":{"progress":0,"total":0},"summary":"Improve pretty printing done by MXSerializer","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-68/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"}],"resolutiondate":"2008-04-11T13:29:20.384-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)"],"customfield_10160":null,"updated":"2008-09-15T05:17:11.632-0500","created":"2008-03-16T11:46:27.546-0500","description":"The {{MXSerializer}} commonly used by the Modello generated writers produces something like\n{code:xml}\n\n org.apache.maven.plugins\n maven-jxr-plugin\n 2.1\n \n 2.1\n 2.1\n \n 2.0\n 2.1\n \n 20070407095323\n \n{code}\nIt would be cool if there were newlines after the XML declaration and at the end of file.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/5","iconUrl":"http://jira.codehaus.org/images/icons/priorities/trivial.png","name":"Trivial","id":"5"},"duedate":null,"issuelinks":[{"id":"20501","self":"http://jira.codehaus.org/rest/api/2/issueLink/20501","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"73571","key":"MSHARED-69","self":"http://jira.codehaus.org/rest/api/2/issue/73571","fields":{"summary":"Improve pretty printing the POM when it gets written to a file","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"213321600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-68/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/33222","id":"33222","filename":"pretty-xml.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-03-16T11:46:27.725-0500","size":885,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/33222/pretty-xml.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14086","id":"14086","description":"","name":"1.5.1","archived":false,"released":true,"releaseDate":"2008-02-21"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/64674/comment/130533","id":"130533","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Fixed in [r7279|http://fisheye.codehaus.org/changelog/plexus/?cs=7279].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-11T13:29:20.353-0500","updated":"2008-04-11T13:29:20.353-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-69.json b/jira/PLXUTILS-69.json
new file mode 100644
index 00000000..389a5f5f
--- /dev/null
+++ b/jira/PLXUTILS-69.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"65869","self":"http://jira.codehaus.org/rest/api/latest/issue/65869","key":"PLXUTILS-69","fields":{"progress":{"progress":0,"total":0},"summary":"FileUtils.copyFile doesn't work when destination file is in smb share","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-69/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T14:30:41.861-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ittayd","name":"ittayd","emailAddress":"ittay.dror@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ittay Dror","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["ittayd(ittayd)","michael-o(michael-o)"],"customfield_10160":null,"updated":"2014-11-25T14:30:41.898-0600","created":"2008-04-09T14:25:28.054-0500","description":"running mvn install fails. the relevant exception is this:\nCaused by: java.io.FileNotFoundException: w:\\maven\\repository\\com\\optier\\corefirst\\common\\Cpp\\Infrastructure\\Archive\\1.0.0-SNAPSHOT\\Archive-1.0.0-SNAPSHOT-x86-windows-msvc-shared.nar (Access is denied)\n at java.io.FileOutputStream.open(Native Method)\n at java.io.FileOutputStream.(FileOutputStream.java:179)\n at java.io.FileOutputStream.(FileOutputStream.java:131)\n at hidden.org.codehaus.plexus.util.FileUtils.copyFile(FileUtils.java:930)\n at org.apache.maven.artifact.installer.DefaultArtifactInstaller.install(DefaultArtifactInstaller.java:73)\n ... 19 more\n\nother files are created fine (classes, jars etc.)","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-69/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/65869/comment/130297","id":"130297","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ittayd","name":"ittayd","emailAddress":"ittay.dror@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ittay Dror","active":true},"body":"After investigating, it looks like it is a permissions issue. Most files maven created were created in the linux box (yes, the smb host was linux, forgot to mention that) with sharer:users. The file above was 'ittayd:users' (not sure how), which caused the failure. Removing the file solved the issue.\r\n\r\nMaybe this scenario is too rare to deal with, or maybe you'd like to consider using jcifs.samba.org (not sure how)","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=ittayd","name":"ittayd","emailAddress":"ittay.dror@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Ittay Dror","active":true},"created":"2008-04-09T14:53:09.430-0500","updated":"2008-04-09T14:53:09.430-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/65869/comment/357282","id":"357282","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T14:30:41.889-0600","updated":"2014-11-25T14:30:41.889-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-7.json b/jira/PLXUTILS-7.json
new file mode 100644
index 00000000..3d1a9ba4
--- /dev/null
+++ b/jira/PLXUTILS-7.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"36948","self":"http://jira.codehaus.org/rest/api/latest/issue/36948","key":"PLXUTILS-7","fields":{"progress":{"progress":0,"total":0},"summary":"[PATCH] unnecessary NullPointerExceptions thrown and caught in org.codehaus.plexus.util.CollectionUtils.getFreq(..)","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-7/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14039","id":"14039","description":"","name":"1.3","archived":false,"released":true,"releaseDate":"2006-09-28"}],"resolutiondate":"2006-05-12T04:44:32.401-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=johnrsisson","name":"johnrsisson","emailAddress":"jrsisson@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Sisson","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["evenisse(evenisse)","johnrsisson(johnrsisson)"],"customfield_10160":null,"updated":"2008-02-02T16:00:00.886-0600","created":"2006-05-11T23:48:54.901-0500","description":"Found that whilst building Geronimo with Maven 1.1-beta2 under a debugger that there were a lot of unnecessary NullPointerExceptions thrown and caught in org.codehaus.plexus.util.CollectionUtils.getFreq(..).\n\nThis also made catching NullPointerExceptions elsewhere more difficult as I had to filter these ones out in the debugger.\n\nAttached patch will reduce the number of exceptions generated and caught.\n\nExample stack trace when exceptions thrown/caught.\n\nThread [main] (Suspended (exception java.lang.NullPointerException))\n org.codehaus.plexus.util.CollectionUtils.getFreq(java.lang.Object, java.util.Map) line: 216\n org.codehaus.plexus.util.CollectionUtils.intersection(java.util.Collection, java.util.Collection) line: 136\n org.apache.maven.MavenUtils.mergeMaps(java.util.Map, java.util.Map) line: 441\n org.apache.maven.MavenUtils.mergeMaps(java.util.Map[]) line: 480\n org.apache.maven.MavenUtils.createContextNoDefaults(java.io.File, org.apache.maven.jelly.MavenJellyContext) line: 584\n org.apache.maven.MavenUtils.createContext(java.io.File, org.apache.maven.jelly.MavenJellyContext) line: 548\n org.apache.maven.MavenUtils.createContext(java.io.File) line: 531\n org.apache.maven.cli.App.initializeRootContext() line: 374\n org.apache.maven.cli.App.initialize(java.lang.String[]) line: 293\n org.apache.maven.cli.App.initializeMain(java.lang.String[]) line: 633\n org.apache.maven.cli.App.doMain(java.lang.String[], java.util.Date) line: 482\n org.apache.maven.cli.App.main(java.lang.String[]) line: 1258\n sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method]\n sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 39\n sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25\n java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object[]) line: 324\n com.werken.forehead.Forehead.run(java.lang.String[]) line: 551\n com.werken.forehead.Forehead.main(java.lang.String[]) line: 581\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"273888000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-7/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/20550","id":"20550","filename":"CollectionUtils-NPE.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=johnrsisson","name":"johnrsisson","emailAddress":"jrsisson@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Sisson","active":true},"created":"2006-05-11T23:48:55.055-0500","size":680,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/20550/CollectionUtils-NPE.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/36948/comment/65271","id":"65271","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"body":"Applied.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"created":"2006-05-12T04:44:32.384-0500","updated":"2006-05-12T04:44:32.384-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-70.json b/jira/PLXUTILS-70.json
new file mode 100644
index 00000000..f92c9a0c
--- /dev/null
+++ b/jira/PLXUTILS-70.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"66406","self":"http://jira.codehaus.org/rest/api/latest/issue/66406","key":"PLXUTILS-70","fields":{"progress":{"progress":0,"total":0},"summary":"Deprecate StringInputStream and StringOutputStream","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-70/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"}],"resolutiondate":"2008-05-02T06:17:31.213-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","siveton(siveton)"],"customfield_10160":null,"updated":"2008-05-02T06:17:30.996-0500","created":"2008-04-19T05:57:55.188-0500","description":"The mentioned classes do not handle character encoding properly. For instance, they don't guarantee an identity transformation when being pipelined. It's a one liner to replace these classes with JRE classes so I don't see a benefit in fixing and maintaining this code.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"211593600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-70/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/33985","id":"33985","filename":"deprecate-string-streams.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-19T05:57:55.240-0500","size":1500,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/33985/deprecate-string-streams.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14086","id":"14086","description":"","name":"1.5.1","archived":false,"released":true,"releaseDate":"2008-02-21"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/66406/comment/133325","id":"133325","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"Applied. thanks!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-05-02T06:17:30.779-0500","updated":"2008-05-02T06:17:30.779-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-71.json b/jira/PLXUTILS-71.json
new file mode 100644
index 00000000..858ed943
--- /dev/null
+++ b/jira/PLXUTILS-71.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"66538","self":"http://jira.codehaus.org/rest/api/latest/issue/66538","key":"PLXCOMP-111","fields":{"progress":{"progress":0,"total":0},"summary":"FileExtensionMapper interprets too much of the file name as an extension...","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXCOMP-111/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[],"resolutiondate":"2008-04-22T17:00:57.674-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=japalm","name":"japalm","emailAddress":"jan.palmquist@leanon.se","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jan Palmquist","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","japalm(japalm)"],"customfield_10160":null,"updated":"2008-04-22T17:00:57.669-0500","created":"2008-04-22T03:28:13.549-0500","description":"Is it just me, or is org.codehaus.plexus.components.io.filemappers.FileExtensionMapper within Plexus IO interpreting file name extensions wrong?\n\nIMO it should be implemented with a lastIndexOf('.') when substituting the file extension instead of using\nline 57: final int offset = pName.indexOf( '.' );\n\nhttp://fisheye.codehaus.org/browse/plexus/plexus-components/trunk/plexus-io/src/main/java/org/codehaus/plexus/components/io/filemappers/FileExtensionMapper.java?r=7277\n\nWhen I transform using xml-maven-plugin with an input file my.file.extension and applying FileExtensionMapper with .txt, the target file is named my.txt instead of my.file.txt which I would have expected.\n\nThanks.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/5","iconUrl":"http://jira.codehaus.org/images/icons/priorities/trivial.png","name":"Trivial","id":"5"},"duedate":null,"issuelinks":[],"customfield_10163":"212371200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXCOMP-111/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11440","id":"11440","key":"PLXCOMP","name":"Plexus Components","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11440&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11440&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11440&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11440&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/66538/comment/131683","id":"131683","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Let's just say both [FilenameUtils.indexOfExtension()|http://commons.apache.org/io/api-release/org/apache/commons/io/FilenameUtils.html#indexOfExtension(java.lang.String)] from Commons IO and Windows' definition of a [File Extension|http://msdn2.microsoft.com/en-us/library/bb776869(VS.85).aspx] would agree with you ;-)","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-22T04:00:48.640-0500","updated":"2008-04-22T04:00:48.640-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/66538/comment/131783","id":"131783","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Fixed in [r7303|http://fisheye.codehaus.org/changelog/plexus/plexus-components/trunk/plexus-io?cs=7303].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-22T17:00:57.626-0500","updated":"2008-04-22T17:00:57.626-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-72.json b/jira/PLXUTILS-72.json
new file mode 100644
index 00000000..23b433fb
--- /dev/null
+++ b/jira/PLXUTILS-72.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"66556","self":"http://jira.codehaus.org/rest/api/latest/issue/66556","key":"PLXUTILS-72","fields":{"progress":{"progress":0,"total":0},"summary":"Reflector.getObjectProperty fails to use getter","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-72/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2009-01-06T18:37:47.998-0600","customfield_10210":"3.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=joehni","name":"joehni","emailAddress":"joerg.schaible@gmx.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=joehni&avatarId=11446","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=joehni&avatarId=11446","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=joehni&avatarId=11446","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=joehni&avatarId=11446"},"displayName":"Jörg Schaible","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["joehni(joehni)","siveton(siveton)"],"customfield_10160":null,"updated":"2009-01-06T18:37:47.969-0600","created":"2008-04-22T10:09:31.340-0500","description":"The Reflector.getObjectProperty fails if a getter exists, but no field with the name of the property exists. The implementation first looks up the getter, but instead of using it, it will then look for such a declared field by calling Reflector.getField and fail with a NoSuchFieldException (nested into a ReflectorException). However, the code in Reflector.getObjectProperty expects the Reflector.getField method to return null to work properly (which is not correct either, since null might be the current value). Therefore the implementation should use an available getter and access the field only as fallback. The problem is present since at least version 1.0.1.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"189993600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-72/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/34047","id":"34047","filename":"Reflector.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=joehni","name":"joehni","emailAddress":"joerg.schaible@gmx.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=joehni&avatarId=11446","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=joehni&avatarId=11446","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=joehni&avatarId=11446","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=joehni&avatarId=11446"},"displayName":"Jörg Schaible","active":true},"created":"2008-04-22T10:20:16.532-0500","size":2735,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/34047/Reflector.patch"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/34048","id":"34048","filename":"Reflector-2.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=joehni","name":"joehni","emailAddress":"joerg.schaible@gmx.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=joehni&avatarId=11446","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=joehni&avatarId=11446","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=joehni&avatarId=11446","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=joehni&avatarId=11446"},"displayName":"Jörg Schaible","active":true},"created":"2008-04-22T10:47:16.497-0500","size":5057,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/34048/Reflector-2.patch"},{"self":"http://jira.codehaus.org/rest/api/2/attachment/34049","id":"34049","filename":"ReflectorTest.java","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=joehni","name":"joehni","emailAddress":"joerg.schaible@gmx.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=joehni&avatarId=11446","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=joehni&avatarId=11446","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=joehni&avatarId=11446","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=joehni&avatarId=11446"},"displayName":"Jörg Schaible","active":true},"created":"2008-04-22T10:47:51.228-0500","size":2279,"mimeType":"text/java","content":"http://jira.codehaus.org/secure/attachment/34049/ReflectorTest.java"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14086","id":"14086","description":"","name":"1.5.1","archived":false,"released":true,"releaseDate":"2008-02-21"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/66556/comment/131732","id":"131732","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=joehni","name":"joehni","emailAddress":"joerg.schaible@gmx.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=joehni&avatarId=11446","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=joehni&avatarId=11446","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=joehni&avatarId=11446","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=joehni&avatarId=11446"},"displayName":"Jörg Schaible","active":true},"body":"Patch for described behaviour.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=joehni","name":"joehni","emailAddress":"joerg.schaible@gmx.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=joehni&avatarId=11446","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=joehni&avatarId=11446","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=joehni&avatarId=11446","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=joehni&avatarId=11446"},"displayName":"Jörg Schaible","active":true},"created":"2008-04-22T10:20:16.539-0500","updated":"2008-04-22T10:20:16.539-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/66556/comment/131734","id":"131734","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=joehni","name":"joehni","emailAddress":"joerg.schaible@gmx.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=joehni&avatarId=11446","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=joehni&avatarId=11446","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=joehni&avatarId=11446","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=joehni&avatarId=11446"},"displayName":"Jörg Schaible","active":true},"body":"A unit test revealed even more problems since, Reflector.getField did not access non-visible fields although code did expect that. Therefore Reflector-2.patch makes first patch obsolete.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=joehni","name":"joehni","emailAddress":"joerg.schaible@gmx.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=joehni&avatarId=11446","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=joehni&avatarId=11446","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=joehni&avatarId=11446","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=joehni&avatarId=11446"},"displayName":"Jörg Schaible","active":true},"created":"2008-04-22T10:47:16.522-0500","updated":"2008-04-22T10:47:16.522-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/66556/comment/160181","id":"160181","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"Applied in [r8009|http://fisheye.codehaus.org/changelog/plexus/?cs=8009] Thanks!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-01-06T18:37:47.965-0600","updated":"2009-01-06T18:37:47.965-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-73.json b/jira/PLXUTILS-73.json
new file mode 100644
index 00000000..aaef05a5
--- /dev/null
+++ b/jira/PLXUTILS-73.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"66638","self":"http://jira.codehaus.org/rest/api/latest/issue/66638","key":"PLXUTILS-73","fields":{"progress":{"progress":0,"total":0},"summary":"Add StringUtils.isBlank() and StringUtils.isNotBlank()","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-73/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"}],"resolutiondate":"2008-04-23T13:49:02.574-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","trygvis(trygvis)"],"customfield_10160":null,"updated":"2008-04-24T13:25:27.067-0500","created":"2008-04-23T12:23:50.695-0500","description":"It's not that beautiful that the natural assertion\n{noformat}\n StringUtils.isEmpty(str) iff. !StringUtils.isNotEmpty(str)\n{noformat}\ndoes not hold.\n\nI propose to follow the [implementation over at Commons Lang|http://commons.apache.org/lang/api-release/org/apache/commons/lang/StringUtils.html#isEmpty(java.lang.String)] and have {{isEmpty()}} not do trimming. Instead, new methods {{isBlank()}} and {{isNotBlank()}} should be added.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[{"id":"19329","self":"http://jira.codehaus.org/rest/api/2/issueLink/19329","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"66642","key":"PLXUTILS-74","self":"http://jira.codehaus.org/rest/api/2/issue/66642","fields":{"summary":"Make StringUtils.isEmpty() complementary to StringUtils.isNotEmpty()","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"212198400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-73/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14045","id":"14045","description":"","name":"1.0.1","archived":true,"released":true,"releaseDate":"2005-07-10"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":5,"total":5,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/66638/comment/132079","id":"132079","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Added new methods in [r7304|http://fisheye.codehaus.org/changelog/plexus/?cs=7304].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-23T13:49:02.564-0500","updated":"2008-04-23T13:49:02.564-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/66638/comment/132507","id":"132507","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=trygvis","name":"trygvis","emailAddress":"trygvis@inamo.no","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Trygve Laugstøl","active":true},"body":"beautiful or not, the current behaviour can't change as *tons* of code might indirectly depend on it.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=trygvis","name":"trygvis","emailAddress":"trygvis@inamo.no","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Trygve Laugstøl","active":true},"created":"2008-04-24T12:38:34.911-0500","updated":"2008-04-24T12:38:34.911-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/66638/comment/132510","id":"132510","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Just to clarify: I haven't changed the current behavior for {{isEmpty()}} yet, I left this open in PLXUTILS-74 and didn't intend to close this in the near future.\r\n\r\nbq. the current behaviour can't change as tons of code might indirectly depend on it.\r\nIs this to say never ever?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-24T12:53:31.056-0500","updated":"2008-04-24T12:53:31.056-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/66638/comment/132513","id":"132513","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=trygvis","name":"trygvis","emailAddress":"trygvis@inamo.no","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Trygve Laugstøl","active":true},"body":"Yes, it can't change ever. I would just use commons-lang.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=trygvis","name":"trygvis","emailAddress":"trygvis@inamo.no","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Trygve Laugstøl","active":true},"created":"2008-04-24T13:18:19.353-0500","updated":"2008-04-24T13:18:19.353-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/66638/comment/132514","id":"132514","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"I see.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-24T13:25:27.055-0500","updated":"2008-04-24T13:25:27.055-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-74.json b/jira/PLXUTILS-74.json
new file mode 100644
index 00000000..d665669e
--- /dev/null
+++ b/jira/PLXUTILS-74.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"66642","self":"http://jira.codehaus.org/rest/api/latest/issue/66642","key":"PLXUTILS-74","fields":{"progress":{"progress":0,"total":0},"summary":"Make StringUtils.isEmpty() complementary to StringUtils.isNotEmpty()","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-74/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2008-04-24T13:26:51.081-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)"],"customfield_10160":null,"updated":"2008-04-24T13:26:51.076-0500","created":"2008-04-23T13:51:09.402-0500","description":"The current behavior is unintuitive and should be aligned with Commons Lang 2.x, i.e. {{StringUtils.isEmpty(\" \")}} should be {{false}}.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[{"id":"19329","self":"http://jira.codehaus.org/rest/api/2/issueLink/19329","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"outwardIssue":{"id":"66638","key":"PLXUTILS-73","self":"http://jira.codehaus.org/rest/api/2/issue/66638","fields":{"summary":"Add StringUtils.isBlank() and StringUtils.isNotBlank()","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"212198400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-74/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14045","id":"14045","description":"","name":"1.0.1","archived":true,"released":true,"releaseDate":"2005-07-10"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/66642/comment/132515","id":"132515","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"[Vetoed by Trygve|http://jira.codehaus.org/browse/PLXUTILS-73?focusedCommentId=132513#action_132513].","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-04-24T13:26:51.073-0500","updated":"2008-04-24T13:26:51.073-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-75.json b/jira/PLXUTILS-75.json
new file mode 100644
index 00000000..a50b19d6
--- /dev/null
+++ b/jira/PLXUTILS-75.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"67681","self":"http://jira.codehaus.org/rest/api/latest/issue/67681","key":"PLXUTILS-75","fields":{"progress":{"progress":0,"total":1800,"percent":0},"summary":"Xpp3DomWriter escapes characters in nested elements","timetracking":{"originalEstimate":"30m","remainingEstimate":"30m","originalEstimateSeconds":1800,"remainingEstimateSeconds":1800},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-75/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2008-12-26T07:59:36.716-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jroberts","name":"jroberts","emailAddress":"jlr787s@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jared Roberts","active":true},"aggregatetimeoriginalestimate":1800,"customfield_10161":["hboutemy(hboutemy)","jroberts(jroberts)"],"customfield_10160":null,"updated":"2008-12-26T07:59:36.695-0600","created":"2008-05-09T12:58:49.913-0500","description":"The write( XMLWriter, Xpp3Dom, boolean ) does not pass the boolean \"escape\" down to subsequent recursive calls. This effectively ignores the consumer's wishes to not escape the output. A simple change to line 54 [1] to pass the boolean to the write() method should remedy the issue.\n\n[1] http://plexus.codehaus.org/plexus-utils/xref/org/codehaus/plexus/util/xml/Xpp3DomWriter.html#54\n\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[],"customfield_10163":"191030400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-75/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":0,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/34495","id":"34495","filename":"PLXUTILS-75-plexus-utils.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jroberts","name":"jroberts","emailAddress":"jlr787s@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jared Roberts","active":true},"created":"2008-05-13T09:13:52.426-0500","size":3270,"mimeType":"text/x-patch","content":"http://jira.codehaus.org/secure/attachment/34495/PLXUTILS-75-plexus-utils.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":1800,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14031","id":"14031","description":"","name":"1.4.5","archived":false,"released":true,"releaseDate":"2007-07-31"}],"customfield_10170":null,"environment":null,"timeestimate":1800,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":1800,"percent":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/67681/comment/134668","id":"134668","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jroberts","name":"jroberts","emailAddress":"jlr787s@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jared Roberts","active":true},"body":"A patch and test case to fix this issue.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jroberts","name":"jroberts","emailAddress":"jlr787s@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jared Roberts","active":true},"created":"2008-05-13T09:13:52.442-0500","updated":"2008-05-13T09:13:52.442-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/67681/comment/159214","id":"159214","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"body":"done in [r7969|http://fisheye.codehaus.org/changelog/plexus/?cs=7969]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"created":"2008-12-26T07:59:36.692-0600","updated":"2008-12-26T07:59:36.692-0600"}]},"timeoriginalestimate":1800,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-76.json b/jira/PLXUTILS-76.json
new file mode 100644
index 00000000..f66a816f
--- /dev/null
+++ b/jira/PLXUTILS-76.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"68995","self":"http://jira.codehaus.org/rest/api/latest/issue/68995","key":"PLXUTILS-76","fields":{"progress":{"progress":0,"total":0},"summary":"Add validation for Windows dirname for FileUtils#mkdir()","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-76/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"}],"resolutiondate":"2008-06-04T07:31:53.798-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2008-06-04T07:31:53.793-0500","created":"2008-06-04T07:23:21.001-0500","description":"Calling this snippet on a windows os, the dir is not created and no exception is thrown\n{noformat}\n File dir = new File( \"D:\\\\temp\", \"test\\\"2bla\" );\n FileUtils.mkdir( dir.getAbsolutePath() );\n System.out.println( dir.exists() );\n{noformat}\n\n[1] describes the allowed characters (\":\", \"*\", \"?\", \"\\\"\", \"<\", \">\", \"|\") in filename.\n\n[1] http://support.microsoft.com/?scid=kb%3Ben-us%3B177506&x=12&y=13","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"208742400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-76/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14086","id":"14086","description":"","name":"1.5.1","archived":false,"released":true,"releaseDate":"2008-02-21"}],"customfield_10170":null,"environment":"win os","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/68995/comment/137360","id":"137360","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"done in r7357","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-06-04T07:31:53.770-0500","updated":"2008-06-04T07:31:53.770-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-77.json b/jira/PLXUTILS-77.json
new file mode 100644
index 00000000..5257d3a3
--- /dev/null
+++ b/jira/PLXUTILS-77.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"69021","self":"http://jira.codehaus.org/rest/api/latest/issue/69021","key":"PLXUTILS-77","fields":{"progress":{"progress":0,"total":0},"summary":"BourneShell doesn't escape workingdir/executable if containing an apostrophe","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-77/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"}],"resolutiondate":"2008-06-04T18:43:09.620-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2008-06-04T18:43:09.616-0500","created":"2008-06-04T18:28:42.299-0500","description":"Working on MJAVADOC-144, I found that having a path with an apostrophe and no space, BourneShell fails","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"19767","self":"http://jira.codehaus.org/rest/api/2/issueLink/19767","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"55860","key":"MJAVADOC-144","self":"http://jira.codehaus.org/rest/api/2/issue/55860","fields":{"summary":"Cannot generate Javadoc on Mac OS X if path contains space characters","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"208656000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-77/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14086","id":"14086","description":"","name":"1.5.1","archived":false,"released":true,"releaseDate":"2008-02-21"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/69021/comment/137427","id":"137427","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"fixed in r7358, snapshot deployed","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-06-04T18:43:09.592-0500","updated":"2008-06-04T18:43:09.592-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-78.json b/jira/PLXUTILS-78.json
new file mode 100644
index 00000000..a16eaee7
--- /dev/null
+++ b/jira/PLXUTILS-78.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"69404","self":"http://jira.codehaus.org/rest/api/latest/issue/69404","key":"PLXUTILS-78","fields":{"progress":{"progress":0,"total":0},"summary":"BourneShell doesn't quote arguments containing ; and &","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-78/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14383","id":"14383","description":"","name":"1.5.3","archived":false,"released":true,"releaseDate":"2008-06-13"}],"resolutiondate":"2008-06-13T17:07:38.177-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","mkoch(mkoch)","olamy(olamy)","siveton(siveton)"],"customfield_10160":null,"updated":"2008-08-04T06:08:20.595-0500","created":"2008-06-12T15:31:48.284-0500","description":null,"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[{"id":"19842","self":"http://jira.codehaus.org/rest/api/2/issueLink/19842","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"54843","key":"SCM-334","self":"http://jira.codehaus.org/rest/api/2/issue/54843","fields":{"summary":"Faulty svn commandline is generated for passwords containing special chars","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/2","iconUrl":"http://jira.codehaus.org/images/icons/priorities/critical.png","name":"Critical","id":"2"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"203472000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-78/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":5,"total":5,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/69404/comment/138400","id":"138400","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"fixed in rev 7367","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2008-06-12T16:14:33.694-0500","updated":"2008-06-12T16:14:33.694-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/69404/comment/138491","id":"138491","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkoch","name":"mkoch","emailAddress":"mkoch@rowa.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Koch","active":true},"body":"I think that there are more chars which are special to the shell and which need to be covered. I stumbled upon SCM-334 because my password contained a ')'. I haven't had a look at the source code and how the quoting works, though.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mkoch","name":"mkoch","emailAddress":"mkoch@rowa.de","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Koch","active":true},"created":"2008-06-13T00:53:19.311-0500","updated":"2008-06-13T00:53:19.311-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/69404/comment/138580","id":"138580","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"Olivier, testArgumentsWithsemicolon() failed on unix\r\n\r\n{noformat}\r\ntestArgumentsWithsemicolon(org.codehaus.plexus.util.cli.shell.BourneShellTest) Time elapsed: 0.063 sec <<< FAILURE!\r\njunit.framework.ComparisonFailure: expected: but was:\r\n\tat junit.framework.Assert.assertEquals(Assert.java:81)\r\n\tat junit.framework.Assert.assertEquals(Assert.java:87)\r\n\tat org.codehaus.plexus.util.cli.shell.BourneShellTest.testArgumentsWithsemicolon(BourneShellTest.java:138)\r\n...\r\n{noformat}\r\n\r\nBTW I am agree with Michael: you need to include *all* specific characters, see bourne shell doc, Appendix B [1]\r\n\r\n[1] http://steve-parker.org/sh/bourne.shtml ","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-06-13T14:55:02.229-0500","updated":"2008-06-13T14:55:02.229-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/69404/comment/138588","id":"138588","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"fixed in rev 7373.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2008-06-13T17:07:38.159-0500","updated":"2008-06-13T17:07:38.159-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/69404/comment/144037","id":"144037","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Note: This escaping makes it impossible to construct a command line like\r\n{noformat}\r\npatch < patchfile\r\n{noformat}\r\ni.e. there is no way of getting the redirection character through to the shell. Hence, clients may need to use alternative command line parameters to accomplish this or will break.The subtle point is that this works on Windows until we fix the escaping of metacharacters there, too.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-08-04T06:08:20.560-0500","updated":"2008-08-04T06:08:20.560-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-79.json b/jira/PLXUTILS-79.json
new file mode 100644
index 00000000..5a625091
--- /dev/null
+++ b/jira/PLXUTILS-79.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"69471","self":"http://jira.codehaus.org/rest/api/latest/issue/69471","key":"PLXUTILS-79","fields":{"progress":{"progress":0,"total":0},"summary":"restore backward compatibility in interpolation package","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-79/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14384","id":"14384","description":"","name":"1.5.4","archived":false,"released":true,"releaseDate":"2008-06-18"}],"resolutiondate":"2008-06-14T03:00:19.729-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["olamy(olamy)"],"customfield_10160":null,"updated":"2008-06-14T03:00:19.722-0500","created":"2008-06-14T02:32:56.470-0500","description":"The shade of org.codehaus.plexus.util.interpolation breaks backward compatibility.\nSome methods need to be restored (example from org.codehaus.plexus.util.interpolation.RegexBasedInterpolator, we must have a method\n{code:java}\n public void addValueSource( org.codehaus.plexus.util.interpolation.ValueSource valueSource )\n {\n super.addValueSource( valueSource );\n }\n{code}","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[],"customfield_10163":"207878400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-79/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14383","id":"14383","description":"","name":"1.5.3","archived":false,"released":true,"releaseDate":"2008-06-13"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/69471/comment/138607","id":"138607","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"only backward comp for continuum start restored in rev 7391.\r\nThe end later.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2008-06-14T02:51:46.120-0500","updated":"2008-06-14T02:51:46.120-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/69471/comment/138608","id":"138608","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"fixed in rev 7392","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2008-06-14T03:00:19.714-0500","updated":"2008-06-14T03:00:19.714-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-8.json b/jira/PLXUTILS-8.json
new file mode 100644
index 00000000..8875a346
--- /dev/null
+++ b/jira/PLXUTILS-8.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"18597","self":"http://jira.codehaus.org/rest/api/latest/issue/18597","key":"PLXUTILS-8","fields":{"progress":{"progress":0,"total":0},"summary":"The DirectoryScanner seems to have a problem with directories containing hypens","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-8/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/5","id":"5","description":"All attempts at reproducing this issue failed, or not enough information was available to reproduce the issue. Reading the code produces no clues as to why this behavior would occur. If more information appears later, please reopen the issue.","name":"Cannot Reproduce"},"fixVersions":[],"resolutiondate":"2008-07-20T13:32:10.153-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=trygvis","name":"trygvis","emailAddress":"trygvis@inamo.no","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Trygve Laugstøl","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","trygvis(trygvis)","wfay(wfay)"],"customfield_10160":null,"updated":"2008-07-20T13:32:10.147-0500","created":"2004-10-17T18:26:32.000-0500","description":"While using doxia to generate html from my apt sources I noticed this behaviour:\n\nGiven \"docs/apt/releases/1.0-alpha-1\" as a source directory, \"target/site/releases/1\" was generated.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"204681600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-8/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/29070","id":"29070","filename":"plxutils-8_1.diff","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=wfay","name":"wfay","emailAddress":"waynefay@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Wayne Fay","active":true},"created":"2007-08-21T20:52:50.937-0500","size":2054,"mimeType":"application/octet-stream","content":"http://jira.codehaus.org/secure/attachment/29070/plxutils-8_1.diff"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/18597/comment/105382","id":"105382","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=wfay","name":"wfay","emailAddress":"waynefay@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Wayne Fay","active":true},"body":"Obviously this is a very old bug, so I don't know when or how the bug got fixed or if it was even a bug in Plexus Utils in the first place, but here is a patch to the DirectoryScannerTest file which demonstrates that DirectoryScanner has no problems with directories with hyphens in their names.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=wfay","name":"wfay","emailAddress":"waynefay@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Wayne Fay","active":true},"created":"2007-08-21T20:52:50.956-0500","updated":"2007-08-21T20:52:50.956-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/18597/comment/142527","id":"142527","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Added unit test in [r7526|http://fisheye.codehaus.org/changelog/plexus/?cs=7526], thanks Wayne!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-07-20T13:32:10.137-0500","updated":"2008-07-20T13:32:10.137-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-80.json b/jira/PLXUTILS-80.json
new file mode 100644
index 00000000..016dc3c5
--- /dev/null
+++ b/jira/PLXUTILS-80.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"69599","self":"http://jira.codehaus.org/rest/api/latest/issue/69599","key":"PLXUTILS-80","fields":{"progress":{"progress":0,"total":0},"summary":"Merge code from AntBuildWriterUtil into a new XmlWriterUtil class","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-80/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14384","id":"14384","description":"","name":"1.5.4","archived":false,"released":true,"releaseDate":"2008-06-18"}],"resolutiondate":"2008-06-17T13:46:35.884-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2008-06-17T13:47:48.071-0500","created":"2008-06-17T13:40:02.697-0500","description":"AntBuildWriterUtil [1] contains some useful methods to play with XmlWriter and comments. I propose to merge them in p-u so the it will be reusable. \n\n[1] https://svn.apache.org/repos/asf/maven/plugins/trunk/maven-ant-plugin/src/main/java/org/apache/maven/plugin/ant/AntBuildWriterUtil.java","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"19879","self":"http://jira.codehaus.org/rest/api/2/issueLink/19879","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"69600","key":"MANT-42","self":"http://jira.codehaus.org/rest/api/2/issue/69600","fields":{"summary":"Update to p-u 1.5.4","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false}}}}],"customfield_10163":"207532800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-80/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14383","id":"14383","description":"","name":"1.5.3","archived":false,"released":true,"releaseDate":"2008-06-13"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/69599/comment/138865","id":"138865","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"fixed in r7396","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-06-17T13:46:35.866-0500","updated":"2008-06-17T13:46:35.866-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-81.json b/jira/PLXUTILS-81.json
new file mode 100644
index 00000000..ee6a78b3
--- /dev/null
+++ b/jira/PLXUTILS-81.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"70462","self":"http://jira.codehaus.org/rest/api/latest/issue/70462","key":"PLXUTILS-81","fields":{"progress":{"progress":0,"total":0},"summary":"Exclusion Pattern does not include Serena Dimensions .metadata pattern","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-81/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2009-01-02T14:36:42.957-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=kamdars","name":"kamdars","emailAddress":"sachinkamdar@hotmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"sachin kamdar","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["kamdars(kamdars)","siveton(siveton)"],"customfield_10160":null,"updated":"2009-01-02T15:22:31.724-0600","created":"2008-07-07T01:03:59.391-0500","description":"Exclusion Patterns defined in the DirectoryScanner.java does not include Serena Dimensions .metadata pattern. As a result, maven build packages hidden metadata files created by the Source Control tool. This makes the resulting artifact files unnecessarily larger and complicated. ","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"21698","self":"http://jira.codehaus.org/rest/api/2/issueLink/21698","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"79303","key":"PLXUTILS-100","self":"http://jira.codehaus.org/rest/api/2/issue/79303","fields":{"summary":"DirectoryScanner#DEFAULTEXCLUDES should exclude other SCMs like Mercury or GIT","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"190339200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-81/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/35639","id":"35639","filename":"DirectoryScanner.java","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=kamdars","name":"kamdars","emailAddress":"sachinkamdar@hotmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"sachin kamdar","active":true},"created":"2008-07-07T01:03:59.434-0500","size":38276,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/35639/DirectoryScanner.java"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14043","id":"14043","description":"","name":"1.0-alpha-1","archived":true,"released":true,"releaseDate":"2005-01-18"},{"self":"http://jira.codehaus.org/rest/api/2/version/14044","id":"14044","description":"","name":"1.0","archived":true,"released":true,"releaseDate":"2005-05-27"},{"self":"http://jira.codehaus.org/rest/api/2/version/14045","id":"14045","description":"","name":"1.0.1","archived":true,"released":true,"releaseDate":"2005-07-10"},{"self":"http://jira.codehaus.org/rest/api/2/version/14046","id":"14046","description":"","name":"1.0.2","archived":true,"released":true,"releaseDate":"2005-09-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14047","id":"14047","description":"","name":"1.0.3","archived":true,"released":true,"releaseDate":"2005-09-15"},{"self":"http://jira.codehaus.org/rest/api/2/version/14048","id":"14048","description":"","name":"1.0.4","archived":true,"released":true,"releaseDate":"2005-10-11"},{"self":"http://jira.codehaus.org/rest/api/2/version/14049","id":"14049","description":"","name":"1.0.5","archived":true,"released":true,"releaseDate":"2005-12-07"},{"self":"http://jira.codehaus.org/rest/api/2/version/14037","id":"14037","description":"","name":"1.1","archived":true,"released":true,"releaseDate":"2006-01-11"},{"self":"http://jira.codehaus.org/rest/api/2/version/14038","id":"14038","description":"","name":"1.2","archived":false,"released":true,"releaseDate":"2006-04-19"},{"self":"http://jira.codehaus.org/rest/api/2/version/14039","id":"14039","description":"","name":"1.3","archived":false,"released":true,"releaseDate":"2006-09-28"},{"self":"http://jira.codehaus.org/rest/api/2/version/14040","id":"14040","description":"","name":"1.4","archived":false,"released":true,"releaseDate":"2007-01-09"},{"self":"http://jira.codehaus.org/rest/api/2/version/14041","id":"14041","description":"","name":"1.4.1","archived":false,"released":true,"releaseDate":"2007-03-10"},{"self":"http://jira.codehaus.org/rest/api/2/version/14042","id":"14042","description":"","name":"1.4.2","archived":false,"released":true,"releaseDate":"2007-05-20"},{"self":"http://jira.codehaus.org/rest/api/2/version/14029","id":"14029","description":"","name":"1.4.3","archived":false,"released":true,"releaseDate":"2007-07-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14030","id":"14030","description":"","name":"1.4.4","archived":false,"released":true,"releaseDate":"2007-07-20"},{"self":"http://jira.codehaus.org/rest/api/2/version/14031","id":"14031","description":"","name":"1.4.5","archived":false,"released":true,"releaseDate":"2007-07-31"},{"self":"http://jira.codehaus.org/rest/api/2/version/14032","id":"14032","description":"","name":"1.4.6","archived":false,"released":true,"releaseDate":"2007-09-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14033","id":"14033","description":"","name":"1.4.7","archived":false,"released":true,"releaseDate":"2007-10-16"},{"self":"http://jira.codehaus.org/rest/api/2/version/14034","id":"14034","description":"","name":"1.4.8","archived":false,"released":true,"releaseDate":"2007-11-27"},{"self":"http://jira.codehaus.org/rest/api/2/version/14035","id":"14035","description":"","name":"1.4.9","archived":false,"released":true,"releaseDate":"2007-12-19"},{"self":"http://jira.codehaus.org/rest/api/2/version/14036","id":"14036","description":"","name":"1.5","archived":false,"released":true,"releaseDate":"2008-02-18"},{"self":"http://jira.codehaus.org/rest/api/2/version/14086","id":"14086","description":"","name":"1.5.1","archived":false,"released":true,"releaseDate":"2008-02-21"},{"self":"http://jira.codehaus.org/rest/api/2/version/14100","id":"14100","description":"","name":"1.5.2","archived":false,"released":true,"releaseDate":"2008-06-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14383","id":"14383","description":"","name":"1.5.3","archived":false,"released":true,"releaseDate":"2008-06-13"},{"self":"http://jira.codehaus.org/rest/api/2/version/14384","id":"14384","description":"","name":"1.5.4","archived":false,"released":true,"releaseDate":"2008-06-18"}],"customfield_10170":null,"environment":"All","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/70462/comment/159744","id":"159744","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"patch applied in r7996","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-01-02T14:36:42.925-0600","updated":"2009-01-02T14:36:42.925-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-82.json b/jira/PLXUTILS-82.json
new file mode 100644
index 00000000..f4481f30
--- /dev/null
+++ b/jira/PLXUTILS-82.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"70948","self":"http://jira.codehaus.org/rest/api/latest/issue/70948","key":"PLXUTILS-82","fields":{"progress":{"progress":0,"total":0},"summary":"Make CommandLineUtils.getSystemEnvVars() use casing rule of platform","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-82/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"resolutiondate":"2008-07-20T12:03:49.770-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","siveton(siveton)"],"customfield_10160":null,"updated":"2008-12-23T11:50:33.735-0600","created":"2008-07-16T17:26:49.905-0500","description":"Is there a good reason why calling {{CommandLineUtils.getSystemEnvVars()}} on Windows insists on returning a case-sensitive mapping whereas the Windows shell environment is case-insensitive? This makes the method quite useless with regard to platform-independent code.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"21638","self":"http://jira.codehaus.org/rest/api/2/issueLink/21638","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"78994","key":"MNG-3940","self":"http://jira.codehaus.org/rest/api/2/issue/78994","fields":{"summary":"Interpolation of environment variables is not case-insensitive on Windows","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"204681600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-82/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/35894","id":"35894","filename":"os-aware-env.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-07-16T17:26:49.912-0500","size":549,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/35894/os-aware-env.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14408","id":"14408","description":"","name":"1.5.5","archived":false,"released":true,"releaseDate":"2008-07-03"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":"Windows","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/70948/comment/142514","id":"142514","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"Agree with you. Please applied.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-07-20T10:35:46.542-0500","updated":"2008-07-20T10:35:46.542-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/70948/comment/142520","id":"142520","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"Fixed in [r7522|http://fisheye.codehaus.org/changelog/plexus/?cs=7522], thanks for reviewing Vincent!","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-07-20T12:03:49.721-0500","updated":"2008-07-20T12:03:49.721-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-83.json b/jira/PLXUTILS-83.json
new file mode 100644
index 00000000..01d7fdc5
--- /dev/null
+++ b/jira/PLXUTILS-83.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"34490","self":"http://jira.codehaus.org/rest/api/latest/issue/34490","key":"PLXUTILS-83","fields":{"progress":{"progress":0,"total":0},"summary":"new lines inside attributes are not escaped in xml","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-83/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14038","id":"14038","description":"","name":"1.2","archived":false,"released":true,"releaseDate":"2006-04-19"}],"resolutiondate":"2006-03-04T11:16:46.010-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=elpunzalan","name":"elpunzalan","emailAddress":"epunzalan@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Edwin Punzalan","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["elpunzalan(elpunzalan)"],"customfield_10160":null,"updated":"2008-07-27T16:52:39.743-0500","created":"2006-03-04T10:01:06.529-0600","description":null,"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"duedate":null,"issuelinks":[{"id":"13725","self":"http://jira.codehaus.org/rest/api/2/issueLink/13725","type":{"id":"10020","name":"Supercedes","inward":"is superceded by","outward":"supercedes","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10020"},"outwardIssue":{"id":"27512","key":"MIDEA-5","self":"http://jira.codehaus.org/rest/api/2/issue/27512","fields":{"summary":"using copyright plugin gets converted back differently to original, corrupting ipr","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"279763200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-83/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=elpunzalan","name":"elpunzalan","emailAddress":"epunzalan@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Edwin Punzalan","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/19423","id":"19423","filename":"PLX-204-plexus-utils.patch","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=elpunzalan","name":"elpunzalan","emailAddress":"epunzalan@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Edwin Punzalan","active":true},"created":"2006-03-04T10:12:39.971-0600","size":2003,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/19423/PLX-204-plexus-utils.patch"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14037","id":"14037","description":"","name":"1.1","archived":true,"released":true,"releaseDate":"2006-01-11"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/34490/comment/60061","id":"60061","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=elpunzalan","name":"elpunzalan","emailAddress":"epunzalan@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Edwin Punzalan","active":true},"body":"Attached patch with unit test proof","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=elpunzalan","name":"elpunzalan","emailAddress":"epunzalan@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Edwin Punzalan","active":true},"created":"2006-03-04T10:12:40.013-0600","updated":"2006-03-04T10:12:40.013-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/34490/comment/60065","id":"60065","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=elpunzalan","name":"elpunzalan","emailAddress":"epunzalan@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Edwin Punzalan","active":true},"body":"Patch applied. Thanks for the commit access. ^_^","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=elpunzalan","name":"elpunzalan","emailAddress":"epunzalan@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Edwin Punzalan","active":true},"created":"2006-03-04T11:16:45.998-0600","updated":"2006-03-04T11:16:45.998-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-84.json b/jira/PLXUTILS-84.json
new file mode 100644
index 00000000..e5a72536
--- /dev/null
+++ b/jira/PLXUTILS-84.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"41769","self":"http://jira.codehaus.org/rest/api/latest/issue/41769","key":"PLXUTILS-84","fields":{"progress":{"progress":0,"total":0},"summary":"plexus-utils: NullPointerException in Xpp3Dom.equals()","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-84/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14040","id":"14040","description":"","name":"1.4","archived":false,"released":true,"releaseDate":"2007-01-09"}],"resolutiondate":"2006-10-15T12:57:41.253-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=klaus.brunner","name":"klaus.brunner","emailAddress":"klaus.brunner@uniqa.at","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Klaus Brunner","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["handyande(handyande)","klaus.brunner(klaus.brunner)"],"customfield_10160":null,"updated":"2008-07-27T16:54:43.208-0500","created":"2006-09-20T04:49:04.065-0500","description":"org.codehaus.plexus.util.xml.Xpp3Dom.equals() fails with a NullPointerException if (this.value != null) && (obj.value == null). The code wrongly assumes that if this.value is non-null, obj.value must be non-null as well. Same thing for the \"name\" field.\n\nSuggested fix:\n\n public boolean equals( Object obj )\n {\n .......\n if ( name == null ? dom.name != null : (dom.name == null) || !dom.name.equals( name ) )\n {\n return false;\n }\n else if ( value == null ? dom.value != null : (dom.value == null) || !dom.value.equals( value ) )\n {\n return false;\n }\n ........\n }","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"20124","self":"http://jira.codehaus.org/rest/api/2/issueLink/20124","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"outwardIssue":{"id":"61808","key":"PLXUTILS-63","self":"http://jira.codehaus.org/rest/api/2/issue/61808","fields":{"summary":"plexus-utils: NullPointerException in Xpp3Dom.equals()","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"260323200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-84/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=handyande","name":"handyande","emailAddress":"andy@handyande.co.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andrew Williams","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14039","id":"14039","description":"","name":"1.3","archived":false,"released":true,"releaseDate":"2006-09-28"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10053","value":"Yes","id":"10053"},"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/41769/comment/75282","id":"75282","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=klaus.brunner","name":"klaus.brunner","emailAddress":"klaus.brunner@uniqa.at","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Klaus Brunner","active":true},"body":"This applies to the \"attributes\" and \"childList\" fields as well.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=klaus.brunner","name":"klaus.brunner","emailAddress":"klaus.brunner@uniqa.at","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Klaus Brunner","active":true},"created":"2006-09-20T04:54:00.297-0500","updated":"2006-09-20T04:54:00.297-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/41769/comment/77693","id":"77693","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=handyande","name":"handyande","emailAddress":"andy@handyande.co.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andrew Williams","active":true},"body":"Fixed in subversion","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=handyande","name":"handyande","emailAddress":"andy@handyande.co.uk","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andrew Williams","active":true},"created":"2006-10-15T12:57:41.223-0500","updated":"2006-10-15T12:57:41.223-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-85.json b/jira/PLXUTILS-85.json
new file mode 100644
index 00000000..074ade83
--- /dev/null
+++ b/jira/PLXUTILS-85.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"27795","self":"http://jira.codehaus.org/rest/api/latest/issue/27795","key":"PLXUTILS-85","fields":{"progress":{"progress":0,"total":0},"summary":"under windows when executing java classpaths with embedded spaces cause the execution to fail","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-85/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14038","id":"14038","description":"","name":"1.2","archived":false,"released":true,"releaseDate":"2006-04-19"}],"resolutiondate":"2006-04-19T06:08:28.347-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=andyglick","name":"andyglick","emailAddress":"andyglick@acm.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andy Glick","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["andyglick(andyglick)","brettporter(brettporter)","carlos(carlos)","lacostej(lacostej)"],"customfield_10160":null,"updated":"2008-07-27T16:47:24.748-0500","created":"2005-10-02T13:44:09.868-0500","description":"using plexus.util.cli as a runtime package, i am constructing command lines to run forked surefire processes - the maven repo is located at c:\\documents and settings\\\\.m2\\repository - so any repository based jar has spaces embedded in its file spec - even when the classpath string is placed into its own arg element the java runtime seems to be parsing it and breaking it up into tokens on the white space - the error message is\n\njava -classpath and \nclass and not found\n\nant's low level java excution class Java13CommandLauncher doesn't exhibit this behavior, using maven1 with the Ant java task and the -X option enabled the arguments that are displayed are 1) the executable 2) -classpath and 3) the whole classpath as a single argument which contains embedded spaces\n\ni suppose that plexus-utils lacks some critical logic that is present in ant's set of java execution classes\n\nhere is a sample output from executing the Ant java task in a maven 1 environment: the lines are wrapped cause I cut and pasted them from a cmd window\n\n [java] [DEBUG] Execute:Java13CommandLauncher: Executing 'F:\\java-1.4.2\\jre\\b\nin\\java.exe' with arguments:\n'-classpath'\n'F:\\devel4\\beanshellscripts\\target\\classes;C:\\Documents and Settings\\Administrat\nor\\.maven\\repository\\bsh\\jars\\bsh-2.0b2.jar;C:\\Documents and Settings\\Administra\ntor\\.maven\\repository\\commons-collections\\jars\\commons-collections-3.1.jar;C:\\Do\ncuments and Settings\\Administrator\\.maven\\repository\\commons-configuration\\jars\\\ncommons-configuration-1.0.jar;C:\\Documents and Settings\\Administrator\\.maven\\rep\nository\\commons-jxpath\\jars\\commons-jxpath-1.2.jar;C:\\Documents and Settings\\Adm\ninistrator\\.maven\\repository\\commons-lang\\jars\\commons-lang-2.0.jar;C:\\Documents\n and Settings\\Administrator\\.maven\\repository\\commons-logging\\jars\\commons-loggi\nng-1.0.4.jar;C:\\Documents and Settings\\Administrator\\.maven\\repository\\junit\\jar\ns\\junit-3.8.1.jar;C:\\Documents and Settings\\Administrator\\.maven\\repository\\jdom\n\\jars\\jdom-1.0.jar;C:\\Documents and Settings\\Administrator\\.maven\\repository\\mys\nql\\jars\\mysql-connector-java-3.0.15-ga-bin.jar;C:\\Documents and Settings\\Adminis\ntrator\\.maven\\repository\\zrgs\\jars\\cicerone-1.0.jar'\n'bsh.Console'\n\nThe ' characters around the executable and arguments are\nnot part of the command.\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"13916","self":"http://jira.codehaus.org/rest/api/2/issueLink/13916","type":{"id":"10000","name":"Duplicate","inward":"is duplicated by","outward":"duplicates","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10000"},"inwardIssue":{"id":"26628","key":"PLXUTILS-6","self":"http://jira.codehaus.org/rest/api/2/issue/26628","fields":{"summary":"Commandline: Command not found when executable has a in its path","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"16490","self":"http://jira.codehaus.org/rest/api/2/issueLink/16490","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"49571","key":"PLXUTILS-31","self":"http://jira.codehaus.org/rest/api/2/issue/49571","fields":{"summary":"Quoting issue on Windows. Potential regression ?","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"13918","self":"http://jira.codehaus.org/rest/api/2/issueLink/13918","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"35559","key":"MCOMPILER-30","self":"http://jira.codehaus.org/rest/api/2/issue/35559","fields":{"summary":"Compiler fork executable fails when the path has spaces","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}},{"id":"13924","self":"http://jira.codehaus.org/rest/api/2/issueLink/13924","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"35677","key":"SUREFIRE-77","self":"http://jira.codehaus.org/rest/api/2/issue/35677","fields":{"summary":"Surefire fork fails under windows when command has several quotes","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"275875200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-85/watchers","watchCount":2,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14047","id":"14047","description":"","name":"1.0.3","archived":true,"released":true,"releaseDate":"2005-09-15"}],"customfield_10170":null,"environment":"win 2k - jdk 1.4.2 - attempting to fork surefire tests for maven2","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":8,"total":8,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/27795/comment/47634","id":"47634","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"Slightly off topic:\r\n\r\nAndy, I know that plexus developers are thinking about reusing commons-exec (currently inside Jakarta Commons Sandbox) inside m2/continuum and maybe plexus.\r\nCommons-exec is the ant code taken out for reusability. There's some talk to make the API more usable, but this process just started, so the API is not yet stable.\r\nI don't know when commons-exec will be ready but you may want to follow what's going on there. \r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2005-10-02T14:53:06.999-0500","updated":"2005-10-02T14:53:06.999-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/27795/comment/47831","id":"47831","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"body":"andy - how is your progress on this?\r\n\r\nIf you have anything pending to commit, it'd be great if you could do so - I'd like to take a stab at getting this resolved.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"created":"2005-10-05T01:46:14.821-0500","updated":"2005-10-05T01:46:14.821-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/27795/comment/47988","id":"47988","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=andyglick","name":"andyglick","emailAddress":"andyglick@acm.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andy Glick","active":true},"body":"Brett,\r\n\r\nSorry, I took the easy way out. I discussed it with Jason and possibly you, at least for part of it, via irc. It turns out that someone who uses windows can move an M2 repository simply by changing the setting for repo.local in the main settings.xml file in user.home. So I moved my M2 repo to a location that didn't include spaces and disappeared the problem in a non-hack manner - even if that is a hack, its nowhere near as severe as \"~1\" - ;) - anyway - I suggested to jason that we should add doco that explained same in a prominent location on the M2 site and to the M2 start up guide - and that a marketing pitch similar to \"M2 users on Windows - prepare for M2 forking - migrate your M2 repository to a file system location that doesn't contain spaces\" might be eye catching enough to get people to both notice and execute the suggestion. especially if they find that it breaks if they don't do it - Jason asked me to send him an email which restated the above and I did do that, my marketing pitch may not have been stated as succinctly, but the message included the necessary content.\r\n\r\nThe alternative is to work out why spaces are causing the problem on Windows in plexus.util in the 1st place, or to get commons-exec ready for prime time, and you seemed to think that such was a way off.\r\n\r\nOn a different level, when I went to check in some of my updates I found that I couldn't commit to svn because of an authentication problem. I'm communicating with Jason about that now, I have already sent him an email with my questions and I am awaiting his reply.\r\n\r\nI also expect to start up a Confluence page under the Maven project about Surefire - there doesn't seem to be a separate Confluence entry for Surefire at the codehaus. I'd like to set up a discussion forum that discusses how surefire is supposed to work with the current concerns for web and xmlrpc and how that relates, if it does, to integrating testing frameworks like testng","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=andyglick","name":"andyglick","emailAddress":"andyglick@acm.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Andy Glick","active":true},"created":"2005-10-06T17:33:05.224-0500","updated":"2005-10-06T17:33:05.224-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/27795/comment/62671","id":"62671","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"I think I found the cause, cmd fails in win xp when two arguments have quotes,\r\n\r\nWorks:\r\ncmd /X /C \"C:\\Program Files\\Java\\jdk1.3.1_18\\bin\\javac\" xxx\r\n\r\nDoesn't work:\r\ncmd /X /C \"C:\\Program Files\\Java\\jdk1.3.1_18\\bin\\javac\" \"xxx\"\r\n\r\nwith error:\r\n'C:\\Program' is not recognized as an internal or external command,\r\noperable program or batch file.\r\n\r\nThe solution is not calling cmd under windows, and call the executable directly, but it may break in other systems","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2006-04-03T13:56:35.653-0500","updated":"2006-04-03T13:56:35.653-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/27795/comment/62672","id":"62672","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"btw I didn't see any problem with the classpath entries, they are correctly quoted","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2006-04-03T13:57:45.639-0500","updated":"2006-04-03T13:57:45.639-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/27795/comment/62674","id":"62674","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"The solution is adding quotes at the beggining and the end\r\ncmd /X /C \"\"C:\\Program Files\\Java\\jdk1.3.1_18\\bin\\javac\" \"xxx\"\"","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2006-04-03T14:11:00.352-0500","updated":"2006-04-03T14:11:00.352-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/27795/comment/62699","id":"62699","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"Fixed in plexus-utils 1.2-SNAPSHOT, will check the plugins","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2006-04-03T18:14:48.030-0500","updated":"2006-04-03T18:14:48.030-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/27795/comment/63761","id":"63761","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"body":"Individual arguments shouldn't be quoted","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=carlos","name":"carlos","emailAddress":"codehaus@carlossanchez.eu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=carlos&avatarId=12550","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=carlos&avatarId=12550","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=carlos&avatarId=12550","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=carlos&avatarId=12550"},"displayName":"Carlos Sanchez","active":true},"created":"2006-04-18T19:29:32.352-0500","updated":"2006-04-18T19:29:32.352-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-86.json b/jira/PLXUTILS-86.json
new file mode 100644
index 00000000..017a38f2
--- /dev/null
+++ b/jira/PLXUTILS-86.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"20648","self":"http://jira.codehaus.org/rest/api/latest/issue/20648","key":"PLXUTILS-86","fields":{"progress":{"progress":0,"total":3600,"percent":0},"summary":"InterpolationFilterReader bounds-checking is broken","timetracking":{"originalEstimate":"1h","remainingEstimate":"1h","originalEstimateSeconds":3600,"remainingEstimateSeconds":3600},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-86/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14045","id":"14045","description":"","name":"1.0.1","archived":true,"released":true,"releaseDate":"2005-07-10"}],"resolutiondate":"2005-06-20T10:12:11.562-0500","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=jdcasey","name":"jdcasey","emailAddress":"jdcasey@commonjava.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"John Casey","active":true},"aggregatetimeoriginalestimate":3600,"customfield_10161":["brettporter(brettporter)","jdcasey(jdcasey)","kenneyw(kenneyw)"],"customfield_10160":null,"updated":"2008-07-27T16:57:21.582-0500","created":"2005-02-03T17:36:49.000-0600","description":"The InterpolationFilterReader leaves the end-token of an expression in the resulting data. This is because it doesn't skip() past the end of the end-token when it encounters it.\n\nWill fix when I have time and a high enough level of sado-masochism.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"302054400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-86/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":0,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/14284","id":"14284","filename":"PLX-106-patch.gz","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=kenneyw","name":"kenneyw","emailAddress":"kenney@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=kenneyw&avatarId=12410","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=kenneyw&avatarId=12410","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=kenneyw&avatarId=12410","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=kenneyw&avatarId=12410"},"displayName":"Kenney Westerhof","active":true},"created":"2005-04-15T12:15:08.939-0500","size":1893,"mimeType":"application/gzip","content":"http://jira.codehaus.org/secure/attachment/14284/PLX-106-patch.gz"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":3600,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14044","id":"14044","description":"","name":"1.0","archived":true,"released":true,"releaseDate":"2005-05-27"}],"customfield_10170":null,"environment":"all","timeestimate":3600,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":3600,"percent":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":3,"total":3,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/20648/comment/32068","id":"32068","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=kenneyw","name":"kenneyw","emailAddress":"kenney@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=kenneyw&avatarId=12410","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=kenneyw&avatarId=12410","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=kenneyw&avatarId=12410","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=kenneyw&avatarId=12410"},"displayName":"Kenney Westerhof","active":true},"body":"Fixed this bug and some others.\r\nAdded (REAL!) support for multichar start/end delimiters,\r\nand added 4 unit testcases to demonstrate them.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=kenneyw","name":"kenneyw","emailAddress":"kenney@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=kenneyw&avatarId=12410","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=kenneyw&avatarId=12410","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=kenneyw&avatarId=12410","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=kenneyw&avatarId=12410"},"displayName":"Kenney Westerhof","active":true},"created":"2005-04-15T12:15:08.945-0500","updated":"2005-04-15T12:15:08.945-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/20648/comment/37931","id":"37931","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"body":"John, can you take a look at the patch, see if it is appropriate?\r\nOr was this class meant to be replaced with something else?","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"created":"2005-04-22T02:54:11.386-0500","updated":"2005-04-22T02:54:11.386-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/20648/comment/41710","id":"41710","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"body":"applied Kenney's patch.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"created":"2005-06-20T10:12:11.464-0500","updated":"2005-06-20T10:12:11.464-0500"}]},"timeoriginalestimate":3600,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-87.json b/jira/PLXUTILS-87.json
new file mode 100644
index 00000000..48456fa3
--- /dev/null
+++ b/jira/PLXUTILS-87.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"44703","self":"http://jira.codehaus.org/rest/api/latest/issue/44703","key":"PLXUTILS-87","fields":{"progress":{"progress":0,"total":0},"summary":"SweeperPool does not clean up thread correctly","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10040","value":"yes","id":"10040"},"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-87/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14040","id":"14040","description":"","name":"1.4","archived":false,"released":true,"releaseDate":"2007-01-09"}],"resolutiondate":"2006-12-26T17:47:58.133-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=baerrach","name":"baerrach","emailAddress":"baerrach@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrie Treloar","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["baerrach(baerrach)","brettporter(brettporter)","wsmoak(wsmoak)"],"customfield_10160":null,"updated":"2008-07-27T16:58:59.750-0500","created":"2006-12-11T00:59:01.465-0600","description":"SweeperPool.dispose() does not wait for the thread to complete processing and when run in a junit test suite this causes the forked JVM to hang.\n\nUnit test and patch attached.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"254102400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-87/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/24565","id":"24565","filename":"PLX-310-patch.txt","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=baerrach","name":"baerrach","emailAddress":"baerrach@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Barrie Treloar","active":true},"created":"2006-12-11T00:59:26.654-0600","size":4022,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/24565/PLX-310-patch.txt"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14039","id":"14039","description":"","name":"1.3","archived":false,"released":true,"releaseDate":"2006-09-28"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10053","value":"Yes","id":"10053"},"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/44703/comment/83208","id":"83208","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=wsmoak","name":"wsmoak","emailAddress":"wsmoak@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Wendy Smoak","active":true},"body":"Just ran into this one, SweeperPoolTest hangs, and ctrl-c leaves a java process running with the test output file locked.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=wsmoak","name":"wsmoak","emailAddress":"wsmoak@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Wendy Smoak","active":true},"created":"2006-12-21T22:09:30.815-0600","updated":"2006-12-21T22:09:30.815-0600"},{"self":"http://jira.codehaus.org/rest/api/2/issue/44703/comment/83401","id":"83401","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"body":"applied","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"created":"2006-12-26T17:47:58.109-0600","updated":"2006-12-26T17:47:58.109-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-88.json b/jira/PLXUTILS-88.json
new file mode 100644
index 00000000..fd1639e3
--- /dev/null
+++ b/jira/PLXUTILS-88.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"32327","self":"http://jira.codehaus.org/rest/api/latest/issue/32327","key":"PLXUTILS-88","fields":{"progress":{"progress":0,"total":0},"summary":"Wrong encoding in xml documents","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-88/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14038","id":"14038","description":"","name":"1.2","archived":false,"released":true,"releaseDate":"2006-04-19"}],"resolutiondate":"2006-01-23T17:09:32.164-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=mcetnarski","name":"mcetnarski","emailAddress":"marcin.cetnarski@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Marcin Cetnarski","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["brettporter(brettporter)","gslowikowski(gslowikowski)","mcetnarski(mcetnarski)"],"customfield_10160":null,"updated":"2008-07-27T17:01:50.524-0500","created":"2006-01-14T12:44:38.971-0600","description":"In class Xpp3DomWriter following method is missing\n\n public static void write( PrintWriter writer, Xpp3Dom dom )\n {\n write( new PrettyPrintXMLWriter( writer ), dom );\n }\n\nNow, when we pass an instance of PrintWriter it is casted to Writer interface and after that wrong contructor in PrettyPrintXMLWriter class is used. This problem appears in generation of maven surefire test results contain non ascii letters.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"283132800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-88/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14037","id":"14037","description":"","name":"1.1","archived":true,"released":true,"releaseDate":"2006-01-11"}],"customfield_10170":null,"environment":"All","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/32327/comment/56912","id":"56912","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=gslowikowski","name":"gslowikowski","emailAddress":"gslowikowski@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Grzegorz Slowikowski","active":true},"body":"This change made by Brett [ plexus commit no 3016] is not necessary. Some changes \"here and there\", which means some new versions of reporting plugins fixed this error. We tried to find out, what exactly did the fix, but we had no luck.\r\nSo this commit can be reverted. Everything works without this change.\r\n","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=gslowikowski","name":"gslowikowski","emailAddress":"gslowikowski@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Grzegorz Slowikowski","active":true},"created":"2006-01-25T09:48:12.901-0600","updated":"2006-01-25T09:48:12.901-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-89.json b/jira/PLXUTILS-89.json
new file mode 100644
index 00000000..2ee1454d
--- /dev/null
+++ b/jira/PLXUTILS-89.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"41088","self":"http://jira.codehaus.org/rest/api/latest/issue/41088","key":"PLXUTILS-89","fields":{"progress":{"progress":0,"total":0},"summary":"FileUtils.copyDirectoryStructure truncates all files when source==target","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-89/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14039","id":"14039","description":"","name":"1.3","archived":false,"released":true,"releaseDate":"2006-09-28"}],"resolutiondate":"2006-08-31T14:31:27.932-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=kenneyw","name":"kenneyw","emailAddress":"kenney@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&ownerId=kenneyw&avatarId=12410","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&ownerId=kenneyw&avatarId=12410","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&ownerId=kenneyw&avatarId=12410","48x48":"http://jira.codehaus.org/secure/useravatar?ownerId=kenneyw&avatarId=12410"},"displayName":"Kenney Westerhof","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["evenisse(evenisse)","kenneyw(kenneyw)"],"customfield_10160":null,"updated":"2008-07-27T17:03:22.571-0500","created":"2006-08-31T10:02:02.543-0500","description":"plexus-utils 1.2","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"264211200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-89/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14038","id":"14038","description":"","name":"1.2","archived":false,"released":true,"releaseDate":"2006-04-19"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":2,"total":2,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/41088/comment/73831","id":"73831","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"body":"Fixed in plexus-utils 1.3","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"created":"2006-08-31T14:31:27.873-0500","updated":"2006-08-31T14:31:27.873-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/41088/comment/73832","id":"73832","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"body":"Now, we throws an IOException when source == target","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=evenisse","name":"evenisse","emailAddress":"emmanuel.venisse@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Emmanuel Venisse","active":true},"created":"2006-08-31T14:31:55.834-0500","updated":"2006-08-31T14:31:55.834-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-9.json b/jira/PLXUTILS-9.json
new file mode 100644
index 00000000..15c7687a
--- /dev/null
+++ b/jira/PLXUTILS-9.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"36231","self":"http://jira.codehaus.org/rest/api/latest/issue/36231","key":"PLXUTILS-9","fields":{"progress":{"progress":0,"total":0},"summary":"PlexusUtils.getSystemEnvVars doesn't clean up resources","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-9/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/5","id":"5","description":"All attempts at reproducing this issue failed, or not enough information was available to reproduce the issue. Reading the code produces no clues as to why this behavior would occur. If more information appears later, please reopen the issue.","name":"Cannot Reproduce"},"fixVersions":[],"resolutiondate":"2006-04-21T11:47:21.192-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["lacostej(lacostej)"],"customfield_10160":null,"updated":"2007-01-13T01:01:53.452-0600","created":"2006-04-21T11:06:00.641-0500","description":"Using the embedder I am hitting the following issue;\n\njava 7399 jerome 7u sock 0,4 25306792 can't identify protocol\njava 7399 jerome 8u IPv6 25306796 TCP *:8181 (LISTEN)\njava 7399 jerome 9r REG 3,66 90 34656 /home/jerome/.mailcap\njava 7399 jerome 10w FIFO 0,5 25416706 pipe\njava 7399 jerome 11w FIFO 0,5 25436577 pipe\njava 7399 jerome 12w FIFO 0,5 25320121 pipe\njava 7399 jerome 13r FIFO 0,5 25320122 pipe\njava 7399 jerome 14w FIFO 0,5 25328530 pipe\njava 7399 jerome 15r FIFO 0,5 25320123 pipe\njava 7399 jerome 16w FIFO 0,5 25315686 pipe\njava 7399 jerome 17r FIFO 0,5 25315687 pipe\njava 7399 jerome 18w FIFO 0,5 25320126 pipe\njava 7399 jerome 19r FIFO 0,5 25315688 pipe\njava 7399 jerome 20r FIFO 0,5 25320127 pipe\njava 7399 jerome 21r FIFO 0,5 25328531 pipe\njava 7399 jerome 22r FIFO 0,5 25320128 pipe\n\n[...]\n\njava 7399 jerome 1007r FIFO 0,5 26391458 pipe\njava 7399 jerome 1008r FIFO 0,5 26416550 pipe\njava 7399 jerome 1009w FIFO 0,5 26421728 pipe\njava 7399 jerome 1010r FIFO 0,5 26416551 pipe\njava 7399 jerome 1011r FIFO 0,5 26421729 pipe\njava 7399 jerome 1012w FIFO 0,5 26421776 pipe\njava 7399 jerome 1013r FIFO 0,5 26421730 pipe\njava 7399 jerome 1014r FIFO 0,5 26421777 pipe\njava 7399 jerome 1015w FIFO 0,5 26425995 pipe\njava 7399 jerome 1016r FIFO 0,5 26421778 pipe\njava 7399 jerome 1017r FIFO 0,5 26425996 pipe\njava 7399 jerome 1019r FIFO 0,5 26425997 pipe\njava 7399 jerome 1020r FIFO 0,5 26434244 pipe\n\n\nException in thread \"Thread-1796\" java.io.IOException: java.io.IOException: Too many open files\n at java.lang.UNIXProcess.(UNIXProcess.java:148)\n at java.lang.ProcessImpl.start(ProcessImpl.java:65)\n at java.lang.ProcessBuilder.start(ProcessBuilder.java:451)\n at java.lang.Runtime.exec(Runtime.java:591)\n at java.lang.Runtime.exec(Runtime.java:429)\n at java.lang.Runtime.exec(Runtime.java:326)\n at org.codehaus.plexus.util.cli.CommandLineUtils.getSystemEnvVars(CommandLineUtils.java:177)\n at org.apache.maven.project.interpolation.RegexBasedModelInterpolator.(RegexBasedModelInterpolator.java:60)\n at sun.reflect.GeneratedConstructorAccessor56.newInstance(Unknown Source)\n at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)\n at java.lang.reflect.Constructor.newInstance(Constructor.java:494)\n at java.lang.Class.newInstance0(Class.java:350)\n at java.lang.Class.newInstance(Class.java:303)\n at org.codehaus.plexus.component.factory.java.JavaComponentFactory.newInstance(JavaComponentFactory.java:44)\n at org.codehaus.plexus.DefaultPlexusContainer.createComponentInstance(DefaultPlexusContainer.java:1464)\n at org.codehaus.plexus.component.manager.AbstractComponentManager.createComponentInstance(AbstractComponentManager.java:93)\n at org.codehaus.plexus.component.manager.ClassicSingletonComponentManager.getComponent(ClassicSingletonComponentManager.java:92)\n at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:331)\n at org.codehaus.plexus.component.composition.FieldComponentComposer.assignRequirementToField(FieldComponentComposer.java:129)\n at org.codehaus.plexus.component.composition.FieldComponentComposer.assembleComponent(FieldComponentComposer.java:73)\n at org.codehaus.plexus.component.composition.DefaultComponentComposerManager.assembleComponent(DefaultComponentComposerManager.java:68)\n at org.codehaus.plexus.DefaultPlexusContainer.composeComponent(DefaultPlexusContainer.java:1486)\n at org.codehaus.plexus.personality.plexus.lifecycle.phase.CompositionPhase.execute(CompositionPhase.java:29)\n at org.codehaus.plexus.lifecycle.AbstractLifecycleHandler.start(AbstractLifecycleHandler.java:101)\n at org.codehaus.plexus.component.manager.AbstractComponentManager.startComponentLifecycle(AbstractComponentManager.java:105) at org.codehaus.plexus.component.manager.AbstractComponentManager.createComponentInstance(AbstractComponentManager.java:95)\n at org.codehaus.plexus.component.manager.ClassicSingletonComponentManager.getComponent(ClassicSingletonComponentManager.java:92)\n at org.codehaus.plexus.DefaultPlexusContainer.lookup(DefaultPlexusContainer.java:331)\n at org.codehaus.plexus.embed.Embedder.lookup(Embedder.java:78)\n at org.apache.maven.embedder.MavenEmbedder.start(MavenEmbedder.java:610)\n[...]\n\n\nThe aforementionned method doesn't clean up the Process resources. Blocker as it makes it impossible to reuse the embedder.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[],"customfield_10163":"275616000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-9/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":null,"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/36231/comment/63947","id":"63947","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"body":"I wasn't able to reproduce it yet. I've used the following code snippet from kenney\r\n\r\nimport java.io.*;\r\n\r\npublic class TestIt\r\n{\r\n public static void main(String argv[])\r\n throws java.io.IOException, InterruptedException\r\n {\r\n for ( int i = 0; ; i++)\r\n {\r\n if ( i % 10 == 0 )\r\n System.out.println( i );\r\n// Thread.sleep(50);\r\n/* new Thread(new Runnable() {\r\n public void run() {\r\n try {\r\n*/\r\n test();\r\n/* } catch (Exception e) {\r\n e.printStackTrace();\r\n }\r\n }\r\n }).start();\r\n*/\r\n }\r\n }\r\n\r\n private static void test()\r\n throws java.io.IOException\r\n {\r\n Process p = Runtime.getRuntime().exec(\"env | cat\");\r\n BufferedReader br = new BufferedReader( new InputStreamReader( p.getInputStream() ) );\r\n while (br.readLine() != null ) {}\r\n\r\n }\r\n}\r\n\r\n\r\nIt ran up to 40k without issues. I tried adding threads but that didn't trigger it. I monitored the number of open descriptors and it went between 1 and 650. My limit is 1024.\r\n\r\nDoing:\r\n\r\nulimit -n 500 && java TestIt reproduced the issue easily but that's kind of cheating :)\r\n\r\n\r\nMaybe another part of the system generates these pipes and they are uncovered by this call? I will close the issue until I find the real culprit...\r\n\r\nFor reference: http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4784692","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=lacostej","name":"lacostej","emailAddress":"jerome.lacoste@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Jerome Lacoste","active":true},"created":"2006-04-21T11:46:53.227-0500","updated":"2006-04-21T11:46:53.227-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-90.json b/jira/PLXUTILS-90.json
new file mode 100644
index 00000000..c13bdea7
--- /dev/null
+++ b/jira/PLXUTILS-90.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"20340","self":"http://jira.codehaus.org/rest/api/latest/issue/20340","key":"PLXUTILS-90","fields":{"progress":{"progress":0,"total":0},"summary":"release 1.0-alpha-1","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/3","id":"3","description":"A task that needs to be done.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/task.png","name":"Task","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-90/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[],"resolutiondate":"2005-01-18T07:07:43.000-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["brettporter(brettporter)","trygvis(trygvis)"],"customfield_10160":null,"updated":"2008-07-20T13:05:07.590-0500","created":"2005-01-14T06:44:06.000-0600","description":"Release (in this order):\n plexus-utils 1.0-alpha-1\n plexus-containers (POM) 1.0-alpha-1\n * current POM is 1.0, but depends on utils a1 SNAP\n plexus-container-default 1.0-alpha-1\n * current POM is 1.0-alpha-2-SNAPSHOT, revert back to that\n afterwards\n\nRequired for each:\n- update POM version, commit\n- tag\n- checkout clean\n- build jar\n- publish jar (with md5, asc) and pom\n- push to dist.codehaus.org\n\nDon't need to do this time around:\n- release JIRA version. it currently covers -all- of plexus, so we need to setup a proper release strategy and separation for alpha-2.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/1","iconUrl":"http://jira.codehaus.org/images/icons/priorities/blocker.png","name":"Blocker","id":"1"},"duedate":null,"issuelinks":[],"customfield_10163":"315273600","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-90/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=trygvis","name":"trygvis","emailAddress":"trygvis@inamo.no","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Trygve Laugstøl","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/20340/comment/29034","id":"29034","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"body":"confirmed - closed.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=brettporter","name":"brettporter","emailAddress":"brett@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Brett Porter","active":true},"created":"2005-01-18T07:50:25.000-0600","updated":"2005-01-18T07:50:25.000-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-91.json b/jira/PLXUTILS-91.json
new file mode 100644
index 00000000..a7764c8e
--- /dev/null
+++ b/jira/PLXUTILS-91.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"73599","self":"http://jira.codehaus.org/rest/api/latest/issue/73599","key":"PLXUTILS-91","fields":{"progress":{"progress":0,"total":0},"summary":"add a copyDirectoryLayout which support excludes and includes","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-91/votes","votes":1,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[],"resolutiondate":"2014-11-25T15:38:07.423-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["bentmann(bentmann)","michael-o(michael-o)","olamy(olamy)"],"customfield_10160":null,"updated":"2014-11-25T15:38:07.458-0600","created":"2008-09-15T14:56:26.265-0500","description":null,"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"20507","self":"http://jira.codehaus.org/rest/api/2/issueLink/20507","type":{"id":"10010","name":"Related","inward":"is related to","outward":"relates to","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10010"},"inwardIssue":{"id":"32432","key":"PLXUTILS-26","self":"http://jira.codehaus.org/rest/api/2/issue/32432","fields":{"summary":"Allow to deep copy directories with includes/excludes","status":{"self":"http://jira.codehaus.org/rest/api/2/status/1","description":"The issue is open and ready for the assignee to start work on it.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/open.png","name":"Open","id":"1"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/4","iconUrl":"http://jira.codehaus.org/images/icons/priorities/minor.png","name":"Minor","id":"4"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}},{"id":"20503","self":"http://jira.codehaus.org/rest/api/2/issueLink/20503","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"73538","key":"MSHARED-68","self":"http://jira.codehaus.org/rest/api/2/issue/73538","fields":{"summary":"Parameter to copy empty directory.","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"4320000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-91/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":4,"total":4,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/73599/comment/148028","id":"148028","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"fixed in rev 7723.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2008-09-15T16:59:29.165-0500","updated":"2008-09-15T16:59:29.165-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/73599/comment/148070","id":"148070","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"body":"PLXUTILS-26 is about the same feature, its patch might serve as another inspiration.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=bentmann","name":"bentmann","emailAddress":"benjamin.bentmann@udo.edu","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Benjamin Bentmann","active":true},"created":"2008-09-16T03:44:01.363-0500","updated":"2008-09-16T03:44:01.363-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/73599/comment/148072","id":"148072","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"body":"need more jobs :-)\r\nlook at InvokerMojo copyDirectoryStructure.\r\nFor my use case (in the resources plugin I need only the structure not the content files), I need a new parameter (something like includeFiles)","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=olamy","name":"olamy","emailAddress":"olamy@apache.org","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Olivier Lamy","active":true},"created":"2008-09-16T05:14:46.416-0500","updated":"2008-09-16T05:19:54.849-0500"},{"self":"http://jira.codehaus.org/rest/api/2/issue/73599/comment/357826","id":"357826","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"body":"Please refer to https://cwiki.apache.org/confluence/display/MAVEN/The+Great+JIRA+Cleanup+of+2014 if you're wondering why this issue was closed out.\r\n\r\nAssignee, if you think you can fix this bug anytime soon, please reopen and proceed appropriately.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=michael-o","name":"michael-o","emailAddress":"1983-01-06@gmx.net","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Michael Osipov","active":true},"created":"2014-11-25T15:38:07.451-0600","updated":"2014-11-25T15:38:07.451-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-92.json b/jira/PLXUTILS-92.json
new file mode 100644
index 00000000..2105539a
--- /dev/null
+++ b/jira/PLXUTILS-92.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"74186","self":"http://jira.codehaus.org/rest/api/latest/issue/74186","key":"PLXUTILS-92","fields":{"progress":{"progress":0,"total":0},"summary":"Ability to change the line separator in PrettyPrintXMLWriter","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-92/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2008-09-26T06:07:15.076-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2008-09-26T06:07:15.072-0500","created":"2008-09-26T06:04:04.153-0500","description":"Actually, PrettyPrintXMLWriter uses the System property \"line.separator\" to write EOL. It should be a good addon if we could specify another one.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"198892800","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-92/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/74186/comment/149066","id":"149066","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"fixed in r7755","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-09-26T06:07:15.069-0500","updated":"2008-09-26T06:07:15.069-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-93.json b/jira/PLXUTILS-93.json
new file mode 100644
index 00000000..83de36e6
--- /dev/null
+++ b/jira/PLXUTILS-93.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"74293","self":"http://jira.codehaus.org/rest/api/latest/issue/74293","key":"PLXUTILS-93","fields":{"progress":{"progress":0,"total":0},"summary":"Plexus-util's FileUtil does not delete the temp files","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-93/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/2","id":"2","description":"The problem described is an issue which will never be fixed.","name":"Won't Fix"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2008-12-27T07:20:58.991-0600","customfield_10210":"1.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=paranoiabla","name":"paranoiabla","emailAddress":"paranoiabla@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Petar Tahchiev","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["paranoiabla(paranoiabla)","siveton(siveton)"],"customfield_10160":null,"updated":"2008-12-27T07:20:58.983-0600","created":"2008-09-29T10:00:28.693-0500","description":"There is an issue regarding the Maven-assembly plugin that the plugin creates a log of temp files in the user home directory without deleting them ever (MASSEMBLY-259). The Maven-assembly-plugin uses Plexus's file-utils class to create the temp directory. I have created a patch that simply tells that the created temp file should be deleted onexit.\n\n ","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"20700","self":"http://jira.codehaus.org/rest/api/2/issueLink/20700","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"61112","key":"MASSEMBLY-259","self":"http://jira.codehaus.org/rest/api/2/issue/61112","fields":{"summary":"Delete archived-file-set folders in home","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/4","id":"4","description":"An improvement or enhancement to an existing feature or task.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/improvement.png","name":"Improvement","subtask":false}}}}],"customfield_10163":"190944000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-93/watchers","watchCount":1,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[{"self":"http://jira.codehaus.org/rest/api/2/attachment/37261","id":"37261","filename":"plexus-utils.txt","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=paranoiabla","name":"paranoiabla","emailAddress":"paranoiabla@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Petar Tahchiev","active":true},"created":"2008-09-29T10:00:28.700-0500","size":513,"mimeType":"text/plain","content":"http://jira.codehaus.org/secure/attachment/37261/plexus-utils.txt"}],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"customfield_10170":[{"self":"http://jira.codehaus.org/rest/api/2/customFieldOption/10070","value":"Yes","id":"10070"}],"environment":"all","timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/74293/comment/159272","id":"159272","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"createTempFile() is a part of temp file facility, so the assembly-plugin needs to call deleteOnExit(). \r\nI updated the javadoc.","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-12-27T07:20:58.968-0600","updated":"2008-12-27T07:20:58.968-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-94.json b/jira/PLXUTILS-94.json
new file mode 100644
index 00000000..54bee20b
--- /dev/null
+++ b/jira/PLXUTILS-94.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"75432","self":"http://jira.codehaus.org/rest/api/latest/issue/75432","key":"PLXUTILS-94","fields":{"progress":{"progress":0,"total":0},"summary":"XML Pull parser doesn't handle XmlPullParser.PROCESSING_INSTRUCTION event","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-94/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2008-10-22T07:48:51.694-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2008-10-22T07:48:51.690-0500","created":"2008-10-22T07:43:57.504-0500","description":"Using the following xml\n\n{code:xml} \n\n\n atext\n\n{code} \n\nand the following Java code\n\n{code:borderStyle=solid}\n XmlPullParser parser = new MXParser();\n parser.setInput( reader );\n\n int eventType = parser.getEventType();\n while ( eventType != XmlPullParser.END_DOCUMENT )\n {\n if ( eventType == XmlPullParser.PROCESSING_INSTRUCTION )\n {\n System.err.println( \"process instruction:\" + parser.getText() );\n }\n\n eventType = parser.nextToken();\n }\n{code} \n\nThe XmlPullParser.PROCESSING_INSTRUCTION is never call.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"196646400","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-94/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/75432/comment/151567","id":"151567","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"Fixed in [r7796|http://fisheye.codehaus.org/changelog/plexus/?cs=7796], snapshot deployed","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-10-22T07:48:51.685-0500","updated":"2008-10-22T07:48:51.685-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-95.json b/jira/PLXUTILS-95.json
new file mode 100644
index 00000000..edef18ad
--- /dev/null
+++ b/jira/PLXUTILS-95.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"75862","self":"http://jira.codehaus.org/rest/api/latest/issue/75862","key":"PLXUTILS-95","fields":{"progress":{"progress":0,"total":0},"summary":"Add StringUtils#removeDuplicateWhitespace()","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-95/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2008-10-29T17:35:56.708-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2008-10-29T17:35:56.704-0500","created":"2008-10-29T17:34:22.379-0500","description":"Add a new method which removes duplicate whitespace, i.e.:\n\n{noformat}\nthis is test \n{noformat}\n\nshould become\n{noformat}\nthis is test \n{noformat}\n","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"195955200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-95/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/75862/comment/152361","id":"152361","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"fixed in [r7801|http://fisheye.codehaus.org/changelog/plexus/?cs=7801]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-10-29T17:35:56.701-0500","updated":"2008-10-29T17:35:56.701-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-96.json b/jira/PLXUTILS-96.json
new file mode 100644
index 00000000..1aaf5aac
--- /dev/null
+++ b/jira/PLXUTILS-96.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"75864","self":"http://jira.codehaus.org/rest/api/latest/issue/75864","key":"PLXUTILS-96","fields":{"progress":{"progress":0,"total":0},"summary":"Add an XmlUtil class","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-96/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2008-10-29T17:38:39.999-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2008-10-29T17:38:39.995-0500","created":"2008-10-29T17:38:08.881-0500","description":"WIth an isXml(File) method which checks if a file is an xml one or note","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"195955200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-96/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/75864/comment/152362","id":"152362","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"fixed in [r7800|http://fisheye.codehaus.org/changelog/plexus/?cs=7800]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-10-29T17:38:39.992-0500","updated":"2008-10-29T17:38:39.992-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-97.json b/jira/PLXUTILS-97.json
new file mode 100644
index 00000000..1d7059bb
--- /dev/null
+++ b/jira/PLXUTILS-97.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"75865","self":"http://jira.codehaus.org/rest/api/latest/issue/75865","key":"PLXUTILS-97","fields":{"progress":{"progress":0,"total":0},"summary":"Add new prettyFormat( Reader reader, Writer writer ) in XmlUtil","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/2","id":"2","description":"A new feature of the product, which has yet to be developed.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/newfeature.png","name":"New Feature","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-97/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2008-10-29T18:19:13.005-0500","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2008-10-29T18:19:36.884-0500","created":"2008-10-29T18:17:42.163-0500","description":"Add a new method which pretty format an xml input.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"195955200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-97/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/75865/comment/152369","id":"152369","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"fixed in [r7802|http://fisheye.codehaus.org/changelog/plexus/?cs=7802]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-10-29T18:19:12.993-0500","updated":"2008-10-29T18:19:12.993-0500"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-98.json b/jira/PLXUTILS-98.json
new file mode 100644
index 00000000..551f0ae0
--- /dev/null
+++ b/jira/PLXUTILS-98.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"79056","self":"http://jira.codehaus.org/rest/api/latest/issue/79056","key":"PLXUTILS-98","fields":{"progress":{"progress":0,"total":0},"summary":"EOL is not handled consistently in PrettyPrintXMLWriter","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-98/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2009-01-03T06:43:14.247-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=hboutemy","name":"hboutemy","emailAddress":"herve.boutemy@free.fr","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10218","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10218","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10218","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10218"},"displayName":"Herve Boutemy","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["hboutemy(hboutemy)","siveton(siveton)"],"customfield_10160":null,"updated":"2009-01-03T06:43:14.237-0600","created":"2008-12-26T08:04:42.941-0600","description":"PrettyPrintXMLWriter uses System EOL [1] for generated XML content.\nWe need to be sure that writeText( text ) uses the same EOL inside text written in XML.\n\n[1] http://plexus.codehaus.org/plexus-utils/xref/org/codehaus/plexus/util/xml/PrettyPrintXMLWriter.html#34","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[{"id":"21650","self":"http://jira.codehaus.org/rest/api/2/issueLink/21650","type":{"id":"10001","name":"dependent","inward":"is depended upon by","outward":"depends upon","self":"http://jira.codehaus.org/rest/api/2/issueLinkType/10001"},"inwardIssue":{"id":"78432","key":"MODELLO-142","self":"http://jira.codehaus.org/rest/api/2/issue/78432","fields":{"summary":"EOL is not handled correctly in the XMLWriter","status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false}}}}],"customfield_10163":"190339200","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-98/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14438","id":"14438","description":"","name":"1.5.6","archived":false,"released":true,"releaseDate":"2008-08-01"}],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/79056/comment/159794","id":"159794","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"Fixed in [r7998|http://fisheye.codehaus.org/changelog/plexus/?cs=7998]","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2009-01-03T06:43:14.234-0600","updated":"2009-01-03T06:43:14.234-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/jira/PLXUTILS-99.json b/jira/PLXUTILS-99.json
new file mode 100644
index 00000000..393ae43c
--- /dev/null
+++ b/jira/PLXUTILS-99.json
@@ -0,0 +1 @@
+{"expand":"renderedFields,names,schema,transitions,operations,editmeta,changelog","id":"79082","self":"http://jira.codehaus.org/rest/api/latest/issue/79082","key":"PLXUTILS-99","fields":{"progress":{"progress":0,"total":0},"summary":"FileUtils#createTempFile() could generate same File twice","timetracking":{},"issuetype":{"self":"http://jira.codehaus.org/rest/api/2/issuetype/1","id":"1","description":"A problem which impairs or prevents the functions of the product.","iconUrl":"http://jira.codehaus.org/images/icons/issuetypes/bug.png","name":"Bug","subtask":false},"customfield_10110":null,"votes":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-99/votes","votes":0,"hasVoted":false},"resolution":{"self":"http://jira.codehaus.org/rest/api/2/resolution/1","id":"1","description":"A fix for this issue is checked into the tree and tested.","name":"Fixed"},"fixVersions":[{"self":"http://jira.codehaus.org/rest/api/2/version/14496","id":"14496","description":"","name":"1.5.7","archived":false,"released":true,"releaseDate":"2009-01-16"}],"resolutiondate":"2008-12-27T07:58:49.094-0600","customfield_10210":"0.0","timespent":null,"reporter":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"aggregatetimeoriginalestimate":null,"customfield_10161":["siveton(siveton)"],"customfield_10160":null,"updated":"2008-12-27T07:58:49.090-0600","created":"2008-12-27T07:56:44.884-0600","description":"FileUtils#createTempFile() uses a Random based on the actual system time to generate the file. This method could generate same file twice.","priority":{"self":"http://jira.codehaus.org/rest/api/2/priority/3","iconUrl":"http://jira.codehaus.org/images/icons/priorities/major.png","name":"Major","id":"3"},"duedate":null,"issuelinks":[],"customfield_10163":"190944000","watches":{"self":"http://jira.codehaus.org/rest/api/2/issue/PLXUTILS-99/watchers","watchCount":0,"isWatching":false},"worklog":{"startAt":0,"maxResults":20,"total":0,"worklogs":[]},"subtasks":[],"status":{"self":"http://jira.codehaus.org/rest/api/2/status/6","description":"The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.","iconUrl":"http://jira.codehaus.org/images/icons/statuses/closed.png","name":"Closed","id":"6"},"customfield_10090":null,"labels":[],"workratio":-1,"assignee":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"attachment":[],"customfield_10221":null,"customfield_10220":null,"customfield_10200":null,"aggregatetimeestimate":null,"customfield_10190":null,"project":{"self":"http://jira.codehaus.org/rest/api/2/project/11432","id":"11432","key":"PLXUTILS","name":"Plexus Utils","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/projectavatar?size=xsmall&pid=11432&avatarId=10011","24x24":"http://jira.codehaus.org/secure/projectavatar?size=small&pid=11432&avatarId=10011","32x32":"http://jira.codehaus.org/secure/projectavatar?size=medium&pid=11432&avatarId=10011","48x48":"http://jira.codehaus.org/secure/projectavatar?pid=11432&avatarId=10011"},"projectCategory":{"self":"http://jira.codehaus.org/rest/api/2/projectCategory/10003","id":"10003","description":"various containers","name":"containers"}},"versions":[],"customfield_10170":null,"environment":null,"timeestimate":null,"customfield_10130":null,"aggregateprogress":{"progress":0,"total":0},"lastViewed":null,"components":[],"comment":{"startAt":0,"maxResults":1,"total":1,"comments":[{"self":"http://jira.codehaus.org/rest/api/2/issue/79082/comment/159273","id":"159273","author":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"body":"Fixed in r7972","updateAuthor":{"self":"http://jira.codehaus.org/rest/api/2/user?username=siveton","name":"siveton","emailAddress":"vincent.siveton@gmail.com","avatarUrls":{"16x16":"http://jira.codehaus.org/secure/useravatar?size=xsmall&avatarId=10232","24x24":"http://jira.codehaus.org/secure/useravatar?size=small&avatarId=10232","32x32":"http://jira.codehaus.org/secure/useravatar?size=medium&avatarId=10232","48x48":"http://jira.codehaus.org/secure/useravatar?avatarId=10232"},"displayName":"Vincent Siveton","active":true},"created":"2008-12-27T07:58:49.087-0600","updated":"2008-12-27T07:58:49.087-0600"}]},"timeoriginalestimate":null,"aggregatetimespent":null}}
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index d9206e26..164b7b15 100644
--- a/pom.xml
+++ b/pom.xml
@@ -22,32 +22,62 @@ limitations under the License.
org.codehaus.plexusplexus
- 2.0.2
- ../pom/pom.xml
+ 8plexus-utils
- 1.5.8-SNAPSHOT
+ 3.4.1Plexus Common Utilities
- A collection of various utility classes to ease working with strings, files, command lines, XML and more.
- http://plexus.codehaus.org/plexus-utils
+ A collection of various utility classes to ease working with strings, files, command lines, XML and
+ more.
+
- scm:svn:http://svn.codehaus.org/plexus/plexus-utils/trunk/
- scm:svn:https://svn.codehaus.org/plexus/plexus-utils/trunk
- http://fisheye.codehaus.org/browse/plexus/plexus-utils/trunk/
+ scm:git:git@github.com:codehaus-plexus/plexus-utils.git
+ scm:git:git@github.com:codehaus-plexus/plexus-utils.git
+ http://github.com/codehaus-plexus/plexus-utils
+ plexus-utils-3.4.1
- JIRA
- http://jira.codehaus.org/browse/PLXUTILS
+ github
+ http://github.com/codehaus-plexus/plexus-utils/issues
+
+
+ github:gh-pages
+ ${project.scm.developerConnection}
+
+
+
+
+ 2021-08-27T00:06:38Z
+
- org.codehaus.plexus
- plexus-interpolation
- 1.3
+ org.apache.maven.shared
+ maven-plugin-testing-harness
+ 1.1
+ test
+
+
+ org.openjdk.jmh
+ jmh-core
+ 1.33
+ test
+
+
+ org.openjdk.jmh
+ jmh-generator-annprocess
+ 1.33
+ test
+
+
+ junit
+ junit
+ 4.13.2
+ test
@@ -56,25 +86,47 @@ limitations under the License.
org.apache.maven.plugins
- maven-shade-plugin
- 1.0.1
-
-
- org.apache.maven.plugins
- maven-release-plugin
- 2.0-beta-7
+ maven-resources-plugin
+
+ 2.7
- org.apache.maven.pluginsmaven-compiler-plugin
+
+
+ default-compile
+
+ compile
+
+
+ 1.8
+ 1.8
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-scm-publish-plugin
-
- 1.3
- 1.3
+ ${project.reporting.outputDirectory}
+
+
+ scm-publish
+ site-deploy
+
+ publish-scm
+
+
+ org.apache.maven.plugins
@@ -99,37 +151,13 @@ limitations under the License.
- org.apache.maven.plugins
- maven-shade-plugin
-
-
- shade
-
- shade
-
-
-
-
- org.codehaus.plexus:plexus-interpolation
-
-
-
-
- org.codehaus.plexus.interpolation
-
-
- true
-
-
-
-
-
- org.apache.maven.plugins
- maven-release-plugin
+ maven-jar-plugin
- true
- https://svn.codehaus.org/plexus/plexus-utils/tags/
- -Prelease
+
+
+ true
+
+
@@ -137,30 +165,84 @@ limitations under the License.
- release
+ jdk9+
+
+ [9,)
+
+
+
+
+
+ maven-compiler-plugin
+
+
+ compile-java-9
+
+ compile
+
+
+ 9
+
+ ${project.basedir}/src/main/java9
+
+ true
+
+
+
+
+
+
+
+
+
+ jdk10+
+
+ [10,)
+
+
+
+
+
+ maven-compiler-plugin
+
+
+ compile-java-10
+
+ compile
+
+
+ 10
+
+ ${project.basedir}/src/main/java10
+
+ true
+
+
+
+
+
+
+
+
+
+ plexus-release
- org.apache.maven.plugins
- maven-source-plugin
-
-
- attach-sources
-
- jar
-
-
-
-
-
- org.apache.maven.plugins
- maven-javadoc-plugin
+ maven-enforcer-plugin
- attach-javadocs
+ enforce-java
- jar
+ enforce
+
+
+
+ 11
+
+
+
@@ -168,20 +250,4 @@ limitations under the License.
-
-
-
-
- maven-javadoc-plugin
-
-
- http://java.sun.com/j2se/1.4.2/docs/api/
-
-
-
-
- maven-jxr-plugin
-
-
-
diff --git a/src/main/java/org/codehaus/plexus/util/AbstractScanner.java b/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
index 154ce196..af3fbc4a 100644
--- a/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
+++ b/src/main/java/org/codehaus/plexus/util/AbstractScanner.java
@@ -16,262 +16,220 @@
* limitations under the License.
*/
-
import java.io.File;
+import java.util.ArrayList;
+import java.util.Comparator;
+import java.util.List;
-public abstract class AbstractScanner
- implements Scanner
+/**
+ * Scan a directory tree for files, with specified inclusions and exclusions.
+ */
+public abstract class AbstractScanner
+ implements Scanner
{
/**
* Patterns which should be excluded by default, like SCM files
*
*
* @see #addDefaultExcludes()
*/
public static final String[] DEFAULTEXCLUDES = {
// Miscellaneous typical temporary files
- "**/*~",
- "**/#*#",
- "**/.#*",
- "**/%*%",
- "**/._*",
-
+ "**/*~", "**/#*#", "**/.#*", "**/%*%", "**/._*",
+
// CVS
- "**/CVS",
- "**/CVS/**",
- "**/.cvsignore",
-
+ "**/CVS", "**/CVS/**", "**/.cvsignore",
+
// RCS
- "**/RCS",
- "**/RCS/**",
-
+ "**/RCS", "**/RCS/**",
+
// SCCS
- "**/SCCS",
- "**/SCCS/**",
-
+ "**/SCCS", "**/SCCS/**",
+
// Visual SourceSafe
"**/vssver.scc",
-
+
+ // MKS
+ "**/project.pj",
+
// Subversion
- "**/.svn",
- "**/.svn/**",
-
+ "**/.svn", "**/.svn/**",
+
// Arch
- "**/.arch-ids",
- "**/.arch-ids/**",
-
- //Bazaar
- "**/.bzr",
- "**/.bzr/**",
-
- //SurroundSCM
+ "**/.arch-ids", "**/.arch-ids/**",
+
+ // Bazaar
+ "**/.bzr", "**/.bzr/**",
+
+ // SurroundSCM
"**/.MySCMServerInfo",
-
+
// Mac
"**/.DS_Store",
-
+
// Serena Dimensions Version 10
- "**/.metadata",
- "**/.metadata/**",
-
+ "**/.metadata", "**/.metadata/**",
+
// Mercurial
- "**/.hg",
- "**/.hg/**",
-
+ "**/.hg", "**/.hgignore", "**/.hg/**",
+
// git
- "**/.git",
- "**/.git/**",
-
+ "**/.git", "**/.gitignore", "**/.gitattributes", "**/.git/**",
+
// BitKeeper
- "**/BitKeeper",
- "**/BitKeeper/**",
- "**/ChangeSet",
- "**/ChangeSet/**",
-
+ "**/BitKeeper", "**/BitKeeper/**", "**/ChangeSet", "**/ChangeSet/**",
+
// darcs
- "**/_darcs",
- "**/_darcs/**",
- "**/.darcsrepo",
- "**/.darcsrepo/**",
- "**/-darcs-backup*",
- "**/.darcs-temp-mail"
- };
-
- /** The patterns for the files to be included. */
+ "**/_darcs", "**/_darcs/**", "**/.darcsrepo", "**/.darcsrepo/**", "**/-darcs-backup*", "**/.darcs-temp-mail" };
+
+ /**
+ * The patterns for the files to be included.
+ */
protected String[] includes;
-
- /** The patterns for the files to be excluded. */
+
+ private MatchPatterns includesPatterns;
+
+ /**
+ * The patterns for the files to be excluded.
+ */
protected String[] excludes;
-
+
+ private MatchPatterns excludesPatterns;
+
/**
- * Whether or not the file system should be treated as a case sensitive
- * one.
+ * Whether or not the file system should be treated as a case sensitive one.
*/
protected boolean isCaseSensitive = true;
-
+
+ /**
+ * @since 3.3.0
+ */
+ protected Comparator filenameComparator;
+
/**
* Sets whether or not the file system should be regarded as case sensitive.
*
- * @param isCaseSensitive whether or not the file system should be
- * regarded as a case sensitive one
+ * @param isCaseSensitive whether or not the file system should be regarded as a case sensitive one
*/
public void setCaseSensitive( boolean isCaseSensitive )
{
this.isCaseSensitive = isCaseSensitive;
}
-
+
/**
- * Tests whether or not a given path matches the start of a given
- * pattern up to the first "**".
- *
- * This is not a general purpose test and should only be used if you
- * can live with false positives. For example, pattern=**\a
- * and str=b will yield true.
+ *
Tests whether or not a given path matches the start of a given pattern up to the first "**".
+ *
+ *
This is not a general purpose test and should only be used if you can live with false positives. For example,
+ * pattern=**\a and str=b will yield true.
*
- * @param pattern The pattern to match against. Must not be
- * null.
- * @param str The path to match, as a String. Must not be
- * null.
- *
- * @return whether or not a given path matches the start of a given
- * pattern up to the first "**".
+ * @param pattern The pattern to match against. Must not be null.
+ * @param str The path to match, as a String. Must not be null.
+ * @return whether or not a given path matches the start of a given pattern up to the first "**".
*/
protected static boolean matchPatternStart( String pattern, String str )
{
return SelectorUtils.matchPatternStart( pattern, str );
}
-
+
/**
- * Tests whether or not a given path matches the start of a given
- * pattern up to the first "**".
- *
- * This is not a general purpose test and should only be used if you
- * can live with false positives. For example, pattern=**\a
- * and str=b will yield true.
- *
- * @param pattern The pattern to match against. Must not be
- * null.
- * @param str The path to match, as a String. Must not be
- * null.
- * @param isCaseSensitive Whether or not matching should be performed
- * case sensitively.
+ *
Tests whether or not a given path matches the start of a given pattern up to the first "**".
+ *
+ *
This is not a general purpose test and should only be used if you can live with false positives. For example,
+ * pattern=**\a and str=b will yield true.
*
- * @return whether or not a given path matches the start of a given
- * pattern up to the first "**".
+ * @param pattern The pattern to match against. Must not be null.
+ * @param str The path to match, as a String. Must not be null.
+ * @param isCaseSensitive Whether or not matching should be performed case sensitively.
+ * @return whether or not a given path matches the start of a given pattern up to the first "**".
*/
- protected static boolean matchPatternStart( String pattern, String str,
- boolean isCaseSensitive )
+ protected static boolean matchPatternStart( String pattern, String str, boolean isCaseSensitive )
{
return SelectorUtils.matchPatternStart( pattern, str, isCaseSensitive );
}
-
+
/**
* Tests whether or not a given path matches a given pattern.
*
- * @param pattern The pattern to match against. Must not be
- * null.
- * @param str The path to match, as a String. Must not be
- * null.
- *
- * @return true if the pattern matches against the string,
- * or false otherwise.
+ * @param pattern The pattern to match against. Must not be null.
+ * @param str The path to match, as a String. Must not be null.
+ * @return true if the pattern matches against the string, or false otherwise.
*/
protected static boolean matchPath( String pattern, String str )
{
return SelectorUtils.matchPath( pattern, str );
}
-
+
/**
* Tests whether or not a given path matches a given pattern.
*
- * @param pattern The pattern to match against. Must not be
- * null.
- * @param str The path to match, as a String. Must not be
- * null.
- * @param isCaseSensitive Whether or not matching should be performed
- * case sensitively.
- *
- * @return true if the pattern matches against the string,
- * or false otherwise.
+ * @param pattern The pattern to match against. Must not be null.
+ * @param str The path to match, as a String. Must not be null.
+ * @param isCaseSensitive Whether or not matching should be performed case sensitively.
+ * @return true if the pattern matches against the string, or false otherwise.
*/
- protected static boolean matchPath( String pattern, String str,
- boolean isCaseSensitive )
+ protected static boolean matchPath( String pattern, String str, boolean isCaseSensitive )
{
return SelectorUtils.matchPath( pattern, str, isCaseSensitive );
}
-
+
/**
- * Tests whether or not a string matches against a pattern.
- * The pattern may contain two special characters:
+ * Tests whether or not a string matches against a pattern. The pattern may contain two special characters:
* '*' means zero or more characters
* '?' means one and only one character
*
- * @param pattern The pattern to match against.
- * Must not be null.
- * @param str The string which must be matched against the pattern.
- * Must not be null.
- *
- * @return true if the string matches against the pattern,
- * or false otherwise.
+ * @param pattern The pattern to match against. Must not be null.
+ * @param str The string which must be matched against the pattern. Must not be null.
+ * @return true if the string matches against the pattern, or false otherwise.
*/
public static boolean match( String pattern, String str )
{
return SelectorUtils.match( pattern, str );
}
-
+
/**
- * Tests whether or not a string matches against a pattern.
- * The pattern may contain two special characters:
+ * Tests whether or not a string matches against a pattern. The pattern may contain two special characters:
* '*' means zero or more characters
* '?' means one and only one character
*
- * @param pattern The pattern to match against.
- * Must not be null.
- * @param str The string which must be matched against the pattern.
- * Must not be null.
- * @param isCaseSensitive Whether or not matching should be performed
- * case sensitively.
- *
- *
- * @return true if the string matches against the pattern,
- * or false otherwise.
+ * @param pattern The pattern to match against. Must not be null.
+ * @param str The string which must be matched against the pattern. Must not be null.
+ * @param isCaseSensitive Whether or not matching should be performed case sensitively.
+ * @return true if the string matches against the pattern, or false otherwise.
*/
- protected static boolean match( String pattern, String str,
- boolean isCaseSensitive )
+ protected static boolean match( String pattern, String str, boolean isCaseSensitive )
{
return SelectorUtils.match( pattern, str, isCaseSensitive );
}
-
-
+
/**
- * Sets the list of include patterns to use. All '/' and '\' characters
- * are replaced by File.separatorChar, so the separator used
- * need not match File.separatorChar.
- *
- * When a pattern ends with a '/' or '\', "**" is appended.
+ *
Sets the list of include patterns to use. All '/' and '\' characters are replaced by
+ * File.separatorChar, so the separator used need not match File.separatorChar.
+ *
+ *
When a pattern ends with a '/' or '\', "**" is appended.
*
- * @param includes A list of include patterns.
- * May be null, indicating that all files
- * should be included. If a non-null
- * list is given, all elements must be
- * non-null.
+ * @param includes A list of include patterns. May be null, indicating that all files should be
+ * included. If a non-null list is given, all elements must be non-null.
*/
+ @Override
public void setIncludes( String[] includes )
{
if ( includes == null )
@@ -280,33 +238,28 @@ public void setIncludes( String[] includes )
}
else
{
- this.includes = new String[includes.length];
- for ( int i = 0; i < includes.length; i++ )
+ final List list = new ArrayList( includes.length );
+ for ( String include : includes )
{
- String pattern;
- pattern = includes[i].trim().replace( '/', File.separatorChar ).replace(
- '\\', File.separatorChar );
- if ( pattern.endsWith( File.separator ) )
+ if ( include != null )
{
- pattern += "**";
+ list.add( normalizePattern( include ) );
}
- this.includes[i] = pattern;
}
+ this.includes = list.toArray( new String[0] );
}
}
-
+
/**
- * Sets the list of exclude patterns to use. All '/' and '\' characters
- * are replaced by File.separatorChar, so the separator used
- * need not match File.separatorChar.
- *
- * When a pattern ends with a '/' or '\', "**" is appended.
+ *
Sets the list of exclude patterns to use. All '/' and '\' characters are replaced by
+ * File.separatorChar, so the separator used need not match File.separatorChar.
+ *
+ *
When a pattern ends with a '/' or '\', "**" is appended.
*
- * @param excludes A list of exclude patterns.
- * May be null, indicating that no files
- * should be excluded. If a non-null list is
- * given, all elements must be non-null.
+ * @param excludes A list of exclude patterns. May be null, indicating that no files should be
+ * excluded. If a non-null list is given, all elements must be non-null.
*/
+ @Override
public void setExcludes( String[] excludes )
{
if ( excludes == null )
@@ -315,85 +268,112 @@ public void setExcludes( String[] excludes )
}
else
{
- this.excludes = new String[excludes.length];
- for ( int i = 0; i < excludes.length; i++ )
+ final List list = new ArrayList( excludes.length );
+ for ( String exclude : excludes )
{
- String pattern;
- pattern = excludes[i].trim().replace( '/', File.separatorChar ).replace(
- '\\', File.separatorChar );
- if ( pattern.endsWith( File.separator ) )
+ if ( exclude != null )
{
- pattern += "**";
+ list.add( normalizePattern( exclude ) );
}
- this.excludes[i] = pattern;
}
+ this.excludes = list.toArray( new String[0] );
}
}
-
-
+
/**
- * Tests whether or not a name matches against at least one include
- * pattern.
+ * Normalizes the pattern, e.g. converts forward and backward slashes to the platform-specific file separator.
*
- * @param name The name to match. Must not be null.
- * @return true when the name matches against at least one
- * include pattern, or false otherwise.
+ * @param pattern The pattern to normalize, must not be null.
+ * @return The normalized pattern, never null.
*/
- protected boolean isIncluded( String name )
+ private String normalizePattern( String pattern )
{
- for ( int i = 0; i < includes.length; i++ )
+ pattern = pattern.trim();
+
+ if ( pattern.startsWith( SelectorUtils.REGEX_HANDLER_PREFIX ) )
{
- if ( matchPath( includes[i], name, isCaseSensitive ) )
+ if ( File.separatorChar == '\\' )
{
- return true;
+ pattern = StringUtils.replace( pattern, "/", "\\\\" );
+ }
+ else
+ {
+ pattern = StringUtils.replace( pattern, "\\\\", "/" );
+ }
+ }
+ else
+ {
+ pattern = pattern.replace( File.separatorChar == '/' ? '\\' : '/', File.separatorChar );
+
+ if ( pattern.endsWith( File.separator ) )
+ {
+ pattern += "**";
}
}
- return false;
+
+ return pattern;
+ }
+
+ /**
+ * Tests whether or not a name matches against at least one include pattern.
+ *
+ * @param name The name to match. Must not be null.
+ * @return true when the name matches against at least one include pattern, or false
+ * otherwise.
+ */
+ protected boolean isIncluded( String name )
+ {
+ return includesPatterns.matches( name, isCaseSensitive );
+ }
+
+ protected boolean isIncluded( String name, String[] tokenizedName )
+ {
+ return includesPatterns.matches( name, tokenizedName, isCaseSensitive );
+ }
+
+ protected boolean isIncluded( String name, char[][] tokenizedName )
+ {
+ return includesPatterns.matches( name, tokenizedName, isCaseSensitive );
}
-
+
/**
- * Tests whether or not a name matches the start of at least one include
- * pattern.
+ * Tests whether or not a name matches the start of at least one include pattern.
*
* @param name The name to match. Must not be null.
- * @return true when the name matches against the start of at
- * least one include pattern, or false otherwise.
+ * @return true when the name matches against the start of at least one include pattern, or
+ * false otherwise.
*/
protected boolean couldHoldIncluded( String name )
{
- for ( int i = 0; i < includes.length; i++ )
- {
- if ( matchPatternStart( includes[i], name, isCaseSensitive ) )
- {
- return true;
- }
- }
- return false;
+ return includesPatterns.matchesPatternStart( name, isCaseSensitive );
}
-
+
/**
- * Tests whether or not a name matches against at least one exclude
- * pattern.
+ * Tests whether or not a name matches against at least one exclude pattern.
*
* @param name The name to match. Must not be null.
- * @return true when the name matches against at least one
- * exclude pattern, or false otherwise.
+ * @return true when the name matches against at least one exclude pattern, or false
+ * otherwise.
*/
protected boolean isExcluded( String name )
{
- for ( int i = 0; i < excludes.length; i++ )
- {
- if ( matchPath( excludes[i], name, isCaseSensitive ) )
- {
- return true;
- }
- }
- return false;
+ return excludesPatterns.matches( name, isCaseSensitive );
+ }
+
+ protected boolean isExcluded( String name, String[] tokenizedName )
+ {
+ return excludesPatterns.matches( name, tokenizedName, isCaseSensitive );
}
-
+
+ protected boolean isExcluded( String name, char[][] tokenizedName )
+ {
+ return excludesPatterns.matches( name, tokenizedName, isCaseSensitive );
+ }
+
/**
* Adds default exclusions to the current exclusions set.
*/
+ @Override
public void addDefaultExcludes()
{
int excludesLength = excludes == null ? 0 : excludes.length;
@@ -405,13 +385,12 @@ public void addDefaultExcludes()
}
for ( int i = 0; i < DEFAULTEXCLUDES.length; i++ )
{
- newExcludes[i + excludesLength] = DEFAULTEXCLUDES[i].replace( '/',
- File.separatorChar ).replace( '\\', File.separatorChar );
+ newExcludes[i + excludesLength] = DEFAULTEXCLUDES[i].replace( '/', File.separatorChar );
}
excludes = newExcludes;
}
-
- protected void setupDefaultFilters()
+
+ protected void setupDefaultFilters()
{
if ( includes == null )
{
@@ -424,4 +403,16 @@ protected void setupDefaultFilters()
excludes = new String[0];
}
}
+
+ protected void setupMatchPatterns()
+ {
+ includesPatterns = MatchPatterns.from( includes );
+ excludesPatterns = MatchPatterns.from( excludes );
+ }
+
+ @Override
+ public void setFilenameComparator( Comparator filenameComparator )
+ {
+ this.filenameComparator = filenameComparator;
+ }
}
diff --git a/src/main/java/org/codehaus/plexus/util/Base64.java b/src/main/java/org/codehaus/plexus/util/Base64.java
index b5391d9b..120feb8f 100644
--- a/src/main/java/org/codehaus/plexus/util/Base64.java
+++ b/src/main/java/org/codehaus/plexus/util/Base64.java
@@ -18,27 +18,29 @@
/**
* Provides Base64 encoding and decoding as defined by RFC 2045.
- *
- *
This class implements section 6.8. Base64 Content-Transfer-Encoding
- * from RFC 2045 Multipurpose Internet Mail Extensions (MIME) Part One:
- * Format of Internet Message Bodies by Freed and Borenstein.
+ *
+ * This class implements section 6.8. Base64 Content-Transfer-Encoding from RFC 2045 Multipurpose
+ * Internet Mail Extensions (MIME) Part One: Format of Internet Message Bodies by Freed and Borenstein.
+ *
The {@value} character limit does not count the trailing CRLF, but counts
- * all other characters, including any equal signs.
+ *
+ * The {@value} character limit does not count the trailing CRLF, but counts all other characters, including any
+ * equal signs.
+ *
*
* @see RFC 2045 section 6.8
*/
@@ -119,33 +121,41 @@ public class Base64 {
private static byte[] lookUpBase64Alphabet = new byte[LOOKUPLENGTH];
// Populating the lookup and character arrays
- static {
- for (int i = 0; i < BASELENGTH; i++) {
+ static
+ {
+ for ( int i = 0; i < BASELENGTH; i++ )
+ {
base64Alphabet[i] = (byte) -1;
}
- for (int i = 'Z'; i >= 'A'; i--) {
- base64Alphabet[i] = (byte) (i - 'A');
+ for ( int i = 'Z'; i >= 'A'; i-- )
+ {
+ base64Alphabet[i] = (byte) ( i - 'A' );
}
- for (int i = 'z'; i >= 'a'; i--) {
- base64Alphabet[i] = (byte) (i - 'a' + 26);
+ for ( int i = 'z'; i >= 'a'; i-- )
+ {
+ base64Alphabet[i] = (byte) ( i - 'a' + 26 );
}
- for (int i = '9'; i >= '0'; i--) {
- base64Alphabet[i] = (byte) (i - '0' + 52);
+ for ( int i = '9'; i >= '0'; i-- )
+ {
+ base64Alphabet[i] = (byte) ( i - '0' + 52 );
}
base64Alphabet['+'] = 62;
base64Alphabet['/'] = 63;
- for (int i = 0; i <= 25; i++) {
- lookUpBase64Alphabet[i] = (byte) ('A' + i);
+ for ( int i = 0; i <= 25; i++ )
+ {
+ lookUpBase64Alphabet[i] = (byte) ( 'A' + i );
}
- for (int i = 26, j = 0; i <= 51; i++, j++) {
- lookUpBase64Alphabet[i] = (byte) ('a' + j);
+ for ( int i = 26, j = 0; i <= 51; i++, j++ )
+ {
+ lookUpBase64Alphabet[i] = (byte) ( 'a' + j );
}
- for (int i = 52, j = 0; i <= 61; i++, j++) {
- lookUpBase64Alphabet[i] = (byte) ('0' + j);
+ for ( int i = 52, j = 0; i <= 61; i++, j++ )
+ {
+ lookUpBase64Alphabet[i] = (byte) ( '0' + j );
}
lookUpBase64Alphabet[62] = (byte) '+';
@@ -158,36 +168,45 @@ public class Base64 {
* @param octect The value to test
* @return true if the value is defined in the the base 64 alphabet, false otherwise.
*/
- private static boolean isBase64(byte octect) {
- if (octect == PAD) {
+ private static boolean isBase64( byte octect )
+ {
+ if ( octect == PAD )
+ {
return true;
- } else if (octect < 0 || base64Alphabet[octect] == -1) {
+ }
+ else if ( octect < 0 || base64Alphabet[octect] == -1 )
+ {
return false;
- } else {
+ }
+ else
+ {
return true;
}
}
/**
- * Tests a given byte array to see if it contains
- * only valid characters within the Base64 alphabet.
+ * Tests a given byte array to see if it contains only valid characters within the Base64 alphabet.
*
* @param arrayOctect byte array to test
- * @return true if all bytes are valid characters in the Base64
- * alphabet or if the byte array is empty; false, otherwise
+ * @return true if all bytes are valid characters in the Base64 alphabet or if the byte array is empty;
+ * false, otherwise
*/
- public static boolean isArrayByteBase64(byte[] arrayOctect) {
+ public static boolean isArrayByteBase64( byte[] arrayOctect )
+ {
- arrayOctect = discardWhitespace(arrayOctect);
+ arrayOctect = discardWhitespace( arrayOctect );
int length = arrayOctect.length;
- if (length == 0) {
+ if ( length == 0 )
+ {
// shouldn't a 0 length array be valid base64 data?
// return false;
return true;
}
- for (int i = 0; i < length; i++) {
- if (!isBase64(arrayOctect[i])) {
+ for ( byte anArrayOctect : arrayOctect )
+ {
+ if ( !isBase64( anArrayOctect ) )
+ {
return false;
}
}
@@ -195,49 +214,47 @@ public static boolean isArrayByteBase64(byte[] arrayOctect) {
}
/**
- * Encodes binary data using the base64 algorithm but
- * does not chunk the output.
+ * Encodes binary data using the base64 algorithm but does not chunk the output.
*
* @param binaryData binary data to encode
* @return Base64 characters
*/
- public static byte[] encodeBase64(byte[] binaryData) {
- return encodeBase64(binaryData, false);
+ public static byte[] encodeBase64( byte[] binaryData )
+ {
+ return encodeBase64( binaryData, false );
}
/**
- * Encodes binary data using the base64 algorithm and chunks
- * the encoded output into 76 character blocks
+ * Encodes binary data using the base64 algorithm and chunks the encoded output into 76 character blocks
*
* @param binaryData binary data to encode
* @return Base64 characters chunked in 76 character blocks
*/
- public static byte[] encodeBase64Chunked(byte[] binaryData) {
- return encodeBase64(binaryData, true);
+ public static byte[] encodeBase64Chunked( byte[] binaryData )
+ {
+ return encodeBase64( binaryData, true );
}
-
/**
- * Decodes a byte[] containing containing
- * characters in the Base64 alphabet.
+ * Decodes a byte[] containing containing characters in the Base64 alphabet.
*
* @param pArray A byte array containing Base64 character data
* @return a byte array containing binary data
*/
- public byte[] decode(byte[] pArray) {
- return decodeBase64(pArray);
+ public byte[] decode( byte[] pArray )
+ {
+ return decodeBase64( pArray );
}
/**
- * Encodes binary data using the base64 algorithm, optionally
- * chunking the output into 76 character blocks.
+ * Encodes binary data using the base64 algorithm, optionally chunking the output into 76 character blocks.
*
* @param binaryData Array containing binary data to encode.
- * @param isChunked if true this encoder will chunk
- * the base64 output into 76 character blocks
+ * @param isChunked if true this encoder will chunk the base64 output into 76 character blocks
* @return Base64-encoded data.
*/
- public static byte[] encodeBase64(byte[] binaryData, boolean isChunked) {
+ public static byte[] encodeBase64( byte[] binaryData, boolean isChunked )
+ {
int lengthDataBits = binaryData.length * EIGHTBIT;
int fewerThan24bits = lengthDataBits % TWENTYFOURBITGROUP;
int numberTriplets = lengthDataBits / TWENTYFOURBITGROUP;
@@ -245,10 +262,13 @@ public static byte[] encodeBase64(byte[] binaryData, boolean isChunked) {
int encodedDataLength = 0;
int nbrChunks = 0;
- if (fewerThan24bits != 0) {
- //data not divisible by 24 bit
- encodedDataLength = (numberTriplets + 1) * 4;
- } else {
+ if ( fewerThan24bits != 0 )
+ {
+ // data not divisible by 24 bit
+ encodedDataLength = ( numberTriplets + 1 ) * 4;
+ }
+ else
+ {
// 16 or 8 bit
encodedDataLength = numberTriplets * 4;
}
@@ -256,10 +276,10 @@ public static byte[] encodeBase64(byte[] binaryData, boolean isChunked) {
// If the output is to be "chunked" into 76 character sections,
// for compliance with RFC 2045 MIME, then it is important to
// allow for extra length to account for the separator(s)
- if (isChunked) {
+ if ( isChunked )
+ {
- nbrChunks =
- (CHUNK_SEPARATOR.length == 0 ? 0 : (int) Math.ceil((float) encodedDataLength / CHUNK_SIZE));
+ nbrChunks = ( CHUNK_SEPARATOR.length == 0 ? 0 : (int) Math.ceil( (float) encodedDataLength / CHUNK_SIZE ) );
encodedDataLength += nbrChunks * CHUNK_SEPARATOR.length;
}
@@ -273,51 +293,43 @@ public static byte[] encodeBase64(byte[] binaryData, boolean isChunked) {
int nextSeparatorIndex = CHUNK_SIZE;
int chunksSoFar = 0;
- //log.debug("number of triplets = " + numberTriplets);
- for (i = 0; i < numberTriplets; i++) {
+ // log.debug("number of triplets = " + numberTriplets);
+ for ( i = 0; i < numberTriplets; i++ )
+ {
dataIndex = i * 3;
b1 = binaryData[dataIndex];
b2 = binaryData[dataIndex + 1];
b3 = binaryData[dataIndex + 2];
- //log.debug("b1= " + b1 +", b2= " + b2 + ", b3= " + b3);
+ // log.debug("b1= " + b1 +", b2= " + b2 + ", b3= " + b3);
- l = (byte) (b2 & 0x0f);
- k = (byte) (b1 & 0x03);
+ l = (byte) ( b2 & 0x0f );
+ k = (byte) ( b1 & 0x03 );
- byte val1 =
- ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
- byte val2 =
- ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
- byte val3 =
- ((b3 & SIGN) == 0) ? (byte) (b3 >> 6) : (byte) ((b3) >> 6 ^ 0xfc);
+ byte val1 = ( ( b1 & SIGN ) == 0 ) ? (byte) ( b1 >> 2 ) : (byte) ( ( b1 ) >> 2 ^ 0xc0 );
+ byte val2 = ( ( b2 & SIGN ) == 0 ) ? (byte) ( b2 >> 4 ) : (byte) ( ( b2 ) >> 4 ^ 0xf0 );
+ byte val3 = ( ( b3 & SIGN ) == 0 ) ? (byte) ( b3 >> 6 ) : (byte) ( ( b3 ) >> 6 ^ 0xfc );
encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
- //log.debug( "val2 = " + val2 );
- //log.debug( "k4 = " + (k<<4) );
- //log.debug( "vak = " + (val2 | (k<<4)) );
- encodedData[encodedIndex + 1] =
- lookUpBase64Alphabet[val2 | (k << 4)];
- encodedData[encodedIndex + 2] =
- lookUpBase64Alphabet[(l << 2) | val3];
+ // log.debug( "val2 = " + val2 );
+ // log.debug( "k4 = " + (k<<4) );
+ // log.debug( "vak = " + (val2 | (k<<4)) );
+ encodedData[encodedIndex + 1] = lookUpBase64Alphabet[val2 | ( k << 4 )];
+ encodedData[encodedIndex + 2] = lookUpBase64Alphabet[( l << 2 ) | val3];
encodedData[encodedIndex + 3] = lookUpBase64Alphabet[b3 & 0x3f];
encodedIndex += 4;
// If we are chunking, let's put a chunk separator down.
- if (isChunked) {
+ if ( isChunked )
+ {
// this assumes that CHUNK_SIZE % 4 == 0
- if (encodedIndex == nextSeparatorIndex) {
- System.arraycopy(
- CHUNK_SEPARATOR,
- 0,
- encodedData,
- encodedIndex,
- CHUNK_SEPARATOR.length);
+ if ( encodedIndex == nextSeparatorIndex )
+ {
+ System.arraycopy( CHUNK_SEPARATOR, 0, encodedData, encodedIndex, CHUNK_SEPARATOR.length );
chunksSoFar++;
nextSeparatorIndex =
- (CHUNK_SIZE * (chunksSoFar + 1)) +
- (chunksSoFar * CHUNK_SEPARATOR.length);
+ ( CHUNK_SIZE * ( chunksSoFar + 1 ) ) + ( chunksSoFar * CHUNK_SEPARATOR.length );
encodedIndex += CHUNK_SEPARATOR.length;
}
}
@@ -326,45 +338,42 @@ public static byte[] encodeBase64(byte[] binaryData, boolean isChunked) {
// form integral number of 6-bit groups
dataIndex = i * 3;
- if (fewerThan24bits == EIGHTBIT) {
+ if ( fewerThan24bits == EIGHTBIT )
+ {
b1 = binaryData[dataIndex];
- k = (byte) (b1 & 0x03);
- //log.debug("b1=" + b1);
- //log.debug("b1<<2 = " + (b1>>2) );
- byte val1 =
- ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
+ k = (byte) ( b1 & 0x03 );
+ // log.debug("b1=" + b1);
+ // log.debug("b1<<2 = " + (b1>>2) );
+ byte val1 = ( ( b1 & SIGN ) == 0 ) ? (byte) ( b1 >> 2 ) : (byte) ( ( b1 ) >> 2 ^ 0xc0 );
encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
encodedData[encodedIndex + 1] = lookUpBase64Alphabet[k << 4];
encodedData[encodedIndex + 2] = PAD;
encodedData[encodedIndex + 3] = PAD;
- } else if (fewerThan24bits == SIXTEENBIT) {
+ }
+ else if ( fewerThan24bits == SIXTEENBIT )
+ {
b1 = binaryData[dataIndex];
b2 = binaryData[dataIndex + 1];
- l = (byte) (b2 & 0x0f);
- k = (byte) (b1 & 0x03);
+ l = (byte) ( b2 & 0x0f );
+ k = (byte) ( b1 & 0x03 );
- byte val1 =
- ((b1 & SIGN) == 0) ? (byte) (b1 >> 2) : (byte) ((b1) >> 2 ^ 0xc0);
- byte val2 =
- ((b2 & SIGN) == 0) ? (byte) (b2 >> 4) : (byte) ((b2) >> 4 ^ 0xf0);
+ byte val1 = ( ( b1 & SIGN ) == 0 ) ? (byte) ( b1 >> 2 ) : (byte) ( ( b1 ) >> 2 ^ 0xc0 );
+ byte val2 = ( ( b2 & SIGN ) == 0 ) ? (byte) ( b2 >> 4 ) : (byte) ( ( b2 ) >> 4 ^ 0xf0 );
encodedData[encodedIndex] = lookUpBase64Alphabet[val1];
- encodedData[encodedIndex + 1] =
- lookUpBase64Alphabet[val2 | (k << 4)];
+ encodedData[encodedIndex + 1] = lookUpBase64Alphabet[val2 | ( k << 4 )];
encodedData[encodedIndex + 2] = lookUpBase64Alphabet[l << 2];
encodedData[encodedIndex + 3] = PAD;
}
- if (isChunked) {
+ if ( isChunked )
+ {
// we also add a separator to the end of the final chunk.
- if (chunksSoFar < nbrChunks) {
- System.arraycopy(
- CHUNK_SEPARATOR,
- 0,
- encodedData,
- encodedDataLength - CHUNK_SEPARATOR.length,
- CHUNK_SEPARATOR.length);
+ if ( chunksSoFar < nbrChunks )
+ {
+ System.arraycopy( CHUNK_SEPARATOR, 0, encodedData, encodedDataLength - CHUNK_SEPARATOR.length,
+ CHUNK_SEPARATOR.length );
}
}
@@ -377,12 +386,14 @@ public static byte[] encodeBase64(byte[] binaryData, boolean isChunked) {
* @param base64Data Byte array containing Base64 data
* @return Array containing decoded data.
*/
- public static byte[] decodeBase64(byte[] base64Data) {
+ public static byte[] decodeBase64( byte[] base64Data )
+ {
// RFC 2045 requires that we discard ALL non-Base64 characters
- base64Data = discardNonBase64(base64Data);
+ base64Data = discardNonBase64( base64Data );
// handle the edge case, so we don't have to worry about it later
- if (base64Data.length == 0) {
+ if ( base64Data.length == 0 )
+ {
return new byte[0];
}
@@ -398,15 +409,18 @@ public static byte[] decodeBase64(byte[] base64Data) {
// this sizes the output array properly - rlw
int lastData = base64Data.length;
// ignore the '=' padding
- while (base64Data[lastData - 1] == PAD) {
- if (--lastData == 0) {
+ while ( base64Data[lastData - 1] == PAD )
+ {
+ if ( --lastData == 0 )
+ {
return new byte[0];
}
}
decodedData = new byte[lastData - numberQuadruple];
}
- for (int i = 0; i < numberQuadruple; i++) {
+ for ( int i = 0; i < numberQuadruple; i++ )
+ {
dataIndex = i * 4;
marker0 = base64Data[dataIndex + 2];
marker1 = base64Data[dataIndex + 3];
@@ -414,25 +428,28 @@ public static byte[] decodeBase64(byte[] base64Data) {
b1 = base64Alphabet[base64Data[dataIndex]];
b2 = base64Alphabet[base64Data[dataIndex + 1]];
- if (marker0 != PAD && marker1 != PAD) {
- //No PAD e.g 3cQl
+ if ( marker0 != PAD && marker1 != PAD )
+ {
+ // No PAD e.g 3cQl
b3 = base64Alphabet[marker0];
b4 = base64Alphabet[marker1];
- decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
- decodedData[encodedIndex + 1] =
- (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
- decodedData[encodedIndex + 2] = (byte) (b3 << 6 | b4);
- } else if (marker0 == PAD) {
- //Two PAD e.g. 3c[Pad][Pad]
- decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
- } else if (marker1 == PAD) {
- //One PAD e.g. 3cQ[Pad]
+ decodedData[encodedIndex] = (byte) ( b1 << 2 | b2 >> 4 );
+ decodedData[encodedIndex + 1] = (byte) ( ( ( b2 & 0xf ) << 4 ) | ( ( b3 >> 2 ) & 0xf ) );
+ decodedData[encodedIndex + 2] = (byte) ( b3 << 6 | b4 );
+ }
+ else if ( marker0 == PAD )
+ {
+ // Two PAD e.g. 3c[Pad][Pad]
+ decodedData[encodedIndex] = (byte) ( b1 << 2 | b2 >> 4 );
+ }
+ else if ( marker1 == PAD )
+ {
+ // One PAD e.g. 3cQ[Pad]
b3 = base64Alphabet[marker0];
- decodedData[encodedIndex] = (byte) (b1 << 2 | b2 >> 4);
- decodedData[encodedIndex + 1] =
- (byte) (((b2 & 0xf) << 4) | ((b3 >> 2) & 0xf));
+ decodedData[encodedIndex] = (byte) ( b1 << 2 | b2 >> 4 );
+ decodedData[encodedIndex + 1] = (byte) ( ( ( b2 & 0xf ) << 4 ) | ( ( b3 >> 2 ) & 0xf ) );
}
encodedIndex += 3;
}
@@ -442,68 +459,71 @@ public static byte[] decodeBase64(byte[] base64Data) {
/**
* Discards any whitespace from a base-64 encoded block.
*
- * @param data The base-64 encoded data to discard the whitespace
- * from.
+ * @param data The base-64 encoded data to discard the whitespace from.
* @return The data, less whitespace (see RFC 2045).
*/
- static byte[] discardWhitespace(byte[] data) {
+ static byte[] discardWhitespace( byte[] data )
+ {
byte groomedData[] = new byte[data.length];
int bytesCopied = 0;
- for (int i = 0; i < data.length; i++) {
- switch (data[i]) {
- case (byte) ' ' :
- case (byte) '\n' :
- case (byte) '\r' :
- case (byte) '\t' :
+ for ( byte aData : data )
+ {
+ switch ( aData )
+ {
+ case (byte) ' ':
+ case (byte) '\n':
+ case (byte) '\r':
+ case (byte) '\t':
break;
- default:
- groomedData[bytesCopied++] = data[i];
+ default:
+ groomedData[bytesCopied++] = aData;
}
}
byte packedData[] = new byte[bytesCopied];
- System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
+ System.arraycopy( groomedData, 0, packedData, 0, bytesCopied );
return packedData;
}
/**
- * Discards any characters outside of the base64 alphabet, per
- * the requirements on page 25 of RFC 2045 - "Any characters
- * outside of the base64 alphabet are to be ignored in base64
- * encoded data."
+ * Discards any characters outside of the base64 alphabet, per the requirements on page 25 of RFC 2045 - "Any
+ * characters outside of the base64 alphabet are to be ignored in base64 encoded data."
*
* @param data The base-64 encoded data to groom
* @return The data, less non-base64 characters (see RFC 2045).
*/
- static byte[] discardNonBase64(byte[] data) {
+ static byte[] discardNonBase64( byte[] data )
+ {
byte groomedData[] = new byte[data.length];
int bytesCopied = 0;
- for (int i = 0; i < data.length; i++) {
- if (isBase64(data[i])) {
- groomedData[bytesCopied++] = data[i];
+ for ( byte aData : data )
+ {
+ if ( isBase64( aData ) )
+ {
+ groomedData[bytesCopied++] = aData;
}
}
byte packedData[] = new byte[bytesCopied];
- System.arraycopy(groomedData, 0, packedData, 0, bytesCopied);
+ System.arraycopy( groomedData, 0, packedData, 0, bytesCopied );
return packedData;
}
/**
- * Encodes a byte[] containing binary data, into a byte[] containing
- * characters in the Base64 alphabet.
+ * Encodes a byte[] containing binary data, into a byte[] containing characters in the Base64 alphabet.
*
* @param pArray a byte array containing binary data
* @return A byte array containing only Base64 character data
*/
- public byte[] encode(byte[] pArray) {
- return encodeBase64(pArray, false);
+ public byte[] encode( byte[] pArray )
+ {
+ return encodeBase64( pArray, false );
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java b/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java
new file mode 100644
index 00000000..ac2ade02
--- /dev/null
+++ b/src/main/java/org/codehaus/plexus/util/BaseIOUtil.java
@@ -0,0 +1,27 @@
+package org.codehaus.plexus.util;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.Reader;
+import java.io.Writer;
+
+/**
+ * Implementation specific to Java SE 8 version.
+ */
+abstract class BaseIOUtil
+{
+ private static final int DEFAULT_BUFFER_SIZE = 1024 * 16;
+
+ static void copy( final InputStream input, final OutputStream output )
+ throws IOException
+ {
+ IOUtil.copy( input, output, DEFAULT_BUFFER_SIZE );
+ }
+
+ static void copy( final Reader input, final Writer output )
+ throws IOException
+ {
+ IOUtil.copy( input, output, DEFAULT_BUFFER_SIZE );
+ }
+}
diff --git a/src/main/java/org/codehaus/plexus/util/CachedMap.java b/src/main/java/org/codehaus/plexus/util/CachedMap.java
index 6a8386c8..c77d2180 100644
--- a/src/main/java/org/codehaus/plexus/util/CachedMap.java
+++ b/src/main/java/org/codehaus/plexus/util/CachedMap.java
@@ -1,49 +1,53 @@
+package org.codehaus.plexus.util;
+
/*
* J.A.D.E. Java(TM) Addition to Default Environment.
* Latest release available at http://jade.dautelle.com/
* This class is public domain (not copyrighted).
*/
-package org.codehaus.plexus.util;
+
import java.util.Collection;
import java.util.Collections;
-import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
- *
This class provides cache access to Map collections.
- *
- *
Instance of this class can be used as "proxy" for any collection
- * implementing the java.util.Map interface.
- *
- *
Typically, {@link CachedMap} are used to accelerate access to
- * large collections when the access to the collection is not evenly
- * distributed (associative cache). The performance gain is about
- * 50% for the fastest hash map collections (e.g. {@link FastMap}).
- * For slower collections such as java.util.TreeMap,
- * non-resizable {@link FastMap} (real-time) or database access,
- * performance can be of several orders of magnitude.
- *
- *
Note: The keys used to access elements of a {@link CachedMap} do
- * not need to be immutable as they are not stored in the cache
- * (only keys specified by the {@link #put} method are).
- * In other words, access can be performed using mutable keys as long
- * as these keys can be compared for equality with the real map's keys
- * (e.g. same hashCode values).
- *
- *
This implementation is not synchronized. Multiple threads accessing
- * or modifying the collection must be synchronized externally.
- *
- *
This class is public domain (not copyrighted).
+ *
+ * This class provides cache access to Map collections.
+ *
+ *
+ * Instance of this class can be used as "proxy" for any collection implementing the java.util.Map
+ * interface.
+ *
+ *
+ * Typically, {@link CachedMap} are used to accelerate access to large collections when the access to the collection is
+ * not evenly distributed (associative cache). The performance gain is about 50% for the fastest hash map collections
+ * (e.g. {@link FastMap}). For slower collections such as java.util.TreeMap, non-resizable {@link FastMap}
+ * (real-time) or database access, performance can be of several orders of magnitude.
+ *
+ *
+ * Note: The keys used to access elements of a {@link CachedMap} do not need to be immutable as they are not
+ * stored in the cache (only keys specified by the {@link #put} method are). In other words, access can be performed
+ * using mutable keys as long as these keys can be compared for equality with the real map's keys (e.g. same
+ * hashCode values).
+ *
+ *
+ * This implementation is not synchronized. Multiple threads accessing or modifying the collection must be synchronized
+ * externally.
+ *
+ *
+ * This class is public domain (not copyrighted).
+ *
*
- * @author Jean-Marie Dautelle
+ * @author Jean-Marie Dautelle
* @version 5.3, October 30, 2003
*/
-public final class CachedMap implements Map {
+public final class CachedMap
+ implements Map
+{
/**
- * Holds the FastMap backing this collection
- * (null if generic backing map).
+ * Holds the FastMap backing this collection (null if generic backing map).
*/
private final FastMap _backingFastMap;
@@ -53,8 +57,7 @@ public final class CachedMap implements Map {
private final Map _backingMap;
/**
- * Holds the keys of the backing map (key-to-key mapping).
- * (null if FastMap backing map).
+ * Holds the keys of the backing map (key-to-key mapping). (null if FastMap backing map).
*/
private final FastMap _keysMap;
@@ -74,41 +77,41 @@ public final class CachedMap implements Map {
private final Object[] _values;
/**
- * Creates a cached map backed by a {@link FastMap}.
- * The default cache size and map capacity is set to 256
- * entries.
+ * Creates a cached map backed by a {@link FastMap}. The default cache size and map capacity is set to
+ * 256 entries.
*/
- public CachedMap() {
- this(256, new FastMap());
+ public CachedMap()
+ {
+ this( 256, new FastMap() );
}
/**
- * Creates a cached map backed by a {@link FastMap} and having the
- * specified cache size.
+ * Creates a cached map backed by a {@link FastMap} and having the specified cache size.
*
- * @param cacheSize the cache size, the actual cache size is the
- * first power of 2 greater or equal to cacheSize.
- * This is also the initial capacity of the backing map.
+ * @param cacheSize the cache size, the actual cache size is the first power of 2 greater or equal to
+ * cacheSize. This is also the initial capacity of the backing map.
*/
- public CachedMap(int cacheSize) {
- this(cacheSize, new FastMap(cacheSize));
+ public CachedMap( int cacheSize )
+ {
+ this( cacheSize, new FastMap( cacheSize ) );
}
/**
- * Creates a cached map backed by the specified map and having the specified
- * cache size. In order to maitain cache veracity, it is critical
- * that all update to the backing map is accomplished through the
- * {@link CachedMap} instance; otherwise {@link #flush} has to be called.
+ * Creates a cached map backed by the specified map and having the specified cache size. In order to maintain cache
+ * veracity, it is critical that all update to the backing map is accomplished through the {@link CachedMap}
+ * instance; otherwise {@link #flush} has to be called.
*
- * @param cacheSize the cache size, the actual cache size is the
- * first power of 2 greater or equal to cacheSize.
- * @param backingMap the backing map to be "wrapped" in a cached map.
+ * @param cacheSize the cache size, the actual cache size is the first power of 2 greater or equal to
+ * cacheSize.
+ * @param backingMap the backing map to be "wrapped" in a cached map.
*/
- public CachedMap(int cacheSize, Map backingMap) {
+ public CachedMap( int cacheSize, Map backingMap )
+ {
// Find a power of 2 >= minimalCache
int actualCacheSize = 1;
- while (actualCacheSize < cacheSize) {
+ while ( actualCacheSize < cacheSize )
+ {
actualCacheSize <<= 1;
}
@@ -118,17 +121,20 @@ public CachedMap(int cacheSize, Map backingMap) {
_mask = actualCacheSize - 1;
// Sets backing map references.
- if (backingMap instanceof FastMap) {
- _backingFastMap = (FastMap)backingMap;
+ if ( backingMap instanceof FastMap )
+ {
+ _backingFastMap = (FastMap) backingMap;
_backingMap = _backingFastMap;
_keysMap = null;
- } else {
+ }
+ else
+ {
_backingFastMap = null;
_backingMap = backingMap;
- _keysMap = new FastMap(backingMap.size());
- for (Iterator i= backingMap.keySet().iterator(); i.hasNext();) {
- Object key = i.next();
- _keysMap.put(key, key);
+ _keysMap = new FastMap( backingMap.size() );
+ for ( Object key : backingMap.keySet() )
+ {
+ _keysMap.put( key, key );
}
}
}
@@ -138,77 +144,89 @@ public CachedMap(int cacheSize, Map backingMap) {
*
* @return the cache size (power of 2).
*/
- public int getCacheSize() {
+ public int getCacheSize()
+ {
return _keys.length;
}
/**
- * Returns the backing map. If the backing map is modified directly,
- * this {@link CachedMap} has to be flushed.
+ * Returns the backing map. If the backing map is modified directly, this {@link CachedMap} has to be flushed.
*
- * @return the backing map.
- * @see #flush
+ * @return the backing map.
+ * @see #flush
*/
- public Map getBackingMap() {
- return (_backingFastMap != null) ? _backingFastMap : _backingMap;
+ public Map getBackingMap()
+ {
+ return ( _backingFastMap != null ) ? _backingFastMap : _backingMap;
}
/**
- * Flushes the key/value pairs being cached. This method should be called
- * if the backing map is externally modified.
+ * Flushes the key/value pairs being cached. This method should be called if the backing map is externally modified.
*/
- public void flush() {
- for (int i=0; i < _keys.length; i++) {
+ public void flush()
+ {
+ for ( int i = 0; i < _keys.length; i++ )
+ {
_keys[i] = null;
_values[i] = null;
}
- if (_keysMap != null) {
+ if ( _keysMap != null )
+ {
// Re-populates keys from backing map.
- for (Iterator i= _backingMap.keySet().iterator(); i.hasNext();) {
- Object key = i.next();
- _keysMap.put(key, key);
+ for ( Object key : _backingMap.keySet() )
+ {
+ _keysMap.put( key, key );
}
}
}
/**
- * Returns the value to which this map maps the specified key.
- * First, the cache is being checked, then if the cache does not contains
- * the specified key, the backing map is accessed and the key/value
- * pair is stored in the cache.
+ * Returns the value to which this map maps the specified key. First, the cache is being checked, then if the cache
+ * does not contains the specified key, the backing map is accessed and the key/value pair is stored in the cache.
*
- * @param key the key whose associated value is to be returned.
- * @return the value to which this map maps the specified key, or
- * null if the map contains no mapping for this key.
- * @throws ClassCastException if the key is of an inappropriate type for
- * the backing map (optional).
+ * @param key the key whose associated value is to be returned.
+ * @return the value to which this map maps the specified key, or null if the map contains no mapping
+ * for this key.
+ * @throws ClassCastException if the key is of an inappropriate type for the backing map (optional).
* @throws NullPointerException if the key is null.
*/
- public Object get(Object key) {
+ @Override
+ public Object get( Object key )
+ {
int index = key.hashCode() & _mask;
- return key.equals(_keys[index]) ?
- _values[index] : getCacheMissed(key, index);
+ return key.equals( _keys[index] ) ? _values[index] : getCacheMissed( key, index );
}
- private Object getCacheMissed(Object key, int index) {
- if (_backingFastMap != null) {
- Map.Entry entry = _backingFastMap.getEntry(key);
- if (entry != null) {
+
+ private Object getCacheMissed( Object key, int index )
+ {
+ if ( _backingFastMap != null )
+ {
+ Map.Entry entry = _backingFastMap.getEntry( key );
+ if ( entry != null )
+ {
_keys[index] = entry.getKey();
Object value = entry.getValue();
_values[index] = value;
return value;
- } else {
+ }
+ else
+ {
return null;
}
- } else { // Generic backing map.
- Object mapKey = _keysMap.get(key);
- if (mapKey != null) {
+ }
+ else
+ { // Generic backing map.
+ Object mapKey = _keysMap.get( key );
+ if ( mapKey != null )
+ {
_keys[index] = mapKey;
- Object value = _backingMap.get(key);
+ Object value = _backingMap.get( key );
_values[index] = value;
return value;
- } else {
+ }
+ else
+ {
return null;
}
}
@@ -217,82 +235,90 @@ private Object getCacheMissed(Object key, int index) {
/**
* Associates the specified value with the specified key in this map.
*
- * @param key the key with which the specified value is to be associated.
- * @param value the value to be associated with the specified key.
- * @return the previous value associated with specified key, or
- * null if there was no mapping for the key.
- * @throws UnsupportedOperationException if the put operation
- * is not supported by the backing map.
- * @throws ClassCastException if the class of the specified key or value
- * prevents it from being stored in this map.
- * @throws IllegalArgumentException if some aspect of this key or value
- * prevents it from being stored in this map.
+ * @param key the key with which the specified value is to be associated.
+ * @param value the value to be associated with the specified key.
+ * @return the previous value associated with specified key, or null if there was no mapping for the
+ * key.
+ * @throws UnsupportedOperationException if the put operation is not supported by the backing map.
+ * @throws ClassCastException if the class of the specified key or value prevents it from being stored in this map.
+ * @throws IllegalArgumentException if some aspect of this key or value prevents it from being stored in this map.
* @throws NullPointerException if the key is null.
*/
- public Object put(Object key, Object value) {
+ @Override
+ public Object put( Object key, Object value )
+ {
// Updates the cache.
int index = key.hashCode() & _mask;
- if (key.equals(_keys[index]) ) {
+ if ( key.equals( _keys[index] ) )
+ {
_values[index] = value;
- } else if (_keysMap != null) { // Possibly a new key.
- _keysMap.put(key, key);
+ }
+ else if ( _keysMap != null )
+ { // Possibly a new key.
+ _keysMap.put( key, key );
}
// Updates the backing map.
- return _backingMap.put(key, value);
+ return _backingMap.put( key, value );
}
/**
* Removes the mapping for this key from this map if it is present.
*
- * @param key key whose mapping is to be removed from the map.
- * @return previous value associated with specified key,
- * or null if there was no mapping for key.
- * @throws ClassCastException if the key is of an inappropriate type for
- * the backing map (optional).
+ * @param key key whose mapping is to be removed from the map.
+ * @return previous value associated with specified key, or null if there was no mapping for key.
+ * @throws ClassCastException if the key is of an inappropriate type for the backing map (optional).
* @throws NullPointerException if the key is null.
- * @throws UnsupportedOperationException if the remove method
- * is not supported by the backing map.
+ * @throws UnsupportedOperationException if the remove method is not supported by the backing map.
*/
- public Object remove(Object key) {
+ @Override
+ public Object remove( Object key )
+ {
// Removes from cache.
int index = key.hashCode() & _mask;
- if (key.equals(_keys[index]) ) {
+ if ( key.equals( _keys[index] ) )
+ {
_keys[index] = null;
}
// Removes from key map.
- if (_keysMap != null) {
- _keysMap.remove(key);
+ if ( _keysMap != null )
+ {
+ _keysMap.remove( key );
}
// Removes from backing map.
- return _backingMap.remove(key);
+ return _backingMap.remove( key );
}
/**
* Indicates if this map contains a mapping for the specified key.
*
- * @param key the key whose presence in this map is to be tested.
- * @return true if this map contains a mapping for the
- * specified key; false otherwise.
+ * @param key the key whose presence in this map is to be tested.
+ * @return true if this map contains a mapping for the specified key; false otherwise.
*/
- public boolean containsKey(Object key) {
+ @Override
+ public boolean containsKey( Object key )
+ {
// Checks the cache.
int index = key.hashCode() & _mask;
- if (key.equals(_keys[index]) ) {
+ if ( key.equals( _keys[index] ) )
+ {
return true;
- } else { // Checks the backing map.
- return _backingMap.containsKey(key);
+ }
+ else
+ { // Checks the backing map.
+ return _backingMap.containsKey( key );
}
}
/**
- * Returns the number of key-value mappings in this map. If the
- * map contains more than Integer.MAX_VALUE elements,
- * returns Integer.MAX_VALUE.
+ * Returns the number of key-value mappings in this map. If the map contains more than
+ * Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.
*
* @return the number of key-value mappings in this map.
*/
- public int size() {
+ @Override
+ public int size()
+ {
return _backingMap.size();
}
@@ -301,67 +327,68 @@ public int size() {
*
* @return true if this map contains no key-value mappings.
*/
- public boolean isEmpty() {
+ @Override
+ public boolean isEmpty()
+ {
return _backingMap.isEmpty();
}
/**
- * Returns true if this map maps one or more keys to the
- * specified value.
+ * Returns true if this map maps one or more keys to the specified value.
*
- * @param value value whose presence in this map is to be tested.
- * @return true if this map maps one or more keys to the
- * specified value.
- * @throws ClassCastException if the value is of an inappropriate type for
- * the backing map (optional).
- * @throws NullPointerException if the value is null and the
- * backing map does not not permit null values.
+ * @param value value whose presence in this map is to be tested.
+ * @return true if this map maps one or more keys to the specified value.
+ * @throws ClassCastException if the value is of an inappropriate type for the backing map (optional).
+ * @throws NullPointerException if the value is null and the backing map does not not permit
+ * null values.
*/
- public boolean containsValue(Object value) {
- return _backingMap.containsValue(value);
+ @Override
+ public boolean containsValue( Object value )
+ {
+ return _backingMap.containsValue( value );
}
/**
- * Copies all of the mappings from the specified map to this map
- * (optional operation). This method automatically flushes the cache.
+ * Copies all of the mappings from the specified map to this map (optional operation). This method automatically
+ * flushes the cache.
*
* @param map the mappings to be stored in this map.
- * @throws UnsupportedOperationException if the putAll method
- * is not supported by the backing map.
- * @throws ClassCastException if the class of a key or value in the
- * specified map prevents it from being stored in this map.
- * @throws IllegalArgumentException some aspect of a key or value in the
- * specified map prevents it from being stored in this map.
- * @throws NullPointerException the specified map is null, or
- * if the backing map does not permit null keys or
- * values, and the specified map contains null keys or
- * values.
+ * @throws UnsupportedOperationException if the putAll method is not supported by the backing map.
+ * @throws ClassCastException if the class of a key or value in the specified map prevents it from being stored in
+ * this map.
+ * @throws IllegalArgumentException some aspect of a key or value in the specified map prevents it from being stored
+ * in this map.
+ * @throws NullPointerException the specified map is null, or if the backing map does not permit
+ * null keys or values, and the specified map contains null keys or values.
*/
- public void putAll(Map map) {
- _backingMap.putAll(map);
+ @Override
+ public void putAll( Map map )
+ {
+ _backingMap.putAll( map );
flush();
}
/**
- * Removes all mappings from this map (optional operation). This method
- * automatically flushes the cache.
+ * Removes all mappings from this map (optional operation). This method automatically flushes the cache.
*
- * @throws UnsupportedOperationException if clear is not supported by the
- * backing map.
+ * @throws UnsupportedOperationException if clear is not supported by the backing map.
*/
- public void clear() {
+ @Override
+ public void clear()
+ {
_backingMap.clear();
flush();
}
/**
- * Returns an unmodifiable view of the keys contained in this
- * map.
+ * Returns an unmodifiable view of the keys contained in this map.
*
* @return an unmodifiable view of the keys contained in this map.
*/
- public Set keySet() {
- return Collections.unmodifiableSet(_backingMap.keySet());
+ @Override
+ public Set keySet()
+ {
+ return Collections.unmodifiableSet( _backingMap.keySet() );
}
/**
@@ -369,31 +396,35 @@ public Set keySet() {
*
* @return an unmodifiable view of the values contained in this map.
*/
- public Collection values() {
- return Collections.unmodifiableCollection(_backingMap.values());
+ @Override
+ public Collection values()
+ {
+ return Collections.unmodifiableCollection( _backingMap.values() );
}
/**
- * Returns an unmodifiable view of the mappings contained in this
- * map. Each element in the returned set is a Map.Entry.
+ * Returns an unmodifiable view of the mappings contained in this map. Each element in the returned set is a
+ * Map.Entry.
*
* @return an unmodifiable view of the mappings contained in this map.
*/
- public Set entrySet() {
- return Collections.unmodifiableSet(_backingMap.entrySet());
+ @Override
+ public Set entrySet()
+ {
+ return Collections.unmodifiableSet( _backingMap.entrySet() );
}
-
/**
- * Compares the specified object with this map for equality. Returns
- * true if the given object is also a map and the two Maps
- * represent the same mappings.
+ * Compares the specified object with this map for equality. Returns true if the given object is also a map
+ * and the two Maps represent the same mappings.
*
- * @param o object to be compared for equality with this map.
+ * @param o object to be compared for equality with this map.
* @return true if the specified object is equal to this map.
*/
- public boolean equals(Object o) {
- return _backingMap.equals(o);
+ @Override
+ public boolean equals( Object o )
+ {
+ return _backingMap.equals( o );
}
/**
@@ -401,7 +432,9 @@ public boolean equals(Object o) {
*
* @return the hash code value for this map.
*/
- public int hashCode() {
+ @Override
+ public int hashCode()
+ {
return _backingMap.hashCode();
}
-}
\ No newline at end of file
+}
diff --git a/src/main/java/org/codehaus/plexus/util/CollectionUtils.java b/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
index 4192b79f..b16200fd 100644
--- a/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/CollectionUtils.java
@@ -28,7 +28,7 @@
/**
* @author olamy
- * @version $Id$
+ *
*/
public class CollectionUtils
{
@@ -37,25 +37,18 @@ public class CollectionUtils
// ----------------------------------------------------------------------
/**
- * Take a dominant and recessive Map and merge the key:value
- * pairs where the recessive Map may add key:value pairs to the dominant
- * Map but may not override any existing key:value pairs.
- *
- * If we have two Maps, a dominant and recessive, and
- * their respective keys are as follows:
- *
- * dominantMapKeys = { a, b, c, d, e, f }
- * recessiveMapKeys = { a, b, c, x, y, z }
- *
- * Then the result should be the following:
- *
- * resultantKeys = { a, b, c, d, e, f, x, y, z }
+ * Take a dominant and recessive Map and merge the key:value pairs where the recessive Map may add key:value pairs
+ * to the dominant Map but may not override any existing key:value pairs. If we have two Maps, a dominant and
+ * recessive, and their respective keys are as follows: dominantMapKeys = { a, b, c, d, e, f } recessiveMapKeys = {
+ * a, b, c, x, y, z } Then the result should be the following: resultantKeys = { a, b, c, d, e, f, x, y, z }
*
* @param dominantMap Dominant Map.
* @param recessiveMap Recessive Map.
+ * @param type
+ * @param type
* @return The result map with combined dominant and recessive values.
*/
- public static Map mergeMaps( Map dominantMap, Map recessiveMap )
+ public static Map mergeMaps( Map dominantMap, Map recessiveMap )
{
if ( dominantMap == null && recessiveMap == null )
@@ -68,21 +61,21 @@ public static Map mergeMaps( Map dominantMap, Map recessiveMap )
return dominantMap;
}
- if ( dominantMap == null && recessiveMap != null )
+ if ( dominantMap == null )
{
return recessiveMap;
}
- Map result = new HashMap();
+ Map result = new HashMap<>();
// Grab the keys from the dominant and recessive maps.
- Set dominantMapKeys = dominantMap.keySet();
- Set recessiveMapKeys = recessiveMap.keySet();
+ Set dominantMapKeys = dominantMap.keySet();
+ Set recessiveMapKeys = recessiveMap.keySet();
// Create the set of keys that will be contributed by the
// recessive Map by subtracting the intersection of keys
// from the recessive Map's keys.
- Collection contributingRecessiveKeys =
+ Collection contributingRecessiveKeys =
CollectionUtils.subtract( recessiveMapKeys,
CollectionUtils.intersection( dominantMapKeys, recessiveMapKeys ) );
@@ -90,9 +83,8 @@ public static Map mergeMaps( Map dominantMap, Map recessiveMap )
// Now take the keys we just found and extract the values from
// the recessiveMap and put the key:value pairs into the dominantMap.
- for ( Iterator i = contributingRecessiveKeys.iterator(); i.hasNext(); )
+ for ( K key : contributingRecessiveKeys )
{
- Object key = i.next();
result.put( key, recessiveMap.get( key ) );
}
@@ -100,16 +92,17 @@ public static Map mergeMaps( Map dominantMap, Map recessiveMap )
}
/**
- * Take a series of Maps and merge
- * them where the ordering of the array from 0..n
- * is the dominant order.
+ * Take a series of Maps and merge them where the ordering of the array from 0..n is the dominant
+ * order.
*
* @param maps An array of Maps to merge.
+ * @param type
+ * @param type
* @return Map The result Map produced after the merging process.
*/
- public static Map mergeMaps( Map[] maps )
+ public static Map mergeMaps( Map[] maps )
{
- Map result = null;
+ Map result;
if ( maps.length == 0 )
{
@@ -133,27 +126,28 @@ else if ( maps.length == 1 )
}
/**
- * Returns a {@link Collection} containing the intersection
- * of the given {@link Collection}s.
*
- * The cardinality of each element in the returned {@link Collection}
- * will be equal to the minimum of the cardinality of that element
- * in the two given {@link Collection}s.
+ * Returns a {@link Collection} containing the intersection of the given {@link Collection}s.
+ *
+ * The cardinality of each element in the returned {@link Collection} will be equal to the minimum of the
+ * cardinality of that element in the two given {@link Collection}s.
*
+ * @param a The first collection
+ * @param b The second collection
+ * @param the type
* @see Collection#retainAll
+ * @return The intersection of a and b, never null
*/
- public static Collection intersection( final Collection a, final Collection b )
+ public static Collection intersection( final Collection a, final Collection b )
{
- ArrayList list = new ArrayList();
- Map mapa = getCardinalityMap( a );
- Map mapb = getCardinalityMap( b );
- Set elts = new HashSet( a );
+ ArrayList list = new ArrayList<>();
+ Map mapa = getCardinalityMap( a );
+ Map mapb = getCardinalityMap( b );
+ Set elts = new HashSet<>( a );
elts.addAll( b );
- Iterator it = elts.iterator();
- while ( it.hasNext() )
+ for ( E obj : elts )
{
- Object obj = it.next();
- for ( int i = 0,m = Math.min( getFreq( obj, mapa ), getFreq( obj, mapb ) ); i < m; i++ )
+ for ( int i = 0, m = Math.min( getFreq( obj, mapa ), getFreq( obj, mapb ) ); i < m; i++ )
{
list.add( obj );
}
@@ -162,60 +156,61 @@ public static Collection intersection( final Collection a, final Collection b )
}
/**
- * Returns a {@link Collection} containing a - b.
- * The cardinality of each element e in the returned {@link Collection}
- * will be the cardinality of e in a minus the cardinality
- * of e in b, or zero, whichever is greater.
+ * Returns a {@link Collection} containing a - b. The cardinality of each element e in
+ * the returned {@link Collection} will be the cardinality of e in a minus the cardinality of e
+ * in b, or zero, whichever is greater.
*
+ * @param a The start collection
+ * @param b The collection that will be subtracted
+ * @param the type
* @see Collection#removeAll
+ * @return The result of the subtraction
*/
- public static Collection subtract( final Collection a, final Collection b )
+ public static Collection subtract( final Collection a, final Collection b )
{
- ArrayList list = new ArrayList( a );
- Iterator it = b.iterator();
- while ( it.hasNext() )
+ ArrayList list = new ArrayList<>( a );
+ for ( T aB : b )
{
- list.remove( it.next() );
+ list.remove( aB );
}
return list;
}
/**
- * Returns a {@link Map} mapping each unique element in
- * the given {@link Collection} to an {@link Integer}
- * representing the number of occurances of that element
- * in the {@link Collection}.
- * An entry that maps to null indicates that the
- * element does not appear in the given {@link Collection}.
+ * Returns a {@link Map} mapping each unique element in the given {@link Collection} to an {@link Integer}
+ * representing the number of occurrences of that element in the {@link Collection}. An entry that maps to
+ * null indicates that the element does not appear in the given {@link Collection}.
+ *
+ * @param col The collection to count cardinalities for
+ * @param the type
+ * @return A map of counts, indexed on each element in the collection
*/
- public static Map getCardinalityMap( final Collection col )
+ public static Map getCardinalityMap( final Collection col )
{
- HashMap count = new HashMap();
- Iterator it = col.iterator();
- while ( it.hasNext() )
+ HashMap count = new HashMap<>();
+ for ( E obj : col )
{
- Object obj = it.next();
- Integer c = (Integer) ( count.get( obj ) );
+ Integer c = count.get( obj );
if ( null == c )
{
- count.put( obj, new Integer( 1 ) );
+ count.put( obj, 1 );
}
else
{
- count.put( obj, new Integer( c.intValue() + 1 ) );
+ count.put( obj, c + 1 );
}
}
return count;
}
- public static List iteratorToList( Iterator it )
+ public static List iteratorToList( Iterator it )
{
if ( it == null )
{
throw new NullPointerException( "it cannot be null." );
}
- List list = new ArrayList();
+ List list = new ArrayList();
while ( it.hasNext() )
{
@@ -229,23 +224,18 @@ public static List iteratorToList( Iterator it )
//
// ----------------------------------------------------------------------
- private static final int getFreq( final Object obj, final Map freqMap )
+ private static int getFreq( final E obj, final Map freqMap )
{
try
{
- Object o = freqMap.get( obj );
- if ( o != null ) // minimize NullPointerExceptions
+ Integer o = freqMap.get( obj );
+ if ( o != null ) // minimize NullPointerExceptions
{
- return ( (Integer) o ).intValue();
+ return o;
}
}
- catch ( NullPointerException e )
- {
- // ignored
- }
- catch ( NoSuchElementException e )
+ catch ( NullPointerException | NoSuchElementException ignore )
{
- // ignored
}
return 0;
}
diff --git a/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java b/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java
index b7155406..5db6a903 100644
--- a/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java
+++ b/src/main/java/org/codehaus/plexus/util/DirectoryScanner.java
@@ -1,3 +1,5 @@
+package org.codehaus.plexus.util;
+
/*
* The Apache Software License, Version 1.1
*
@@ -17,11 +19,11 @@
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
+ * any, must include the following acknowledgement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.codehaus.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
+ * Alternately, this acknowledgement may appear in the software itself,
+ * if and wherever such third-party acknowledgements normally appear.
*
* 4. The names "Ant" and "Apache Software
* Foundation" must not be used to endorse or promote products derived
@@ -52,145 +54,137 @@
* .
*/
-package org.codehaus.plexus.util;
-
import java.io.File;
import java.io.IOException;
-import java.util.Vector;
+import java.util.ArrayList;
+import java.util.Arrays;
/**
- * Class for scanning a directory for files/directories which match certain
- * criteria.
- *
- * These criteria consist of selectors and patterns which have been specified.
- * With the selectors you can select which files you want to have included.
- * Files which are not selected are excluded. With patterns you can include
- * or exclude files based on their filename.
- *
- * The idea is simple. A given directory is recursively scanned for all files
- * and directories. Each file/directory is matched against a set of selectors,
- * including special support for matching against filenames with include and
- * and exclude patterns. Only files/directories which match at least one
- * pattern of the include pattern list or other file selector, and don't match
- * any pattern of the exclude pattern list or fail to match against a required
- * selector will be placed in the list of files/directories found.
- *
- * When no list of include patterns is supplied, "**" will be used, which
- * means that everything will be matched. When no list of exclude patterns is
- * supplied, an empty list is used, such that nothing will be excluded. When
- * no selectors are supplied, none are applied.
- *
- * The filename pattern matching is done as follows:
- * The name to be matched is split up in path segments. A path segment is the
- * name of a directory or file, which is bounded by
- * File.separator ('/' under UNIX, '\' under Windows).
- * For example, "abc/def/ghi/xyz.java" is split up in the segments "abc",
- * "def","ghi" and "xyz.java".
- * The same is done for the pattern against which should be matched.
- *
- * The segments of the name and the pattern are then matched against each
- * other. When '**' is used for a path segment in the pattern, it matches
- * zero or more path segments of the name.
- *
- * There is a special case regarding the use of File.separators
- * at the beginning of the pattern and the string to match:
- * When a pattern starts with a File.separator, the string
- * to match must also start with a File.separator.
- * When a pattern does not start with a File.separator, the
- * string to match may not start with a File.separator.
- * When one of these rules is not obeyed, the string will not
- * match.
- *
- * When a name path segment is matched against a pattern path segment, the
- * following special characters can be used:
+ *
Class for scanning a directory for files/directories which match certain criteria.
+ *
+ *
These criteria consist of selectors and patterns which have been specified. With the selectors you can select which
+ * files you want to have included. Files which are not selected are excluded. With patterns you can include or exclude
+ * files based on their filename.
+ *
+ *
The idea is simple. A given directory is recursively scanned for all files and directories. Each file/directory is
+ * matched against a set of selectors, including special support for matching against filenames with include and and
+ * exclude patterns. Only files/directories which match at least one pattern of the include pattern list or other file
+ * selector, and don't match any pattern of the exclude pattern list or fail to match against a required selector will
+ * be placed in the list of files/directories found.
+ *
+ *
When no list of include patterns is supplied, "**" will be used, which means that everything will be matched. When no
+ * list of exclude patterns is supplied, an empty list is used, such that nothing will be excluded. When no selectors
+ * are supplied, none are applied.
+ *
+ *
The filename pattern matching is done as follows: The name to be matched is split up in path segments. A path segment
+ * is the name of a directory or file, which is bounded by File.separator ('/' under UNIX, '\' under
+ * Windows). For example, "abc/def/ghi/xyz.java" is split up in the segments "abc", "def","ghi" and "xyz.java". The same
+ * is done for the pattern against which should be matched.
+ *
+ *
The segments of the name and the pattern are then matched against each other. When '**' is used for a path segment in
+ * the pattern, it matches zero or more path segments of the name.
+ *
+ *
There is a special case regarding the use of File.separators at the beginning of the pattern and the
+ * string to match:
+ * When a pattern starts with a File.separator, the string to match must also start with a
+ * File.separator. When a pattern does not start with a File.separator, the string to match
+ * may not start with a File.separator. When one of these rules is not obeyed, the string will not match.
+ *
+ *
When a name path segment is matched against a pattern path segment, the following special characters can be used:
* '*' matches zero or more characters
- * '?' matches one character.
- *
+ * '?' matches one character.
+ *
* Examples:
- *
- * "**\*.class" matches all .class files/dirs in a directory tree.
- *
- * "test\a??.java" matches all files/dirs which start with an 'a', then two
- * more characters and then ".java", in a directory called test.
- *
- * "**" matches everything in a directory tree.
- *
- * "**\test\**\XYZ*" matches all files/dirs which start with "XYZ" and where
- * there is a parent directory called test (e.g. "abc\test\def\ghi\XYZ123").
- *
- * Case sensitivity may be turned off if necessary. By default, it is
- * turned on.
- *
+ *
+ *
"**\*.class" matches all .class files/dirs in a directory tree.
+ *
"test\a??.java" matches all files/dirs which start with an 'a', then two more characters and then ".java", in a
+ * directory called test.
+ *
"**" matches everything in a directory tree.
+ *
"**\test\**\XYZ*" matches all files/dirs which start with "XYZ" and where there is a parent directory called test
+ * (e.g. "abc\test\def\ghi\XYZ123").
+ *
+ *
+ *
Case sensitivity may be turned off if necessary. By default, it is turned on.
- * This will scan a directory called test for .class files, but excludes all
- * files in all proper subdirectories of a directory called "modules"
+ *
+ *
This will scan a directory called test for .class files, but excludes all files in all proper subdirectories of a
+ * directory called "modules"
*
- * @author Arnout J. Kuiper
- * ajkuiper@wxs.nl
+ * @author Arnout J. Kuiper ajkuiper@wxs.nl
* @author Magesh Umasankar
* @author Bruce Atherton
* @author Antoine Levy-Lambert
*/
-public class DirectoryScanner extends AbstractScanner
+public class DirectoryScanner
+ extends AbstractScanner
{
- /** The base directory to be scanned. */
+ private static final String[] EMPTY_STRING_ARRAY = new String[0];
+
+ /**
+ * The base directory to be scanned.
+ */
protected File basedir;
- /** The files which matched at least one include and no excludes
- * and were selected.
+ /**
+ * The files which matched at least one include and no excludes and were selected.
*/
- protected Vector filesIncluded;
+ protected ArrayList filesIncluded;
- /** The files which did not match any includes or selectors. */
- protected Vector filesNotIncluded;
+ /**
+ * The files which did not match any includes or selectors.
+ */
+ protected ArrayList filesNotIncluded;
/**
- * The files which matched at least one include and at least
- * one exclude.
+ * The files which matched at least one include and at least one exclude.
*/
- protected Vector filesExcluded;
+ protected ArrayList filesExcluded;
- /** The directories which matched at least one include and no excludes
- * and were selected.
+ /**
+ * The directories which matched at least one include and no excludes and were selected.
*/
- protected Vector dirsIncluded;
+ protected ArrayList dirsIncluded;
- /** The directories which were found and did not match any includes. */
- protected Vector dirsNotIncluded;
+ /**
+ * The directories which were found and did not match any includes.
+ */
+ protected ArrayList dirsNotIncluded;
/**
- * The directories which matched at least one include and at least one
- * exclude.
+ * The directories which matched at least one include and at least one exclude.
*/
- protected Vector dirsExcluded;
+ protected ArrayList dirsExcluded;
- /** The files which matched at least one include and no excludes and
- * which a selector discarded.
+ /**
+ * The files which matched at least one include and no excludes and which a selector discarded.
*/
- protected Vector filesDeselected;
+ protected ArrayList filesDeselected;
- /** The directories which matched at least one include and no excludes
- * but which a selector discarded.
+ /**
+ * The directories which matched at least one include and no excludes but which a selector discarded.
*/
- protected Vector dirsDeselected;
+ protected ArrayList dirsDeselected;
- /** Whether or not our results were built by a slow scan. */
+ /**
+ * Whether or not our results were built by a slow scan.
+ */
protected boolean haveSlowResults = false;
/**
@@ -200,9 +194,13 @@ public class DirectoryScanner extends AbstractScanner
*/
private boolean followSymlinks = true;
- /** Whether or not everything tested so far has been included. */
+ /**
+ * Whether or not everything tested so far has been included.
+ */
protected boolean everythingIncluded = true;
+ private final char[][] tokenizedEmpty = MatchPattern.tokenizePathToCharArray( "", File.separator );
+
/**
* Sole constructor.
*/
@@ -211,26 +209,21 @@ public DirectoryScanner()
}
/**
- * Sets the base directory to be scanned. This is the directory which is
- * scanned recursively. All '/' and '\' characters are replaced by
- * File.separatorChar, so the separator used need not match
+ * Sets the base directory to be scanned. This is the directory which is scanned recursively. All '/' and '\'
+ * characters are replaced by File.separatorChar, so the separator used need not match
* File.separatorChar.
*
- * @param basedir The base directory to scan.
- * Must not be null.
+ * @param basedir The base directory to scan. Must not be null.
*/
public void setBasedir( String basedir )
{
- setBasedir( new File( basedir.replace( '/', File.separatorChar ).replace(
- '\\', File.separatorChar ) ) );
+ setBasedir( new File( basedir.replace( '/', File.separatorChar ).replace( '\\', File.separatorChar ) ) );
}
/**
- * Sets the base directory to be scanned. This is the directory which is
- * scanned recursively.
+ * Sets the base directory to be scanned. This is the directory which is scanned recursively.
*
- * @param basedir The base directory for scanning.
- * Should not be null.
+ * @param basedir The base directory for scanning. Should not be null.
*/
public void setBasedir( File basedir )
{
@@ -238,11 +231,11 @@ public void setBasedir( File basedir )
}
/**
- * Returns the base directory to be scanned.
- * This is the directory which is scanned recursively.
+ * Returns the base directory to be scanned. This is the directory which is scanned recursively.
*
* @return the base directory to be scanned
*/
+ @Override
public File getBasedir()
{
return basedir;
@@ -259,11 +252,9 @@ public void setFollowSymlinks( boolean followSymlinks )
}
/**
- * Returns whether or not the scanner has included all the files or
- * directories it has come across so far.
+ * Returns whether or not the scanner has included all the files or directories it has come across so far.
*
- * @return true if all files and directories which have
- * been found so far have been included.
+ * @return true if all files and directories which have been found so far have been included.
*/
public boolean isEverythingIncluded()
{
@@ -271,15 +262,15 @@ public boolean isEverythingIncluded()
}
/**
- * Scans the base directory for files which match at least one include
- * pattern and don't match any exclude patterns. If there are selectors
- * then the files must pass muster there, as well.
+ * Scans the base directory for files which match at least one include pattern and don't match any exclude patterns.
+ * If there are selectors then the files must pass muster there, as well.
*
- * @exception IllegalStateException if the base directory was set
- * incorrectly (i.e. if it is null, doesn't exist,
- * or isn't a directory).
+ * @throws IllegalStateException if the base directory was set incorrectly (i.e. if it is null, doesn't
+ * exist, or isn't a directory).
*/
- public void scan() throws IllegalStateException
+ @Override
+ public void scan()
+ throws IllegalStateException
{
if ( basedir == null )
{
@@ -287,58 +278,57 @@ public void scan() throws IllegalStateException
}
if ( !basedir.exists() )
{
- throw new IllegalStateException( "basedir " + basedir
- + " does not exist" );
+ throw new IllegalStateException( "basedir " + basedir + " does not exist" );
}
if ( !basedir.isDirectory() )
{
- throw new IllegalStateException( "basedir " + basedir
- + " is not a directory" );
+ throw new IllegalStateException( "basedir " + basedir + " is not a directory" );
}
setupDefaultFilters();
-
- filesIncluded = new Vector();
- filesNotIncluded = new Vector();
- filesExcluded = new Vector();
- filesDeselected = new Vector();
- dirsIncluded = new Vector();
- dirsNotIncluded = new Vector();
- dirsExcluded = new Vector();
- dirsDeselected = new Vector();
-
- if ( isIncluded( "" ) )
+ setupMatchPatterns();
+
+ filesIncluded = new ArrayList();
+ filesNotIncluded = new ArrayList();
+ filesExcluded = new ArrayList();
+ filesDeselected = new ArrayList();
+ dirsIncluded = new ArrayList();
+ dirsNotIncluded = new ArrayList();
+ dirsExcluded = new ArrayList();
+ dirsDeselected = new ArrayList();
+
+ if ( isIncluded( "", tokenizedEmpty ) )
{
- if ( !isExcluded( "" ) )
+
+ if ( !isExcluded( "", tokenizedEmpty ) )
{
if ( isSelected( "", basedir ) )
{
- dirsIncluded.addElement( "" );
+ dirsIncluded.add( "" );
}
else
{
- dirsDeselected.addElement( "" );
+ dirsDeselected.add( "" );
}
}
else
{
- dirsExcluded.addElement( "" );
+ dirsExcluded.add( "" );
}
}
else
{
- dirsNotIncluded.addElement( "" );
+ dirsNotIncluded.add( "" );
}
scandir( basedir, "", true );
}
/**
- * Top level invocation for a slow scan. A slow scan builds up a full
- * list of excluded/included files/directories, whereas a fast scan
- * will only have full results for included files, as it ignores
- * directories which can't possibly hold any included files/directories.
- *
- * Returns immediately if a slow scan has already been completed.
+ *
Top level invocation for a slow scan. A slow scan builds up a full list of excluded/included files/directories,
+ * whereas a fast scan will only have full results for included files, as it ignores directories which can't
+ * possibly hold any included files/directories.
+ *
+ *
Returns immediately if a slow scan has already been completed.
*/
protected void slowScan()
{
@@ -347,27 +337,22 @@ protected void slowScan()
return;
}
- String[] excl = new String[dirsExcluded.size()];
- dirsExcluded.copyInto( excl );
+ String[] excl = dirsExcluded.toArray( EMPTY_STRING_ARRAY );
+ String[] notIncl = dirsNotIncluded.toArray( EMPTY_STRING_ARRAY );
- String[] notIncl = new String[dirsNotIncluded.size()];
- dirsNotIncluded.copyInto( notIncl );
-
- for ( int i = 0; i < excl.length; i++ )
+ for ( String anExcl : excl )
{
- if ( !couldHoldIncluded( excl[i] ) )
+ if ( !couldHoldIncluded( anExcl ) )
{
- scandir( new File( basedir, excl[i] ),
- excl[i] + File.separator, false );
+ scandir( new File( basedir, anExcl ), anExcl + File.separator, false );
}
}
- for ( int i = 0; i < notIncl.length; i++ )
+ for ( String aNotIncl : notIncl )
{
- if ( !couldHoldIncluded( notIncl[i] ) )
+ if ( !couldHoldIncluded( aNotIncl ) )
{
- scandir( new File( basedir, notIncl[i] ),
- notIncl[i] + File.separator, false );
+ scandir( new File( basedir, aNotIncl ), aNotIncl + File.separator, false );
}
}
@@ -375,18 +360,14 @@ protected void slowScan()
}
/**
- * Scans the given directory for files and directories. Found files and
- * directories are placed in their respective collections, based on the
- * matching of includes, excludes, and the selectors. When a directory
- * is found, it is scanned recursively.
- *
- * @param dir The directory to scan. Must not be null.
- * @param vpath The path relative to the base directory (needed to
- * prevent problems with an absolute path when using
- * dir). Must not be null.
- * @param fast Whether or not this call is part of a fast scan.
- * @throws IOException
+ * Scans the given directory for files and directories. Found files and directories are placed in their respective
+ * collections, based on the matching of includes, excludes, and the selectors. When a directory is found, it is
+ * scanned recursively.
*
+ * @param dir The directory to scan. Must not be null.
+ * @param vpath The path relative to the base directory (needed to prevent problems with an absolute path when using
+ * dir). Must not be null.
+ * @param fast Whether or not this call is part of a fast scan.
* @see #filesIncluded
* @see #filesNotIncluded
* @see #filesExcluded
@@ -402,82 +383,74 @@ protected void scandir( File dir, String vpath, boolean fast )
if ( newfiles == null )
{
/*
- * two reasons are mentioned in the API docs for File.list
- * (1) dir is not a directory. This is impossible as
- * we wouldn't get here in this case.
- * (2) an IO error occurred (why doesn't it throw an exception
- * then???)
+ * two reasons are mentioned in the API docs for File.list (1) dir is not a directory. This is impossible as
+ * we wouldn't get here in this case. (2) an IO error occurred (why doesn't it throw an exception then???)
*/
-
/*
- * [jdcasey] (2) is apparently happening to me, as this is killing one of my tests...
- * this is affecting the assembly plugin, fwiw. I will initialize the newfiles array as
- * zero-length for now.
- *
- * NOTE: I can't find the problematic code, as it appears to come from a native method
- * in UnixFileSystem...
+ * [jdcasey] (2) is apparently happening to me, as this is killing one of my tests... this is affecting the
+ * assembly plugin, fwiw. I will initialize the newfiles array as zero-length for now. NOTE: I can't find
+ * the problematic code, as it appears to come from a native method in UnixFileSystem...
*/
/*
* [bentmann] A null array will also be returned from list() on NTFS when dir refers to a soft link or
* junction point whose target is not existent.
*/
- newfiles = new String[0];
+ newfiles = EMPTY_STRING_ARRAY;
// throw new IOException( "IO error scanning directory " + dir.getAbsolutePath() );
}
if ( !followSymlinks )
{
- Vector noLinks = new Vector();
- for ( int i = 0; i < newfiles.length; i++ )
+ try
{
- try
+ if ( isParentSymbolicLink( dir, null ) )
{
- if ( isSymbolicLink( dir, newfiles[i] ) )
+ for ( String newfile : newfiles )
{
- String name = vpath + newfiles[i];
- File file = new File( dir, newfiles[i] );
+ String name = vpath + newfile;
+ File file = new File( dir, newfile );
if ( file.isDirectory() )
{
- dirsExcluded.addElement( name );
+ dirsExcluded.add( name );
}
else
{
- filesExcluded.addElement( name );
+ filesExcluded.add( name );
}
}
- else
- {
- noLinks.addElement( newfiles[i] );
- }
- }
- catch ( IOException ioe )
- {
- String msg = "IOException caught while checking "
- + "for links, couldn't get cannonical path!";
- // will be caught and redirected to Ant's logging system
- System.err.println( msg );
- noLinks.addElement( newfiles[i] );
+ return;
}
}
- newfiles = new String[noLinks.size()];
- noLinks.copyInto( newfiles );
+ catch ( IOException ioe )
+ {
+ String msg = "IOException caught while checking for links!";
+ // will be caught and redirected to Ant's logging system
+ System.err.println( msg );
+ }
}
- for ( int i = 0; i < newfiles.length; i++ )
+ if ( filenameComparator != null )
{
- String name = vpath + newfiles[i];
- File file = new File( dir, newfiles[i] );
+ Arrays.sort( newfiles, filenameComparator );
+ }
+
+ for ( String newfile : newfiles )
+ {
+ String name = vpath + newfile;
+ char[][] tokenizedName = MatchPattern.tokenizePathToCharArray( name, File.separator );
+ File file = new File( dir, newfile );
if ( file.isDirectory() )
{
- if ( isIncluded( name ) )
+
+ if ( isIncluded( name, tokenizedName ) )
{
- if ( !isExcluded( name ) )
+ if ( !isExcluded( name, tokenizedName ) )
{
if ( isSelected( name, file ) )
{
- dirsIncluded.addElement( name );
+ dirsIncluded.add( name );
if ( fast )
{
scandir( file, name + File.separator, fast );
@@ -486,7 +459,7 @@ protected void scandir( File dir, String vpath, boolean fast )
else
{
everythingIncluded = false;
- dirsDeselected.addElement( name );
+ dirsDeselected.add( name );
if ( fast && couldHoldIncluded( name ) )
{
scandir( file, name + File.separator, fast );
@@ -497,7 +470,7 @@ protected void scandir( File dir, String vpath, boolean fast )
else
{
everythingIncluded = false;
- dirsExcluded.addElement( name );
+ dirsExcluded.add( name );
if ( fast && couldHoldIncluded( name ) )
{
scandir( file, name + File.separator, fast );
@@ -507,7 +480,7 @@ protected void scandir( File dir, String vpath, boolean fast )
else
{
everythingIncluded = false;
- dirsNotIncluded.addElement( name );
+ dirsNotIncluded.add( name );
if ( fast && couldHoldIncluded( name ) )
{
scandir( file, name + File.separator, fast );
@@ -520,30 +493,30 @@ protected void scandir( File dir, String vpath, boolean fast )
}
else if ( file.isFile() )
{
- if ( isIncluded( name ) )
+ if ( isIncluded( name, tokenizedName ) )
{
- if ( !isExcluded( name ) )
+ if ( !isExcluded( name, tokenizedName ) )
{
if ( isSelected( name, file ) )
{
- filesIncluded.addElement( name );
+ filesIncluded.add( name );
}
else
{
everythingIncluded = false;
- filesDeselected.addElement( name );
+ filesDeselected.add( name );
}
}
else
{
everythingIncluded = false;
- filesExcluded.addElement( name );
+ filesExcluded.add( name );
}
}
else
{
everythingIncluded = false;
- filesNotIncluded.addElement( name );
+ filesNotIncluded.add( name );
}
}
}
@@ -554,8 +527,8 @@ else if ( file.isFile() )
*
* @param name the filename to check for selecting
* @param file the java.io.File object for this filename
- * @return false when the selectors says that the file
- * should not be selected, true otherwise.
+ * @return false when the selectors says that the file should not be selected, true
+ * otherwise.
*/
protected boolean isSelected( String name, File file )
{
@@ -563,164 +536,151 @@ protected boolean isSelected( String name, File file )
}
/**
- * Returns the names of the files which matched at least one of the
- * include patterns and none of the exclude patterns.
- * The names are relative to the base directory.
+ * Returns the names of the files which matched at least one of the include patterns and none of the exclude
+ * patterns. The names are relative to the base directory.
*
- * @return the names of the files which matched at least one of the
- * include patterns and none of the exclude patterns.
+ * @return the names of the files which matched at least one of the include patterns and none of the exclude
+ * patterns.
*/
+ @Override
public String[] getIncludedFiles()
{
- String[] files = new String[filesIncluded.size()];
- filesIncluded.copyInto( files );
- return files;
+ return filesIncluded.toArray( EMPTY_STRING_ARRAY );
}
/**
- * Returns the names of the files which matched none of the include
- * patterns. The names are relative to the base directory. This involves
- * performing a slow scan if one has not already been completed.
- *
- * @return the names of the files which matched none of the include
- * patterns.
+ * Returns the names of the files which matched none of the include patterns. The names are relative to the base
+ * directory. This involves performing a slow scan if one has not already been completed.
*
+ * @return the names of the files which matched none of the include patterns.
* @see #slowScan
*/
public String[] getNotIncludedFiles()
{
slowScan();
- String[] files = new String[filesNotIncluded.size()];
- filesNotIncluded.copyInto( files );
- return files;
+ return filesNotIncluded.toArray( EMPTY_STRING_ARRAY );
}
/**
- * Returns the names of the files which matched at least one of the
- * include patterns and at least one of the exclude patterns.
- * The names are relative to the base directory. This involves
- * performing a slow scan if one has not already been completed.
- *
- * @return the names of the files which matched at least one of the
- * include patterns and at at least one of the exclude patterns.
+ * Returns the names of the files which matched at least one of the include patterns and at least one of the exclude
+ * patterns. The names are relative to the base directory. This involves performing a slow scan if one has not
+ * already been completed.
*
+ * @return the names of the files which matched at least one of the include patterns and at at least one of the
+ * exclude patterns.
* @see #slowScan
*/
public String[] getExcludedFiles()
{
slowScan();
- String[] files = new String[filesExcluded.size()];
- filesExcluded.copyInto( files );
- return files;
+ return filesExcluded.toArray( EMPTY_STRING_ARRAY );
}
/**
- *
Returns the names of the files which were selected out and
- * therefore not ultimately included.
- *
- *
The names are relative to the base directory. This involves
- * performing a slow scan if one has not already been completed.
+ *
Returns the names of the files which were selected out and therefore not ultimately included.
+ *
+ *
The names are relative to the base directory. This involves performing a slow scan if one has not already been
+ * completed.
*
* @return the names of the files which were deselected.
- *
* @see #slowScan
*/
public String[] getDeselectedFiles()
{
slowScan();
- String[] files = new String[filesDeselected.size()];
- filesDeselected.copyInto( files );
- return files;
+ return filesDeselected.toArray( EMPTY_STRING_ARRAY );
}
/**
- * Returns the names of the directories which matched at least one of the
- * include patterns and none of the exclude patterns.
- * The names are relative to the base directory.
+ * Returns the names of the directories which matched at least one of the include patterns and none of the exclude
+ * patterns. The names are relative to the base directory.
*
- * @return the names of the directories which matched at least one of the
- * include patterns and none of the exclude patterns.
+ * @return the names of the directories which matched at least one of the include patterns and none of the exclude
+ * patterns.
*/
+ @Override
public String[] getIncludedDirectories()
{
- String[] directories = new String[dirsIncluded.size()];
- dirsIncluded.copyInto( directories );
- return directories;
+ return dirsIncluded.toArray( EMPTY_STRING_ARRAY );
}
/**
- * Returns the names of the directories which matched none of the include
- * patterns. The names are relative to the base directory. This involves
- * performing a slow scan if one has not already been completed.
- *
- * @return the names of the directories which matched none of the include
- * patterns.
+ * Returns the names of the directories which matched none of the include patterns. The names are relative to the
+ * base directory. This involves performing a slow scan if one has not already been completed.
*
+ * @return the names of the directories which matched none of the include patterns.
* @see #slowScan
*/
public String[] getNotIncludedDirectories()
{
slowScan();
- String[] directories = new String[dirsNotIncluded.size()];
- dirsNotIncluded.copyInto( directories );
- return directories;
+ return dirsNotIncluded.toArray( EMPTY_STRING_ARRAY );
}
/**
- * Returns the names of the directories which matched at least one of the
- * include patterns and at least one of the exclude patterns.
- * The names are relative to the base directory. This involves
- * performing a slow scan if one has not already been completed.
- *
- * @return the names of the directories which matched at least one of the
- * include patterns and at least one of the exclude patterns.
+ * Returns the names of the directories which matched at least one of the include patterns and at least one of the
+ * exclude patterns. The names are relative to the base directory. This involves performing a slow scan if one has
+ * not already been completed.
*
+ * @return the names of the directories which matched at least one of the include patterns and at least one of the
+ * exclude patterns.
* @see #slowScan
*/
public String[] getExcludedDirectories()
{
slowScan();
- String[] directories = new String[dirsExcluded.size()];
- dirsExcluded.copyInto( directories );
- return directories;
+ return dirsExcluded.toArray( EMPTY_STRING_ARRAY );
}
/**
- *
Returns the names of the directories which were selected out and
- * therefore not ultimately included.
- *
- *
The names are relative to the base directory. This involves
- * performing a slow scan if one has not already been completed.
+ *
Returns the names of the directories which were selected out and therefore not ultimately included.
+ *
+ *
The names are relative to the base directory. This involves performing a slow scan if one has not already been
+ * completed.
*
* @return the names of the directories which were deselected.
- *
* @see #slowScan
*/
public String[] getDeselectedDirectories()
{
slowScan();
- String[] directories = new String[dirsDeselected.size()];
- dirsDeselected.copyInto( directories );
- return directories;
+ return dirsDeselected.toArray( EMPTY_STRING_ARRAY );
}
/**
- * Checks whether a given file is a symbolic link.
- *
- *
It doesn't really test for symbolic links but whether the
- * canonical and absolute paths of the file are identical - this
- * may lead to false positives on some platforms.
+ *
Checks whether a given file is a symbolic link.
+ *
+ *
It doesn't really test for symbolic links but whether the canonical and absolute paths of the file are identical
+ * - this may lead to false positives on some platforms.
+ *
*
* @param parent the parent directory of the file to test
* @param name the name of the file to test.
- *
+ * @return true if it's a symbolic link
+ * @throws java.io.IOException .
* @since Ant 1.5
*/
public boolean isSymbolicLink( File parent, String name )
throws IOException
{
- File resolvedParent = new File( parent.getCanonicalPath() );
- File toTest = new File( resolvedParent, name );
- return !toTest.getAbsolutePath().equals( toTest.getCanonicalPath() );
+ return NioFiles.isSymbolicLink( new File( parent, name ) );
+ }
+
+ /**
+ *
Checks whether the parent of this file is a symbolic link.
+ *
+ *
For java versions prior to 7 It doesn't really test for symbolic links but whether the canonical and absolute
+ * paths of the file are identical - this may lead to false positives on some platforms.
+ *
+ * @param parent the parent directory of the file to test
+ * @param name the name of the file to test.
+ * @return true if it's a symbolic link
+ * @throws java.io.IOException .
+ * @since Ant 1.5
+ */
+ public boolean isParentSymbolicLink( File parent, String name )
+ throws IOException
+ {
+ return NioFiles.isSymbolicLink( parent );
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/DirectoryWalkListener.java b/src/main/java/org/codehaus/plexus/util/DirectoryWalkListener.java
index a3bb5e2c..8e1fda24 100644
--- a/src/main/java/org/codehaus/plexus/util/DirectoryWalkListener.java
+++ b/src/main/java/org/codehaus/plexus/util/DirectoryWalkListener.java
@@ -19,8 +19,10 @@
import java.io.File;
/**
- * DirectoryWalkListener
- * @version $Id$
+ * Observes the actions of a {@link DirectoryWalker}.
+ *
+ *
+ * @see DirectoryWalker
*/
public interface DirectoryWalkListener
{
diff --git a/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java b/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java
index 6f621b09..2ffa4b0a 100644
--- a/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java
+++ b/src/main/java/org/codehaus/plexus/util/DirectoryWalker.java
@@ -24,7 +24,8 @@
/**
* DirectoryWalker
- * @version $Id$
+ *
+ *
*/
public class DirectoryWalker
{
@@ -71,8 +72,7 @@ public DirStackEntry( File d, int length )
}
/**
- * Calculate the next percentage offset.
- * Used by the next DirStackEntry.
+ * Calculate the next percentage offset. Used by the next DirStackEntry.
*
* @return the value for the next percentage offset.
*/
@@ -82,8 +82,7 @@ public double getNextPercentageOffset()
}
/**
- * Calculate the next percentage size.
- * Used by the next DirStackEntry.
+ * Calculate the next percentage size. Used by the next DirStackEntry.
*
* @return the value for the next percentage size.
*/
@@ -93,8 +92,7 @@ public double getNextPercentageSize()
}
/**
- * The percentage of the DirStackEntry right now.
- * Based on count, index, percentageOffset, and percentageSize.
+ * The percentage of the DirStackEntry right now. Based on count, index, percentageOffset, and percentageSize.
*
* @return the percentage right now.
*/
@@ -104,6 +102,7 @@ public int getPercentage()
return (int) Math.floor( percentageOffset + ( percentageWithinDir * percentageSize ) );
}
+ @Override
public String toString()
{
return "DirStackEntry[" + "dir=" + dir.getAbsolutePath() + ",count=" + count + ",index=" + index
@@ -117,38 +116,38 @@ public String toString()
private int baseDirOffset;
- private Stack dirStack;
+ private Stack dirStack;
- private List excludes;
+ private List excludes;
- private List includes;
+ private List includes;
private boolean isCaseSensitive = true;
- private List listeners;
+ private List listeners;
private boolean debugEnabled = false;
public DirectoryWalker()
{
- this.includes = new ArrayList();
- this.excludes = new ArrayList();
- this.listeners = new ArrayList();
+ includes = new ArrayList();
+ excludes = new ArrayList();
+ listeners = new ArrayList();
}
public void addDirectoryWalkListener( DirectoryWalkListener listener )
{
- this.listeners.add( listener );
+ listeners.add( listener );
}
public void addExclude( String exclude )
{
- this.excludes.add( fixPattern( exclude ) );
+ excludes.add( fixPattern( exclude ) );
}
public void addInclude( String include )
{
- this.includes.add( fixPattern( include ) );
+ includes.add( fixPattern( include ) );
}
/**
@@ -156,52 +155,45 @@ public void addInclude( String include )
*/
public void addSCMExcludes()
{
- String scmexcludes[] = DirectoryScanner.DEFAULTEXCLUDES;
- for ( int i = 0; i < scmexcludes.length; i++ )
+ String scmexcludes[] = AbstractScanner.DEFAULTEXCLUDES;
+ for ( String scmexclude : scmexcludes )
{
- addExclude( scmexcludes[i] );
+ addExclude( scmexclude );
}
}
private void fireStep( File file )
{
- DirStackEntry dsEntry = (DirStackEntry) dirStack.peek();
+ DirStackEntry dsEntry = dirStack.peek();
int percentage = dsEntry.getPercentage();
- Iterator it = this.listeners.iterator();
- while ( it.hasNext() )
+ for ( Object listener1 : listeners )
{
- DirectoryWalkListener listener = (DirectoryWalkListener) it.next();
+ DirectoryWalkListener listener = (DirectoryWalkListener) listener1;
listener.directoryWalkStep( percentage, file );
}
}
private void fireWalkFinished()
{
- Iterator it = this.listeners.iterator();
- while ( it.hasNext() )
+ for ( DirectoryWalkListener listener1 : listeners )
{
- DirectoryWalkListener listener = (DirectoryWalkListener) it.next();
- listener.directoryWalkFinished();
+ listener1.directoryWalkFinished();
}
}
private void fireWalkStarting()
{
- Iterator it = this.listeners.iterator();
- while ( it.hasNext() )
+ for ( DirectoryWalkListener listener1 : listeners )
{
- DirectoryWalkListener listener = (DirectoryWalkListener) it.next();
- listener.directoryWalkStarting( this.baseDir );
+ listener1.directoryWalkStarting( baseDir );
}
}
private void fireDebugMessage( String message )
{
- Iterator it = this.listeners.iterator();
- while ( it.hasNext() )
+ for ( DirectoryWalkListener listener1 : listeners )
{
- DirectoryWalkListener listener = (DirectoryWalkListener) it.next();
- listener.debug( message );
+ listener1.debug( message );
}
}
@@ -238,7 +230,7 @@ public File getBaseDir()
/**
* @return Returns the excludes.
*/
- public List getExcludes()
+ public List getExcludes()
{
return excludes;
}
@@ -246,28 +238,26 @@ public List getExcludes()
/**
* @return Returns the includes.
*/
- public List getIncludes()
+ public List getIncludes()
{
return includes;
}
private boolean isExcluded( String name )
{
- return isMatch( this.excludes, name );
+ return isMatch( excludes, name );
}
private boolean isIncluded( String name )
{
- return isMatch( this.includes, name );
+ return isMatch( includes, name );
}
- private boolean isMatch( List patterns, String name )
+ private boolean isMatch( List patterns, String name )
{
- Iterator it = patterns.iterator();
- while ( it.hasNext() )
+ for ( String pattern1 : patterns )
{
- String pattern = (String) it.next();
- if ( SelectorUtils.matchPath( pattern, name, isCaseSensitive ) )
+ if ( SelectorUtils.matchPath( pattern1, name, isCaseSensitive ) )
{
return true;
}
@@ -288,7 +278,7 @@ private String relativeToBaseDir( File file )
*/
public void removeDirectoryWalkListener( DirectoryWalkListener listener )
{
- this.listeners.remove( listener );
+ listeners.remove( listener );
}
/**
@@ -311,7 +301,7 @@ public void scan()
throw new IllegalStateException( "Scan Failure. BaseDir is not a directory." );
}
- if ( this.includes.isEmpty() )
+ if ( includes.isEmpty() )
{
// default to include all.
addInclude( "**" );
@@ -319,43 +309,43 @@ public void scan()
if ( debugEnabled )
{
- Iterator it;
- StringBuffer dbg = new StringBuffer();
+ Iterator it;
+ StringBuilder dbg = new StringBuilder();
dbg.append( "DirectoryWalker Scan" );
- dbg.append( "\n Base Dir: " ).append( this.baseDir.getAbsolutePath() );
+ dbg.append( "\n Base Dir: " ).append( baseDir.getAbsolutePath() );
dbg.append( "\n Includes: " );
- it = this.includes.iterator();
+ it = includes.iterator();
while ( it.hasNext() )
{
- String include = (String) it.next();
+ String include = it.next();
dbg.append( "\n - \"" ).append( include ).append( "\"" );
}
dbg.append( "\n Excludes: " );
- it = this.excludes.iterator();
+ it = excludes.iterator();
while ( it.hasNext() )
{
- String exclude = (String) it.next();
+ String exclude = it.next();
dbg.append( "\n - \"" ).append( exclude ).append( "\"" );
}
fireDebugMessage( dbg.toString() );
}
fireWalkStarting();
- dirStack = new Stack();
- scanDir( this.baseDir );
+ dirStack = new Stack();
+ scanDir( baseDir );
fireWalkFinished();
}
private void scanDir( File dir )
{
- File files[] = dir.listFiles();
+ File[] files = dir.listFiles();
if ( files == null )
{
return;
}
- DirStackEntry curStackEntry = new DirStackEntry( dir, files.length );
+ DirectoryWalker.DirStackEntry curStackEntry = new DirectoryWalker.DirStackEntry( dir, files.length );
if ( dirStack.isEmpty() )
{
curStackEntry.percentageOffset = 0;
@@ -363,7 +353,7 @@ private void scanDir( File dir )
}
else
{
- DirStackEntry previousStackEntry = (DirStackEntry) dirStack.peek();
+ DirectoryWalker.DirStackEntry previousStackEntry = dirStack.peek();
curStackEntry.percentageOffset = previousStackEntry.getNextPercentageOffset();
curStackEntry.percentageSize = previousStackEntry.getNextPercentageSize();
}
@@ -403,22 +393,20 @@ private void scanDir( File dir )
public void setBaseDir( File baseDir )
{
this.baseDir = baseDir;
- this.baseDirOffset = baseDir.getAbsolutePath().length();
+ baseDirOffset = baseDir.getAbsolutePath().length();
}
/**
* @param entries The excludes to set.
*/
- public void setExcludes( List entries )
+ public void setExcludes( List entries )
{
- this.excludes.clear();
+ excludes.clear();
if ( entries != null )
{
- Iterator it = entries.iterator();
- while ( it.hasNext() )
+ for ( String entry : entries )
{
- String pattern = (String) it.next();
- this.excludes.add( fixPattern( pattern ) );
+ excludes.add( fixPattern( entry ) );
}
}
}
@@ -426,16 +414,14 @@ public void setExcludes( List entries )
/**
* @param entries The includes to set.
*/
- public void setIncludes( List entries )
+ public void setIncludes( List entries )
{
- this.includes.clear();
+ includes.clear();
if ( entries != null )
{
- Iterator it = entries.iterator();
- while ( it.hasNext() )
+ for ( String entry : entries )
{
- String pattern = (String) it.next();
- this.includes.add( fixPattern( pattern ) );
+ includes.add( fixPattern( entry ) );
}
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/ExceptionUtils.java b/src/main/java/org/codehaus/plexus/util/ExceptionUtils.java
index d86c8844..540dbe98 100644
--- a/src/main/java/org/codehaus/plexus/util/ExceptionUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/ExceptionUtils.java
@@ -1,3 +1,5 @@
+package org.codehaus.plexus.util;
+
/* ====================================================================
* The Apache Software License, Version 1.1
*
@@ -17,11 +19,11 @@
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
+ * any, must include the following acknowledgement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.codehaus.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
+ * Alternately, this acknowledgement may appear in the software itself,
+ * if and wherever such third-party acknowledgements normally appear.
*
* 4. The names "The Jakarta Project", "Commons", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
@@ -51,7 +53,6 @@
* information on the Apache Software Foundation, please see
* .
*/
-package org.codehaus.plexus.util;
import java.io.PrintStream;
import java.io.PrintWriter;
@@ -67,71 +68,63 @@
import java.util.StringTokenizer;
/**
- *
ExceptionUtils provides utilities for manipulating
- * Throwable objects.
*
* @author Daniel Rall
* @author Dmitri Plotnikov
* @author Stephen Colebourne
* @since 1.0
- * @version $Id$
+ *
*/
public class ExceptionUtils
{
/**
- * Used when printing stack frames to denote the start of a
- * wrapped exception. Package private for accessibility by test
- * suite.
+ * Used when printing stack frames to denote the start of a wrapped exception. Package private for accessibility by
+ * test suite.
*/
static final String WRAPPED_MARKER = " [wrapped] ";
/**
- * The names of methods commonly used to access a wrapped
- * exception.
+ * The names of methods commonly used to access a wrapped exception.
*/
- protected static String[] CAUSE_METHOD_NAMES = {
- "getCause",
- "getNextException",
- "getTargetException",
- "getException",
- "getSourceException",
- "getRootCause",
- "getCausedByException",
- "getNested"
- };
+ protected static String[] CAUSE_METHOD_NAMES = { "getCause", "getNextException", "getTargetException",
+ "getException", "getSourceException", "getRootCause", "getCausedByException", "getNested" };
/**
- * Constructs a new ExceptionUtils. Protected to
- * discourage instantiation.
+ * Constructs a new ExceptionUtils. Protected to discourage instantiation.
*/
protected ExceptionUtils()
{
}
/**
- *
Adds to the list of method names used in the search for Throwable
- * objects.
+ *
+ * Adds to the list of method names used in the search for Throwable objects.
+ *
*
- * @param methodName the methodName to add to the list, null and empty strings are ignored
+ * @param methodName the methodName to add to the list, null and empty strings are ignored
*/
public static void addCauseMethodName( String methodName )
{
if ( methodName != null && methodName.length() > 0 )
{
- List list = new ArrayList( Arrays.asList( CAUSE_METHOD_NAMES ) );
+ List list = new ArrayList( Arrays.asList( CAUSE_METHOD_NAMES ) );
list.add( methodName );
- CAUSE_METHOD_NAMES = (String[]) list.toArray( new String[list.size()] );
+ CAUSE_METHOD_NAMES = list.toArray( new String[0] );
}
}
/**
- *
Introspects the specified Throwable to obtain the cause.
- *
- *
The method searches for methods with specific names that return a
- * Throwable object. This will pick up most wrapping exceptions,
- * including those from JDK 1.4, and
- * The method names can be added to using {@link #addCauseMethodName(String)}.
- * The default list searched for are:
+ *
+ * Introspects the specified Throwable to obtain the cause.
+ *
+ *
+ * The method searches for methods with specific names that return a Throwable object. This will pick
+ * up most wrapping exceptions, including those from JDK 1.4, and The method names can be added to using
+ * {@link #addCauseMethodName(String)}. The default list searched for are:
+ *
In the absence of any such method, the object is inspected for a
- * detail field assignable to a Throwable.
- *
- *
If none of the above is found, returns null.
+ *
+ * In the absence of any such method, the object is inspected for a detail field assignable to a
+ * Throwable.
+ *
+ *
+ * If none of the above is found, returns null.
+ *
*
* @param throwable The exception to introspect for a cause.
* @return The cause of the Throwable.
@@ -158,10 +153,12 @@ public static Throwable getCause( Throwable throwable )
}
/**
- *
Introspects the specified Throwable to obtain the cause
- * using a supplied array of method names.
+ *
+ * Introspects the specified Throwable to obtain the cause using a supplied array of method names.
+ *
*
* @param throwable The exception to introspect for a cause.
+ * @param methodNames the methods names to match
* @return The cause of the Throwable.
* @throws NullPointerException if the method names array is null or contains null
* @throws NullPointerException if the throwable is null
@@ -171,9 +168,9 @@ public static Throwable getCause( Throwable throwable, String[] methodNames )
Throwable cause = getCauseUsingWellKnownTypes( throwable );
if ( cause == null )
{
- for ( int i = 0; i < methodNames.length; i++ )
+ for ( String methodName : methodNames )
{
- cause = getCauseUsingMethodName( throwable, methodNames[i] );
+ cause = getCauseUsingMethodName( throwable, methodName );
if ( cause != null )
{
break;
@@ -189,11 +186,12 @@ public static Throwable getCause( Throwable throwable, String[] methodNames )
}
/**
- *
Walks through the exception chain to the last element -- the
- * "root" of the tree -- using {@link #getCause(Throwable)}, and
- * returns that exception.
+ *
+ * Walks through the exception chain to the last element -- the "root" of the tree -- using
+ * {@link #getCause(Throwable)}, and returns that exception.
+ *
*
- * @param throwable the throwable to get the root cause for
+ * @param throwable the throwable to get the root cause for
* @return The root cause of the Throwable.
*/
public static Throwable getRootCause( Throwable throwable )
@@ -211,13 +209,13 @@ public static Throwable getRootCause( Throwable throwable )
}
/**
- *
Uses instanceof checks to examine the exception,
- * looking for well known types which could contain chained or
- * wrapped exceptions.
+ *
+ * Uses instanceof checks to examine the exception, looking for well known types which could contain
+ * chained or wrapped exceptions.
+ *
*
- * @param throwable the exception to examine
- * @return The wrapped exception, or null if not
- * found.
+ * @param throwable the exception to examine
+ * @return The wrapped exception, or null if not found.
*/
private static Throwable getCauseUsingWellKnownTypes( Throwable throwable )
{
@@ -236,12 +234,13 @@ else if ( throwable instanceof InvocationTargetException )
}
/**
- *
Find a throwable by method name.
+ *
+ * Find a throwable by method name.
+ *
*
- * @param throwable the exception to examine
- * @param methodName the name of the method to find and invoke
- * @return The wrapped exception, or null if not
- * found.
+ * @param throwable the exception to examine
+ * @param methodName the name of the method to find and invoke
+ * @return The wrapped exception, or null if not found.
*/
private static Throwable getCauseUsingMethodName( Throwable throwable, String methodName )
{
@@ -277,12 +276,13 @@ private static Throwable getCauseUsingMethodName( Throwable throwable, String me
}
/**
- *
Find a throwable by field name.
+ *
+ * Find a throwable by field name.
+ *
*
- * @param throwable the exception to examine
- * @param fieldName the name of the attribute to examine
- * @return The wrapped exception, or null if not
- * found.
+ * @param throwable the exception to examine
+ * @param fieldName the name of the attribute to examine
+ * @return The wrapped exception, or null if not found.
*/
private static Throwable getCauseUsingFieldName( Throwable throwable, String fieldName )
{
@@ -315,10 +315,11 @@ private static Throwable getCauseUsingFieldName( Throwable throwable, String fie
}
/**
- *
Returns the number of Throwable objects in the
- * exception chain.
+ *
+ * Returns the number of Throwable objects in the exception chain.
+ *
*
- * @param throwable the exception to inspect
+ * @param throwable the exception to inspect
* @return The throwable count.
*/
public static int getThrowableCount( Throwable throwable )
@@ -334,27 +335,32 @@ public static int getThrowableCount( Throwable throwable )
}
/**
- *
Returns the list of Throwable objects in the
- * exception chain.
+ *
+ * Returns the list of Throwable objects in the exception chain.
+ *
*
- * @param throwable the exception to inspect
+ * @param throwable the exception to inspect
* @return The list of Throwable objects.
*/
public static Throwable[] getThrowables( Throwable throwable )
{
- List list = new ArrayList();
+ List list = new ArrayList<>();
while ( throwable != null )
{
list.add( throwable );
- throwable = ExceptionUtils.getCause( throwable );
+ throwable = getCause( throwable );
}
- return (Throwable[]) list.toArray( new Throwable[list.size()] );
+ return list.toArray( new Throwable[0] );
}
/**
- *
Delegates to {@link #indexOfThrowable(Throwable, Class, int)},
- * starting the search at the beginning of the exception chain.
- *
+ *
+ * Delegates to {@link #indexOfThrowable(Throwable, Class, int)}, starting the search at the beginning of the
+ * exception chain.
+ *
+ * @param throwable the exception to inspect
+ * @param type Class to look for
+ * @return index of the stack matching the type
* @see #indexOfThrowable(Throwable, Class, int)
*/
public static int indexOfThrowable( Throwable throwable, Class type )
@@ -363,21 +369,18 @@ public static int indexOfThrowable( Throwable throwable, Class type )
}
/**
- *
Returns the (zero based) index, of the first
- * Throwable that matches the specified type in the
- * exception chain of Throwable objects with an index
- * greater than or equal to the specified index, or
- * -1 if the type is not found.
+ *
+ * Returns the (zero based) index, of the first Throwable that matches the specified type in the
+ * exception chain of Throwable objects with an index greater than or equal to the specified index, or
+ * -1 if the type is not found.
+ *
*
- * @param throwable the exception to inspect
- * @param type Class to look for
- * @param fromIndex the (zero based) index of the starting
- * position in the chain to be searched
- * @return the first occurrence of the type in the chain, or
- * -1 if the type is not found
- * @throws IndexOutOfBoundsException If the fromIndex
- * argument is negative or not less than the count of
- * Throwables in the chain.
+ * @param throwable the exception to inspect
+ * @param type Class to look for
+ * @param fromIndex the (zero based) index of the starting position in the chain to be searched
+ * @return the first occurrence of the type in the chain, or -1 if the type is not found
+ * @throws IndexOutOfBoundsException If the fromIndex argument is negative or not less than the count
+ * of Throwables in the chain.
*/
public static int indexOfThrowable( Throwable throwable, Class type, int fromIndex )
{
@@ -401,27 +404,27 @@ public static int indexOfThrowable( Throwable throwable, Class type, int fromInd
}
/**
- * Prints a compact stack trace for the root cause of a throwable.
- * The compact stack trace starts with the root cause and prints
- * stack frames up to the place where it was caught and wrapped.
- * Then it prints the wrapped exception and continues with stack frames
- * until the wrapper exception is caught and wrapped again, etc.
+ * Prints a compact stack trace for the root cause of a throwable. The compact stack trace starts with the root
+ * cause and prints stack frames up to the place where it was caught and wrapped. Then it prints the wrapped
+ * exception and continues with stack frames until the wrapper exception is caught and wrapped again, etc.
*
- * The method is equivalent to t.printStackTrace() for throwables
- * that don't have nested causes.
+ * The method is equivalent to t.printStackTrace() for throwables that don't have nested causes.
+ * @param t the exception
+ * @param stream the stream
*/
public static void printRootCauseStackTrace( Throwable t, PrintStream stream )
{
String trace[] = getRootCauseStackTrace( t );
- for ( int i = 0; i < trace.length; i++ )
+ for ( String aTrace : trace )
{
- stream.println( trace[i] );
+ stream.println( aTrace );
}
stream.flush();
}
/**
* Equivalent to printRootCauseStackTrace(t, System.err)
+ * @param t the exception
*/
public static void printRootCauseStackTrace( Throwable t )
{
@@ -429,40 +432,41 @@ public static void printRootCauseStackTrace( Throwable t )
}
/**
- * Same as printRootCauseStackTrace(t, stream), except it takes
- * a PrintWriter as an argument.
+ * Same as printRootCauseStackTrace(t, stream), except it takes a PrintWriter as an argument.
+ * @param t the cause
+ * @param writer the writer
*/
public static void printRootCauseStackTrace( Throwable t, PrintWriter writer )
{
String trace[] = getRootCauseStackTrace( t );
- for ( int i = 0; i < trace.length; i++ )
+ for ( String aTrace : trace )
{
- writer.println( trace[i] );
+ writer.println( aTrace );
}
writer.flush();
}
/**
- * Creates a compact stack trace for the root cause of the supplied
- * throwable.
- *
- * See printRootCauseStackTrace(Throwable t, PrintStream s)
+ * Creates a compact stack trace for the root cause of the supplied throwable. See
+ * printRootCauseStackTrace(Throwable t, PrintStream s)
+ * @param t the cause
+ * @return the Stack
*/
public static String[] getRootCauseStackTrace( Throwable t )
{
- Throwable throwables[] = getThrowables( t );
+ Throwable[] throwables = getThrowables( t );
int count = throwables.length;
- ArrayList frames = new ArrayList();
- List nextTrace = getStackFrameList( throwables[count - 1] );
+ ArrayList frames = new ArrayList<>();
+ List nextTrace = getStackFrameList( throwables[count - 1] );
for ( int i = count; --i >= 0; )
{
- List trace = nextTrace;
+ List trace = nextTrace;
if ( i != 0 )
{
nextTrace = getStackFrameList( throwables[i - 1] );
removeCommonFrames( trace, nextTrace );
}
- if ( i == count - 1 )
+ if ( i == ( count - 1 ) )
{
frames.add( throwables[i].toString() );
}
@@ -470,21 +474,21 @@ public static String[] getRootCauseStackTrace( Throwable t )
{
frames.add( WRAPPED_MARKER + throwables[i].toString() );
}
- for ( int j = 0; j < trace.size(); j++ )
+ for ( String aTrace : trace )
{
- frames.add( trace.get( j ) );
+ frames.add( aTrace );
}
}
- return (String[]) frames.toArray( new String[0] );
+ return frames.toArray( new String[0] );
}
/**
* Given two stack traces, removes common frames from the cause trace.
*
- * @param causeFrames stack trace of a cause throwable
+ * @param causeFrames stack trace of a cause throwable
* @param wrapperFrames stack trace of a wrapper throwable
*/
- private static void removeCommonFrames( List causeFrames, List wrapperFrames )
+ private static void removeCommonFrames( List causeFrames, List wrapperFrames )
{
int causeFrameIndex = causeFrames.size() - 1;
int wrapperFrameIndex = wrapperFrames.size() - 1;
@@ -492,8 +496,8 @@ private static void removeCommonFrames( List causeFrames, List wrapperFrames )
{
// Remove the frame from the cause trace if it is the same
// as in the wrapper trace
- String causeFrame = (String) causeFrames.get( causeFrameIndex );
- String wrapperFrame = (String) wrapperFrames.get( wrapperFrameIndex );
+ String causeFrame = causeFrames.get( causeFrameIndex );
+ String wrapperFrame = wrapperFrames.get( wrapperFrameIndex );
if ( causeFrame.equals( wrapperFrame ) )
{
causeFrames.remove( causeFrameIndex );
@@ -504,12 +508,10 @@ private static void removeCommonFrames( List causeFrames, List wrapperFrames )
}
/**
- * A convenient way of extracting the stack trace from an
- * exception.
+ * A convenient way of extracting the stack trace from an exception.
*
* @param t The Throwable.
- * @return The stack trace as generated by the exception's
- * printStackTrace(PrintWriter) method.
+ * @return The stack trace as generated by the exception's printStackTrace(PrintWriter) method.
*/
public static String getStackTrace( Throwable t )
{
@@ -530,10 +532,10 @@ public static String getFullStackTrace( Throwable t )
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter( sw, true );
Throwable[] ts = getThrowables( t );
- for ( int i = 0; i < ts.length; i++ )
+ for ( Throwable t1 : ts )
{
- ts[i].printStackTrace( pw );
- if ( isNestedThrowable( ts[i] ) )
+ t1.printStackTrace( pw );
+ if ( isNestedThrowable( t1 ) )
{
break;
}
@@ -563,12 +565,11 @@ else if ( throwable instanceof InvocationTargetException )
return true;
}
- int sz = CAUSE_METHOD_NAMES.length;
- for ( int i = 0; i < sz; i++ )
+ for ( String CAUSE_METHOD_NAME : CAUSE_METHOD_NAMES )
{
try
{
- Method method = throwable.getClass().getMethod( CAUSE_METHOD_NAMES[i], null );
+ Method method = throwable.getClass().getMethod( CAUSE_METHOD_NAME, null );
if ( method != null )
{
return true;
@@ -601,12 +602,11 @@ else if ( throwable instanceof InvocationTargetException )
}
/**
- * Captures the stack trace associated with the specified
- * Throwable object, decomposing it into a list of
- * stack frames.
+ * Captures the stack trace associated with the specified Throwable object, decomposing it into a list
+ * of stack frames.
*
* @param t The Throwable.
- * @return An array of strings describing each stack frame.
+ * @return An array of strings describing each stack frame.
*/
public static String[] getStackFrames( Throwable t )
{
@@ -614,37 +614,33 @@ public static String[] getStackFrames( Throwable t )
}
/**
- * Functionality shared between the
- * getStackFrames(Throwable) methods of this and the
- * classes.
+ * Functionality shared between the getStackFrames(Throwable) methods of this and the classes.
*/
static String[] getStackFrames( String stackTrace )
{
String linebreak = System.getProperty( "line.separator" );
StringTokenizer frames = new StringTokenizer( stackTrace, linebreak );
- List list = new LinkedList();
+ List list = new LinkedList();
while ( frames.hasMoreTokens() )
{
list.add( frames.nextToken() );
}
- return (String[]) list.toArray( new String[]{
- } );
+ return list.toArray( new String[0] );
}
/**
- * Produces a List of stack frames - the message is not included.
- * This works in most cases - it will only fail if the exception message
- * contains a line that starts with: " at".
+ * Produces a List of stack frames - the message is not included. This works in most cases - it will only fail if
+ * the exception message contains a line that starts with: " at".
*
* @param t is any throwable
* @return List of stack frames
*/
- static List getStackFrameList( Throwable t )
+ static List getStackFrameList( Throwable t )
{
String stackTrace = getStackTrace( t );
String linebreak = System.getProperty( "line.separator" );
StringTokenizer frames = new StringTokenizer( stackTrace, linebreak );
- List list = new LinkedList();
+ List list = new LinkedList();
boolean traceStarted = false;
while ( frames.hasMoreTokens() )
{
diff --git a/src/main/java/org/codehaus/plexus/util/Expand.java b/src/main/java/org/codehaus/plexus/util/Expand.java
index 7f2534d9..5b195811 100644
--- a/src/main/java/org/codehaus/plexus/util/Expand.java
+++ b/src/main/java/org/codehaus/plexus/util/Expand.java
@@ -19,11 +19,11 @@
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
+ * any, must include the following acknowledgement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.codehaus.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
+ * Alternately, this acknowledgement may appear in the software itself,
+ * if and wherever such third-party acknowledgements normally appear.
*
* 4. The names "The Jakarta Project", "Ant", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
@@ -55,11 +55,11 @@
*/
import java.io.File;
-import java.io.FileInputStream;
import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.file.Files;
import java.util.Date;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -70,13 +70,13 @@
* @author costin@dnt.ro
* @author Stefan Bodewig
* @author Magesh Umasankar
- * @since Ant 1.1 @ant.task category="packaging" name="unzip" name="unjar"
- * name="unwar"
- * @version $Id$
+ * @since Ant 1.1 @ant.task category="packaging" name="unzip" name="unjar" name="unwar"
+ *
*/
public class Expand
{
- private File dest;//req
+
+ private File dest;// req
private File source;// req
@@ -93,69 +93,37 @@ public void execute()
expandFile( source, dest );
}
- /*
- * This method is to be overridden by extending unarchival tasks.
- */
- /**
- * Description of the Method
- */
- protected void expandFile( File srcF, File dir )
+ protected void expandFile( final File srcF, final File dir )
throws Exception
{
- ZipInputStream zis = null;
- try
+ // code from WarExpand
+ try ( ZipInputStream zis = new ZipInputStream( Files.newInputStream( srcF.toPath() ) ) )
{
- // code from WarExpand
- zis = new ZipInputStream( new FileInputStream( srcF ) );
- ZipEntry ze = null;
-
- while ( ( ze = zis.getNextEntry() ) != null )
+ for ( ZipEntry ze = zis.getNextEntry(); ze != null; ze = zis.getNextEntry() )
{
- extractFile( srcF,
- dir, zis,
- ze.getName(),
- new Date( ze.getTime() ),
- ze.isDirectory() );
+ extractFile( srcF, dir, zis, ze.getName(), new Date( ze.getTime() ), ze.isDirectory() );
}
-
- //log("expand complete", Project.MSG_VERBOSE);
}
catch ( IOException ioe )
{
- throw new Exception("Error while expanding " + srcF.getPath(), ioe);
- }
- finally
- {
- if ( zis != null )
- {
- try
- {
- zis.close();
- }
- catch ( IOException e )
- {
- }
- }
+ throw new Exception( "Error while expanding " + srcF.getPath(), ioe );
}
}
- /**
- * Description of the Method
- */
- protected void extractFile( File srcF,
- File dir,
- InputStream compressedInputStream,
- String entryName,
- Date entryDate,
- boolean isDirectory )
+ protected void extractFile( File srcF, File dir, InputStream compressedInputStream, String entryName,
+ Date entryDate, boolean isDirectory )
throws Exception
{
File f = FileUtils.resolveFile( dir, entryName );
+
+ if ( !f.getAbsolutePath().startsWith( dir.getAbsolutePath() ) )
+ {
+ throw new IOException( "Entry '" + entryName + "' outside the target directory." );
+ }
+
try
{
- if ( !overwrite && f.exists()
- &&
- f.lastModified() >= entryDate.getTime() )
+ if ( !overwrite && f.exists() && f.lastModified() >= entryDate.getTime() )
{
return;
}
@@ -170,34 +138,14 @@ protected void extractFile( File srcF,
}
else
{
- byte[] buffer = new byte[1024];
- int length = 0;
- FileOutputStream fos = null;
- try
- {
- fos = new FileOutputStream( f );
-
- while ( ( length =
- compressedInputStream.read( buffer ) ) >= 0 )
- {
- fos.write( buffer, 0, length );
- }
-
- fos.close();
- fos = null;
- }
- finally
+ byte[] buffer = new byte[65536];
+
+ try ( OutputStream fos = Files.newOutputStream( f.toPath() ) )
{
- if ( fos != null )
- {
- try
- {
- fos.close();
- }
- catch ( IOException e )
- {
- }
- }
+ for ( int length = compressedInputStream.read( buffer );
+ length >= 0;
+ fos.write( buffer, 0, length ), length = compressedInputStream.read( buffer ) )
+ ;
}
}
@@ -211,8 +159,7 @@ protected void extractFile( File srcF,
}
/**
- * Set the destination directory. File will be unzipped into the destination
- * directory.
+ * Set the destination directory. File will be unzipped into the destination directory.
*
* @param d Path to the directory.
*/
@@ -232,11 +179,11 @@ public void setSrc( File s )
}
/**
- * Should we overwrite files in dest, even if they are newer than the
- * corresponding entries in the archive?
+ * @param b Should we overwrite files in dest, even if they are newer than the corresponding entries in the archive?
*/
public void setOverwrite( boolean b )
{
overwrite = b;
}
+
}
diff --git a/src/main/java/org/codehaus/plexus/util/FastMap.java b/src/main/java/org/codehaus/plexus/util/FastMap.java
index 1a932609..9bb9e82f 100644
--- a/src/main/java/org/codehaus/plexus/util/FastMap.java
+++ b/src/main/java/org/codehaus/plexus/util/FastMap.java
@@ -1,9 +1,10 @@
+package org.codehaus.plexus.util;
+
/*
* J.A.D.E. Java(TM) Addition to Default Environment.
* Latest release available at http://jade.dautelle.com/
* This class is public domain (not copyrighted).
*/
-package org.codehaus.plexus.util;
import java.io.IOException;
import java.io.ObjectInputStream;
@@ -17,40 +18,44 @@
import java.util.Set;
/**
- *
This class represents a Map collection with real-time
- * behavior. Unless the map's size exceeds its current capacity,
- * no dynamic memory allocation is ever performed and response time is
- * extremely fast and consistent.
- *
- *
Our benchmark
- * indicates that {@link FastMap#put FastMap.put(key, value)} is up to
- * 5x faster than java.util.HashMap.put(key, value).
- * This difference is mostly due to the cost of the Map.Entry
- * allocations that {@link FastMap} avoids by recycling its entries
- * (see note below).
- *
- *
{@link FastMap} has a predictable iteration order, which is the order
- * in which keys were inserted into the map (similar to
- * java.util.LinkedHashMap collection class).
- *
- *
Applications may change the resizing policy of {@link FastMap}
- * by overriding the {@link #sizeChanged} method. For example, to improve
- * predictability, automatic resizing can be disabled.
- *
- *
This implementation is not synchronized. Multiple threads accessing
- * or modifying the collection must be synchronized externally.
- *
- *
Note: To avoid dynamic memory allocations, {@link FastMap}
- * maintains an internal pool of Map.Entry objects. The size
- * of the pool is determined by the map's capacity. When an entry is
- * removed from the map, it is automatically restored to the pool.
+ *
+ * This class represents a Map collection with real-time behavior. Unless the map's size exceeds its
+ * current capacity, no dynamic memory allocation is ever performed and response time is extremely fast and
+ * consistent.
+ *
+ *
+ * Our benchmark indicates that {@link FastMap#put
+ * FastMap.put(key, value)} is up to 5x faster than java.util.HashMap.put(key, value). This
+ * difference is mostly due to the cost of the Map.Entry allocations that {@link FastMap} avoids by
+ * recycling its entries (see note below).
+ *
+ *
+ * {@link FastMap} has a predictable iteration order, which is the order in which keys were inserted into the map
+ * (similar to java.util.LinkedHashMap collection class).
+ *
+ *
+ * Applications may change the resizing policy of {@link FastMap} by overriding the {@link #sizeChanged} method. For
+ * example, to improve predictability, automatic resizing can be disabled.
+ *
+ *
+ * This implementation is not synchronized. Multiple threads accessing or modifying the collection must be synchronized
+ * externally.
+ *
+ *
+ * Note: To avoid dynamic memory allocations, {@link FastMap} maintains an internal pool of
+ * Map.Entry objects. The size of the pool is determined by the map's capacity. When an entry is removed
+ * from the map, it is automatically restored to the pool.
+ *
+ *
+ * This class is public domain (not copyrighted).
+ *
*
- *
This class is public domain (not copyrighted).
- *
- * @author Jean-Marie Dautelle
+ * @author Jean-Marie Dautelle
* @version 5.3, October 31 2003
*/
-public class FastMap implements Map, Cloneable, Serializable {
+public class FastMap
+ implements Map, Cloneable, Serializable
+{
/**
* Holds the map's hash table.
@@ -90,207 +95,227 @@ public class FastMap implements Map, Cloneable, Serializable {
/**
* Creates a {@link FastMap} with a capacity of 256 entries.
*/
- public FastMap() {
- initialize(256);
+ public FastMap()
+ {
+ initialize( 256 );
}
-
+
/**
- * Creates a {@link FastMap}, copy of the specified Map.
- * If the specified map is not an instance of {@link FastMap}, the
- * newly created map has a capacity set to the specified map's size.
- * The copy has the same order as the original, regardless of the original
- * map's implementation:
+ * Creates a {@link FastMap}, copy of the specified Map. If the specified map is not an instance of
+ * {@link FastMap}, the newly created map has a capacity set to the specified map's size. The copy has the same
+ * order as the original, regardless of the original map's implementation:
+ *
+ *
*
- * @param map the map whose mappings are to be placed in this map.
+ * @param map the map whose mappings are to be placed in this map.
*/
- public FastMap(Map map) {
- int capacity = (map instanceof FastMap) ?
- ((FastMap)map).capacity() : map.size();
- initialize(capacity);
- putAll(map);
+ public FastMap( Map map )
+ {
+ int capacity = ( map instanceof FastMap ) ? ( (FastMap) map ).capacity() : map.size();
+ initialize( capacity );
+ putAll( map );
}
/**
- * Creates a {@link FastMap} with the specified capacity. Unless the
- * capacity is exceeded, operations on this map do not allocate entries.
- * For optimum performance, the capacity should be of the same order
- * of magnitude or larger than the expected map's size.
+ * Creates a {@link FastMap} with the specified capacity. Unless the capacity is exceeded, operations on this map do
+ * not allocate entries. For optimum performance, the capacity should be of the same order of magnitude or larger
+ * than the expected map's size.
*
- * @param capacity the number of buckets in the hash table; it also
- * defines the number of pre-allocated entries.
+ * @param capacity the number of buckets in the hash table; it also defines the number of pre-allocated entries.
*/
- public FastMap(int capacity) {
- initialize(capacity);
+ public FastMap( int capacity )
+ {
+ initialize( capacity );
}
/**
- * Returns the number of key-value mappings in this {@link FastMap}.
+ * Returns the number of key-value mappings in this {@link FastMap}.
*
* @return this map's size.
*/
- public int size() {
+ @Override
+ public int size()
+ {
return _size;
}
/**
- * Returns the capacity of this {@link FastMap}. The capacity defines
- * the number of buckets in the hash table, as well as the maximum number
- * of entries the map may contain without allocating memory.
+ * Returns the capacity of this {@link FastMap}. The capacity defines the number of buckets in the hash table, as
+ * well as the maximum number of entries the map may contain without allocating memory.
*
* @return this map's capacity.
*/
- public int capacity() {
+ public int capacity()
+ {
return _capacity;
}
/**
* Indicates if this {@link FastMap} contains no key-value mappings.
*
- * @return true if this map contains no key-value mappings;
- * false otherwise.
+ * @return true if this map contains no key-value mappings; false otherwise.
*/
- public boolean isEmpty() {
+ @Override
+ public boolean isEmpty()
+ {
return _size == 0;
}
/**
- * Indicates if this {@link FastMap} contains a mapping for the specified
- * key.
+ * Indicates if this {@link FastMap} contains a mapping for the specified key.
*
- * @param key the key whose presence in this map is to be tested.
- * @return true if this map contains a mapping for the
- * specified key; false otherwise.
+ * @param key the key whose presence in this map is to be tested.
+ * @return true if this map contains a mapping for the specified key; false otherwise.
* @throws NullPointerException if the key is null.
*/
- public boolean containsKey(Object key) {
- EntryImpl entry = _entries[keyHash(key) & _mask];
- while (entry != null) {
- if (key.equals(entry._key) ) {
+ @Override
+ public boolean containsKey( Object key )
+ {
+ EntryImpl entry = _entries[keyHash( key ) & _mask];
+ while ( entry != null )
+ {
+ if ( key.equals( entry._key ) )
+ {
return true;
}
entry = entry._next;
}
- return false;
+ return false;
}
/**
- * Indicates if this {@link FastMap} maps one or more keys to the
- * specified value.
+ * Indicates if this {@link FastMap} maps one or more keys to the specified value.
*
- * @param value the value whose presence in this map is to be tested.
- * @return true if this map maps one or more keys to the
- * specified value.
+ * @param value the value whose presence in this map is to be tested.
+ * @return true if this map maps one or more keys to the specified value.
* @throws NullPointerException if the key is null.
*/
- public boolean containsValue(Object value) {
+ @Override
+ public boolean containsValue( Object value )
+ {
EntryImpl entry = _mapFirst;
- while (entry != null) {
- if (value.equals(entry._value) ) {
+ while ( entry != null )
+ {
+ if ( value.equals( entry._value ) )
+ {
return true;
}
entry = entry._after;
}
- return false;
+ return false;
}
/**
- * Returns the value to which this {@link FastMap} maps the specified key.
+ * Returns the value to which this {@link FastMap} maps the specified key.
*
- * @param key the key whose associated value is to be returned.
- * @return the value to which this map maps the specified key,
- * or null if there is no mapping for the key.
+ * @param key the key whose associated value is to be returned.
+ * @return the value to which this map maps the specified key, or null if there is no mapping for the
+ * key.
* @throws NullPointerException if key is null.
*/
- public Object get(Object key) {
- EntryImpl entry = _entries[keyHash(key) & _mask];
- while (entry != null) {
- if (key.equals(entry._key) ) {
+ @Override
+ public V get( Object key )
+ {
+ EntryImpl entry = _entries[keyHash( key ) & _mask];
+ while ( entry != null )
+ {
+ if ( key.equals( entry._key ) )
+ {
return entry._value;
}
entry = entry._next;
}
- return null;
+ return null;
}
-
+
/**
- * Returns the entry with the specified key.
+ * Returns the entry with the specified key.
*
* @param key the key whose associated entry is to be returned.
* @return the entry for the specified key or null if none.
*/
- public Map.Entry getEntry(Object key) {
- EntryImpl entry = _entries[keyHash(key) & _mask];
- while (entry != null) {
- if (key.equals(entry._key)) {
+ public Map.Entry getEntry( Object key )
+ {
+ EntryImpl entry = _entries[keyHash( key ) & _mask];
+ while ( entry != null )
+ {
+ if ( key.equals( entry._key ) )
+ {
return entry;
}
entry = entry._next;
}
- return null;
+ return null;
}
/**
- * Associates the specified value with the specified key in this
- * {@link FastMap}. If the {@link FastMap} previously contained a mapping
- * for this key, the old value is replaced.
+ * Associates the specified value with the specified key in this {@link FastMap}. If the {@link FastMap} previously
+ * contained a mapping for this key, the old value is replaced.
*
- * @param key the key with which the specified value is to be associated.
- * @param value the value to be associated with the specified key.
- * @return the previous value associated with specified key,
- * or null if there was no mapping for key.
- * A null return can also indicate that the map
- * previously associated null with the specified key.
+ * @param key the key with which the specified value is to be associated.
+ * @param value the value to be associated with the specified key.
+ * @return the previous value associated with specified key, or null if there was no mapping for key. A
+ * null return can also indicate that the map previously associated null with the
+ * specified key.
* @throws NullPointerException if the key is null.
*/
- public Object put(Object key, Object value) {
- EntryImpl entry = _entries[keyHash(key) & _mask];
- while (entry != null) {
- if (key.equals(entry._key) ) {
- Object prevValue = entry._value;
+ @Override
+ public Object put( Object key, Object value )
+ {
+ EntryImpl entry = _entries[keyHash( key ) & _mask];
+ while ( entry != null )
+ {
+ if ( key.equals( entry._key ) )
+ {
+ Object prevValue = entry._value;
entry._value = value;
return prevValue;
}
entry = entry._next;
}
// No previous mapping.
- addEntry(key, value);
+ addEntry( key, value );
return null;
}
/**
- * Copies all of the mappings from the specified map to this
- * {@link FastMap}.
+ * Copies all of the mappings from the specified map to this {@link FastMap}.
*
- * @param map the mappings to be stored in this map.
- * @throws NullPointerException the specified map is null, or
- * the specified map contains null keys.
+ * @param map the mappings to be stored in this map.
+ * @throws NullPointerException the specified map is null, or the specified map contains
+ * null keys.
*/
- public void putAll(Map map) {
- for (Iterator i = map.entrySet().iterator(); i.hasNext(); ) {
- Map.Entry e = (Map.Entry) i.next();
- addEntry(e.getKey(), e.getValue());
+ @Override
+ public void putAll( Map extends K, ? extends V> map )
+ {
+ for ( Entry extends K, ? extends V> entry : map.entrySet() )
+ {
+ addEntry( entry.getKey(), entry.getValue() );
}
}
/**
* Removes the mapping for this key from this {@link FastMap} if present.
*
- * @param key the key whose mapping is to be removed from the map.
- * @return previous value associated with specified key,
- * or null if there was no mapping for key.
- * A null return can also indicate that the map
- * previously associated null with the specified key.
+ * @param key the key whose mapping is to be removed from the map.
+ * @return previous value associated with specified key, or null if there was no mapping for key. A
+ * null return can also indicate that the map previously associated null with the
+ * specified key.
* @throws NullPointerException if the key is null.
*/
- public Object remove(Object key) {
- EntryImpl entry = _entries[keyHash(key) & _mask];
- while (entry != null) {
- if (key.equals(entry._key) ) {
- Object prevValue = entry._value;
- removeEntry(entry);
+ @Override
+ public V remove( Object key )
+ {
+ EntryImpl entry = _entries[keyHash( key ) & _mask];
+ while ( entry != null )
+ {
+ if ( key.equals( entry._key ) )
+ {
+ V prevValue = entry._value;
+ removeEntry( entry );
return prevValue;
}
entry = entry._next;
@@ -301,22 +326,29 @@ public Object remove(Object key) {
/**
* Removes all mappings from this {@link FastMap}.
*/
- public void clear() {
+ @Override
+ public void clear()
+ {
// Clears all keys, values and buckets linked lists.
- for (EntryImpl entry = _mapFirst; entry != null; entry = entry._after) {
+ for ( EntryImpl entry = _mapFirst; entry != null; entry = entry._after )
+ {
entry._key = null;
entry._value = null;
entry._before = null;
entry._next = null;
- if (entry._previous == null) { // First in bucket.
+ if ( entry._previous == null )
+ { // First in bucket.
_entries[entry._index] = null;
- } else {
+ }
+ else
+ {
entry._previous = null;
}
}
-
+
// Recycles all entries.
- if (_mapLast != null) {
+ if ( _mapLast != null )
+ {
_mapLast._after = _poolFirst; // Connects to pool.
_poolFirst = _mapFirst;
_mapFirst = null;
@@ -327,24 +359,27 @@ public void clear() {
}
/**
- * Changes the current capacity of this {@link FastMap}. If the capacity
- * is increased, new entries are allocated and added to the pool.
- * If the capacity is decreased, entries from the pool are deallocated
- * (and are eventually garbage collected). The capacity also determined
- * the number of buckets for the hash table.
+ * Changes the current capacity of this {@link FastMap}. If the capacity is increased, new entries are allocated and
+ * added to the pool. If the capacity is decreased, entries from the pool are deallocated (and are eventually
+ * garbage collected). The capacity also determined the number of buckets for the hash table.
*
* @param newCapacity the new capacity of this map.
*/
- public void setCapacity(int newCapacity) {
- if (newCapacity > _capacity) { // Capacity increases.
- for (int i = _capacity; i < newCapacity; i++) {
+ public void setCapacity( int newCapacity )
+ {
+ if ( newCapacity > _capacity )
+ { // Capacity increases.
+ for ( int i = _capacity; i < newCapacity; i++ )
+ {
EntryImpl entry = new EntryImpl();
entry._after = _poolFirst;
_poolFirst = entry;
}
- } else if (newCapacity < _capacity) { // Capacity decreases.
- for ( int i = newCapacity;
- (i < _capacity) && (_poolFirst != null); i++) {
+ }
+ else if ( newCapacity < _capacity )
+ { // Capacity decreases.
+ for ( int i = newCapacity; ( i < _capacity ) && ( _poolFirst != null ); i++ )
+ {
// Disconnects the entry for gc to do its work.
EntryImpl entry = _poolFirst;
_poolFirst = entry._after;
@@ -353,29 +388,33 @@ public void setCapacity(int newCapacity) {
}
// Find a power of 2 >= capacity
int tableLength = 16;
- while (tableLength < newCapacity) {
+ while ( tableLength < newCapacity )
+ {
tableLength <<= 1;
}
// Checks if the hash table has to be re-sized.
- if (_entries.length != tableLength) {
+ if ( _entries.length != tableLength )
+ {
_entries = new EntryImpl[tableLength];
_mask = tableLength - 1;
-
+
// Repopulates the hash table.
EntryImpl entry = _mapFirst;
- while (entry != null) {
- int index = keyHash(entry._key) & _mask;
+ while ( entry != null )
+ {
+ int index = keyHash( entry._key ) & _mask;
entry._index = index;
-
+
// Connects to bucket.
entry._previous = null; // Resets previous.
EntryImpl next = _entries[index];
entry._next = next;
- if (next != null) {
+ if ( next != null )
+ {
next._previous = entry;
}
_entries[index] = entry;
-
+
entry = entry._after;
}
}
@@ -383,51 +422,64 @@ public void setCapacity(int newCapacity) {
}
/**
- * Returns a shallow copy of this {@link FastMap}. The keys and
- * the values themselves are not cloned.
+ * Returns a shallow copy of this {@link FastMap}. The keys and the values themselves are not cloned.
*
* @return a shallow copy of this map.
*/
- public Object clone() {
- try {
+ @Override
+ public Object clone()
+ {
+ try
+ {
FastMap clone = (FastMap) super.clone();
- clone.initialize(_capacity);
- clone.putAll(this);
+ clone.initialize( _capacity );
+ clone.putAll( this );
return clone;
- } catch (CloneNotSupportedException e) {
+ }
+ catch ( CloneNotSupportedException e )
+ {
// Should not happen, since we are Cloneable.
throw new InternalError();
}
}
/**
- * Compares the specified object with this {@link FastMap} for equality.
- * Returns true if the given object is also a map and the two
- * maps represent the same mappings (regardless of collection iteration
- * order).
+ * Compares the specified object with this {@link FastMap} for equality. Returns true if the given
+ * object is also a map and the two maps represent the same mappings (regardless of collection iteration order).
*
* @param obj the object to be compared for equality with this map.
- * @return true if the specified object is equal to this map;
- * false otherwise.
+ * @return true if the specified object is equal to this map; false otherwise.
*/
- public boolean equals(Object obj) {
- if (obj == this) {
+ @Override
+ public boolean equals( Object obj )
+ {
+ if ( obj == this )
+ {
return true;
- } else if (obj instanceof Map) {
+ }
+ else if ( obj instanceof Map )
+ {
Map that = (Map) obj;
- if (this.size() == that.size()) {
+ if ( this.size() == that.size() )
+ {
EntryImpl entry = _mapFirst;
- while (entry != null) {
- if (!that.entrySet().contains(entry)) {
+ while ( entry != null )
+ {
+ if ( !that.entrySet().contains( entry ) )
+ {
return false;
}
entry = entry._after;
}
return true;
- } else {
+ }
+ else
+ {
return false;
}
- } else {
+ }
+ else
+ {
return false;
}
}
@@ -437,10 +489,13 @@ public boolean equals(Object obj) {
*
* @return the hash code value for this map.
*/
- public int hashCode() {
+ @Override
+ public int hashCode()
+ {
int code = 0;
EntryImpl entry = _mapFirst;
- while (entry != null) {
+ while ( entry != null )
+ {
code += entry.hashCode();
entry = entry._after;
}
@@ -452,111 +507,165 @@ public int hashCode() {
*
* @return this.entrySet().toString();
*/
- public String toString() {
+ @Override
+ public String toString()
+ {
return entrySet().toString();
}
/**
- * Returns a collection view of the values contained in this
- * {@link FastMap}. The collection is backed by the map, so changes to
- * the map are reflected in the collection, and vice-versa.
- * The collection supports element removal, which removes the corresponding
- * mapping from this map, via the
- * Iterator.remove, Collection.remove,
- * removeAll, retainAll,
- * and clear operations. It does not support the
- * add or addAll operations.
+ * Returns a collection view of the values contained in this {@link FastMap}. The collection is backed by the map,
+ * so changes to the map are reflected in the collection, and vice-versa. The collection supports element removal,
+ * which removes the corresponding mapping from this map, via the Iterator.remove,
+ * Collection.remove, removeAll, retainAll, and clear
+ * operations. It does not support the add or addAll operations.
*
* @return a collection view of the values contained in this map.
*/
- public Collection values() {
+ @Override
+ public Collection values()
+ {
return _values;
}
+
private transient Values _values;
- private class Values extends AbstractCollection {
- public Iterator iterator() {
- return new Iterator() {
+
+ private class Values
+ extends AbstractCollection
+ {
+ @Override
+ public Iterator iterator()
+ {
+ return new Iterator()
+ {
EntryImpl after = _mapFirst;
+
EntryImpl before;
- public void remove() {
- removeEntry(before);
+
+ @Override
+ public void remove()
+ {
+ removeEntry( before );
}
- public boolean hasNext() {
+
+ @Override
+ public boolean hasNext()
+ {
return after != null;
}
- public Object next() {
+
+ @Override
+ public Object next()
+ {
before = after;
after = after._after;
return before._value;
}
};
}
- public int size() {
+
+ @Override
+ public int size()
+ {
return _size;
}
- public boolean contains(Object o) {
- return containsValue(o);
+
+ @Override
+ public boolean contains( Object o )
+ {
+ return containsValue( o );
}
- public void clear() {
+
+ @Override
+ public void clear()
+ {
FastMap.this.clear();
}
}
/**
- * Returns a collection view of the mappings contained in this
- * {@link FastMap}. Each element in the returned collection is a
- * Map.Entry. The collection is backed by the map,
- * so changes to the map are reflected in the collection, and vice-versa.
- * The collection supports element removal, which removes the corresponding
- * mapping from this map, via the
- * Iterator.remove, Collection.remove,
- * removeAll, retainAll,
- * and clear operations. It does not support the
+ * Returns a collection view of the mappings contained in this {@link FastMap}. Each element in the returned
+ * collection is a Map.Entry. The collection is backed by the map, so changes to the map are reflected
+ * in the collection, and vice-versa. The collection supports element removal, which removes the corresponding
+ * mapping from this map, via the Iterator.remove, Collection.remove,
+ * removeAll, retainAll, and clear operations. It does not support the
* add or addAll operations.
*
* @return a collection view of the mappings contained in this map.
*/
- public Set entrySet() {
+ @Override
+ public Set entrySet()
+ {
return _entrySet;
}
+
private transient EntrySet _entrySet;
- private class EntrySet extends AbstractSet {
- public Iterator iterator() {
- return new Iterator() {
+
+ private class EntrySet
+ extends AbstractSet
+ {
+ @Override
+ public Iterator iterator()
+ {
+ return new Iterator()
+ {
EntryImpl after = _mapFirst;
+
EntryImpl before;
- public void remove() {
- removeEntry(before);
+
+ @Override
+ public void remove()
+ {
+ removeEntry( before );
}
- public boolean hasNext() {
+
+ @Override
+ public boolean hasNext()
+ {
return after != null;
}
- public Object next() {
+
+ @Override
+ public Object next()
+ {
before = after;
after = after._after;
return before;
}
};
}
- public int size() {
+
+ @Override
+ public int size()
+ {
return _size;
}
- public boolean contains(Object obj) { // Optimization.
- if (obj instanceof Map.Entry) {
+
+ @Override
+ public boolean contains( Object obj )
+ { // Optimization.
+ if ( obj instanceof Map.Entry )
+ {
Map.Entry entry = (Map.Entry) obj;
- Map.Entry mapEntry = getEntry(entry.getKey());
- return entry.equals(mapEntry);
- } else {
+ Map.Entry mapEntry = getEntry( entry.getKey() );
+ return entry.equals( mapEntry );
+ }
+ else
+ {
return false;
- }
- }
- public boolean remove(Object obj) { // Optimization.
- if (obj instanceof Map.Entry) {
- Map.Entry entry = (Map.Entry)obj;
- EntryImpl mapEntry = (EntryImpl) getEntry(entry.getKey());
- if ((mapEntry != null) &&
- (entry.getValue()).equals(mapEntry._value)) {
- removeEntry(mapEntry);
+ }
+ }
+
+ @Override
+ public boolean remove( Object obj )
+ { // Optimization.
+ if ( obj instanceof Map.Entry )
+ {
+ Map.Entry entry = (Map.Entry) obj;
+ EntryImpl mapEntry = (EntryImpl) getEntry( entry.getKey() );
+ if ( ( mapEntry != null ) && ( entry.getValue() ).equals( mapEntry._value ) )
+ {
+ removeEntry( mapEntry );
return true;
}
}
@@ -565,127 +674,170 @@ public boolean remove(Object obj) { // Optimization.
}
/**
- * Returns a set view of the keys contained in this {@link FastMap}.
- * The set is backed by the map, so changes to the map are reflected
- * in the set, and vice-versa. The set supports element removal,
- * which removes the corresponding mapping from this map, via the
- * Iterator.remove, Collection.remove,
- * removeAll, retainAll,
- * and clear operations. It does not support the
+ * Returns a set view of the keys contained in this {@link FastMap}. The set is backed by the map, so changes to the
+ * map are reflected in the set, and vice-versa. The set supports element removal, which removes the corresponding
+ * mapping from this map, via the Iterator.remove, Collection.remove,
+ * removeAll, retainAll, and clear operations. It does not support the
* add or addAll operations.
*
* @return a set view of the keys contained in this map.
*/
- public Set keySet() {
+ @Override
+ public Set keySet()
+ {
return _keySet;
}
+
private transient KeySet _keySet;
- private class KeySet extends AbstractSet {
- public Iterator iterator() {
- return new Iterator() {
+
+ private class KeySet
+ extends AbstractSet
+ {
+ @Override
+ public Iterator iterator()
+ {
+ return new Iterator()
+ {
EntryImpl after = _mapFirst;
+
EntryImpl before;
- public void remove() {
- removeEntry(before);
+
+ @Override
+ public void remove()
+ {
+ removeEntry( before );
}
- public boolean hasNext() {
+
+ @Override
+ public boolean hasNext()
+ {
return after != null;
}
- public Object next() {
+
+ @Override
+ public Object next()
+ {
before = after;
after = after._after;
return before._key;
}
};
}
- public int size() {
+
+ @Override
+ public int size()
+ {
return _size;
}
- public boolean contains(Object obj) { // Optimization.
- return FastMap.this.containsKey(obj);
+
+ @Override
+ public boolean contains( Object obj )
+ { // Optimization.
+ return FastMap.this.containsKey( obj );
}
- public boolean remove(Object obj) { // Optimization.
- return FastMap.this.remove(obj) != null;
+
+ @Override
+ public boolean remove( Object obj )
+ { // Optimization.
+ return FastMap.this.remove( obj ) != null;
}
- public void clear() { // Optimization.
+
+ @Override
+ public void clear()
+ { // Optimization.
FastMap.this.clear();
}
}
-
+
/**
- * This methods is being called when the size of this {@link FastMap}
- * has changed. The default behavior is to double the map's capacity
- * when the map's size reaches the current map's capacity.
- * Sub-class may override this method to implement custom resizing
- * policies or to disable automatic resizing. For example:
+ * This methods is being called when the size of this {@link FastMap} has changed. The default behavior is to double
+ * the map's capacity when the map's size reaches the current map's capacity. Sub-class may override this method to
+ * implement custom resizing policies or to disable automatic resizing. For example:
+ *
+ *
+ *
* @see #setCapacity
*/
- protected void sizeChanged() {
- if (size() > capacity()) {
- setCapacity(capacity() * 2);
+ protected void sizeChanged()
+ {
+ if ( size() > capacity() )
+ {
+ setCapacity( capacity() * 2 );
}
}
-
+
/**
- * Returns the hash code for the specified key. The formula being used
- * is identical to the formula used by java.util.HashMap
- * (ensures similar behavior for ill-conditioned hashcode keys).
+ * Returns the hash code for the specified key. The formula being used is identical to the formula used by
+ * java.util.HashMap (ensures similar behavior for ill-conditioned hashcode keys).
*
* @param key the key to calculate the hashcode for.
* @return the hash code for the specified key.
*/
- private static int keyHash(Object key) {
+ private static int keyHash( Object key )
+ {
// From HashMap.hash(Object) function.
int hashCode = key.hashCode();
- hashCode += ~(hashCode << 9);
- hashCode ^= (hashCode >>> 14);
- hashCode += (hashCode << 4);
- hashCode ^= (hashCode >>> 10);
+ hashCode += ~( hashCode << 9 );
+ hashCode ^= ( hashCode >>> 14 );
+ hashCode += ( hashCode << 4 );
+ hashCode ^= ( hashCode >>> 10 );
return hashCode;
}
-
+
/**
* Adds a new entry for the specified key and value.
+ *
* @param key the entry's key.
* @param value the entry's value.
*/
- private void addEntry(Object key, Object value) {
+ private void addEntry( Object key, Object value )
+ {
EntryImpl entry = _poolFirst;
- if (entry != null) {
+ if ( entry != null )
+ {
_poolFirst = entry._after;
entry._after = null;
- } else { // Pool empty.
+ }
+ else
+ { // Pool empty.
entry = new EntryImpl();
}
-
- // Setup entry paramters.
+
+ // Setup entry parameters.
entry._key = key;
entry._value = value;
- int index = keyHash(key) & _mask;
+ int index = keyHash( key ) & _mask;
entry._index = index;
-
+
// Connects to bucket.
EntryImpl next = _entries[index];
entry._next = next;
- if (next != null) {
+ if ( next != null )
+ {
next._previous = entry;
}
_entries[index] = entry;
-
+
// Connects to collection.
- if (_mapLast != null) {
+ if ( _mapLast != null )
+ {
entry._before = _mapLast;
_mapLast._after = entry;
- } else {
+ }
+ else
+ {
_mapFirst = entry;
}
_mapLast = entry;
-
+
// Updates size.
_size++;
sizeChanged();
@@ -696,34 +848,45 @@ private void addEntry(Object key, Object value) {
*
* @param entry the entry to be removed.
*/
- private void removeEntry(EntryImpl entry) {
-
+ private void removeEntry( EntryImpl entry )
+ {
+
// Removes from bucket.
EntryImpl previous = entry._previous;
EntryImpl next = entry._next;
- if (previous != null) {
+ if ( previous != null )
+ {
previous._next = next;
entry._previous = null;
- } else { // First in bucket.
+ }
+ else
+ { // First in bucket.
_entries[entry._index] = next;
}
- if (next != null) {
+ if ( next != null )
+ {
next._previous = previous;
entry._next = null;
} // Else do nothing, no last pointer.
-
+
// Removes from collection.
EntryImpl before = entry._before;
EntryImpl after = entry._after;
- if (before != null) {
+ if ( before != null )
+ {
before._after = after;
entry._before = null;
- } else { // First in collection.
+ }
+ else
+ { // First in collection.
_mapFirst = after;
}
- if (after != null) {
+ if ( after != null )
+ {
after._before = before;
- } else { // Last in collection.
+ }
+ else
+ { // Last in collection.
_mapLast = before;
}
@@ -734,23 +897,24 @@ private void removeEntry(EntryImpl entry) {
// Recycles.
entry._after = _poolFirst;
_poolFirst = entry;
-
+
// Updates size.
_size--;
sizeChanged();
}
/**
- * Initializes this instance for the specified capacity.
- * Once initialized, operations on this map should not create new objects
- * (unless the map's size exceeds the specified capacity).
- *
+ * Initializes this instance for the specified capacity. Once initialized, operations on this map should not create
+ * new objects (unless the map's size exceeds the specified capacity).
+ *
* @param capacity the initial capacity.
*/
- private void initialize(int capacity) {
+ private void initialize( int capacity )
+ {
// Find a power of 2 >= capacity
int tableLength = 16;
- while (tableLength < capacity) {
+ while ( tableLength < capacity )
+ {
tableLength <<= 1;
}
// Allocates hash table.
@@ -767,72 +931,80 @@ private void initialize(int capacity) {
_mapFirst = null;
_mapLast = null;
// Allocates entries.
- for (int i=0; i < capacity; i++) {
- EntryImpl entry = new EntryImpl();
- entry._after = _poolFirst;
- _poolFirst = entry;
+ for ( int i = 0; i < capacity; i++ )
+ {
+ EntryImpl entry = new EntryImpl();
+ entry._after = _poolFirst;
+ _poolFirst = entry;
}
}
-
+
/**
* Requires special handling during de-serialization process.
*
- * @param stream the object input stream.
+ * @param stream the object input stream.
* @throws IOException if an I/O error occurs.
- * @throws ClassNotFoundException if the class for the object de-serialized
- * is not found.
+ * @throws ClassNotFoundException if the class for the object de-serialized is not found.
*/
- private void readObject(ObjectInputStream stream)
- throws IOException, ClassNotFoundException {
+ private void readObject( ObjectInputStream stream )
+ throws IOException, ClassNotFoundException
+ {
int capacity = stream.readInt();
- initialize(capacity);
+ initialize( capacity );
int size = stream.readInt();
- for (int i=0; i < size; i++) {
+ for ( int i = 0; i < size; i++ )
+ {
Object key = stream.readObject();
Object value = stream.readObject();
- addEntry(key, value);
+ addEntry( key, value );
}
}
-
+
/**
* Requires special handling during serialization process.
*
- * @param stream the object output stream.
+ * @param stream the object output stream.
* @throws IOException if an I/O error occurs.
*/
- private void writeObject(ObjectOutputStream stream) throws IOException {
- stream.writeInt(_capacity);
- stream.writeInt(_size);
+ private void writeObject( ObjectOutputStream stream )
+ throws IOException
+ {
+ stream.writeInt( _capacity );
+ stream.writeInt( _size );
int count = 0;
EntryImpl entry = _mapFirst;
- while (entry != null) {
- stream.writeObject(entry._key);
- stream.writeObject(entry._value);
+ while ( entry != null )
+ {
+ stream.writeObject( entry._key );
+ stream.writeObject( entry._value );
count++;
entry = entry._after;
}
- if (count != _size) {
- throw new IOException("FastMap Corrupted");
+ if ( count != _size )
+ {
+ throw new IOException( "FastMap Corrupted" );
}
}
-
+
/**
* This class represents a {@link FastMap} entry.
*/
- private static final class EntryImpl implements Map.Entry {
+ private static final class EntryImpl
+ implements Map.Entry
+ {
/**
* Holds the entry key (null when in pool).
*/
- private Object _key;
-
+ private K _key;
+
/**
* Holds the entry value (null when in pool).
*/
- private Object _value;
+ private V _value;
/**
- * Holds the bucket index (undefined when in pool).
+ * Holds the bucket index (undefined when in pool).
*/
private int _index;
@@ -852,8 +1024,7 @@ private static final class EntryImpl implements Map.Entry {
private EntryImpl _before;
/**
- * Holds the entry added after this entry
- * or the next available entry when in pool.
+ * Holds the entry added after this entry or the next available entry when in pool.
*/
private EntryImpl _after;
@@ -862,7 +1033,9 @@ private static final class EntryImpl implements Map.Entry {
*
* @return the entry's key.
*/
- public Object getKey() {
+ @Override
+ public K getKey()
+ {
return _key;
}
@@ -871,9 +1044,11 @@ public Object getKey() {
*
* @return the entry's value.
*/
- public Object getValue() {
+ @Override
+ public V getValue()
+ {
return _value;
- }
+ }
/**
* Sets the value for this entry.
@@ -881,28 +1056,31 @@ public Object getValue() {
* @param value the new value.
* @return the previous value.
*/
- public Object setValue(Object value) {
- Object old = _value;
+ @Override
+ public V setValue( V value )
+ {
+ V old = _value;
_value = value;
return old;
- }
+ }
/**
- * Indicates if this entry is considered equals to the specified
- * entry.
+ * Indicates if this entry is considered equals to the specified entry.
*
* @param that the object to test for equality.
- * @return true if both entry are considered equal;
- * false otherwise.
+ * @return true if both entry are considered equal; false otherwise.
*/
- public boolean equals(Object that) {
- if (that instanceof Map.Entry) {
+ @Override
+ public boolean equals( Object that )
+ {
+ if ( that instanceof Map.Entry )
+ {
Map.Entry entry = (Map.Entry) that;
- return (_key.equals(entry.getKey())) &&
- ((_value != null) ?
- _value.equals(entry.getValue()) :
- (entry.getValue() == null));
- } else {
+ return ( _key.equals( entry.getKey() ) )
+ && ( ( _value != null ) ? _value.equals( entry.getValue() ) : ( entry.getValue() == null ) );
+ }
+ else
+ {
return false;
}
}
@@ -912,16 +1090,20 @@ public boolean equals(Object that) {
*
* @return this entry's hash code.
*/
- public int hashCode() {
- return _key.hashCode() ^ ((_value != null) ? _value.hashCode() : 0);
- }
+ @Override
+ public int hashCode()
+ {
+ return _key.hashCode() ^ ( ( _value != null ) ? _value.hashCode() : 0 );
+ }
/**
* Returns the text representation of this entry.
*
* @return this entry's textual representation.
*/
- public String toString() {
+ @Override
+ public String toString()
+ {
return _key + "=" + _value;
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/FileUtils.java b/src/main/java/org/codehaus/plexus/util/FileUtils.java
index c04d747b..cac82ba3 100644
--- a/src/main/java/org/codehaus/plexus/util/FileUtils.java
+++ b/src/main/java/org/codehaus/plexus/util/FileUtils.java
@@ -55,37 +55,35 @@
*
*/
+import org.codehaus.plexus.util.io.InputStreamFacade;
+import org.codehaus.plexus.util.io.URLInputStreamFacade;
+
import java.io.BufferedReader;
import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.FileReader;
-import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
+import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Reader;
import java.io.Writer;
import java.net.URL;
+import java.nio.charset.Charset;
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.StandardOpenOption;
import java.security.SecureRandom;
import java.text.DecimalFormat;
import java.util.ArrayList;
import java.util.Arrays;
-import java.util.Iterator;
import java.util.List;
import java.util.Random;
-import java.util.Vector;
-
-import org.codehaus.plexus.util.io.FileInputStreamFacade;
-import org.codehaus.plexus.util.io.InputStreamFacade;
-import org.codehaus.plexus.util.io.URLInputStreamFacade;
/**
- * This class provides basic facilities for manipulating files and file paths.
- *
- *
Path-related methods
- *
+ *
This class provides basic facilities for manipulating files and file paths.
+ *
+ * Path-related methods
+ *
*
Methods exist to retrieve the components of a typical file path. For example
* /www/hosted/mysite/index.html, can be broken into:
*
@@ -94,26 +92,19 @@
*
/www/hosted/mysite/index -- retrievable through {@link #removeExtension}
*
html -- retrievable through {@link #getExtension}
*
- * There are also methods to {@link #catPath concatenate two paths}, {@link #resolveFile resolve a
- * path relative to a File} and {@link #normalize} a path.
- *
- *
- *
File-related methods
- *
- * There are methods to create a {@link #toFile File from a URL}, copy a
- * {@link #copyFileToDirectory File to a directory},
- * copy a {@link #copyFile File to another File},
- * copy a {@link #copyURLToFile URL's contents to a File},
- * as well as methods to {@link #deleteDirectory(File) delete} and {@link #cleanDirectory(File)
- * clean} a directory.
- *
- *
- * Common {@link java.io.File} manipulation routines.
- *
- * Taken from the commons-utils repo.
- * Also code from Alexandria's FileUtils.
- * And from Avalon Excalibur's IO.
- * And from Ant.
+ *
There are also methods to {@link #catPath concatenate two paths}, {@link #resolveFile resolve a path relative to a
+ * File} and {@link #normalize} a path.
+
+ * File-related methods
+ *
+ *
There are methods to create a {@link #toFile File from a URL}, copy a {@link #copyFileToDirectory File to a
+ * directory}, copy a {@link #copyFile File to another File}, copy a {@link #copyURLToFile URL's contents to a File}, as
+ * well as methods to {@link #deleteDirectory(File) delete} and {@link #cleanDirectory(File) clean} a directory.
+ *
+ *
Common {@link java.io.File} manipulation routines.
+ *
+ *
Taken from the commons-utils repo. Also code from Alexandria's FileUtils. And from Avalon Excalibur's IO. And from
+ * Ant.
*
* @author Kevin A. Burton
* @author Scott Sanders
@@ -121,7 +112,7 @@
* @author Christoph.Reck
* @author Peter Donald
* @author Jeff Turner
- * @version $Id$
+ *
*/
public class FileUtils
{
@@ -140,14 +131,16 @@ public class FileUtils
*/
public static final int ONE_GB = ONE_KB * ONE_MB;
- /** The vm line separator */
- public static String FS = System.getProperty( "file.separator" );
+ /**
+ * The vm file separator
+ */
+ public static String FS = File.separator;
/**
* Non-valid Characters for naming files, folders under Windows: ":", "*", "?", "\"", "<", ">", "|"
*
* @see
- * http://support.microsoft.com/?scid=kb%3Ben-us%3B177506&x=12&y=13
+ * http://support.microsoft.com/?scid=kb%3Ben-us%3B177506&x=12&y=13
*/
private static final String[] INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME = { ":", "*", "?", "\"", "<", ">", "|" };
@@ -164,7 +157,7 @@ public static String[] getDefaultExcludes()
* @return the default excludes pattern as list.
* @see #getDefaultExcludes()
*/
- public static List getDefaultExcludesAsList()
+ public static List getDefaultExcludesAsList()
{
return Arrays.asList( getDefaultExcludes() );
}
@@ -180,8 +173,7 @@ public static String getDefaultExcludesAsString()
}
/**
- * Returns a human-readable version of the file size (original is in
- * bytes).
+ * Returns a human-readable version of the file size (original is in bytes).
*
* @param size The number of bytes.
* @return A human-readable display value (includes units).
@@ -211,8 +203,7 @@ else if ( size / ONE_KB > 0 )
}
/**
- * Returns the directory path portion of a file specification string.
- * Matches the equally named unix command.
+ * Returns the directory path portion of a file specification string. Matches the equally named unix command.
*
* @param filename the file path
* @return The directory portion excluding the ending file separator.
@@ -236,8 +227,7 @@ public static String filename( String filename )
}
/**
- * Returns the filename portion of a file specification string.
- * Matches the equally named unix command.
+ * Returns the filename portion of a file specification string. Matches the equally named unix command.
*
* @param filename the file path
* @return The filename string without extension.
@@ -248,8 +238,7 @@ public static String basename( String filename )
}
/**
- * Returns the filename portion of a file specification string.
- * Matches the equally named unix command.
+ * Returns the filename portion of a file specification string. Matches the equally named unix command.
*
* @param filename the file path
* @param suffix the file suffix
@@ -275,9 +264,8 @@ else if ( i > 0 )
}
/**
- * Returns the extension portion of a file specification string.
- * This everything after the last dot '.' in the filename (NOT including
- * the dot).
+ * Returns the extension portion of a file specification string. This everything after the last dot '.' in the
+ * filename (NOT including the dot).
*
* @param filename the file path
* @return the extension of the file
@@ -300,7 +288,7 @@ public static String extension( String filename )
}
}
- if ( lastDot >= 0 && lastDot > lastSep)
+ if ( lastDot >= 0 && lastDot > lastSep )
{
return filename.substring( lastDot + 1 );
}
@@ -355,7 +343,7 @@ public static String fileRead( String file, String encoding )
public static String fileRead( File file )
throws IOException
{
- return fileRead( file, null);
+ return fileRead( file, null );
}
/**
@@ -367,38 +355,36 @@ public static String fileRead( File file )
public static String fileRead( File file, String encoding )
throws IOException
{
- StringBuffer buf = new StringBuffer();
-
- Reader reader = null;
+ StringBuilder buf = new StringBuilder();
- try
+ try ( Reader reader = getInputStreamReader( file, encoding ) )
{
- if ( encoding != null )
- {
- reader = new InputStreamReader( new FileInputStream( file ), encoding );
- }
- else
- {
- reader = new InputStreamReader( new FileInputStream( file ) );
- }
int count;
char[] b = new char[512];
- while ( ( count = reader.read( b ) ) > 0 ) // blocking read
+ while ( ( count = reader.read( b ) ) >= 0 ) // blocking read
{
buf.append( b, 0, count );
}
}
- finally
- {
- IOUtil.close( reader );
- }
return buf.toString();
}
+ private static InputStreamReader getInputStreamReader( File file, String encoding ) throws IOException
+ {
+ if ( encoding != null )
+ {
+ return new InputStreamReader( Files.newInputStream( file.toPath() ), encoding );
+ }
+ else
+ {
+ return new InputStreamReader( Files.newInputStream( file.toPath() ) );
+ }
+ }
+
/**
- * Appends data to a file. The file will be created if it does not exist.
- * Note: the data is written with platform encoding
+ * Appends data to a file. The file will be created if it does not exist. Note: the data is written with platform
+ * encoding
*
* @param fileName The path of the file to write.
* @param data The content to write to the file.
@@ -407,7 +393,7 @@ public static String fileRead( File file, String encoding )
public static void fileAppend( String fileName, String data )
throws IOException
{
- fileAppend( fileName, null, data);
+ fileAppend( fileName, null, data );
}
/**
@@ -421,11 +407,10 @@ public static void fileAppend( String fileName, String data )
public static void fileAppend( String fileName, String encoding, String data )
throws IOException
{
- FileOutputStream out = null;
- try
+ try ( OutputStream out = Files.newOutputStream( Paths.get(fileName), StandardOpenOption.APPEND ) )
{
- out = new FileOutputStream( fileName, true );
- if ( encoding != null ) {
+ if ( encoding != null )
+ {
out.write( data.getBytes( encoding ) );
}
else
@@ -433,15 +418,11 @@ public static void fileAppend( String fileName, String encoding, String data )
out.write( data.getBytes() );
}
}
- finally
- {
- IOUtil.close( out );
- }
}
/**
- * Writes data to a file. The file will be created if it does not exist.
- * Note: the data is written with platform encoding
+ * Writes data to a file. The file will be created if it does not exist. Note: the data is written with platform
+ * encoding
*
* @param fileName The path of the file to write.
* @param data The content to write to the file.
@@ -464,21 +445,53 @@ public static void fileWrite( String fileName, String data )
public static void fileWrite( String fileName, String encoding, String data )
throws IOException
{
- FileOutputStream out = null;
- try
+ File file = ( fileName == null ) ? null : new File( fileName );
+ fileWrite( file, encoding, data );
+ }
+
+ /**
+ * Writes data to a file. The file will be created if it does not exist. Note: the data is written with platform
+ * encoding
+ *
+ * @param file The file to write.
+ * @param data The content to write to the file.
+ * @throws IOException if any
+ * @since 2.0.6
+ */
+ public static void fileWrite( File file, String data )
+ throws IOException
+ {
+ fileWrite( file, null, data );
+ }
+
+ /**
+ * Writes data to a file. The file will be created if it does not exist.
+ *
+ * @param file The file to write.
+ * @param encoding The encoding of the file.
+ * @param data The content to write to the file.
+ * @throws IOException if any
+ * @since 2.0.6
+ */
+ public static void fileWrite( File file, String encoding, String data )
+ throws IOException
+ {
+ try ( Writer writer = getOutputStreamWriter( file, encoding ) )
{
- out = new FileOutputStream( fileName );
- if ( encoding != null ) {
- out.write( data.getBytes( encoding ) );
- }
- else
- {
- out.write( data.getBytes() );
- }
+ writer.write( data );
}
- finally
+ }
+
+ private static OutputStreamWriter getOutputStreamWriter( File file, String encoding ) throws IOException
+ {
+ OutputStream out = Files.newOutputStream( file.toPath() );
+ if ( encoding != null )
{
- IOUtil.close( out );
+ return new OutputStreamWriter( out, encoding );
+ }
+ else
+ {
+ return new OutputStreamWriter( out );
}
}
@@ -490,14 +503,21 @@ public static void fileWrite( String fileName, String encoding, String data )
public static void fileDelete( String fileName )
{
File file = new File( fileName );
- file.delete();
+ try
+ {
+ NioFiles.deleteIfExists( file );
+ }
+ catch ( IOException e )
+ {
+ throw new RuntimeException( e );
+ }
}
/**
* Waits for NFS to propagate a file creation, imposing a timeout.
*
* @param fileName The path of the file.
- * @param seconds The maximum time in seconds to wait.
+ * @param seconds The maximum time in seconds to wait.
* @return True if file exists.
*/
public static boolean waitFor( String fileName, int seconds )
@@ -509,7 +529,7 @@ public static boolean waitFor( String fileName, int seconds )
* Waits for NFS to propagate a file creation, imposing a timeout.
*
* @param file The file.
- * @param seconds The maximum time in seconds to wait.
+ * @param seconds The maximum time in seconds to wait.
* @return True if file exists.
*/
public static boolean waitFor( File file, int seconds )
@@ -550,12 +570,11 @@ public static File getFile( String fileName )
}
/**
- * Given a directory and an array of extensions return an array of compliant files.
- *
- * TODO Should an ignore list be passed in?
- * TODO Should a recurse flag be passed in?
- *
- * The given extensions should be like "java" and not like ".java"
+ *
Given a directory and an array of extensions return an array of compliant files.
+ *
+ *
TODO Should an ignore list be passed in? TODO Should a recurse flag be passed in?
+ *
+ *
The given extensions should be like "java" and not like ".java"
*
* @param directory The path of the directory.
* @param extensions an array of expected extensions.
@@ -563,7 +582,7 @@ public static File getFile( String fileName )
*/
public static String[] getFilesFromExtension( String directory, String[] extensions )
{
- Vector files = new Vector();
+ List files = new ArrayList();
File currentDir = new File( directory );
@@ -574,61 +593,57 @@ public static String[] getFilesFromExtension( String directory, String[] extensi
return new String[0];
}
- for ( int i = 0; i < unknownFiles.length; ++i )
+ for ( String unknownFile : unknownFiles )
{
- String currentFileName = directory + System.getProperty( "file.separator" ) + unknownFiles[i];
+ String currentFileName = directory + System.getProperty( "file.separator" ) + unknownFile;
File currentFile = new File( currentFileName );
if ( currentFile.isDirectory() )
{
- //ignore all CVS directories...
+ // ignore all CVS directories...
if ( currentFile.getName().equals( "CVS" ) )
{
continue;
}
- //ok... transverse into this directory and get all the files... then combine
- //them with the current list.
+ // ok... transverse into this directory and get all the files... then combine
+ // them with the current list.
String[] fetchFiles = getFilesFromExtension( currentFileName, extensions );
files = blendFilesToVector( files, fetchFiles );
}
else
{
- //ok... add the file
+ // ok... add the file
String add = currentFile.getAbsolutePath();
if ( isValidFile( add, extensions ) )
{
- files.addElement( add );
+ files.add( add );
}
}
}
- //ok... move the Vector into the files list...
- String[] foundFiles = new String[files.size()];
- files.copyInto( foundFiles );
-
- return foundFiles;
+ // ok... move the Vector into the files list...
+ return files.toArray( new String[0] );
}
/**
* Private helper method for getFilesFromExtension()
*/
- private static Vector blendFilesToVector( Vector v, String[] files )
+ private static List blendFilesToVector( List v, String[] files )
{
- for ( int i = 0; i < files.length; ++i )
+ for ( String file : files )
{
- v.addElement( files[i] );
+ v.add( file );
}
return v;
}
/**
- * Checks to see if a file is of a particular type(s).
- * Note that if the file does not have an extension, an empty string
- * ("") is matched for.
+ * Checks to see if a file is of a particular type(s). Note that if the file does not have an extension, an empty
+ * string ("") is matched for.
*/
private static boolean isValidFile( String file, String[] extensions )
{
@@ -638,12 +653,12 @@ private static boolean isValidFile( String file, String[] extensions )
extension = "";
}
- //ok.. now that we have the "extension" go through the current know
- //excepted extensions and determine if this one is OK.
+ // ok.. now that we have the "extension" go through the current know
+ // excepted extensions and determine if this one is OK.
- for ( int i = 0; i < extensions.length; ++i )
+ for ( String extension1 : extensions )
{
- if ( extensions[i].equals( extension ) )
+ if ( extension1.equals( extension ) )
{
return true;
}
@@ -664,14 +679,11 @@ public static void mkdir( String dir )
{
File file = new File( dir );
- if ( Os.isFamily( Os.FAMILY_WINDOWS ) )
+ if ( Os.isFamily( Os.FAMILY_WINDOWS ) && !isValidWindowsFileName( file ) )
{
- if ( !isValidWindowsFileName( file ) )
- {
- throw new IllegalArgumentException( "The file (" + dir
- + ") cannot contain any of the following characters: \n"
- + StringUtils.join( INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME, " " ) );
- }
+ throw new IllegalArgumentException( "The file (" + dir
+ + ") cannot contain any of the following characters: \n"
+ + StringUtils.join( INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME, " " ) );
}
if ( !file.exists() )
@@ -708,20 +720,11 @@ public static boolean contentEquals( final File file1, final File file2 )
// don't want to compare directory contents
return false;
}
-
- InputStream input1 = null;
- InputStream input2 = null;
- try
+
+ try ( InputStream input1 = Files.newInputStream( file1.toPath() );
+ InputStream input2 = Files.newInputStream( file2.toPath() ) )
{
- input1 = new FileInputStream( file1 );
- input2 = new FileInputStream( file2 );
return IOUtil.contentEquals( input1, input2 );
-
- }
- finally
- {
- IOUtil.close( input1 );
- IOUtil.close( input2 );
}
}
@@ -729,8 +732,8 @@ public static boolean contentEquals( final File file1, final File file2 )
* Convert from a URL to a File.
*
* @param url File URL.
- * @return The equivalent File object, or null if the URL's protocol
- * is not file
+ * @return The equivalent File object, or null if the URL's protocol is not
+ * file
*/
public static File toFile( final URL url )
{
@@ -767,19 +770,19 @@ public static URL[] toURLs( final File[] files )
for ( int i = 0; i < urls.length; i++ )
{
- urls[i] = files[i].toURL();
+ urls[i] = files[i].toURI().toURL();
}
return urls;
}
/**
- * Remove extension from filename.
- * ie
+ * Remove extension from filename. ie
+ *
*
*
* @param filepath the path of the file
- * @param fileSeparatorChar the file separator character like / on Unix plateforms.
+ * @param fileSeparatorChar the file separator character like / on Unix platforms.
* @return the filename minus path
*/
public static String removePath( final String filepath, final char fileSeparatorChar )
@@ -856,11 +859,11 @@ public static String removePath( final String filepath, final char fileSeparator
}
/**
- * Get path from filename. Roughly equivalent to the unix command dirname.
- * ie.
+ * Get path from filename. Roughly equivalent to the unix command dirname. ie.
+ *
*
*
* @param filepath the filepath
- * @param fileSeparatorChar the file separator character like / on Unix plateforms.
+ * @param fileSeparatorChar the file separator character like / on Unix platforms.
* @return the filename minus path
*/
public static String getPath( final String filepath, final char fileSeparatorChar )
@@ -895,16 +898,16 @@ public static String getPath( final String filepath, final char fileSeparatorCha
}
/**
- * Copy file from source to destination. If destinationDirectory does not exist, it
- * (and any parent directories) will be created. If a file source in
- * destinationDirectory exists, it will be overwritten.
+ * Copy file from source to destination. If destinationDirectory does not exist, it (and any parent
+ * directories) will be created. If a file source in destinationDirectory exists, it will
+ * be overwritten.
*
- * @param source An existing File to copy.
+ * @param source An existing File to copy.
* @param destinationDirectory A directory to copy source into.
* @throws java.io.FileNotFoundException if source isn't a normal file.
- * @throws IllegalArgumentException if destinationDirectory isn't a directory.
- * @throws IOException if source does not exist, the file in
- * destinationDirectory cannot be written to, or an IO error occurs during copying.
+ * @throws IllegalArgumentException if destinationDirectory isn't a directory.
+ * @throws IOException if source does not exist, the file in destinationDirectory cannot
+ * be written to, or an IO error occurs during copying.
*/
public static void copyFileToDirectory( final String source, final String destinationDirectory )
throws IOException
@@ -913,17 +916,16 @@ public static void copyFileToDirectory( final String source, final String destin
}
/**
- * Copy file from source to destination only if source is newer than the target file.
- * If destinationDirectory does not exist, it
- * (and any parent directories) will be created. If a file source in
- * destinationDirectory exists, it will be overwritten.
+ * Copy file from source to destination only if source is newer than the target file. If
+ * destinationDirectory does not exist, it (and any parent directories) will be created. If a file
+ * source in destinationDirectory exists, it will be overwritten.
*
- * @param source An existing File to copy.
+ * @param source An existing File to copy.
* @param destinationDirectory A directory to copy source into.
* @throws java.io.FileNotFoundException if source isn't a normal file.
- * @throws IllegalArgumentException if destinationDirectory isn't a directory.
- * @throws IOException if source does not exist, the file in
- * destinationDirectory cannot be written to, or an IO error occurs during copying.
+ * @throws IllegalArgumentException if destinationDirectory isn't a directory.
+ * @throws IOException if source does not exist, the file in destinationDirectory cannot
+ * be written to, or an IO error occurs during copying.
*/
public static void copyFileToDirectoryIfModified( final String source, final String destinationDirectory )
throws IOException
@@ -932,16 +934,16 @@ public static void copyFileToDirectoryIfModified( final String source, final Str
}
/**
- * Copy file from source to destination. If destinationDirectory does not exist, it
- * (and any parent directories) will be created. If a file source in
- * destinationDirectory exists, it will be overwritten.
+ * Copy file from source to destination. If destinationDirectory does not exist, it (and any parent
+ * directories) will be created. If a file source in destinationDirectory exists, it will
+ * be overwritten.
*
- * @param source An existing File to copy.
+ * @param source An existing File to copy.
* @param destinationDirectory A directory to copy source into.
* @throws java.io.FileNotFoundException if source isn't a normal file.
- * @throws IllegalArgumentException if destinationDirectory isn't a directory.
- * @throws IOException if source does not exist, the file in
- * destinationDirectory cannot be written to, or an IO error occurs during copying.
+ * @throws IllegalArgumentException if destinationDirectory isn't a directory.
+ * @throws IOException if source does not exist, the file in destinationDirectory cannot
+ * be written to, or an IO error occurs during copying.
*/
public static void copyFileToDirectory( final File source, final File destinationDirectory )
throws IOException
@@ -955,17 +957,16 @@ public static void copyFileToDirectory( final File source, final File destinatio
}
/**
- * Copy file from source to destination only if source is newer than the target file.
- * If destinationDirectory does not exist, it
- * (and any parent directories) will be created. If a file source in
- * destinationDirectory exists, it will be overwritten.
+ * Copy file from source to destination only if source is newer than the target file. If
+ * destinationDirectory does not exist, it (and any parent directories) will be created. If a file
+ * source in destinationDirectory exists, it will be overwritten.
*
- * @param source An existing File to copy.
+ * @param source An existing File to copy.
* @param destinationDirectory A directory to copy source into.
* @throws java.io.FileNotFoundException if source isn't a normal file.
- * @throws IllegalArgumentException if destinationDirectory isn't a directory.
- * @throws IOException if source does not exist, the file in
- * destinationDirectory cannot be written to, or an IO error occurs during copying.
+ * @throws IllegalArgumentException if destinationDirectory isn't a directory.
+ * @throws IOException if source does not exist, the file in destinationDirectory cannot
+ * be written to, or an IO error occurs during copying.
*/
public static void copyFileToDirectoryIfModified( final File source, final File destinationDirectory )
throws IOException
@@ -978,64 +979,130 @@ public static void copyFileToDirectoryIfModified( final File source, final File
copyFileIfModified( source, new File( destinationDirectory, source.getName() ) );
}
+ /**
+ * Creates a number of directories, as delivered from DirectoryScanner
+ *
+ * @param sourceBase The basedir used for the directory scan
+ * @param dirs The getIncludedDirs from the dirscanner
+ * @param destination The base dir of the output structure
+ * @throws IOException io issue
+ */
+ public static void mkDirs( final File sourceBase, String[] dirs, final File destination )
+ throws IOException
+ {
+ for ( String dir : dirs )
+ {
+ File src = new File( sourceBase, dir );
+ File dst = new File( destination, dir );
+ if ( NioFiles.isSymbolicLink( src ) )
+ {
+ File target = NioFiles.readSymbolicLink( src );
+ NioFiles.createSymbolicLink( dst, target );
+ }
+ else
+ {
+ dst.mkdirs();
+ }
+ }
+ }
/**
- * Copy file from source to destination. The directories up to destination will be
- * created if they don't already exist. destination will be overwritten if it
- * already exists.
+ * Copy file from source to destination. The directories up to destination will be created if they
+ * don't already exist. destination will be overwritten if it already exists.
*
- * @param source An existing non-directory File to copy bytes from.
- * @param destination A non-directory File to write bytes to (possibly
- * overwriting).
- * @throws IOException if source does not exist, destination cannot be
- * written to, or an IO error occurs during copying.
- * @throws java.io.FileNotFoundException if destination is a directory
- * (use {@link #copyFileToDirectory}).
+ * @param source An existing non-directory File to copy bytes from.
+ * @param destination A non-directory File to write bytes to (possibly overwriting).
+ * @throws IOException if source does not exist, destination cannot be written to, or an
+ * IO error occurs during copying.
+ * @throws java.io.FileNotFoundException if destination is a directory (use
+ * {@link #copyFileToDirectory}).
*/
public static void copyFile( final File source, final File destination )
throws IOException
{
- //check source exists
+ // check source exists
if ( !source.exists() )
{
final String message = "File " + source + " does not exist";
throw new IOException( message );
}
- //check source != destination, see PLXUTILS-10
+ // check source != destination, see PLXUTILS-10
if ( source.getCanonicalPath().equals( destination.getCanonicalPath() ) )
{
- //if they are equal, we can exit the method without doing any work
+ // if they are equal, we can exit the method without doing any work
return;
}
+ mkdirsFor( destination );
- copyStreamToFile( new FileInputStreamFacade( source ), destination);
+ doCopyFile( source, destination );
if ( source.length() != destination.length() )
{
- final String message = "Failed to copy full contents from " + source + " to " + destination;
+ String message = "Failed to copy full contents from " + source + " to " + destination;
throw new IOException( message );
}
}
+ private static void doCopyFile( File source, File destination )
+ throws IOException
+ {
+ doCopyFileUsingNewIO( source, destination );
+ }
+
+ private static void doCopyFileUsingNewIO( File source, File destination )
+ throws IOException
+ {
+ NioFiles.copy( source, destination );
+ }
+
/**
- * Copy file from source to destination only if source timestamp is later than the destination timestamp.
- * The directories up to destination will be created if they don't already exist.
- * destination will be overwritten if it already exists.
+ * Link file from destination to source. The directories up to destination will be created if they
+ * don't already exist. destination will be overwritten if it already exists.
+ *
+ * @param source An existing non-directory File to link to.
+ * @param destination A non-directory File becoming the link (possibly overwriting).
+ * @throws IOException if source does not exist, destination cannot be created, or an
+ * IO error occurs during linking.
+ * @throws java.io.FileNotFoundException if destination is a directory (use
+ * {@link #copyFileToDirectory}).
+ */
+ public static void linkFile( final File source, final File destination )
+ throws IOException
+ {
+ // check source exists
+ if ( !source.exists() )
+ {
+ final String message = "File " + source + " does not exist";
+ throw new IOException( message );
+ }
+
+ // check source != destination, see PLXUTILS-10
+ if ( source.getCanonicalPath().equals( destination.getCanonicalPath() ) )
+ {
+ // if they are equal, we can exit the method without doing any work
+ return;
+ }
+ mkdirsFor( destination );
+
+ NioFiles.createSymbolicLink( destination, source );
+ }
+
+ /**
+ * Copy file from source to destination only if source timestamp is later than the destination timestamp. The
+ * directories up to destination will be created if they don't already exist. destination
+ * will be overwritten if it already exists.
*
* @param source An existing non-directory File to copy bytes from.
- * @param destination A non-directory File to write bytes to (possibly
- * overwriting).
+ * @param destination A non-directory File to write bytes to (possibly overwriting).
* @return true if no problem occured
- * @throws IOException if source does not exist, destination cannot be
- * written to, or an IO error occurs during copying.
- * @throws FileNotFoundException if destination is a directory
- * (use {@link #copyFileToDirectory}).
+ * @throws IOException if source does not exist, destination cannot be written to, or an
+ * IO error occurs during copying.
*/
public static boolean copyFileIfModified( final File source, final File destination )
throws IOException
{
- if ( destination.lastModified() < source.lastModified() )
+ if ( isSourceNewerThanDestination( source, destination ) )
{
copyFile( source, destination );
@@ -1046,86 +1113,85 @@ public static boolean copyFileIfModified( final File source, final File destinat
}
/**
- * Copies bytes from the URL source to a file destination.
- * The directories up to destination will be created if they don't already exist.
- * destination will be overwritten if it already exists.
+ * Copies bytes from the URL source to a file destination. The directories up to
+ * destination will be created if they don't already exist. destination will be
+ * overwritten if it already exists.
*
* @param source A URL to copy bytes from.
- * @param destination A non-directory File to write bytes to (possibly
- * overwriting).
+ * @param destination A non-directory File to write bytes to (possibly overwriting).
* @throws IOException if
- *
- *
source URL cannot be opened
- *
destination cannot be written to
- *
an IO error occurs during copying
- *
+ *
+ *
source URL cannot be opened
+ *
destination cannot be written to
+ *
an IO error occurs during copying
+ *
*/
public static void copyURLToFile( final URL source, final File destination )
throws IOException
{
- copyStreamToFile( new URLInputStreamFacade( source ) , destination);
+ copyStreamToFile( new URLInputStreamFacade( source ), destination );
}
/**
- * Copies bytes from the {@link InputStream} source to a file destination.
- * The directories up to destination will be created if they don't already exist.
- * destination will be overwritten if it already exists.
+ * Copies bytes from the {@link InputStream} source to a file destination. The directories
+ * up to destination will be created if they don't already exist. destination will be
+ * overwritten if it already exists.
*
- * @param source An {@link InputStream} to copy bytes from. This stream is
- * guaranteed to be closed.
- * @param destination A non-directory File to write bytes to (possibly
- * overwriting).
+ * @param source An {@link InputStream} to copy bytes from. This stream is guaranteed to be closed.
+ * @param destination A non-directory File to write bytes to (possibly overwriting).
* @throws IOException if
- *
- *
source URL cannot be opened
- *
destination cannot be written to
- *
an IO error occurs during copying
- *
+ *
+ *
source URL cannot be opened
+ *
destination cannot be written to
+ *
an IO error occurs during copying
+ *
*/
public static void copyStreamToFile( final InputStreamFacade source, final File destination )
throws IOException
{
- //does destination directory exist ?
- if ( destination.getParentFile() != null && !destination.getParentFile().exists() )
+ mkdirsFor( destination );
+ checkCanWrite( destination );
+
+ try ( InputStream input = source.getInputStream();
+ OutputStream output = Files.newOutputStream( destination.toPath() ) )
{
- destination.getParentFile().mkdirs();
+ IOUtil.copy( input, output );
}
+ }
- //make sure we can write to destination
+ private static void checkCanWrite( File destination )
+ throws IOException
+ {
+ // make sure we can write to destination
if ( destination.exists() && !destination.canWrite() )
{
final String message = "Unable to open file " + destination + " for writing.";
throw new IOException( message );
}
+ }
- InputStream input = null;
- FileOutputStream output = null;
- try
- {
- input = source.getInputStream();
- output = new FileOutputStream( destination );
- IOUtil.copy( input, output );
- }
- finally
+ private static void mkdirsFor( File destination )
+ {
+ // does destination directory exist ?
+ File parentFile = destination.getParentFile();
+ if ( parentFile != null && !parentFile.exists() )
{
- IOUtil.close( input );
- IOUtil.close( output );
+ parentFile.mkdirs();
}
}
/**
- * Normalize a path.
- * Eliminates "/../" and "/./" in a string. Returns null if the ..'s went past the
- * root.
- * Eg:
+ * Normalize a path. Eliminates "/../" and "/./" in a string. Returns null if the ..'s went past the
+ * root. Eg:
+ *
*
*
* @param lookupPath a path
* @param path the path to concatenate
@@ -1219,12 +1286,11 @@ public static String catPath( final String lookupPath, final String path )
}
/**
- * Resolve a file filename to it's canonical form. If filename is
- * relative (doesn't start with /), it will be resolved relative to
- * baseFile, otherwise it is treated as a normal root-relative path.
+ * Resolve a file filename to it's canonical form. If filename is relative (doesn't start
+ * with /), it will be resolved relative to baseFile, otherwise it is treated as a normal
+ * root-relative path.
*
- * @param baseFile Where to resolve filename from, if filename is
- * relative.
+ * @param baseFile Where to resolve filename from, if filename is relative.
* @param filename Absolute or relative file path to resolve.
* @return The canonical File of filename.
*/
@@ -1260,11 +1326,11 @@ public static File resolveFile( final File baseFile, String filename )
// FIXME: I'm almost certain this // removal is unnecessary, as getAbsoluteFile() strips
// them. However, I'm not sure about this UNC stuff. (JT)
final char[] chars = filename.toCharArray();
- final StringBuffer sb = new StringBuffer();
+ final StringBuilder sb = new StringBuilder();
- //remove duplicate file separators in succession - except
- //on win32 at start of filename as UNC filenames can
- //be \\AComputer\AShare\myfile.txt
+ // remove duplicate file separators in succession - except
+ // on win32 at start of filename as UNC filenames can
+ // be \\AComputer\AShare\myfile.txt
int start = 0;
if ( '\\' == File.separatorChar )
{
@@ -1284,7 +1350,7 @@ public static File resolveFile( final File baseFile, String filename )
filenm = sb.toString();
- //must be relative
+ // must be relative
File file = ( new File( baseFile, filenm ) ).getAbsoluteFile();
try
@@ -1340,9 +1406,8 @@ public static void forceDelete( final File file )
}
/**
- * Accommodate Windows bug encountered in both Sun and IBM JDKs.
- * Others possible. If the delete does not work, call System.gc(),
- * wait a little and try again.
+ * Accommodate Windows bug encountered in both Sun and IBM JDKs. Others possible. If the delete does not work, call
+ * System.gc(), wait a little and try again.
*
* @param file a file
* @throws IOException if any
@@ -1368,7 +1433,7 @@ private static boolean deleteFile( File file )
Thread.sleep( 10 );
return file.delete();
}
- catch ( InterruptedException ex )
+ catch ( InterruptedException ignore )
{
return file.delete();
}
@@ -1378,8 +1443,7 @@ private static boolean deleteFile( File file )
}
/**
- * Schedule a file to be deleted when JVM exits.
- * If file is directory delete it and all sub-directories.
+ * Schedule a file to be deleted when JVM exits. If file is directory delete it and all sub-directories.
*
* @param file a file
* @throws IOException if any
@@ -1405,7 +1469,7 @@ public static void forceDeleteOnExit( final File file )
/**
* Recursively schedule directory for deletion on JVM exit.
*
- * @param file a directory
+ * @param directory a directory
* @throws IOException if any
*/
private static void deleteDirectoryOnExit( final File directory )
@@ -1415,15 +1479,15 @@ private static void deleteDirectoryOnExit( final File directory )
{
return;
}
+ directory.deleteOnExit(); // The hook reverses the list
cleanDirectoryOnExit( directory );
- directory.deleteOnExit();
}
/**
* Clean a directory without deleting it.
*
- * @param file a directory
+ * @param directory a directory
* @throws IOException if any
*/
private static void cleanDirectoryOnExit( final File directory )
@@ -1444,9 +1508,8 @@ private static void cleanDirectoryOnExit( final File directory )
IOException exception = null;
final File[] files = directory.listFiles();
- for ( int i = 0; i < files.length; i++ )
+ for ( final File file : files )
{
- final File file = files[i];
try
{
forceDeleteOnExit( file );
@@ -1463,13 +1526,11 @@ private static void cleanDirectoryOnExit( final File directory )
}
}
-
/**
* Make a directory.
*
* @param file not null
- * @throws IOException If there already exists a file with specified name or
- * the directory is unable to be created
+ * @throws IOException If there already exists a file with specified name or the directory is unable to be created
* @throws IllegalArgumentException if the file contains illegal Windows characters under Windows OS.
* @see #INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME
*/
@@ -1531,6 +1592,15 @@ public static void deleteDirectory( final File directory )
return;
}
+ /*
+ * try delete the directory before its contents, which will take care of any directories that are really
+ * symbolic links.
+ */
+ if ( directory.delete() )
+ {
+ return;
+ }
+
cleanDirectory( directory );
if ( !directory.delete() )
{
@@ -1581,9 +1651,8 @@ public static void cleanDirectory( final File directory )
return;
}
- for ( int i = 0; i < files.length; i++ )
+ for ( final File file : files )
{
- final File file = files[i];
try
{
forceDelete( file );
@@ -1634,10 +1703,8 @@ public static long sizeOfDirectory( final File directory )
long size = 0;
final File[] files = directory.listFiles();
- for ( int i = 0; i < files.length; i++ )
+ for ( final File file : files )
{
- final File file = files[i];
-
if ( file.isDirectory() )
{
size += sizeOfDirectory( file );
@@ -1652,17 +1719,17 @@ public static long sizeOfDirectory( final File directory )
}
/**
- * Return the files contained in the directory, using inclusion and exclusion Ant patterns,
- * including the directory name in each of the files
+ * Return the files contained in the directory, using inclusion and exclusion Ant patterns, including the directory
+ * name in each of the files
*
* @param directory the directory to scan
* @param includes the includes pattern, comma separated
* @param excludes the excludes pattern, comma separated
* @return a list of File objects
- * @throws IOException
- * @see #getFileNames( File, String, String, boolean )
+ * @throws IOException io issue
+ * @see #getFileNames(File, String, String, boolean)
*/
- public static List getFiles( File directory, String includes, String excludes )
+ public static List getFiles( File directory, String includes, String excludes )
throws IOException
{
return getFiles( directory, includes, excludes, true );
@@ -1676,36 +1743,35 @@ public static List getFiles( File directory, String includes, String excludes )
* @param excludes the excludes pattern, comma separated
* @param includeBasedir true to include the base dir in each file
* @return a list of File objects
- * @throws IOException
- * @see #getFileNames( File, String, String, boolean )
+ * @throws IOException io issue
+ * @see #getFileNames(File, String, String, boolean)
*/
- public static List getFiles( File directory, String includes, String excludes, boolean includeBasedir )
+ public static List getFiles( File directory, String includes, String excludes, boolean includeBasedir )
throws IOException
{
- List fileNames = getFileNames( directory, includes, excludes, includeBasedir );
+ List fileNames = getFileNames( directory, includes, excludes, includeBasedir );
- List files = new ArrayList();
+ List files = new ArrayList();
- for ( Iterator i = fileNames.iterator(); i.hasNext(); )
+ for ( String filename : fileNames )
{
- files.add( new File( (String) i.next() ) );
+ files.add( new File( filename ) );
}
return files;
}
/**
- * Return a list of files as String depending options.
- * This method use case sensitive file name.
+ * Return a list of files as String depending options. This method use case sensitive file name.
*
* @param directory the directory to scan
* @param includes the includes pattern, comma separated
* @param excludes the excludes pattern, comma separated
* @param includeBasedir true to include the base dir in each String of file
* @return a list of files as String
- * @throws IOException
+ * @throws IOException io issue
*/
- public static List getFileNames( File directory, String includes, String excludes, boolean includeBasedir )
+ public static List getFileNames( File directory, String includes, String excludes, boolean includeBasedir )
throws IOException
{
return getFileNames( directory, includes, excludes, includeBasedir, true );
@@ -1717,30 +1783,30 @@ public static List getFileNames( File directory, String includes, String exclude
* @param directory the directory to scan
* @param includes the includes pattern, comma separated
* @param excludes the excludes pattern, comma separated
- * @param includeBasedir true to include the base dir in each String of file
+ * @param includeBasedir true to include the base dir in each String of file
* @param isCaseSensitive true if case sensitive
* @return a list of files as String
- * @throws IOException
+ * @throws IOException io issue
*/
- public static List getFileNames( File directory, String includes, String excludes, boolean includeBasedir,
- boolean isCaseSensitive )
+ public static List getFileNames( File directory, String includes, String excludes, boolean includeBasedir,
+ boolean isCaseSensitive )
throws IOException
{
return getFileAndDirectoryNames( directory, includes, excludes, includeBasedir, isCaseSensitive, true, false );
}
/**
- * Return a list of directories as String depending options.
- * This method use case sensitive file name.
+ * Return a list of directories as String depending options. This method use case sensitive file name.
*
* @param directory the directory to scan
* @param includes the includes pattern, comma separated
* @param excludes the excludes pattern, comma separated
* @param includeBasedir true to include the base dir in each String of file
* @return a list of directories as String
- * @throws IOException
+ * @throws IOException io issue
*/
- public static List getDirectoryNames( File directory, String includes, String excludes, boolean includeBasedir )
+ public static List getDirectoryNames( File directory, String includes, String excludes,
+ boolean includeBasedir )
throws IOException
{
return getDirectoryNames( directory, includes, excludes, includeBasedir, true );
@@ -1752,13 +1818,13 @@ public static List getDirectoryNames( File directory, String includes, String ex
* @param directory the directory to scan
* @param includes the includes pattern, comma separated
* @param excludes the excludes pattern, comma separated
- * @param includeBasedir true to include the base dir in each String of file
+ * @param includeBasedir true to include the base dir in each String of file
* @param isCaseSensitive true if case sensitive
* @return a list of directories as String
- * @throws IOException
+ * @throws IOException io issue
*/
- public static List getDirectoryNames( File directory, String includes, String excludes, boolean includeBasedir,
- boolean isCaseSensitive )
+ public static List getDirectoryNames( File directory, String includes, String excludes,
+ boolean includeBasedir, boolean isCaseSensitive )
throws IOException
{
return getFileAndDirectoryNames( directory, includes, excludes, includeBasedir, isCaseSensitive, false, true );
@@ -1770,16 +1836,16 @@ public static List getDirectoryNames( File directory, String includes, String ex
* @param directory the directory to scan
* @param includes the includes pattern, comma separated
* @param excludes the excludes pattern, comma separated
- * @param includeBasedir true to include the base dir in each String of file
+ * @param includeBasedir true to include the base dir in each String of file
* @param isCaseSensitive true if case sensitive
* @param getFiles true if get files
- * @param getDirectories true if get directories
+ * @param getDirectories true if get directories
* @return a list of files as String
- * @throws IOException
+ * @throws IOException io issue
*/
- public static List getFileAndDirectoryNames( File directory, String includes, String excludes,
- boolean includeBasedir, boolean isCaseSensitive, boolean getFiles,
- boolean getDirectories )
+ public static List getFileAndDirectoryNames( File directory, String includes, String excludes,
+ boolean includeBasedir, boolean isCaseSensitive,
+ boolean getFiles, boolean getDirectories )
throws IOException
{
DirectoryScanner scanner = new DirectoryScanner();
@@ -1800,21 +1866,21 @@ public static List getFileAndDirectoryNames( File directory, String includes, St
scanner.scan();
- List list = new ArrayList();
+ List list = new ArrayList();
if ( getFiles )
{
String[] files = scanner.getIncludedFiles();
- for ( int i = 0; i < files.length; i++ )
+ for ( String file : files )
{
if ( includeBasedir )
{
- list.add( directory + FileUtils.FS + files[i] );
+ list.add( directory + FileUtils.FS + file );
}
else
{
- list.add( files[i] );
+ list.add( file );
}
}
}
@@ -1823,15 +1889,15 @@ public static List getFileAndDirectoryNames( File directory, String includes, St
{
String[] directories = scanner.getIncludedDirectories();
- for ( int i = 0; i < directories.length; i++ )
+ for ( String directory1 : directories )
{
if ( includeBasedir )
{
- list.add( directory + FileUtils.FS + directories[i] );
+ list.add( directory + FileUtils.FS + directory1 );
}
else
{
- list.add( directories[i] );
+ list.add( directory1 );
}
}
}
@@ -1858,7 +1924,7 @@ public static void copyDirectory( File sourceDirectory, File destinationDirector
* @param sourceDirectory the source dir
* @param destinationDirectory the target dir
* @param includes include pattern
- * @param excludes exlucde pattern
+ * @param excludes exclude pattern
* @throws IOException if any
* @see #getFiles(File, String, String)
*/
@@ -1871,19 +1937,17 @@ public static void copyDirectory( File sourceDirectory, File destinationDirector
return;
}
- List files = getFiles( sourceDirectory, includes, excludes );
+ List files = getFiles( sourceDirectory, includes, excludes );
- for ( Iterator i = files.iterator(); i.hasNext(); )
+ for ( File file : files )
{
- File file = (File) i.next();
-
copyFileToDirectory( file, destinationDirectory );
}
}
/**
- * Copies a entire directory layout : no files will be copied only directories
- *
+ *
Copies a entire directory layout : no files will be copied only directories
+ *
* Note:
*
*
It will include empty directories.
@@ -1893,12 +1957,12 @@ public static void copyDirectory( File sourceDirectory, File destinationDirector
* @param sourceDirectory the source dir
* @param destinationDirectory the target dir
* @param includes include pattern
- * @param excludes exlucde pattern
- * @since 1.5.7
+ * @param excludes exclude pattern
* @throws IOException if any
+ * @since 1.5.7
*/
public static void copyDirectoryLayout( File sourceDirectory, File destinationDirectory, String[] includes,
- String[] excludes )
+ String[] excludes )
throws IOException
{
if ( sourceDirectory == null )
@@ -1941,27 +2005,25 @@ public static void copyDirectoryLayout( File sourceDirectory, File destinationDi
scanner.addDefaultExcludes();
scanner.scan();
- List includedDirectories = Arrays.asList( scanner.getIncludedDirectories() );
+ List includedDirectories = Arrays.asList( scanner.getIncludedDirectories() );
- for (Iterator i = includedDirectories.iterator();i.hasNext();)
+ for ( String name : includedDirectories )
{
- String name = (String)i.next();
-
- File source = new File(sourceDirectory, name);
+ File source = new File( sourceDirectory, name );
if ( source.equals( sourceDirectory ) )
{
continue;
}
- File destination = new File(destinationDirectory, name);
+ File destination = new File( destinationDirectory, name );
destination.mkdirs();
}
}
/**
- * Copies a entire directory structure.
- *
+ *
Copies a entire directory structure.
+ *
* Note:
*
*
It will include empty directories.
@@ -1979,8 +2041,8 @@ public static void copyDirectoryStructure( File sourceDirectory, File destinatio
}
/**
- * Copies an entire directory structure but only source files with timestamp later than the destinations'.
- *
+ *
Copies an entire directory structure but only source files with timestamp later than the destinations'.
+ *
* Note:
*
*
It will include empty directories.
@@ -2025,10 +2087,8 @@ private static void copyDirectoryStructure( File sourceDirectory, File destinati
String sourcePath = sourceDirectory.getAbsolutePath();
- for ( int i = 0; i < files.length; i++ )
+ for ( File file : files )
{
- File file = files[i];
-
if ( file.equals( rootDestinationDirectory ) )
{
// We don't copy the destination directory in itself
@@ -2058,8 +2118,8 @@ else if ( file.isDirectory() )
{
if ( !destination.exists() && !destination.mkdirs() )
{
- throw new IOException(
- "Could not create destination directory '" + destination.getAbsolutePath() + "'." );
+ throw new IOException( "Could not create destination directory '" + destination.getAbsolutePath()
+ + "'." );
}
copyDirectoryStructure( file, destination, rootDestinationDirectory, onlyModifiedFiles );
@@ -2072,17 +2132,15 @@ else if ( file.isDirectory() )
}
/**
- * Renames a file, even if that involves crossing file system boundaries.
- *
- *
This will remove to (if it exists), ensure that
- * to's parent directory exists and move
- * from, which involves deleting from as
- * well.
+ *
Renames a file, even if that involves crossing file system boundaries.
+ *
+ *
This will remove to (if it exists), ensure that to's parent directory exists and move
+ * from, which involves deleting from as well.
*
* @param from the file to move
- * @param to the new file name
- * @throws IOException if anything bad happens during this process.
- * Note that to may have been deleted already when this happens.
+ * @param to the new file name
+ * @throws IOException if anything bad happens during this process. Note that to may have been deleted
+ * already when this happens.
*/
public static void rename( File from, File to )
throws IOException
@@ -2109,26 +2167,21 @@ public static void rename( File from, File to )
}
/**
- * Create a temporary file in a given directory.
- *
- *
The file denoted by the returned abstract pathname did not
- * exist before this method was invoked, any subsequent invocation
- * of this method will yield a different file name.
- *
- * The filename is prefixNNNNNsuffix where NNNN is a random number
- *
- *
This method is different to {@link File#createTempFile(String, String, File)} of JDK 1.2
- * as it doesn't create the file itself.
- * It uses the location pointed to by java.io.tmpdir
- * when the parentDir attribute is
- * null.
- *
To delete automatically the file created by this method, use the
- * {@link File#deleteOnExit()} method.
+ *
Create a temporary file in a given directory.
+ *
+ *
The file denoted by the returned abstract pathname did not exist before this method was invoked, any subsequent
+ * invocation of this method will yield a different file name.
+ *
+ *
The filename is prefixNNNNNsuffix where NNNN is a random number
+ *
+ *
This method is different to {@link File#createTempFile(String, String, File)} of JDK 1.2 as it doesn't create the
+ * file itself. It uses the location pointed to by java.io.tmpdir when the parentDir attribute is null.
+ *
+ *
To delete automatically the file created by this method, use the {@link File#deleteOnExit()} method.
*
* @param prefix prefix before the random number
* @param suffix file extension; include the '.'
- * @param parentDir Directory to create the temporary file in -java.io.tmpdir
- * used if not specificed
+ * @param parentDir Directory to create the temporary file in -java.io.tmpdir used if not specificed
* @return a File reference to the new temporary file.
*/
public static File createTempFile( String prefix, String suffix, File parentDir )
@@ -2156,7 +2209,8 @@ public static File createTempFile( String prefix, String suffix, File parentDir
}
/**
- * If wrappers is null or empty, the file will be copy only if to.lastModified() < from.lastModified()
+ * If wrappers is null or empty, the file will be copy only if {@code to.lastModified() < from.lastModified()}
+ *
* @param from the file to copy
* @param to the destination file
* @param encoding the file output encoding (only if wrappers is not empty)
@@ -2175,13 +2229,13 @@ public static abstract class FilterWrapper
}
/**
- * If wrappers is null or empty, the file will be copy only if to.lastModified() < from.lastModified() or if overwrite is true
+ * If wrappers is null or empty, the file will be copy only if {@code to.lastModified() < from.lastModified()}, if overwrite is true
+ *
* @param from the file to copy
* @param to the destination file
* @param encoding the file output encoding (only if wrappers is not empty)
* @param wrappers array of {@link FilterWrapper}
- * @param overwrite if true and f wrappers is null or empty, the file will be copy
- * enven if to.lastModified() < from.lastModified()
+ * @param overwrite if true and wrappers is null or empty, the file will be copied even if {@code to.lastModified() < from.lastModified()}
* @throws IOException if an IO error occurs during copying or filtering
* @since 1.5.2
*/
@@ -2197,28 +2251,29 @@ public static void copyFile( File from, File to, String encoding, FilterWrapper[
{
if ( encoding == null || encoding.length() < 1 )
{
- fileReader = new BufferedReader( new FileReader( from ) );
- fileWriter = new FileWriter( to );
+ fileReader = Files.newBufferedReader( from.toPath() );
+ fileWriter = Files.newBufferedWriter( to.toPath() );
}
else
{
- FileInputStream instream = new FileInputStream( from );
-
- FileOutputStream outstream = new FileOutputStream( to );
+ OutputStream outstream = Files.newOutputStream( to.toPath() );
- fileReader = new BufferedReader( new InputStreamReader( instream, encoding ) );
+ fileReader = Files.newBufferedReader( from.toPath(), Charset.forName( encoding ) );
fileWriter = new OutputStreamWriter( outstream, encoding );
}
Reader reader = fileReader;
- for ( int i = 0; i < wrappers.length; i++ )
+ for ( FilterWrapper wrapper : wrappers )
{
- FilterWrapper wrapper = wrappers[i];
reader = wrapper.getReader( reader );
}
IOUtil.copy( reader, fileWriter );
+ fileWriter.close();
+ fileWriter = null;
+ fileReader.close();
+ fileReader = null;
}
finally
{
@@ -2228,13 +2283,17 @@ public static void copyFile( File from, File to, String encoding, FilterWrapper[
}
else
{
- if ( to.lastModified() < from.lastModified() || overwrite )
+ if ( isSourceNewerThanDestination( from, to ) || overwrite )
{
copyFile( from, to );
}
}
}
+ private static boolean isSourceNewerThanDestination( File source, File destination ) {
+ return ( destination.lastModified() == 0L && source.lastModified() == 0L ) || destination.lastModified() < source.lastModified();
+ }
+
/**
* Note: the file content is read with platform encoding
*
@@ -2242,29 +2301,25 @@ public static void copyFile( File from, File to, String encoding, FilterWrapper[
* @return a List containing every every line not starting with # and not empty
* @throws IOException if any
*/
- public static List loadFile( File file )
+ public static List loadFile( File file )
throws IOException
{
- List lines = new ArrayList();
+ final List lines = new ArrayList();
if ( file.exists() )
{
- BufferedReader reader = new BufferedReader( new FileReader( file ) );
-
- String line = reader.readLine();
-
- while ( line != null )
+ try ( BufferedReader reader = Files.newBufferedReader( file.toPath() ) )
{
- line = line.trim();
-
- if ( !line.startsWith( "#" ) && line.length() != 0 )
+ for ( String line = reader.readLine(); line != null; line = reader.readLine() )
{
- lines.add( line );
+ line = line.trim();
+
+ if ( !line.startsWith( "#" ) && line.length() != 0 )
+ {
+ lines.add( line );
+ }
}
- line = reader.readLine();
}
-
- reader.close();
}
return lines;
@@ -2272,11 +2327,11 @@ public static List loadFile( File file )
/**
* For Windows OS, check if the file name contains any of the following characters:
- * ":", "*", "?", "\"", "<", ">", "|"
+ * ":", "*", "?", "\"", "<", ">", "|"
*
* @param f not null file
- * @return false if the file path contains any of forbidden Windows characters,
- * true if the Os is not Windows or if the file path respect the Windows constraints.
+ * @return false if the file path contains any of forbidden Windows characters, true if
+ * the Os is not Windows or if the file path respect the Windows constraints.
* @see #INVALID_CHARACTERS_FOR_WINDOWS_FILE_NAME
* @since 1.5.2
*/
@@ -2289,9 +2344,10 @@ public static boolean isValidWindowsFileName( File f )
return false;
}
- if ( f.getParentFile()!= null)
+ File parentFile = f.getParentFile();
+ if ( parentFile != null )
{
- return isValidWindowsFileName( f.getParentFile() );
+ return isValidWindowsFileName( parentFile );
}
}
diff --git a/src/main/java/org/codehaus/plexus/util/IOUtil.java b/src/main/java/org/codehaus/plexus/util/IOUtil.java
index 20cab90d..b431a8d9 100644
--- a/src/main/java/org/codehaus/plexus/util/IOUtil.java
+++ b/src/main/java/org/codehaus/plexus/util/IOUtil.java
@@ -67,92 +67,74 @@
import java.io.StringReader;
import java.io.StringWriter;
import java.io.Writer;
+import java.nio.channels.Channel;
/**
* General IO Stream manipulation.
*
- * This class provides static utility methods for input/output operations, particularly buffered
- * copying between sources (InputStream, Reader, String and
- * byte[]) and destinations (OutputStream, Writer,
- * String and byte[]).
+ * This class provides static utility methods for input/output operations, particularly buffered copying between sources
+ * (InputStream, Reader, String and byte[]) and destinations
+ * (OutputStream, Writer, String and byte[]).
+ *
+ *
+ * Unless otherwise noted, these copy methods do not flush or close the streams. Often, doing so
+ * would require making non-portable assumptions about the streams' origin and further use. This means that both
+ * streams' close() methods must be called after copying. if one omits this step, then the stream resources
+ * (sockets, file descriptors) are released when the associated Stream is garbage-collected. It is not a good idea to
+ * rely on this mechanism. For a good overview of the distinction between "memory management" and "resource management",
+ * see this UnixReview article
+ *
+ *
+ * For each copy method, a variant is provided that allows the caller to specify the buffer size (the
+ * default is 4k). As the buffer size can have a fairly large impact on speed, this may be worth tweaking. Often "large
+ * buffer -> faster" does not hold, even for large data transfers.
+ *
+ *
+ * For byte-to-char methods, a copy variant allows the encoding to be selected (otherwise the platform
+ * default is used).
+ *
+ *
+ * The copy methods use an internal buffer when copying. It is therefore advisable not to
+ * deliberately wrap the stream arguments to the copy methods in Buffered* streams. For
+ * example, don't do the following:
*
- *
- *
Unless otherwise noted, these copy methods do not flush or close the
- * streams. Often, doing so would require making non-portable assumptions about the streams' origin
- * and further use. This means that both streams' close() methods must be called after
- * copying. if one omits this step, then the stream resources (sockets, file descriptors) are
- * released when the associated Stream is garbage-collected. It is not a good idea to rely on this
- * mechanism. For a good overview of the distinction between "memory management" and "resource
- * management", see this
- * UnixReview article
- *
- *
For each copy method, a variant is provided that allows the caller to specify the
- * buffer size (the default is 4k). As the buffer size can have a fairly large impact on speed, this
- * may be worth tweaking. Often "large buffer -> faster" does not hold, even for large data
- * transfers.
- *
- *
For byte-to-char methods, a copy variant allows the encoding to be selected
- * (otherwise the platform default is used).
- *
- *
The copy methods use an internal buffer when copying. It is therefore advisable
- * not to deliberately wrap the stream arguments to the copy methods in
- * Buffered* streams. For example, don't do the
- * following:
- *
* copy( new BufferedInputStream( in ), new BufferedOutputStream( out ) );
- *
- *
The rationale is as follows:
- *
- *
Imagine that an InputStream's read() is a very expensive operation, which would usually suggest
- * wrapping in a BufferedInputStream. The BufferedInputStream works by issuing infrequent
- * {@link java.io.InputStream#read(byte[] b, int off, int len)} requests on the underlying InputStream, to
- * fill an internal buffer, from which further read requests can inexpensively get
- * their data (until the buffer runs out).
- *
However, the copy methods do the same thing, keeping an internal buffer,
- * populated by {@link InputStream#read(byte[] b, int off, int len)} requests. Having two buffers
- * (or three if the destination stream is also buffered) is pointless, and the unnecessary buffer
- * management hurts performance slightly (about 3%, according to some simple experiments).
+ *
+ * The rationale is as follows:
+ *
+ *
+ * Imagine that an InputStream's read() is a very expensive operation, which would usually suggest wrapping in a
+ * BufferedInputStream. The BufferedInputStream works by issuing infrequent
+ * {@link java.io.InputStream#read(byte[] b, int off, int len)} requests on the underlying InputStream, to fill an
+ * internal buffer, from which further read requests can inexpensively get their data (until the buffer
+ * runs out).
+ *
+ *
+ * However, the copy methods do the same thing, keeping an internal buffer, populated by
+ * {@link InputStream#read(byte[] b, int off, int len)} requests. Having two buffers (or three if the destination stream
+ * is also buffered) is pointless, and the unnecessary buffer management hurts performance slightly (about 3%, according
+ * to some simple experiments).
+ *
*
* @author Peter Donald
* @author Jeff Turner
- * @version $Id$
+ *
* @since 4.0
*/
/*
- * Behold, intrepid explorers; a map of this class:
- *
- * Method Input Output Dependency
- * ------ ----- ------ -------
- * 1 copy InputStream OutputStream (primitive)
- * 2 copy Reader Writer (primitive)
- *
- * 3 copy InputStream Writer 2
- * 4 toString InputStream String 3
- * 5 toByteArray InputStream byte[] 1
- *
- * 6 copy Reader OutputStream 2
- * 7 toString Reader String 2
- * 8 toByteArray Reader byte[] 6
- *
- * 9 copy String OutputStream 2
- * 10 copy String Writer (trivial)
- * 11 toByteArray String byte[] 9
- *
- * 12 copy byte[] Writer 3
- * 13 toString byte[] String 12
- * 14 copy byte[] OutputStream (trivial)
- *
- *
- * Note that only the first two methods shuffle bytes; the rest use these two, or (if possible) copy
- * using native Java copy methods. As there are method variants to specify buffer size and encoding,
- * each row may correspond to up to 4 methods.
- *
+ * Behold, intrepid explorers; a map of this class: Method Input Output Dependency ------ ----- ------ ------- 1 copy
+ * InputStream OutputStream (primitive) 2 copy Reader Writer (primitive) 3 copy InputStream Writer 2 4 toString
+ * InputStream String 3 5 toByteArray InputStream byte[] 1 6 copy Reader OutputStream 2 7 toString Reader String 2 8
+ * toByteArray Reader byte[] 6 9 copy String OutputStream 2 10 copy String Writer (trivial) 11 toByteArray String byte[]
+ * 9 12 copy byte[] Writer 3 13 toString byte[] String 12 14 copy byte[] OutputStream (trivial) Note that only the first
+ * two methods shuffle bytes; the rest use these two, or (if possible) copy using native Java copy methods. As there are
+ * method variants to specify buffer size and encoding, each row may correspond to up to 4 methods.
*/
-public final class IOUtil
+public final class IOUtil extends BaseIOUtil
{
- private static final int DEFAULT_BUFFER_SIZE = 1024 * 4;
+ private static final int DEFAULT_BUFFER_SIZE = 1024 * 16;
/**
* Private constructor to prevent instantiation.
@@ -167,25 +149,29 @@ private IOUtil()
/**
* Copy bytes from an InputStream to an OutputStream.
+ * @param input to convert
+ * @param output the result
+ * @throws IOException io issue
*/
public static void copy( final InputStream input, final OutputStream output )
throws IOException
{
- copy( input, output, DEFAULT_BUFFER_SIZE );
+ BaseIOUtil.copy( input, output );
}
/**
* Copy bytes from an InputStream to an OutputStream.
+ * @param input to convert
+ * @param output the result
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
- public static void copy( final InputStream input,
- final OutputStream output,
- final int bufferSize )
+ public static void copy( final InputStream input, final OutputStream output, final int bufferSize )
throws IOException
{
final byte[] buffer = new byte[bufferSize];
int n = 0;
- while ( -1 != ( n = input.read( buffer ) ) )
+ while ( 0 <= ( n = input.read( buffer ) ) )
{
output.write( buffer, 0, n );
}
@@ -193,23 +179,29 @@ public static void copy( final InputStream input,
/**
* Copy chars from a Reader to a Writer.
+ * @param input to convert
+ * @param output the result
+ * @throws IOException io issue
*/
public static void copy( final Reader input, final Writer output )
throws IOException
{
- copy( input, output, DEFAULT_BUFFER_SIZE );
+ BaseIOUtil.copy( input, output );
}
/**
* Copy chars from a Reader to a Writer.
+ * @param input to convert
+ * @param output the result
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
public static void copy( final Reader input, final Writer output, final int bufferSize )
throws IOException
{
final char[] buffer = new char[bufferSize];
int n = 0;
- while ( -1 != ( n = input.read( buffer ) ) )
+ while ( 0 <= ( n = input.read( buffer ) ) )
{
output.write( buffer, 0, n );
}
@@ -221,14 +213,15 @@ public static void copy( final Reader input, final Writer output, final int buff
// InputStream -> *
///////////////////////////////////////////////////////////////
-
///////////////////////////////////////////////////////////////
// InputStream -> Writer
/**
- * Copy and convert bytes from an InputStream to chars on a
- * Writer.
- * The platform's default encoding is used for the byte-to-char conversion.
+ * Copy and convert bytes from an InputStream to chars on a Writer. The platform's default
+ * encoding is used for the byte-to-char conversion.
+ * @param input to convert
+ * @param output the result
+ * @throws IOException io issue
*/
public static void copy( final InputStream input, final Writer output )
throws IOException
@@ -237,10 +230,12 @@ public static void copy( final InputStream input, final Writer output )
}
/**
- * Copy and convert bytes from an InputStream to chars on a
- * Writer.
- * The platform's default encoding is used for the byte-to-char conversion.
+ * Copy and convert bytes from an InputStream to chars on a Writer. The platform's default
+ * encoding is used for the byte-to-char conversion.
+ * @param input to convert
+ * @param output the result
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
public static void copy( final InputStream input, final Writer output, final int bufferSize )
throws IOException
@@ -250,11 +245,14 @@ public static void copy( final InputStream input, final Writer output, final int
}
/**
- * Copy and convert bytes from an InputStream to chars on a
- * Writer, using the specified encoding.
+ * Copy and convert bytes from an InputStream to chars on a Writer, using the specified
+ * encoding.
+ * @param input to convert
+ * @param output the result
* @param encoding The name of a supported character encoding. See the
- * IANA
- * Charset Registry for a list of valid encoding types.
+ * IANA Charset Registry for a list of valid
+ * encoding types.
+ * @throws IOException io issue
*/
public static void copy( final InputStream input, final Writer output, final String encoding )
throws IOException
@@ -264,30 +262,31 @@ public static void copy( final InputStream input, final Writer output, final Str
}
/**
- * Copy and convert bytes from an InputStream to chars on a
- * Writer, using the specified encoding.
+ * Copy and convert bytes from an InputStream to chars on a Writer, using the specified
+ * encoding.
+ * @param input to convert
+ * @param output the result
* @param encoding The name of a supported character encoding. See the
- * IANA
- * Charset Registry for a list of valid encoding types.
+ * IANA Charset Registry for a list of valid
+ * encoding types.
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
- public static void copy( final InputStream input,
- final Writer output,
- final String encoding,
- final int bufferSize )
+ public static void copy( final InputStream input, final Writer output, final String encoding, final int bufferSize )
throws IOException
{
final InputStreamReader in = new InputStreamReader( input, encoding );
copy( in, output, bufferSize );
}
-
///////////////////////////////////////////////////////////////
// InputStream -> String
/**
- * Get the contents of an InputStream as a String.
- * The platform's default encoding is used for the byte-to-char conversion.
+ * @return Get the contents of an InputStream as a String. The platform's default encoding is used for the
+ * byte-to-char conversion.
+ * @param input to convert
+ * @throws IOException io issue
*/
public static String toString( final InputStream input )
throws IOException
@@ -296,9 +295,11 @@ public static String toString( final InputStream input )
}
/**
- * Get the contents of an InputStream as a String.
- * The platform's default encoding is used for the byte-to-char conversion.
+ * @return Get the contents of an InputStream as a String. The platform's default encoding is used for the
+ * byte-to-char conversion.
+ * @param input to convert
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
public static String toString( final InputStream input, final int bufferSize )
throws IOException
@@ -309,10 +310,12 @@ public static String toString( final InputStream input, final int bufferSize )
}
/**
- * Get the contents of an InputStream as a String.
+ * @return Get the contents of an InputStream as a String.
+ * @param input to convert
* @param encoding The name of a supported character encoding. See the
- * IANA
- * Charset Registry for a list of valid encoding types.
+ * IANA Charset Registry for a list of valid
+ * encoding types.
+ * @throws IOException io issue
*/
public static String toString( final InputStream input, final String encoding )
throws IOException
@@ -321,15 +324,15 @@ public static String toString( final InputStream input, final String encoding )
}
/**
- * Get the contents of an InputStream as a String.
+ * @return Get the contents of an InputStream as a String.
+ * @param input to convert
* @param encoding The name of a supported character encoding. See the
- * IANA
- * Charset Registry for a list of valid encoding types.
+ * IANA Charset Registry for a list of valid
+ * encoding types.
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
- public static String toString( final InputStream input,
- final String encoding,
- final int bufferSize )
+ public static String toString( final InputStream input, final String encoding, final int bufferSize )
throws IOException
{
final StringWriter sw = new StringWriter();
@@ -341,7 +344,9 @@ public static String toString( final InputStream input,
// InputStream -> byte[]
/**
- * Get the contents of an InputStream as a byte[].
+ * @return Get the contents of an InputStream as a byte[].
+ * @param input to convert
+ * @throws IOException io issue
*/
public static byte[] toByteArray( final InputStream input )
throws IOException
@@ -350,8 +355,10 @@ public static byte[] toByteArray( final InputStream input )
}
/**
- * Get the contents of an InputStream as a byte[].
+ * @return Get the contents of an InputStream as a byte[].
+ * @param input to convert
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
public static byte[] toByteArray( final InputStream input, final int bufferSize )
throws IOException
@@ -361,7 +368,6 @@ public static byte[] toByteArray( final InputStream input, final int bufferSize
return output.toByteArray();
}
-
///////////////////////////////////////////////////////////////
// Derived copy methods
// Reader -> *
@@ -370,8 +376,11 @@ public static byte[] toByteArray( final InputStream input, final int bufferSize
///////////////////////////////////////////////////////////////
// Reader -> OutputStream
/**
- * Serialize chars from a Reader to bytes on an OutputStream, and
- * flush the OutputStream.
+ * Serialize chars from a Reader to bytes on an OutputStream, and flush the
+ * OutputStream.
+ * @param input to convert
+ * @param output the result
+ * @throws IOException io issue
*/
public static void copy( final Reader input, final OutputStream output )
throws IOException
@@ -380,9 +389,12 @@ public static void copy( final Reader input, final OutputStream output )
}
/**
- * Serialize chars from a Reader to bytes on an OutputStream, and
- * flush the OutputStream.
+ * Serialize chars from a Reader to bytes on an OutputStream, and flush the
+ * OutputStream.
+ * @param input to convert
+ * @param output the result
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
public static void copy( final Reader input, final OutputStream output, final int bufferSize )
throws IOException
@@ -397,7 +409,9 @@ public static void copy( final Reader input, final OutputStream output, final in
///////////////////////////////////////////////////////////////
// Reader -> String
/**
- * Get the contents of a Reader as a String.
+ * @return Get the contents of a Reader as a String.
+ * @param input to convert
+ * @throws IOException io issue
*/
public static String toString( final Reader input )
throws IOException
@@ -406,8 +420,10 @@ public static String toString( final Reader input )
}
/**
- * Get the contents of a Reader as a String.
+ * @return Get the contents of a Reader as a String.
+ * @param input to convert
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
public static String toString( final Reader input, final int bufferSize )
throws IOException
@@ -417,11 +433,12 @@ public static String toString( final Reader input, final int bufferSize )
return sw.toString();
}
-
///////////////////////////////////////////////////////////////
// Reader -> byte[]
/**
- * Get the contents of a Reader as a byte[].
+ * @return Get the contents of a Reader as a byte[].
+ * @param input to convert
+ * @throws IOException io issue
*/
public static byte[] toByteArray( final Reader input )
throws IOException
@@ -430,8 +447,10 @@ public static byte[] toByteArray( final Reader input )
}
/**
- * Get the contents of a Reader as a byte[].
+ * @return Get the contents of a Reader as a byte[].
+ * @param input to convert
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
public static byte[] toByteArray( final Reader input, final int bufferSize )
throws IOException
@@ -441,19 +460,20 @@ public static byte[] toByteArray( final Reader input, final int bufferSize )
return output.toByteArray();
}
-
///////////////////////////////////////////////////////////////
// Derived copy methods
// String -> *
///////////////////////////////////////////////////////////////
-
///////////////////////////////////////////////////////////////
// String -> OutputStream
/**
- * Serialize chars from a String to bytes on an OutputStream, and
- * flush the OutputStream.
+ * Serialize chars from a String to bytes on an OutputStream, and flush the
+ * OutputStream.
+ * @param input to convert
+ * @param output the result
+ * @throws IOException io issue
*/
public static void copy( final String input, final OutputStream output )
throws IOException
@@ -462,9 +482,12 @@ public static void copy( final String input, final OutputStream output )
}
/**
- * Serialize chars from a String to bytes on an OutputStream, and
- * flush the OutputStream.
+ * Serialize chars from a String to bytes on an OutputStream, and flush the
+ * OutputStream.
+ * @param input to convert
+ * @param output the result
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
public static void copy( final String input, final OutputStream output, final int bufferSize )
throws IOException
@@ -477,13 +500,14 @@ public static void copy( final String input, final OutputStream output, final in
out.flush();
}
-
-
///////////////////////////////////////////////////////////////
// String -> Writer
/**
* Copy chars from a String to a Writer.
+ * @param input to convert
+ * @param output the result
+ * @throws IOException io issue
*/
public static void copy( final String input, final Writer output )
throws IOException
@@ -492,16 +516,17 @@ public static void copy( final String input, final Writer output )
}
/**
- * Copy bytes from an InputStream to an
- * OutputStream, with buffering.
- * This is equivalent to passing a
- * {@link java.io.BufferedInputStream} and
- * {@link java.io.BufferedOutputStream} to {@link #copy(InputStream, OutputStream)},
- * and flushing the output stream afterwards. The streams are not closed
+ * Copy bytes from an InputStream to an OutputStream, with buffering. This is equivalent
+ * to passing a {@link java.io.BufferedInputStream} and {@link java.io.BufferedOutputStream} to
+ * {@link #copy(InputStream, OutputStream)}, and flushing the output stream afterwards. The streams are not closed
* after the copy.
+ * @param input to convert
+ * @param output the result
* @deprecated Buffering streams is actively harmful! See the class description as to why. Use
- * {@link #copy(InputStream, OutputStream)} instead.
+ * {@link #copy(InputStream, OutputStream)} instead.
+ * @throws IOException io issue
*/
+ @Deprecated
public static void bufferedCopy( final InputStream input, final OutputStream output )
throws IOException
{
@@ -511,11 +536,12 @@ public static void bufferedCopy( final InputStream input, final OutputStream out
out.flush();
}
-
///////////////////////////////////////////////////////////////
// String -> byte[]
/**
- * Get the contents of a String as a byte[].
+ * @return Get the contents of a String as a byte[].
+ * @param input to convert
+ * @throws IOException io issue
*/
public static byte[] toByteArray( final String input )
throws IOException
@@ -524,8 +550,10 @@ public static byte[] toByteArray( final String input )
}
/**
- * Get the contents of a String as a byte[].
+ * @return Get the contents of a String as a byte[].
+ * @param input to convert
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
public static byte[] toByteArray( final String input, final int bufferSize )
throws IOException
@@ -535,21 +563,20 @@ public static byte[] toByteArray( final String input, final int bufferSize )
return output.toByteArray();
}
-
-
///////////////////////////////////////////////////////////////
// Derived copy methods
// byte[] -> *
///////////////////////////////////////////////////////////////
-
///////////////////////////////////////////////////////////////
// byte[] -> Writer
/**
- * Copy and convert bytes from a byte[] to chars on a
- * Writer.
- * The platform's default encoding is used for the byte-to-char conversion.
+ * Copy and convert bytes from a byte[] to chars on a Writer. The platform's default
+ * encoding is used for the byte-to-char conversion.
+ * @param input to convert
+ * @param output the result
+ * @throws IOException io issue
*/
public static void copy( final byte[] input, final Writer output )
throws IOException
@@ -558,10 +585,12 @@ public static void copy( final byte[] input, final Writer output )
}
/**
- * Copy and convert bytes from a byte[] to chars on a
- * Writer.
- * The platform's default encoding is used for the byte-to-char conversion.
+ * Copy and convert bytes from a byte[] to chars on a Writer. The platform's default
+ * encoding is used for the byte-to-char conversion.
+ * @param input to convert
+ * @param output the result
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
public static void copy( final byte[] input, final Writer output, final int bufferSize )
throws IOException
@@ -571,11 +600,14 @@ public static void copy( final byte[] input, final Writer output, final int buff
}
/**
- * Copy and convert bytes from a byte[] to chars on a
- * Writer, using the specified encoding.
+ * Copy and convert bytes from a byte[] to chars on a Writer, using the specified
+ * encoding.
+ * @param input to convert
+ * @param output the result
* @param encoding The name of a supported character encoding. See the
- * IANA
- * Charset Registry for a list of valid encoding types.
+ * IANA Charset Registry for a list of valid
+ * encoding types.
+ * @throws IOException io issue
*/
public static void copy( final byte[] input, final Writer output, final String encoding )
throws IOException
@@ -585,30 +617,31 @@ public static void copy( final byte[] input, final Writer output, final String e
}
/**
- * Copy and convert bytes from a byte[] to chars on a
- * Writer, using the specified encoding.
+ * Copy and convert bytes from a byte[] to chars on a Writer, using the specified
+ * encoding.
+ * @param input to convert
+ * @param output the result
* @param encoding The name of a supported character encoding. See the
- * IANA
- * Charset Registry for a list of valid encoding types.
+ * IANA Charset Registry for a list of valid
+ * encoding types.
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
- public static void copy( final byte[] input,
- final Writer output,
- final String encoding,
- final int bufferSize )
+ public static void copy( final byte[] input, final Writer output, final String encoding, final int bufferSize )
throws IOException
{
final ByteArrayInputStream in = new ByteArrayInputStream( input );
copy( in, output, encoding, bufferSize );
}
-
///////////////////////////////////////////////////////////////
// byte[] -> String
/**
- * Get the contents of a byte[] as a String.
- * The platform's default encoding is used for the byte-to-char conversion.
+ * @return Get the contents of a byte[] as a String. The platform's default encoding is used for the
+ * byte-to-char conversion.
+ * @param input to convert
+ * @throws IOException io issue
*/
public static String toString( final byte[] input )
throws IOException
@@ -617,9 +650,11 @@ public static String toString( final byte[] input )
}
/**
- * Get the contents of a byte[] as a String.
- * The platform's default encoding is used for the byte-to-char conversion.
+ * @return Get the contents of a byte[] as a String. The platform's default encoding is used for the
+ * byte-to-char conversion.
+ * @param input to convert
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
public static String toString( final byte[] input, final int bufferSize )
throws IOException
@@ -630,10 +665,12 @@ public static String toString( final byte[] input, final int bufferSize )
}
/**
- * Get the contents of a byte[] as a String.
+ * @return Get the contents of a byte[] as a String.
+ * @param input to convert
* @param encoding The name of a supported character encoding. See the
- * IANA
- * Charset Registry for a list of valid encoding types.
+ * IANA Charset Registry for a list of valid
+ * encoding types.
+ * @throws IOException io issue
*/
public static String toString( final byte[] input, final String encoding )
throws IOException
@@ -642,15 +679,16 @@ public static String toString( final byte[] input, final String encoding )
}
/**
- * Get the contents of a byte[] as a String.
+ * @return the contents of a byte[] as a String.
+ * @param input to convert
* @param encoding The name of a supported character encoding. See the
- * IANA
- * Charset Registry for a list of valid encoding types.
+ * IANA Charset Registry for a list of valid
+ * encoding types.
* @param bufferSize Size of internal buffer to use.
+ *
+ * @throws IOException io issue
*/
- public static String toString( final byte[] input,
- final String encoding,
- final int bufferSize )
+ public static String toString( final byte[] input, final String encoding, final int bufferSize )
throws IOException
{
final StringWriter sw = new StringWriter();
@@ -658,12 +696,14 @@ public static String toString( final byte[] input,
return sw.toString();
}
-
///////////////////////////////////////////////////////////////
// byte[] -> OutputStream
/**
* Copy bytes from a byte[] to an OutputStream.
+ * @param input to convert
+ * @param output the result
+ * @throws IOException io issue
*/
public static void copy( final byte[] input, final OutputStream output )
throws IOException
@@ -673,11 +713,12 @@ public static void copy( final byte[] input, final OutputStream output )
/**
* Copy bytes from a byte[] to an OutputStream.
+ * @param input to convert
+ * @param output the result
* @param bufferSize Size of internal buffer to use.
+ * @throws IOException io issue
*/
- public static void copy( final byte[] input,
- final OutputStream output,
- final int bufferSize )
+ public static void copy( final byte[] input, final OutputStream output, final int bufferSize )
throws IOException
{
output.write( input );
@@ -689,16 +730,16 @@ public static void copy( final byte[] input,
* @param input1 the first stream
* @param input2 the second stream
* @return true if the content of the streams are equal or they both don't exist, false otherwise
+ * @throws IOException io issue
*/
- public static boolean contentEquals( final InputStream input1,
- final InputStream input2 )
+ public static boolean contentEquals( final InputStream input1, final InputStream input2 )
throws IOException
{
final InputStream bufferedInput1 = new BufferedInputStream( input1 );
final InputStream bufferedInput2 = new BufferedInputStream( input2 );
int ch = bufferedInput1.read();
- while ( -1 != ch )
+ while ( 0 <= ch )
{
final int ch2 = bufferedInput2.read();
if ( ch != ch2 )
@@ -709,7 +750,7 @@ public static boolean contentEquals( final InputStream input1,
}
final int ch2 = bufferedInput2.read();
- if ( -1 != ch2 )
+ if ( 0 <= ch2 )
{
return false;
}
@@ -727,7 +768,9 @@ public static boolean contentEquals( final InputStream input1,
* Closes the input stream. The input stream can be null and any IOException's will be swallowed.
*
* @param inputStream The stream to close.
+ * @deprecated use try-with-resources instead
*/
+ @Deprecated
public static void close( InputStream inputStream )
{
if ( inputStream == null )
@@ -739,7 +782,31 @@ public static void close( InputStream inputStream )
{
inputStream.close();
}
- catch( IOException ex )
+ catch ( IOException ex )
+ {
+ // ignore
+ }
+ }
+
+ /**
+ * Closes a channel. Channel can be null and any IOException's will be swallowed.
+ *
+ * @param channel The stream to close.
+ * @deprecated use try-with-resources instead
+ */
+ @Deprecated
+ public static void close( Channel channel )
+ {
+ if ( channel == null )
+ {
+ return;
+ }
+
+ try
+ {
+ channel.close();
+ }
+ catch ( IOException ex )
{
// ignore
}
@@ -749,7 +816,9 @@ public static void close( InputStream inputStream )
* Closes the output stream. The output stream can be null and any IOException's will be swallowed.
*
* @param outputStream The stream to close.
+ * @deprecated use try-with-resources instead
*/
+ @Deprecated
public static void close( OutputStream outputStream )
{
if ( outputStream == null )
@@ -761,7 +830,7 @@ public static void close( OutputStream outputStream )
{
outputStream.close();
}
- catch( IOException ex )
+ catch ( IOException ex )
{
// ignore
}
@@ -771,7 +840,9 @@ public static void close( OutputStream outputStream )
* Closes the reader. The reader can be null and any IOException's will be swallowed.
*
* @param reader The reader to close.
+ * @deprecated use try-with-resources instead
*/
+ @Deprecated
public static void close( Reader reader )
{
if ( reader == null )
@@ -783,7 +854,7 @@ public static void close( Reader reader )
{
reader.close();
}
- catch( IOException ex )
+ catch ( IOException ex )
{
// ignore
}
@@ -793,7 +864,9 @@ public static void close( Reader reader )
* Closes the writer. The writer can be null and any IOException's will be swallowed.
*
* @param writer The writer to close.
+ * @deprecated use try-with-resources instead
*/
+ @Deprecated
public static void close( Writer writer )
{
if ( writer == null )
@@ -805,7 +878,7 @@ public static void close( Writer writer )
{
writer.close();
}
- catch( IOException ex )
+ catch ( IOException ex )
{
// ignore
}
diff --git a/src/main/java/org/codehaus/plexus/util/InterpolationFilterReader.java b/src/main/java/org/codehaus/plexus/util/InterpolationFilterReader.java
index 8eec7e44..c8515b2e 100644
--- a/src/main/java/org/codehaus/plexus/util/InterpolationFilterReader.java
+++ b/src/main/java/org/codehaus/plexus/util/InterpolationFilterReader.java
@@ -17,11 +17,11 @@
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
- * any, must include the following acknowlegement:
+ * any, must include the following acknowledgement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.codehaus.org/)."
- * Alternately, this acknowlegement may appear in the software itself,
- * if and wherever such third-party acknowlegements normally appear.
+ * Alternately, this acknowledgement may appear in the software itself,
+ * if and wherever such third-party acknowledgements normally appear.
*
* 4. The names "Ant" and "Apache Software
* Foundation" must not be used to endorse or promote products derived
@@ -61,6 +61,22 @@
import java.util.Map;
/**
+ * A FilterReader which interpolates keyword values into a character stream. Keywords are recognized when enclosed
+ * between starting and ending delimiter strings. The keywords themselves, and their values, are fetched from a Map
+ * supplied to the constructor.
+ *
+ * When a possible keyword token is recognized (by detecting the starting and ending token delimiters):
+ *
+ *
+ *
if the enclosed string is found in the keyword Map, the delimiters and the keyword are effectively replaced by
+ * the keyword's value;
+ *
if the enclosed string is found in the keyword Map, but its value has zero length, then the token (delimiters and
+ * keyword) is effectively removed from the character stream;
+ *
if the enclosed string is not found in the keyword Map, then no substitution is made; the token text is
+ * passed through unaltered.
+ *
+ *
+ * @see LineOrientedInterpolatingReader s
*/
public class InterpolationFilterReader
extends FilterReader
@@ -75,7 +91,7 @@ public class InterpolationFilterReader
private int previousIndex = -1;
/** Hashtable to hold the replacee-replacer pairs (String to String). */
- private Map variables = new HashMap();
+ private Map, Object> variables = new HashMap